Dmitriy Makarov
Умник
Привет. Доделывал тут статистику для игрока и столкнулся с проблемой, что все должности в статистике показываются нормально, а когда я пытаюсь вывести там должность Министра, то у меня попросту не открывается сама статистика.
Вот код мой:
Дальше консоль сервера:
Насчет ранга/подразделения Министра:
Подразделение Министра = 0.
Организация = 1.
А ранг может быть хоть 1, хоть 10.
То есть у Министра подразделения нету, есть только организация
LSPD = 1 | LVPD = 2 | SFPD = 3 | Министр = 0.
При открытии окна статистики, я даже делал отдельную проверку на то, если он Министр, то там подразделение не покажется, а покажется только организация и должность, так как думал, что проблема может быть в названии его "подразделения"(которого нету), но все равно не окно не показывается:
И да, насчет обращений к массиву fracRangs, fracNames:
Должность Министра должна была показаться корректно, так как точно такое же обращение у меня идёт в командах МВД, таких как: /su, /clear, /r(/f), /m. В тех, где в чате показывается должность игрока.
В этих командах должность Министра показывается нормально, как нужно. Я оттуда и взял это обращение к массиву, чтобы ошибок точно не было.
Надеюсь, дочитали до конца и подскажете, где проблема.)
Вот код мой:
C++:
// Тут все организации
new fracNames[][128] = {"Министерство Внутренних Дел", "Правительство"};
// Тут все подразделения
new diviNames[][][64] =
{
{"LSPD", "LVPD", "SFPD"},
{"Мэрия ЛС", "Мэрия ЛВ", "Мэрия СФ"}
};
// Тут все названия должностей
new fracRangs[][][10][128] =
{
{ // МВД
{"", "", "", "", "", "", "", "", "", "Министр Внутренних Дел"}, // МВД
{"Рядовой", "Сержант", "Ст. Сержант", "Лейтенант", "Ст. Лейтенант", "Капитан", "Майор", "Подполковник", "Полковник", "Генерал"}, // LSPD
{"Рядовой", "Сержант", "Ст. Сержант", "Лейтенант", "Ст. Лейтенант", "Капитан", "Майор", "Подполковник", "Полковник", "Генерал"}, // LVPD
{"Рядовой", "Сержант", "Ст. Сержант", "Лейтенант", "Ст. Лейтенант", "Капитан", "Майор", "Подполковник", "Полковник", "Генерал"} // SFPD
},
{ // Правительство
{"", "", "", "", "", "", "", "", "", "Президент"}, // Администрация Президента
{"Печеня", "2", "3", "4", "5", "6", "7", "8", "9", "Мэр ЛС"}, // Мэрия ЛС
{"Печеня", "2", "3", "4", "5", "6", "7", "8", "9", "Мэр ЛВ"}, // Мэрия ЛВ
{"Печеня", "2", "3", "4", "5", "6", "7", "8", "9", "Мэр СФ"} // Мэрия СФ
}
};
// То, как я вывожу названия должности и организацию в диалоговое окно (статистика)
// Сток называется ShowStats
format(str, sizeof(str), "{FFFFFF}Организация:\t\t{FFD700}%s\n", fracNames[pInfo[playerid][pFaction]-1]); // Тут, насколько я понял, я обращаюсь к массиву fracNames через Faction(организация) игрока.
strcat(sctring,str);
format(str, sizeof(str), "{FFFFFF}Должность:\t\t{FFD700}%s\n", fracRangs[pInfo[playerid][pFaction]-1][pInfo[playerid][pDivision]][pInfo[playerid][pRang]-1]); // Тут также, только к рангу через подразделение и ранг
strcat(sctring,str);
C++:
[01:18:38] [debug] Run time error 4: "Array index out of bounds"
[01:18:38] [debug] Attempted to read/write array element at negative index -1
[01:18:38] [debug] AMX backtrace:
[01:18:38] [debug] #0 000bf474 in ShowStats (playerid=0, statsid=0) at c:\Users\User\Desktop\Mod\gamemodes\project.pwn:6550
[01:18:38] [debug] #1 000b4e04 in public OnDialogResponse (playerid=0, dialogid=197, response=1, listitem=0, inputtext[]=@0044a5e8 "[1] ") at c:\Users\User\Desktop\Mod\gamemodes\project.pwn:5778
// ================================================================================================================================================================================================
// Ругается на строку 5778
// Сама строка
case 0: ShowStats(playerid, playerid);
// Это с паблика OnDialogResponse. case 0 - это строка статистика
// То есть, при нажатии на строку 0, у меня открывается статистика
Подразделение Министра = 0.
Организация = 1.
А ранг может быть хоть 1, хоть 10.
То есть у Министра подразделения нету, есть только организация
LSPD = 1 | LVPD = 2 | SFPD = 3 | Министр = 0.
При открытии окна статистики, я даже делал отдельную проверку на то, если он Министр, то там подразделение не покажется, а покажется только организация и должность, так как думал, что проблема может быть в названии его "подразделения"(которого нету), но все равно не окно не показывается:
C++:
if(pInfo[playerid][pFaction] >= 1 && pInfo[playerid][pDivision] == 0)
{
format(str, sizeof(str), "{FFFFFF}Организация:\t\t{FFD700}%s\n", fracNames[pInfo[playerid][pFaction]-1]);
strcat(sctring,str);
format(str, sizeof(str), "{FFFFFF}Должность:\t\t{FFD700}%s\n", fracRangs[pInfo[playerid][pFaction]-1][pInfo[playerid][pDivision]][pInfo[playerid][pRang]-1]);
strcat(sctring,str);
}
Должность Министра должна была показаться корректно, так как точно такое же обращение у меня идёт в командах МВД, таких как: /su, /clear, /r(/f), /m. В тех, где в чате показывается должность игрока.
В этих командах должность Министра показывается нормально, как нужно. Я оттуда и взял это обращение к массиву, чтобы ошибок точно не было.
Надеюсь, дочитали до конца и подскажете, где проблема.)
