Нолик
Нуль
- Регистрация
- 8 Май 2017
- Сообщения
- 2
- Лучшие ответы
- 0
- Репутация
- 0
Всем привет! Столкнулся с такой проблемой, что при использовании одной команды, выходит краш с причиной выхода из массива:
Сама команда, на которую выходит эта ошибка:
Помогите пожалуйста, заранее спасибо.
PHP:
[12:45:01] [debug] Run time error 4: "Array index out of bounds"
[12:45:01] [debug] Accessing element at index 292892372 past array upper bound 1000
[12:45:01] [debug] AMX backtrace:
[12:45:01] [debug] #0 004608e4 in ?? (1, -1853231105, 292364668, 287714420, 33257576, 292892372) from c-rp.amx
[12:45:01] [debug] #1 0058c8f0 in public cmd_apb (0, 292878384) from c-rp.amx
PHP:
CMD:apb(playerid, params[])
{
new action[24],
secoption[153],
tmp[2][128],
faction = PlayerInfo[playerid][pFaction];
if(faction != LSPD && faction != SASD)
return SCM(playerid, COLOR_LIGHTRED, "Вы должны быть офицером полиции.");
if(!PlayerInfo[playerid][pOnDuty])
return SCM(playerid, COLOR_LIGHTRED, "Вы должны быть на дежурстве (/duty).");
if (sscanf(params, "s[24]S()[153]", action, secoption))
{
SendSyntaxMessage(playerid, "/apb [действие]");
SCM(playerid, 0xAFAFAFFF, "[Действие]:{FFFFFF} create, clear, show, edit, list");
return 1;
}
if(CompareStrings(action, "list"))
{
new count;
for(new i = 1; i != MAX_APBS; i++)
{
if(ApbInfo[i][apbOn] == 0) continue;
if(strlen(ApbInfo[i][apbCharge]) > 64)
SendClientMessageEx(playerid, COLOR_LIGHTRED, "APB %i:{FFFFFF} %.64s ... (%s)", i, ApbInfo[i][apbCharge], ApbInfo[i][apbSuspect]);
else
SendClientMessageEx(playerid, COLOR_LIGHTRED, "APB %i:{FFFFFF} %s (%s)", i, ApbInfo[i][apbCharge], ApbInfo[i][apbSuspect]);
count ++;
}
if(count == 0)
return SendErrorMessage(playerid, "APB заметок не найдено.");
return 1;
}
else if(CompareStrings(action, "show"))
{
new number;
if(sscanf(secoption,"i", number))
return SendSyntaxMessage(playerid, "/apb show [номер APB]");
if(0 == ApbInfo[number][apbOn])
return SendErrorMessage(playerid, "APB заметка не найдена.");
SCM(playerid, -1, "____________________________________");
SendClientMessageEx(playerid, COLOR_LIGHTRED, "Подозреваемый:{FFFFFF} %s", ApbInfo[number][apbSuspect]);
if(strlen(ApbInfo[number][apbCharge]) > 64)
{
SendClientMessageEx(playerid, COLOR_LIGHTRED, "Описание:{FFFFFF} %.64s ...", ApbInfo[number][apbCharge]);
SendClientMessageEx(playerid, -1, "... %s", ApbInfo[number][apbCharge][64]);
}
else
SendClientMessageEx(playerid, COLOR_LIGHTRED, "Описание:{FFFFFF} %s", ApbInfo[number][apbCharge]);
SendClientMessageEx(playerid, COLOR_LIGHTRED, "Добавил:{FFFFFF} %s, %s.", ApbInfo[number][apbOfficer], (ApbInfo[number][apbFaction] == LSPD)?("LVPD"):("SASD"));
SCM(playerid, -1, "____________________________________");
}
else if(CompareStrings(action, "clear"))
{
new number;
if(sscanf(secoption,"i", number))
return SendSyntaxMessage(playerid, "/apb clear [номер APB]");
if(0 == ApbInfo[number][apbOn])
return SendErrorMessage(playerid, "APB заметка не найдена.");
SendClientMessageEx(playerid, COLOR_LIGHTRED, "Вы очистили APB заметку номер %i.", number);
SendFactionMessage(LSPD, COLOR_LSPDNEW, "* HQ: %s %s удалил APB заметку номер %i.", GetRankName(playerid), GetNameEx(playerid), number);
SendFactionMessage(SASD, COLOR_LSPDNEW, "* HQ: %s %s удалил APB заметку номер %i.", GetRankName(playerid), GetNameEx(playerid), number);
new query[128];
mysql_format(dbHandle, query, sizeof(query), "DELETE FROM `apbs` WHERE `id` = %i", ApbInfo[number][apbID]);
mysql_tquery(dbHandle, query);
ApbInfo[number][apbOn] = 0;
ApbInfo[number][apbID] = 0;
}
else if(CompareStrings(action, "edit"))
{
new number,
info[153];
if(sscanf(secoption,"is[153]", number, info))
return SendSyntaxMessage(playerid, "/apb edit [номер APB] [подозреваемый/описание]");
if(0 == ApbInfo[number][apbOn])
return SendErrorMessage(playerid, "APB заметка не найден.");
if(strfind(info, "/", true) == -1)
return SendErrorMessage(playerid, "Не найден символ \"/\".");
SendClientMessageEx(playerid, COLOR_LIGHTRED, "Вы изменили APB заметку номер %i.", number);
explode(tmp, info, "/");
format(ApbInfo[number][apbSuspect], MAX_PLAYER_NAME, "%s", tmp[0]);
format(ApbInfo[number][apbCharge], 128, "%s", tmp[1]);
ApbInfo[number][apbFaction] = faction;
SendFactionMessage(LSPD, COLOR_LSPDNEW, "* HQ: %s %s изменил APB номер %i.", GetRankName(playerid), GetNameEx(playerid), number);
SendFactionMessage(SASD, COLOR_LSPDNEW, "* HQ: %s %s изменил APB номер %i.", GetRankName(playerid), GetNameEx(playerid), number);
new query[128 + 128];
mysql_format(dbHandle, query, sizeof(query), "UPDATE `apbs` SET `charge` = '%s', `suspect` = '%e' WHERE `id` = %i", tmp[1], tmp[0], ApbInfo[number][apbID]);
mysql_tquery(dbHandle, query);
return 1;
}
else if(CompareStrings(action, "create"))
{
new info[128],
suspect;
if(sscanf(secoption,"is[128]", suspect, info))
return SendSyntaxMessage(playerid, "/apb create [id игрока] [описание]");
new apb;
for(new i = 0; i != MAX_APBS; i++)
{
if(ApbInfo[i][apbOn] != 0) continue;
apb = i;
break;
}
if(apb == MAX_APBS)
return SendErrorMessage(playerid, "Нет места для новой APB заметки.");
SendClientMessageEx(playerid, COLOR_LIGHTRED, "Вы создали APB заметку номер %i.", apb);
new query[1000];
mysql_format(dbHandle, query, sizeof(query), "INSERT INTO `apbs` (`faction`, `charge`, `suspect`, `officer`) VALUES ('%d', '%s', '%s', '%s')", faction, info, GetNameEx(suspect), GetNameEx(playerid));
mysql_query(dbHandle, query);
ApbInfo[apb][apbSuspect] = GetNameEx(suspect);
ApbInfo[apb][apbCharge] = info;
ApbInfo[apb][apbFaction] = faction;
ApbInfo[apb][apbOfficer] = GetNameEx(playerid);
apb = cache_insert_id();
ApbInfo[apb][apbID] = cache_insert_id();
ApbInfo[apb][apbOn] = 1;
SendClientMessageEx(playerid, COLOR_LIGHTRED, "Вы создали APB заметку номер %i.", apb);
SendFactionMessage(LSPD, COLOR_LSPDNEW, "* HQ: %s %s добавил новую APB заметку, номер %i.", GetRankName(playerid), GetNameEx(playerid), apb);
SendFactionMessage(SASD, COLOR_LSPDNEW, "* HQ: %s %s добавил новую APB заметку, номер %i.", GetRankName(playerid), GetNameEx(playerid), apb);
}
return 1;
}
Последнее редактирование: