Вопросы

lanza
Новичок

Я сделал команду на выдачу префикса для админа, что бы когда админ писал в /a чат(админский), то у него был префикс, который ему выдали, обзначающий его должность, всё скомпилировалось и на деле должно работать, но нет, захожу на сервер, прописываю команду, вроде прописывается и пишет "Вы выдали администратору префикс ...", но когда пишу в /а чат  допустим привет, то префикс не меняется, а остаётся префикс, прописанный для определённого уровня администратора. Помогите решить эту проблему.

 

от сам код команды

 

CMD:aprefix(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 7) return true;
    if(sscanf(params,"ds[100]",params[0],params[1])) return SendClientMessage(playerid, -1, "/aprefix [id] [префикс]");
    new fstring[400];
    format(fstring, sizeof(fstring), "Вы выдали администратору %s префикс %s", PlayerInfo[params[0]][pName], params[1]);
    SendClientMessage(playerid, 0xFFCC00FF, fstring);
    printf("%s - admpref", adminprefix[params[0]]);
    return true;
}

 

Отредактировано пользователем Shakoladka

Заметка от Shakoladka , создано

Код из вашего pawn мода, требуется брать код под тэг "Код", так же если код большой, то еще и под спойлер

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 ответов на этот вопрос

  • 0

@Shakoladka вот

 

  Код (открыть спойлер)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Shakoladka
Великий Гуру

@lanza Замени:

  открыть спойлер
  открыть спойлер

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
m1n1vv
Свой человек
  В 1/20/2019 в 22:54, Shakoladka сказал:

@lanza Замени:

  открыть спойлер
  открыть спойлер

 

Читать далее...  
#define DIALOG_APREFIX   444

new
    giveAdmin;

static const
    str_admin[][] =
    {
        "Хелпер",
        "Ст.Хелпер",
        "Модератор",
        "Администратор",
        "Следящий Администратор",
        "Главный Администратор",
        "Основатель"
    };

CMD:aprefix(playerid, params[])
{
    if (PlayerInfo[playerid][pAdmin] < 7)
        return 0;
    if (isnull(params))
        return SendClientMessage(playerid, -1, !"/aprefix [id]");
    giveAdmin = strval(params);
    if (!IsPlayerConnected(giveAdmin))
        return SendClientMessage(playerid, -1, !"Игрок не в сети");

    return ShowPlayerDialog(playerid, DIALOG_APREFIX, DIALOG_STYLE_LIST, !"Должность", !"Хелпер\nСт.Хелпер\nМодератор\nАдминистратор\nСледящий Администратор\nГлавный Администратор\nОснователь", !"Назначить", !"Закрыть");
}

CMD:a(playerid, params[])
{
    if (PlayerInfo[playerid][pAdmin] == 0)
        return ;
    if (ADuty[playerid] != 228)
        return SendClientMessage(playerid, COLOR_GREY, NO_DUTY_TEXT);
    if (isnull(params))
        return SendClientMessage(playerid, COLOR_PURPLE, !"Используйте: /a [текст]");

    static
        string[145];

    format(string, sizeof string,"[A] %s %s[%d]: %s", str_admin[PlayerInfo[playerid][pAdmin]-1], PlayerInfo[playerid][pName], playerid, params);
    SendAdminsMessage(COLOR_PURPLE, string, 1);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == DIALOG_APREFIX)
    {
        if (response == 0)
            return 0;

        static const
            str[] = "Вы выдали администратору %s префикс %s";

        static
            string[sizeof str + MAX_PLAYER_NAME + 22 - 2*2];

        PlayerInfo[giveAdmin][pAdmin] = listitem+1;

        format(string, sizeof string, str, PlayerInfo[giveAdmin][pName], str_admin[PlayerInfo[giveAdmin][pAdmin]-1]);
        SendClientMessage(playerid, 0xFFCC00FF, string);
    }

    return 1;
}

 

Отредактировано пользователем m1n1vv

Заметка от Shakoladka , создано

Код больше 10 строк брать еще и под спойлер

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

@Shakoladka проблема

 

C:\Users\ДЛЯ ВАЛФЕЙФА\Desktop\Бонусник Мод 2018\gamemodes\brpmode.pwn(72106) : error 033: array must be indexed (variable "adminprefix")

