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

Проблемка с аргументами и командой

Dmitriy Makarov

Умник
Привет. Делал команду /su для выдачи розыска. Столкнулся с такой проблемой, что информаци в чат выводит неправильную, да и сам розыск выдается неправильно.
Можете подсказать, в чём проблема и где косяк?
Вот фотокарточка:
На скриншоте, в открывшемся чате я показываю что я вводил. (/su 0 3 1.1), а сами аргументы такие: /su [ID] [Уровень розыска] [Причина].
Мне должно было дать 3 уровня розыска, но вместо этого дало 1-й уровень и в чате написало, что я объявлен в розыск 51-го уровня, текущий уровень такой же. +В чате какой-то баг с текстом, между должностью человека и подразделением большой отступ, в коде такого нет.

Баг с текстом, а именно отступ между должностью и подразделением и в команде /m (Мегафон)
Фотокарточка:


Вот сами команды:
C++:
// CMD /su
CMD:su(playerid, params[])
{
    if(pInfo[playerid][pFaction] != 1) return SCM(playerid, COLOR_GREY, "Вы не можете использовать эту функцию");
    if(sscanf(params, "ds[128]", params[0], params[1], params[2])) return SCM(playerid, COLOR_GREY, "Используйте: /su [ID] [Уровень розыска] [Причина]");
    if(!IsPlayerConnected(params[0])) return SCM(playerid, COLOR_GREY, "Игрока с таким ID нет на сервере");
    if(GetDistanceBetweenPlayers(playerid, params[0]) > 20 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(params[0])) return SCM(playerid, COLOR_GREY, "Этот игрок находится от Вас слишком далеко");
    if(pInfo[params[0]][pWanted] == 6) return SCM(playerid, COLOR_GREY, "У этого игрока сейчас максимальный уровень розыска");
    pInfo[params[0]][pWanted] += 1;
    new query[256];
    SetPlayerWantedLevel(params[0], pInfo[params[0]][pWanted]);
    format(query, sizeof(query), "%s %s %s[%d] объявил Вас в розыск %d-го уровня. Причина: %s. Текущий уровень розыска: %d", fracRangs[pInfo[playerid][pFaction]-1][pInfo[playerid][pDivision]][pInfo[playerid][pRang]-1], diviNames[pInfo[playerid][pFaction]-1], pInfo[playerid][pName], playerid, params[1], params[2], pInfo[params[0]][pWanted]);
    SCM(params[0], 0xFF6600AA, query);
    format(query, sizeof(query), "%s %s %s[%d] объявил %s[%d] в розыск %d-го уровня. Причина: %s. Текущий уровень розыска: %d ", fracRangs[pInfo[playerid][pFaction]-1][pInfo[playerid][pDivision]][pInfo[playerid][pRang]-1], diviNames[pInfo[playerid][pFaction]-1], pInfo[playerid][pName], playerid, pInfo[params[0]][pName], params[0], params[1], params[2], pInfo[params[0]][pWanted]);
    SCM(playerid, 0x0099FFAA, query);
    return 1;
}

// =====================================================================================================================================
// CMD /m
CMD:m(playerid, params[])
{
    if(pInfo[playerid][pMute] != 0) return SCM(playerid, COLOR_BLUE, "Доступ в чат заблокирован. Чтобы узнать время до разблокировки чата, введите /mtime");
    if(pInfo[playerid][pFaction] != 1) return SCM(playerid, COLOR_GREY, "Вы не можете использовать эту функцию");
    if(sscanf(params, "s[128]", params[0])) return SCM(playerid, COLOR_GREY, "Используйте: /m [текст]");
    new query[144];
    if(IsPlayerInAnyVehicle(playerid)) // Пока что так для теста
    {
        // fracRangs[pInfo[params[0]][pFaction]-1][pInfo[params[0]][pDivision]][pInfo[params[0]][pRang]-1]);
        format(query, sizeof(query), "[Мегафон] %s %s %s[%d]: %s", fracRangs[pInfo[playerid][pFaction]-1][pInfo[playerid][pDivision]][pInfo[playerid][pRang]-1], diviNames[pInfo[playerid][pFaction]-1], pInfo[playerid][pName], playerid, params[0]);
        ProxDetector(45.0, playerid, query, 0xFFFF00FF, 0xFFFF00FF, 0xFFFF00FF, 0xFFFF00FF, 0xFFFF00FF);
        SetPlayerChatBubble(playerid, params[0], 0xFFFF00FF, 45.0, 3000);
    }
    else
    {
        SCM(playerid, COLOR_GREY, "Вы должны находиться в полицейской машине");
    }
    return 1;
}
Список названий должностей и подразделений:
C++:
new fracNames[][128] = {"Министерство Внутренних Дел", "Правительство"};
new diviNames[][][128] = {{"LSPD", "SFPD", "LVPD"}, {"Мэрия Лос-Сантоса", "Мэрия Сан Фиерро", "Мэрия Лас Вентураса"}};
new fracRangs[][][10][128] =
{
    {"", "", "", "", "", "", "", "", "", "Министр Внутренних Дел"}, // МВД
    {"Рядовой", "Сержант", "Ст. Сержант", "Лейтенант", "Ст. Лейтенант", "Капитан", "Майор", "Подполковник", "Полковник", "Генерал"}, // LSPD
    {"Рядовой", "Сержант", "Ст. Сержант", "Лейтенант", "Ст. Лейтенант", "Капитан", "Майор", "Подполковник", "Полковник", "Генерал"}, // SFPD
    {"Рядовой", "Сержант", "Ст. Сержант", "Лейтенант", "Ст. Лейтенант", "Капитан", "Майор", "Подполковник", "Полковник", "Генерал"} // LVPD
}
 
Сверху Снизу