Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Выход из массива

Статус
В этой теме нельзя размещать новые ответы.

Нолик

Нуль
Регистрация
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;
}
Помогите пожалуйста, заранее спасибо.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу