Проблема в вот такой скрипте если я пишу неправельный ид, то сервер перезагружатся. Как исправить?
Code
forward CountDive(playerid);
new countdivecount;
public CountDive(playerid)
{
countdivecount--;
new string[256];
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
format(string, sizeof(string), "%d",countdivecount);
}
GameTextForPlayer(i, string, 1000, 6);
}
}
[b]В OnPlayerCommandText[/b]
if(strcmp(cmd, "/schet", true) == 0)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, COLOR_GRAD2, " пиши: /schet [1] [2] [3] [4]");
return 1;
}
new para1;
new para2;
new para3;
new para4;
para1 = strval(tmp);
tmp = strtok(cmdtext, idx);
para2 = strval(tmp);
tmp = strtok(cmdtext, idx);
para3 = strval(tmp);
tmp = strtok(cmdtext, idx);
para4 = strval(tmp);
if(countdivecount <= 0)
{
countdivecount = 30;
cdive = SetTimerEx("CountDive", 1000, 1, "playerid");
if (IsPlayerConnected(para1)) { CountDive(para1); }
if ((IsPlayerConnected(para2)) && (para2>0)) { CountDive(para2); }
if ((IsPlayerConnected(para3)) && (para3>0)) { CountDive(para3); }
if ((IsPlayerConnected(para4)) && (para4>0)) { CountDive(para4); }
}
else
{
SendClientMessage(playerid, COLOR_GRAD1, " отсчет уже существует");
}
return 1;
}
Все происходит как я понял из-за того, что паблик дается не верному игроку. Хотя стоит проверка если игрок присоединен, но почему-то она все равно не работает.