проблема в это строке:

adminprefix[params[0]] = '\0';

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
lanza
Новичок

@m1n1vv префикс теперь просто не выдаётся, всё скомпилировалось, но когда я прописываю кмд /aprefix 0 Батя(Допустим),то мне в чат пишет Введите /aprefix id [префикс], то есть ничего не выдаётся вообще

 

 

 

 

И да, у меня есть команда для админа /god на бессмертие, но нужен таймер, который будет каждые 0.000000001 секунды восстанавливать сам хп, подскажите, как его сделать

 

 

 

Отредактировано пользователем lanza
Причина: Дописал вопрос

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
m1n1vv
Свой человек
  В 1/21/2019 в 18:35, lanza сказал:

@m1n1vv префикс теперь просто не выдаётся, всё скомпилировалось, но когда я прописываю кмд /aprefix 0 Батя(Допустим),то мне в чат пишет Введите /aprefix id [префикс], то есть ничего не выдаётся вообще

 

 

 

 

И да, у меня есть команда для админа /god на бессмертие, но нужен таймер, который будет каждые 0.000000001 секунды восстанавливать сам хп, подскажите, как его сделать

 

 

 

Читать далее...  

Используй мой вариант.

Может проще выдавать бесконечное здоровье? 0x7F800000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
m1n1vv
Свой человек
  В 1/22/2019 в 12:57, lanza сказал:

@m1n1vv твой вариант кмд с префиксом выдаёт около 100 ошибок

Читать далее...  

Умничать не надо. Компилятор максимум выдает 26. Какие?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
m1n1vv
Свой человек
  Проверил. Ошибок нет! (открыть спойлер)

 

Отредактировано пользователем m1n1vv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
lanza
Новичок

@m1n1vv уже лучше, но вот ошибки:

C:\Users\ÄËß ÂÀËÔÅÉÔÀ\Desktop\Áîíóñíèê Ìîä 2018\gamemodes\brpmode.pwn(17812) : symbol is never used: "str_admin"
C:\Users\ÄËß ÂÀËÔÅÉÔÀ\Desktop\Áîíóñíèê Ìîä 2018\gamemodes\brpmode.pwn(60936) : error 017: undefined symbol "str_admin"
C:\Users\ÄËß ÂÀËÔÅÉÔÀ\Desktop\Áîíóñíèê Ìîä 2018\gamemodes\brpmode.pwn(60936) : warning 215: expression has no effect
C:\Users\ÄËß ÂÀËÔÅÉÔÀ\Desktop\Áîíóñíèê Ìîä 2018\gamemodes\brpmode.pwn(60936) : error 001: expected token: ";", but found "]"
C:\Users\ÄËß ÂÀËÔÅÉÔÀ\Desktop\Áîíóñíèê Ìîä 2018\gamemodes\brpmode.pwn(60936) : error 029: invalid expression, assumed zero
C:\Users\ÄËß ÂÀËÔÅÉÔÀ\Desktop\Áîíóñíèê Ìîä 2018\gamemodes\brpmode.pwn(60936) : fatal error 107: too many error messages on one line

 

Отредактировано пользователем odosenok

Заметка от Cawfee , создано

Выкладывайте код правильно. Как это правильно сделать смотрите здесь.

Заметка от Cawfee , создано

Уже дважды Вас предупреждали на этот счет. Впредь будете получать наказания не в устной форме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
m1n1vv
Свой человек

Значит что-то не так подключено

Pawn compiler 3.10.4	 	 	Copyright (c) 1997-2006, ITB CompuPhase

Header size:            676 bytes
Code size:             8300 bytes
Data size:            26224 bytes
Stack/heap size:      16384 bytes; estimated max. usage=25 cells (100 bytes)
Total requirements:   51584 bytes

 

