Noleran

Система вип объявлений

В теме 7 сообщений

Всем привет, сегодня я хочу вам представить систему вип объявлений

Для начала, заходим в наш мод, жмем CTRL+F и ищем new. Туда мы вписываем следующее:

new vadtime[MAX_PLAYERS];

Это будет лимит отправки сообщений по времени.

 

Далее переходим к добавлению команды. Ищем строку cmd:.

После команды, которая там стоит добавляем команду подачи объявления:

CMD:vad(playerid, params[])
{
    if(PI[playerid][pVIP] < 7)  //pVIP - ваша переменная на випку, 7 - уровень випки}
        return SCM(playerid, COLOR_RED, NO_DOSTUP_TEXT); //Ваша проверка}

    new text[128];
    if(vadtime[playerid] > gettime())
        return SCM(playerid, COLOR_RED, !"Объявление можно подавать один раз в 1 минуту."); //SCM - SendClientMessage
    if(sscanf(params, "s[128]", text))
        return SCM(playerid, COLOR_RED, !"Используй: /vad [объявление]"); //SCM - SendClientMessage
    if(strlen(text) > 128 || strlen(text) < 10) //Лимит символов
        return SCM(playerid, COLOR_RED, !"Объявление должно содержать от 10 до 128 символов!"); // SCM - SendClientMessage
    if(CheckIsADomen(playerid, text)) return 1;
    {
        SCMAllf(COLOR_BLUE, "[VIP-AD] {FF0000}%s. {FFFFFF}Автор: %s", text, PN(playerid)); //SCMAllf - SendClientMessageToAllf
    }

    vadtime[playerid] = gettime()+60; //Лимит по времени

    return 1;
}

Ну вот и все, если будет много актива то выложу другие системы

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


Ссылка на сообщение
Поделиться на другие сайты
  В 10/28/2021 в 09:08, Noleran сказал:

if(CheckIsADomen(playerid, text))

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

Хотя бы качественнее вырезайте) Где checkisadomen?

 

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


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

Когда вырезал уже так было, но все работает отлично

 

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


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

+

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

Кнопочка "+" в правом нижнем углу текста автора есть. Отмечайте тему как понравившуюся через эту кнопку, чтобы выразить положительные эмоции.

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


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

У меня один вопрос, для чего выделять столько памяти под обычный лимит сообщений?
 

new vadtime[MAX_PLAYERS];


И никого это не смущает?

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


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

@babyproger, хорошо, что хотя бы вас смущает. Если бы не вы, ох, страшно представить, что было бы...  И, коль уж на то пошло, предложили бы улучшенный, на ваш взгляд, вариант.

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


Ссылка на сообщение
Поделиться на другие сайты
  В 10/31/2021 в 14:32, babyproger сказал:

столько памяти

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

4 b * 1000 = 4 000 b ~ 4 kB, разве это очень много? 

Как мне кажется, при разработке скриптов на PAWN, лучше обращать внимание на читаемость, понятность, поддерживаемость системы, нежели на чрезмерную оптимизацию, которая в принципе ничего не дает. 

  В 10/28/2021 в 09:08, Noleran сказал:

SCMAllf

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

Как по мне, лучше не использовать таких сокращений, как будто лимит на буквы ввели. Полное название более читаемое

SendClientMessageToAllFormat(...)

  В 10/28/2021 в 09:08, Noleran сказал:

PN

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

Здесь аналогично. 

 

Я бы предложил такой вариант.

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

