• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Должность Министра Внутренних Дел в статистику игрока (/mn)

Dmitriy Makarov

Умник
Привет. Доделывал тут статистику для игрока и столкнулся с проблемой, что все должности в статистике показываются нормально, а когда я пытаюсь вывести там должность Министра, то у меня попросту не открывается сама статистика.
Вот код мой:
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);
}
И да, насчет обращений к массиву fracRangs, fracNames:
Должность Министра должна была показаться корректно, так как точно такое же обращение у меня идёт в командах МВД, таких как: /su, /clear, /r(/f), /m. В тех, где в чате показывается должность игрока.
В этих командах должность Министра показывается нормально, как нужно. Я оттуда и взял это обращение к массиву, чтобы ошибок точно не было.

Надеюсь, дочитали до конца и подскажете, где проблема.)
 
Сверху Снизу