Отредактировано пользователем m1n1vv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • breznov
      От breznov
      Доброго времени суток уважаемые форумчане !
      Хочу попросить помощь у вас, у меня проблемы с сохранением лидерки в базу данных, код:
       
      new FactionName[32] = "Скинхеды"; new Float:FactionHQX = 123.45, Float:FactionHQY = 678.90, Float:FactionHQZ = 10.11; new FactionMembers[MAX_PLAYERS]; new FactionRank[MAX_PLAYERS]; new FactionLeader = -1; // ID лидера (-1 означает, что лидера нет) new FactionDeputy = -1; // ID заместителя (-1 означает, что заместителя нет)

       
      #define FACTION_SKINHEDS 1 #define LEADER_INFO_DIALOG 1


       
      new const FactionRankNames[][] = {     "Новичок",     "Боец",     "Стрелок",     "Головорез",     "Бригадир",     "Доверенное лицо",     "Советник",     "Заместитель",     "Консильери",     "Дон" };  
      public OnGameModeInit():

       
      public OnGameModeInit() {     ConnectMySQL();     DisableInteriorEnterExits();     EnableStuntBonusForAll(0);     SetGameModeText("Armade RP v2.0");     SendRconCommand("hostname "SERVER_NAME" by Didenko");     LoadMapping();     Iter_Clear(Admins_ITER);     Iter_Clear(Question_ITER);     actor1 = CreateActor(159, 1800.0490, 2506.0791, 15.8725, 269.5358);     ApplyActorAnimation(actor1, "PED", "ROADROSS_FEMALE", 4.1, 1, 1, 1, 0, 0);     Create3DTextLabel("{FFFFFF}Нажмите {ffff00}L.ALT{FFFFFF} чтобы начать взаимодействие", COLOR_GREEN, 1800.0490, 2506.0791, 15.8725, 10.0, 0, 1);     //======================[ Пикапы ]==================================     magazvhod1 = CreatePickup(1318, 23, 2074.3257,1838.3256,12.5391, -1);     magazvihod1 = CreatePickup(1318, 23, -25.5779,-184.9357,1003.5469, -1);     SetTimer("SecondUpdate", 1000, true);     SetTimer("MinuteUpdate", 60000, true);     LoadFactionsData(); // Загружаем данные о фракциях и лидерах     return 1; }
       
      Стоки:

       
      stock LoadFactionsData() {     print("LoadFactionsData: Starting to load factions data...");     new query[64];     format(query, sizeof(query), "SELECT id, FactionLeader FROM factions");     mysql_tquery(dbHandle, query, "LoadFactionsData_Callback");     print("LoadFactionsData: Query sent.");     return 1; } forward LoadFactionsData_Callback(MySQL:handle, Cache:result); public LoadFactionsData_Callback(MySQL:handle, Cache:result) {     new rows = cache_num_rows();     printf("LoadFactionsData_Callback: Number of rows loaded: %d", rows);     if(rows > 0)     {         for(new i = 0; i < rows; i++)         {             cache_set_result(0);             new factionID, factionLeaderID;             if (!cache_get_value_name_int(i, "id", factionID)) {                 printf("[ERROR] LoadFactionsData_Callback: Failed to get 'id' for row %d", i);                 continue; // Переходим к следующей итерации, если не удалось получить ID             }             if (!cache_get_value_name_int(i, "FactionLeader", factionLeaderID)) {                 printf("[ERROR] LoadFactionsData_Callback: Failed to get 'FactionLeader' for row %d", i);                 continue; // Переходим к следующей итерации, если не удалось получить FactionLeader             }             printf("LoadFactionsData_Callback: Row %d: factionID = %d, factionLeaderID = %d", i, factionID, factionLeaderID);             if(factionLeaderID != 0)             {                 FactionLeader = factionLeaderID;                 FactionRank[factionLeaderID] = 10;                 printf("LoadFactionsData_Callback: Setting FactionLeader to %d and rank to 10.", factionLeaderID);                 // Не вызываем здесь SetPlayerSkin, пока не подключится игрок                 //if(IsPlayerConnected(factionLeaderID))                 //{                 //    SetPlayerSkin(factionLeaderID, 115);                 //    PlayerSkin[factionLeaderID] = 115;                 //}             }         }     }     else {         print("LoadFactionsData_Callback: No factions data found in the database.");     }     return 1; } stock SetFactionLeader(playerid, targetid) {     if(player_info[playerid][ADMIN] < 5)     {         SendClientMessage(playerid, CG, "Вы не являетесь администратором!");         return 1;     }     // Убираем старого лидера     if(FactionLeader != -1)     {         FactionRank[FactionLeader] = 1; // Понижаем ранг старого лидера     }     // Назначаем нового лидера     FactionLeader = targetid;     FactionRank[targetid] = 10;     // Сохраняем ID лидера в базу данных     new query[128];     format(query, sizeof(query), "UPDATE factions SET FactionLeader = '%d' WHERE id = '1'", targetid); // Замените '1' на ID вашей фракции, если у вас их несколько     mysql_tquery(dbHandle, query);     new szString[128];     format(szString, sizeof(szString), "Игрок %s назначен лидером фракции!", targetid);     SendClientMessage(playerid, 0x00FF00AA, szString);     SendClientMessage(targetid, 0x00FF00AA, "Вы назначены лидером фракции!");     // Выдаем скин 115     SetPlayerSkin(targetid, 115);     PlayerSkin[targetid] = 115; // Обновляем массив PlayerSkin     SPD(playerid, DLG_LEADERINFO1, DIALOG_STYLE_LIST, "Информация необходимая к прочтению", "{FF0000}!!!ПРОЧИТАТЬ!!!\n{0089ff}[1]{ffffff} Команды лидера", "Выбрать", "Закрыть");     return 1; } stock SetFactionDeputy(playerid, targetid) {     // Проверка на то, является ли игрок админом     if(player_info[playerid][ADMIN] > 5)     {         SendClientMessage(playerid, CG, "Вы не являетесь администратором!");         return 1;     }     // Убираем старого заместителя     if(FactionDeputy != -1) FactionRank[FactionDeputy] = 1; // Понижаем ранг старого заместителя     // Назначаем нового заместителя     FactionDeputy = targetid;     FactionRank[targetid] = 9; // Устанавливаем ранг 9 (Консильери)     new szString[128];     format(szString, sizeof(szString), "Игрок %d назначен заместителем фракции!", targetid);     SendClientMessage(playerid, 0x00FF00AA, szString);     SendClientMessage(targetid, 0x00FF00AA, "Вы назначены заместителем фракции!");     return 1; } // Функция проверки, является ли игрок лидером stock IsPlayerLeader(playerid) {     if(playerid == FactionLeader)     {         return 1;     }     return 0; } // Функция проверки, является ли игрок заместителем stock IsPlayerDeputy(playerid) {     if(playerid == FactionDeputy)     {         return 1;     }     return 0; } // Функция вступления во фракцию stock JoinFaction(playerid, inviterid) {     // Проверяем, состоит ли игрок уже в какой-либо фракции     for(new i = 0; i < MAX_PLAYERS; i++)     {         if(FactionMembers[playerid] != 0)         {             SendClientMessage(playerid, 0xFF0000AA, "Вы уже состоите в другой фракции!");             return 1;         }     }     // Добавляем игрока во фракцию     FactionMembers[playerid] = FACTION_SKINHEDS;     FactionRank[playerid] = 1; // Рядовой (Новичок) - Устанавливаем ранг     new szString[128];     format(szString, sizeof(szString), "Вы вступили в '%s' по приглашению игрока %d!", FactionName, inviterid);     SendClientMessage(playerid, 0x00FF00AA, szString);     format(szString, sizeof(szString), "Игрок %d вступил в '%s' по вашему приглашению!", playerid, FactionName);     SendClientMessage(inviterid, 0x00FF00AA, szString);     return 1; } stock LeaveFaction(playerid) {     if(!IsPlayerInFaction(playerid, FACTION_SKINHEDS))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не состоите в этой фракции!");         return 1;     }     FactionMembers[playerid] = 0; // Обнуляем ID фракции (0 - значит, не состоит)     FactionRank[playerid] = 0;     SendClientMessage(playerid, 0x00FF00AA, "Вы покинули Семью Рейес!");     return 1; } stock GetFactionRank(playerid) {     return FactionRank[playerid]; } stock SetFactionRank(playerid, targetid, rank) {     // Проверка на то, является ли игрок лидером или заместителем     if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права устанавливать ранги!");         return 1;     }     // Проверка на то, чтобы ранг не был слишком высоким     if(rank > 10 || rank < 1)     {         SendClientMessage(playerid, 0xFF0000AA, "Неверный ранг!");         return 1;     }     FactionRank[targetid] = rank;     new szString[128];     format(szString, sizeof(szString), "Вы установили ранг '%s' для игрока %d", FactionRankNames[rank - 1], targetid); // Получаем название из массива     SendClientMessage(playerid, 0x00FF00AA, szString);     format(szString, sizeof(szString), "Вам установлен ранг '%s' игроком %d", FactionRankNames[rank - 1], playerid); // Получаем название из массива     SendClientMessage(targetid, 0x00FF00AA, szString);     return 1; } // Функция проверки, состоит ли игрок во фракции stock IsPlayerInFaction(playerid, factionid) {     if(FactionMembers[playerid] == factionid)     {         return 1;     }     return 0; }
      Ну и команды естественно:

       
      // Команда для установки ранга (пример, только для лидеров) CMD:setrank(playerid, cmdtext[]) {     new targetid, rank;     if(sscanf(cmdtext, "dd", targetid, rank))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setrank [ID игрока] [Ранг]");         return 1;     }     SetFactionRank(playerid, targetid, rank);     return 1; } // Команда информации о фракции CMD:factioninfo(playerid, cmdtext[]) {     new szString[256];     format(szString, sizeof(szString), "Название: %s, Штаб-квартира: %.2f %.2f %.2f", FactionName, FactionHQX, FactionHQY, FactionHQZ);     SendClientMessage(playerid, 0x00FF00AA, szString);     return 1; } CMD:setleader(playerid, cmdtext[]) {     new targetid;     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setleader [ID игрока]");         return 1;     }     SetFactionLeader(playerid, targetid);     return 1; } CMD:setdeputy(playerid, cmdtext[]) {     new targetid;     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /setdeputy [ID игрока]");         return 1;     }     SetFactionDeputy(playerid, targetid);     return 1; } // -------------------------------------------------------------------------- // Команда для приглашения игрока во фракцию (только для лидеров и заместителей) // -------------------------------------------------------------------------- CMD:invite(playerid, cmdtext[]) {     new targetid;     if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права приглашать игроков!");         return 1;     }     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /invite [ID игрока]");         return 1;     }     // Добавим проверку на приглашение самого себя     if(playerid == targetid)     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не можете пригласить самого себя!");         return 1;     }     JoinFaction(targetid, playerid);     return 1; } // -------------------------------------------------------------------------- // Команда для исключения игрока из фракции (только для лидеров и заместителей) // -------------------------------------------------------------------------- CMD:uninvite(playerid, cmdtext[]) {     new targetid;     if(!IsPlayerLeader(playerid) && !IsPlayerDeputy(playerid))     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не имеете права исключать игроков!");         return 1;     }     if(sscanf(cmdtext, "d", targetid))     {         SendClientMessage(playerid, 0xFF0000AA, "Используйте: /uninvite [ID игрока]");         return 1;     }     // Добавим проверку на исключение самого себя     if(playerid == targetid)     {         SendClientMessage(playerid, 0xFF0000AA, "Вы не можете увольнять самого себя!");         return 1;     }     if(!IsPlayerInFaction(targetid, FACTION_SKINHEDS))     {         SendClientMessage(playerid, 0xFF0000AA, "Этот игрок не состоит в вашей фракции!");         return 1;     }     LeaveFaction(targetid);     return 1; }

      Ребят, не судите строго пожалуйста, делал с помощью ChatGPT, помогите пожалуйста сохранение лидерки и заместителя сделать
    • breznov
      От breznov
      Всем доброго времени суток ! Я пишу мод с нуля, дело дошло до подключения cef интерфейсов, я от слова совсем не понимаю как в моде прописать подключения cef.
      Пробовал конечно же подключать, создавал браузер через "cef_create_browser(playerid, 0x12345, "ссылка", false, false);", но ничего не получалось.
      Я только начинаю изучать работу данного языка, извиняюсь за то что я тупоголовый. Хочу попросить помощи у специалистов, будьте добры объяснить написание данной системы с отображением cef пожалуйста =(
      Если нужен будет мой код, я могу его предоставить.