m-v-
Участник
- Сообщения
- 7
- Реакции
- 0
Плагин делался для Dev Zones от Franc1sco.
Суть плагина: При заходе в зону - стартует таймер для команды. Каждую секунду команде выдаётся ХП. (Даже если один игрок из команды в зоне, то выдаётся всем.). Так вот проблема в том, что если два игрока из разных команд находятся в зоне и один игрок из команды выходит - один таймер останавливается. А второй таймер для другой команды не останавливается, когда игрок выходит из зоны.
Кто-бы мог помочь решить проблему с ошибкой KillTimer - Буду очень благодарен.
Суть плагина: При заходе в зону - стартует таймер для команды. Каждую секунду команде выдаётся ХП. (Даже если один игрок из команды в зоне, то выдаётся всем.). Так вот проблема в том, что если два игрока из разных команд находятся в зоне и один игрок из команды выходит - один таймер останавливается. А второй таймер для другой команды не останавливается, когда игрок выходит из зоны.
Кто-бы мог помочь решить проблему с ошибкой KillTimer - Буду очень благодарен.
L 06/24/2020 - 14:31:23: [SM] Exception reported: Invalid timer handle 68870091 (error 3)
L 06/24/2020 - 14:31:23: [SM] Blaming: test.smx
L 06/24/2020 - 14:31:23: [SM] Call stack trace:
L 06/24/2020 - 14:31:23: [SM] [0] KillTimer
L 06/24/2020 - 14:31:23: [SM] [1] Line 81, D:\Plugins\compiler1.10\test.sp::Zone_OnClientLeave
L 06/24/2020 - 14:31:23: [SM] [3] Call_Finish
L 06/24/2020 - 14:31:23: [SM] [4] Line 264, E:\Github\DevZones\DevZones (CORE PLUGIN)\scripting\devzones.sp::EntOut_OnEndTouch
L 06/24/2020 - 14:31:23: [SM] Blaming: test.smx
L 06/24/2020 - 14:31:23: [SM] Call stack trace:
L 06/24/2020 - 14:31:23: [SM] [0] KillTimer
L 06/24/2020 - 14:31:23: [SM] [1] Line 81, D:\Plugins\compiler1.10\test.sp::Zone_OnClientLeave
L 06/24/2020 - 14:31:23: [SM] [3] Call_Finish
L 06/24/2020 - 14:31:23: [SM] [4] Line 264, E:\Github\DevZones\DevZones (CORE PLUGIN)\scripting\devzones.sp::EntOut_OnEndTouch
C-подобный:
public Zone_OnClientEntry(client, const char[] zone)
{
decl String:playerName[64];
GetClientName(client, playerName, sizeof(playerName));
char classname[64];
if(client < 1 || client > MaxClients || !IsClientInGame(client))
{
GetEdictClassname(client, classname, 64);
}
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && GetClientTeam(i) == GetClientTeam(client) && i != client)
{
if(Zone_IsClientInZone(i, "test", false))
{
LogError("Nothing");
}
else
{
Timer_Join = CreateTimer(1.0, Timer_StartPoint, GetClientUserId(client), TIMER_REPEAT);
}
}
}
}
public Zone_OnClientLeave(client, const char[] zone)
{
decl String:playerName[64];
GetClientName(client, playerName, sizeof(playerName));
char classname[64];
if(client < 1 || client > MaxClients || !IsClientInGame(client))
{
GetEdictClassname(client, classname, 64);
}
numPrinted = 0;
for(int i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && GetClientTeam(i) == GetClientTeam(client) && i != client)
{
if(Zone_IsClientInZone(i, "test", false))
{
LogError("Nothing");
}
else
{
KillTimer(Timer_Join);
}
}
}
}