Textdraws dissappear -
CONTROLA - 20.05.2012
Hello guys. I've got a problem with my textdraws.. After 3-4 hours after the restart they dissappear. I create them on onplayerconnect, destroy them on onplayerdisconnect and update them every second with a custom timer.
Codes:
At top of the script:
pawn Код:
new Text:TextDrawSZ[MAX_PLAYERS];
In OnPlayerConnect:
pawn Код:
TextDrawSZ[playerid] = TextDrawCreate(89.000000, 430.000000, "SafeZone");
TextDrawAlignment(TextDrawSZ[playerid], 2);
TextDrawBackgroundColor(TextDrawSZ[playerid], 255);
TextDrawFont(TextDrawSZ[playerid], 2);
TextDrawLetterSize(TextDrawSZ[playerid], 0.230000, 1.000000);
TextDrawColor(TextDrawSZ[playerid], -1);
TextDrawSetOutline(TextDrawSZ[playerid], 1);
TextDrawSetProportional(TextDrawSZ[playerid], 1);
TextDrawHideForPlayer(playerid, TextDrawSZ[playerid]);
In OnPlayerDisconnect:
pawn Код:
TextDrawDestroy(TextDrawSZ[playerid]);
In a custom timer repeating every second:
pawn Код:
if(IsPlayerInArea(i, 1432.823, 1546.908, -2360.873, -2234.546) || IsPlayerInArea(i, 1402.4, 1577.33, -1863.458, -1737.13) || IsPlayerInArea(i, 1444.231, 1535.499, -1745.026, -1602.907) || IsPlayerInArea(i, 1398.597, 1516.485, -1038.38, -991.0071)) { TextDrawShowForPlayer(i, TextDrawSZ[i]); TextDrawShowForPlayer(i, TextDrawSZ1[i]); if(AdminDuty[i] == 0 && !IsACop(i) && !IsAMedic(i)) SetPlayerArmedWeapon(i,0); }
Is it wrong that I update them every second?
And, if it helps: After some of them dissappear, the ID of other textdraws mix.. For example i type "/logo on" which sets visible only one textdraw, but sets visible two of them. Or i type "/logo off" to hide a textdraw but it hides another one instead of the one i wanted.
Re: Textdraws dissappear -
$$inSane - 20.05.2012
U should destroy them in public OnGameModeInt()
Re: Textdraws dissappear -
CONTROLA - 20.05.2012
Quote:
Originally Posted by $$inSane
U should destroy them in public OnGameModeInt()
|
Destroy them in OnGameModeInit? Why? ..
Re: Textdraws dissappear -
JaKe Elite - 20.05.2012
Quote:
Originally Posted by $$inSane
U should destroy them in public OnGameModeInt()
|
So if the Server starts the textdraw will be deleted then the textdraw will not show.
That is the most n00b post ever. Really.
Re: Textdraws dissappear -
iggy1 - 20.05.2012
You should really create the textdraws in OnGameModeInit then just use "TextDrawSetString" to change the textdraw. That way you have no chance of deleting a textdraw by mistake. That's how I'd do it anyway. Then you don't need to create a textdraw every time a player connects just change the string.
Re: Textdraws dissappear -
CONTROLA - 20.05.2012
Ok, for the safezone I'll do that. But I've got a speedometer made of textdraws too. If i make it out of global textdraws won't it show me the speed of another player?
Re: Textdraws dissappear -
iggy1 - 20.05.2012
No, if you use a player array to store them, instead of one var.
Re: Textdraws dissappear -
CONTROLA - 20.05.2012
Can you give me just an example, please? I don't understand..
Re: Textdraws dissappear -
iggy1 - 20.05.2012
pawn Код:
new Text:TextDrawSZ[MAX_PLAYERS];
public OnGameModeInit()
{
for( new i; i < MAX_PLAYERS; ++i )//loop all players and create their textdraw
{
TextDrawSZ[i] = TextDrawCreate(89.000000, 430.000000, "SafeZone");
TextDrawAlignment(TextDrawSZ[i], 2);
TextDrawBackgroundColor(TextDrawSZ[i], 255);
TextDrawFont(TextDrawSZ[i], 2);
TextDrawLetterSize(TextDrawSZ[i], 0.230000, 1.000000);
TextDrawColor(TextDrawSZ[i], -1);
TextDrawSetOutline(TextDrawSZ[i], 1);
TextDrawSetProportional(TextDrawSZ[i], 1);
}
return 1;
}
public OnPlayerConnect(playerid)
{
TextDrawSetString(TextDrawSZ[playerid], "blahblah");//set textdraw to what you want
TextDrawShowForPlayer( playerid, TextDrawSZ[playerid] );//show the textdraw
return 1;
}
SpeedoFunc(playerid)
{
//get player speed ect
TextDrawSetString(TextDrawSZ[playerid], "newspeed");//update the players textrdraw
}
I know your speedo textdraw isn't the same as the "safezone" but its the same principal.
Re: Textdraws dissappear -
$$inSane - 20.05.2012
Quote:
Originally Posted by Romel
So if the Server starts the textdraw will be deleted then the textdraw will not show.
That is the most n00b post ever. Really.
|
shut up its just by mistake
its public OnGameModeExit()