Вопросы

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
      Доброго времени суток уважаемые форумчане !
      Я начинающий Pawn-кодер, немного влился в функционал, шарю за диалоги, актеров, и прочего, сейчас занялся автошколой, 
      создал актеров, добавил маппинг, добавил 1 диалог на актера встречающего игрока при входе, ну и преподавателя, вот теперь дело дошло до системы вопросов на тесте и самой практики, много думал по этому делу, думал через switch вопросы писать, потом думал через отдельные диалоги, но всё-таки не додумался, хочу попросить помощи у специалистов данного языка, с реализацией данной системы, желательно на базе MySQL, с плеча попрошу не рубить, у меня код предельно не стандартный, на примере диалогов, чтобы создать сам диалог, надо его объявить в enum dialogs, после переходить в респонс и писать кейс, начинал делать мод по урокам Леона, где 41 серия, дошел до шахты, потом стало в падлу смотреть и начал самостоятельно изучать язык, пока-что в процессе, горю огромным желанием научиться, и всё-же, прошу помощи у специалистов языка.
    • 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, помогите пожалуйста сохранение лидерки и заместителя сделать