Вопросы

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 вот

 

Спойлер

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
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;
}

 

 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
m1n1vv
Свой человек
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

@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 час назад, lanza сказал:

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

 

 

 

 

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

 

 

 

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

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

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


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

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

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

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


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

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

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

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

    • Korochansky
      От Korochansky
      Я рад объявить о выпуске первой публичной версии современной IDE с открытым исходным кодом под лицензией GPLv3 для разработки open.mp и SA-MP, которая отличается интеграцией с SAMPCTL, управлением зависимостями и встроенной поддержкой Git.
       
      Особенности:
      • Разработано специально для open.mp и SA-MP разработки.
      • Встроенная интеграция с SAMPCTL для создания, запуска и управления проектами.
      • Менеджер зависимостей для удобной установки и обновления серверных пакетов и компонентов.
      • Встроенная поддержка Git с индикаторами состояния репозитория и историей коммитов.
      • Маркеры истории изменений для отслеживания измененных и сохраненных строк.
      • Автоматическое сопоставление и выделение скобок
      • Предварительный просмотр цвета для значений RGBA и HEX прямо в редакторе.
      • Интеграция инструмента выбора цвета для быстрой вставки цветов в код Pawn.
      • Режим 'Разделенный редактор кода' для одновременной работы с несколькими файлами.
      • Дерево проекта, оптимизированное для крупных проектов.
      • Интегрированные панели вывода результатов сборки и консоли сервера.
      • Автоматический мониторинг и обновление файлов проектов.
      • Портативная версия (установка не требуется).
       
      В репозитории: https://github.com/daniilkorochansky/spawn
    • Margiela
      От Margiela
      устал от vs code + он часто конфликтует с маками, конкретно с версией M3(как у меня).
      имеются ли аналоги pawno на mac? 
    • Vladislav Diachenko
      От Vladislav Diachenko
      Привет! Мы разрабатываем модульный RP-проект нового поколения и сейчас расширяем команду разработки.
      Если тебе надоело ковыряться в гигантских монолитах со сливов и ты хочешь писать чистый, структурированный код — мы сработаемся.
      Что нужно будет делать:
      Разрабатывать новые системы и оптимизировать текущий функционал.
      Работать с модульной структурой мода (разделение по инклудам, y_hooks).
      Взаимодействовать с базой данных (MySQL R41).
      Наши ожидания от тебя:
      Уверенные знания Pawn и понимание работы MySQL.
      Опыт работы с современным инструментарием (VS Code, компилятор Zeex, git — приветствуется).
      Понимание принципов оптимизации (не писать код, который «ложится» при онлайне).
      Умение трезво оценивать сроки своих задач.
      Что мы предлагаем:
      Адекватное ТЗ без формулировок «сделай то, не знаю что».
      Свободу в реализации технических решений (главное — качество и стабильность).
      Своевременную оплату ([подоговорно / за каждую выполненную задачу / фикс. оклад]).
      Работу в дружной и заряженной на результат команде.
      Заинтересовало? Напиши в ЛС телеграмм: [@VladislaHR]. Расскажи пару слов о своем опыте и, если есть возможность, прикрепи пример своего кода (кусочек системы или ссылку на GitHub).
      Давай делать крутой проект вместе!