AMX error occurred in public pc_cmd_show_licenses: Array index out of bounds
Здравствуйте, решил написать простую систему лицензий, при вводе команды, часть отрабатывает нормально, а часть нет.
Команда.
CMD:show_licenses(playerid, params[])
{
new
targetid;
if (sscanf(params
, "d", targetid
)) {
}
{
return SendClientMessage(playerid
, COLOR_LIGHTRED
, "Игрока с таким ником/ид нет в игре."); }
ShowLicensesArray(playerid);
ShowPlayerLicenses(playerid, targetid);
return true;
}
enum E_LICENSES_TYPE
{
E_LICENSE_CAR,
E_LICNESE_AIRPLANE,
E_LICNESE_BOAT,
E_LICNESE_MOTORBIKE,
E_LICENSE_WEAPON,
E_LICENSE_BUSSINES
}
const
MAX_LICENSES_TYPE = _:E_LICENSES_TYPE,
MAX_LICENSE_NAME = 40;
new
bool:g_players_licenses[MAX_PLAYERS][E_LICENSES_TYPE] = {false, ...};
static const g_licenses_name[E_LICENSES_TYPE][MAX_LICENSE_NAME] =
{
"Водительские права",
"Лицензия на возждение самолётом",
"Лицензия на вождение водным транспортом",
"Лицензия на вождения мотоцкла",
"Лицензия на ношей оружия",
"Лицензия на ведения бизнеса"
};
ShowLicensesArray(playerid); - отрабатывает полностью нормально.
stock ShowLicensesArray(playerid)
{
for (new i = 0; i < MAX_LICENSES_TYPE; ++i)
{
printf("[ShowLicensesArray]: i: %d, lic: %d", i
, g_players_licenses
[playerid
][i
]); }
}
GeneratePlayerLicenseList - доходит до строки (11) "printf("[GeneratePlayerLicenseList]: i + 1: %d", i + 1);" отрабатывает и дальше не идёт.
stock GeneratePlayerLicenseList(playerid, output_string[512], const size = sizeof(output_string))
{
printf("[GeneratePlayerLicenseList]: ОТРАБОТАЛ"); output_string[0] = EOS;
format(output_string
, size
, "Лицензии игрока: %s",
for (new i = 0; i < MAX_LICENSES_TYPE; ++i)
{
printf("[GeneratePlayerLicenseList]: i + 1: %d", i
+ 1); printf("[GeneratePlayerLicenseList]: g_players_licenses[playerid][i]: %d)", g_players_licenses
[playerid
][i
]); printf("[GeneratePlayerLicenseList]: g_licenses_name[i]: %s", g_licenses_name
[i
]); printf("[GeneratePlayerLicenseList]: (GetPlayerLicense(playerid, i): %d)", GetPlayerLicense
(playerid
, i
)); printf("[GeneratePlayerLicenseList]: ДОШЛО!"); format(output_string
, size
, "%s%d. %s: %s\n", output_string,
i + 1,
g_licenses_name[i],
(GetPlayerLicense(playerid, i)) ? "Есть": "Отсутствует");
}
}
Не понятно как такое происхсодит, т.к. 12 строка делаёт всё то же, что и цикл в ShowLicensesArray(playerid), но тот отрабатывает нормально, а это нет.
В крашлоге это:
[16:04:46] #0 00012ee8 in ?? (0, 4282148, 512) at C:ссылка\gamemodes\Tested.pwn:885 *(16 строка в GeneratePlayerLicenseList)*
и это:
[16:04:46] #1 00410334 in public pc_cmd_show_licenses () at C:\ссылка\gamemodes\Tested.pwn:38911 *(вообще в самый конец мода, который никак не связан)*