Вопросы

Я сделал команду на выдачу префикса для админа, что бы когда админ писал в /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

@lanza Команду /a скидывай

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


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

@Shakoladka вот

 

Спойлер

CMD:a(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return false;
    if(ADuty[playerid]!=228) return SendClientMessage(playerid,COLOR_GREY,NO_DUTY_TEXT);
    new result[150], string[200];
    if(sscanf(params,"s[150]",result)) return SendClientMessage(playerid,COLOR_PURPLE,"Используйте: /a [текст]");
    new Admin[32];
    switch(PlayerInfo[playerid][pAdmin])
    {
    case ADM_MODER: Admin = "Хелпер";
    case ADM_SUPER_MODER: Admin = "Ст.Хелпер";
    case ADM_ADMIN: Admin = "Модератор";
    case ADM_SUPER_ADMIN: Admin = "Администратор";
    case ADM_GRAND_ADMIN: Admin = "Следящий Администратор";
    case ADM_GRAND: Admin = "Главный Администратор";
    case ADM_OSNOV: Admin = "Основатель";
    }
    format(string,sizeof(string),"[A] %s %s[%d]: %s",Admin,Name(playerid),playerid,result);
    SendAdminsMessage(COLOR_PURPLE,string,1);
    return true;
}

 

 

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


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

@lanza Замени:

Спойлер

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

 

Спойлер

CMD:a(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return false;
    if(ADuty[playerid]!=228) return SendClientMessage(playerid,COLOR_GREY,NO_DUTY_TEXT);
    new result[150], string[200];
    if(sscanf(params,"s[150]",result)) return SendClientMessage(playerid,COLOR_PURPLE,"Используйте: /a [текст]");
    new Admin[32];
    switch(PlayerInfo[playerid][pAdmin])
    {
    case ADM_MODER: Admin = "Хелпер";
    case ADM_SUPER_MODER: Admin = "Ст.Хелпер";
    case ADM_ADMIN: Admin = "Модератор";
    case ADM_SUPER_ADMIN: Admin = "Администратор";
    case ADM_GRAND_ADMIN: Admin = "Следящий Администратор";
    case ADM_GRAND: Admin = "Главный Администратор";
    case ADM_OSNOV: Admin = "Основатель";
    }
    format(string,sizeof(string),"[A] %s %s %s[%d]: %s",adminprefix[playerid],Admin,Name(playerid),playerid,result);
    SendAdminsMessage(COLOR_PURPLE,string,1);
    return true;
}

 

 

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


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

@lanza Замени:

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


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

 

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


CMD:a(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 1) return false;
    if(ADuty[playerid]!=228) return SendClientMessage(playerid,COLOR_GREY,NO_DUTY_TEXT);
    new result[150], string[200];
    if(sscanf(params,"s[150]",result)) return SendClientMessage(playerid,COLOR_PURPLE,"Используйте: /a [текст]");
    new Admin[32];
    switch(PlayerInfo[playerid][pAdmin])
    {
    case ADM_MODER: Admin = "Хелпер";
    case ADM_SUPER_MODER: Admin = "Ст.Хелпер";
    case ADM_ADMIN: Admin = "Модератор";
    case ADM_SUPER_ADMIN: Admin = "Администратор";
    case ADM_GRAND_ADMIN: Admin = "Следящий Администратор";
    case ADM_GRAND: Admin = "Главный Администратор";
    case ADM_OSNOV: Admin = "Основатель";
    }
    format(string,sizeof(string),"[A] %s %s %s[%d]: %s",adminprefix[playerid],Admin,Name(playerid),playerid,result);
    SendAdminsMessage(COLOR_PURPLE,string,1);
    return true;
}

 

 

#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
format(string, sizeof string, str, PlayerInfo[giveAdmin][pName], str_admin[listitem]);

 

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


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

@Shakoladka проблема

 

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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
adminprefix[params[0]][0] = '\0';

 

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


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

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

 

 

 

 

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

 

 

 

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

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


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

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

 

 

 

 

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

 

 

 

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

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

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


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

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

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


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

@lanza 

if(sscanf(params,"ud[100]",params[0],params[1]))
d на s замени, d это числовое. а u это ID, S - string.

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


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

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

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

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


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