Тут используется доступ к глобальным переменным через функции, мне кажется, такой подход лучше чем менять глобальное состояние во всем моде. Так все изменения "стекаются" в одно место, и их можно хоть как-то контролировать. 

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

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

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

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

    • Michov Andr
      От Michov Andr
      Re:samp RP — проект в разработке
      Re:samp RP — это SA-MP в стиле RP-проект, который в данный момент находится в активной разработке. Мы создаём сервер с бонусной системой, где механики будут, и игроки смогут развивать свои персонажи, зарабатывать деньги и взаимодействовать с окружающим миром. Однако, главное — это ролевой процесс. Вы сами выбираете, хотите ли вы заниматься бизнесом и фармом или погружаться в глубокую ролевую игру. Всё зависит от того, какой путь вы хотите пройти.
      Мы стремимся к тому, чтобы на сервере не было скучного фарма и бесконечных рутинных задач. Всё будет сбалансировано так, чтобы каждый игрок мог выбрать свой стиль игры и наслаждаться процессом, будь то отыгрыш роли, развитие персонажа или участие в экономике.
      Что касается доната — на сервере будет доступна возможность покупки привилегий, включая покупку админки. Мы не планируем делать донат обязательным для прогресса, и он не будет влиять на геймплей, но те, кто хотят ускорить процесс или получить дополнительные возможности, смогут воспользоваться такими предложениями. Всё сделано так, чтобы не нарушать баланс и не превращать сервер в платный путь к успеху.
      Re:samp RP — это сервер, где каждый игрок может найти для себя интересное занятие и, главное, где всегда будет место для качественной ролевой игры. Мы не навязываем никаких обязательных механик, и все решения остаются за вами. Стартовый бонус, донат, админки — это всё дополнительные возможности, но не основа игры. 
      Discrod:https://discord.gg/ernRMjyEJy
       
             
      на логотип не смотрим да признаюсь взял с самп рп() но уж больно он норм)
    • djxxx
      От djxxx
      приветствую всех.
       
      Задался таким вопросом при добавлении одной системы на DIALOG_STYLE_TABLIST_HEADERS.
       
      Суть проблемы в том, что диалог не выравнивается под нужные показатели, а просто как будто находиться по середине, в диалоге используется \t, но они особо не помогают в решении, также не ровно.
       
      а если попытаться выравнивать большим количеством \t, оно компилируется но в игре происходят вылеты
       
      Код такой:
      DialogAdmShop ( playerid, DIALOG_EPOINTSHOP, DIALOG_STYLE_TABLIST_HEADERS, fmt_str, ""BR"номер\t"BR"наименование\t"BR"доступное действие\n"\ "{EB4C42}#1\t{FFFFFF}Виртуальная валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#2\t{FFFFFF}Донат валюта\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#3\t{FFFFFF}Вип статусы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#4\t{FFFFFF}Кейсы\t{888888}нажмите для взаимодействия\n"\ "{EB4C42}#5\t{FFFFFF}Уникальные аксессуары\t{888888}нажмите для взаимодействия", "Выбрать", "Закрыть" ); }  
      сток dialogadmshop:
      stock DialogAdmShop(playerid, dialogid, style, title[], text[], button[], button2[]) {   if(style == 5)   {      ShowPlayerDialog(playerid, 0, DIALOG_STYLE_LIST, "...", "...", "...", "");    }   ShowPlayerDialog(playerid, dialogid, style, title, text, button, button2);   return 1; }  
    • Dev_Persona
      От Dev_Persona
      Приветствую всех, у меня возник такой вопрос:
       
      - хочу изменить базовую регистрацию в админке в крмп, на Болле сложную то-есть, сейчас изначально пароль от админки может быть только из цифр, хотелось бы узнать как можно было бы сделать что бы можно было использовать и цифры и буквы, вот код:
       
      case DIALOG_ADMIN_REG:
         {
          if(!response) return FixKick(playerid);
       
          if(strval(inputtext) < 100000 || strval(inputtext) > 999999) return ShowPlayerDialog(playerid, DIALOG_ADMIN_REG, DIALOG_STYLE_INPUT, "{FF6347}"PROJECT_NAME" {ffffff}| Придумайте пароль", "{FFFFFF}Для того, чтобы продолжить дальше - придумайте и введите\n{FFFFFF}пароль от панели администратора в диалоговое поле ниже.\n\n{FFFFFF}Пароль должен быть из 6 цифр.\n", "Готово", "");
                   SetPlayerData(playerid, P_APASS, strval(inputtext));
       
                   UpdatePlayerDatabaseInt(playerid, "AdminPassword", GetPlayerData(playerid, P_APASS));
       
                   AdminAuthorization(playerid);
         }