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?