#include <a_samp>
#include <DC_CMD>
#include <foreach>

#define DIALOG_APREFIX   444

enum pInfo
{
	pName,
	pAdmin
};

new
    giveAdmin,
    PlayerInfo[MAX_PLAYERS][pInfo];
    

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 0;
    if (isnull(params))
        return SendClientMessage(playerid, 0x800080AA, !"Используйте: /a [текст]");

    static
        string[145];

    format(string, sizeof string,"[A] %s %s[%d]: %s", str_admin[PlayerInfo[playerid][pAdmin]-1], PlayerInfo[playerid][pName], playerid, params);
    foreach (Player, i)
    {
        if (PlayerInfo[i][pAdmin] != 0)
            SendClientMessage(i, -1, string);
    }
    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[listitem]);
        SendClientMessage(playerid, 0xFFCC00FF, string);
    }

    return 1;
}

 

 

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

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


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

@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

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

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 пользователей онлайн

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

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

    • Mister Odin
      От Mister Odin
       
      new
       g_teleport_list[39][E_TELEPORT_LIST] = {  {"Спавн пгт.Батырево", 1802.3612, 2508.4824, 15.8887},  {"Спавн г.Арзамас", -113.5887, 977.7222, 12.0346},     {"Спавн г.Южный", 2744.2770, -2446.7246, 21.8988},     {"Центральный банк", 1852.020385,2040.791381,15.892713},  {"Рублёвка", -837.7783, 888.6161, 12.7232},  {"Казино", 1332.4252, 2358.7014, 17.6641},  {"Битва за контейнеры", 614.5167, 1722.3566, 12.0709},  {"Автосалон низкого класса", 2493.9616, -722.9544, 12.3315},  {"Автосалон среднего класса", 1407.7449, 455.4801, 13.1630},  {"Автосалон высокого класса", -14.0637, 2614.5664, 10.9892},   {"Мотосалон Harley Davidson", 785.720153, 750.465087, 12.000024},  {"Автошкола", 1909.174438,2227.679687,15.708162},  {"Военкомат", 1916.778564,2302.411376,15.574637},  {"Правительство области", -139.140975,593.789611,12.145712},  {"Отдел полиции №1 (ГИБДД)", 1906.805786,-2234.382812,11.257631},  {"Отдел полиции №2 (УМВД)", 2581.309326,-2416.139892,21.960090},  {"Отдел ФСБ", 1823.904663,2095.636718,15.848405},  {"Городская больница г.Арзамас", -285.797210,581.851562,12.120290},   {"СМИ", -317.708038,821.221679,13.051450},  {"Воинская часть", 1703.197265,1678.025878,15.279437},  {"Арзамасская ОПГ", 438.705322,1046.505126,12.002637},  {"Батыревская ОПГ", 1941.203857,2161.006591,15.705187},  {"Лыткаринская ОПГ", -2346.002441,75.257041,21.002962},  {"Шахта", 2381.5727, 1726.4451, -2.1506},  {"Завод", -1062.6697, 2204.1894, 38.0964},  {"Инкосация", 1864.1374, 2011.7136, 15.8546},  {"Транспортная Компания", 2362.1115, 1972.5627, 15.5530},  {"База механиков", 1840.918090,-118.025146,15.695312},  {"Курьерская служба доставки", 2764.509765,-2396.882568,21.890625},  {"Аренда автобуса(Южный)", 2771.041992,-2454.780761,21.845964},  {"Аренда автобуса(Арзамас)", -127.487670,943.652648,12.142824},   {"Аренда автобуса(Батырево)", 1798.986328,2529.591552,15.664262},  {"Гоночная трасса", -1568.7784, 1611.8305, 36.3971},  {"Дом на горе", -789.5397, -456.7479, 741.1422},  {"СТО и тюнинг-ателье", 1856.1375, -122.3266, 15.6888},  {"Аренда транспорта пгт.Батырево", 1763.641723,2255.673339,15.865348},  {"Аренда транспорта г.Арзамас", -36.923530,1360.673583,12.002090},  {"Аренда транспорта г.Южный", 1966.599975,-2603.943603,10.820312},  {"Тайный интерьер в Лыткарино", -2424.5818, 2846.3291, 40.7908} };