29.12.2018, 14:42
Quote:
|
No it doesn't kill it, it just stops it from repeating.
Код:
new Text3D:PlayerSpawnLabel[MAX_PLAYERS] = {Text3D:INVALID_3DTEXT_ID, ...};
new SpawnLabelDespawnTimer[MAX_PLAYERS];
public OnPlayerSpawn(playerid)
{
if (!IsValid3DTextLabel(PlayerSpawnLabel[playerid]))
{
PlayerSpawnLabel[playerid] = Create3DTextLabel("I just spawned.", COLOR_YELLOW, 0, 0, 0, 20, 0);
SpawnLabelDespawnTimer[playerid] = SetTimerEx("SpawnLabelTimer", 20000, false, "i", playerid);
}
// attach it regardless of whether it already existed
Attach3DTextLabelToPlayer(PlayerSpawnLabel[playerid], playerid, 0.0, 0.0, 0.27);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if (IsValid3DTextLabel(PlayerSpawnLabel[playerid]))
{
Delete3DTextLabel(PlayerSpawnLabel[playerid]);
PlayerSpawnLabel[playerid] = Text3D:INVALID_3DTEXT_ID;
KillTimer(SpawnLabelDespawnTimer[playerid]);
}
return 1;
}
public OnPlayerDeath(playerid)
{
if (IsValid3DTextLabel(PlayerSpawnLabel[playerid]))
{
Delete3DTextLabel(PlayerSpawnLabel[playerid]);
PlayerSpawnLabel[playerid] = Text3D:INVALID_3DTEXT_ID;
KillTimer(SpawnLabelDespawnTimer[playerid]);
}
return 1;
}
forward SpawnLabelTimer(playerid);
public SpawnLabelTimer(playerid)
{
Delete3DTextLabel(PlayerSpawnLabel[playerid]);
PlayerSpawnLabel[playerid] = Text3D:INVALID_3DTEXT_ID;
KillTimer(SpawnLabelDespawnTimer[playerid]);
}
|
One last question, should I always killtimers? Even those that are ment to loop?


