[CS:S/CS:GO] Request: Advanced [SM 1.7]

Тема в разделе "Новые плагины", создана пользователем diller110, 11 мар 2015.

  1. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    48
    Request: Advanced
    Текущая версия: 2.2.2

    *ВНИМАНИЕ* По возможности, использовался переходный синтаксис SM 1.7 Не используйте этот плагин на старых версиях!
    Image003.png
    Описание:
    Это моя версия, понравившегося мне плагина заявок: "Request !". В нем игрокам можно было писать сообщения администратору, которые сливались в файл. Главным недостатком плагина, то что единственный способ посмотреть заявки это открыть файл. Request: Advanced же имеет игровое меню, в котором заявки могут просмотреть прямо в игре как игроки, так и администраторы.
    Открыть меню заявок: !request или !rq
    Возможности:
    • Игроки могут оставлять заявки раз в n секунд.
    • Возможность просматривать или удалять последнюю заявку игрока.
    • Меню управления, с возможностью просмотра и удаления заявок.
    • Установка статуса конкретной заявки, который потом может увидеть игрок.
    Требования:
    • SM версии 1.7 и выше

    Поддерживаются игры:
    CS:GO √
    CSS v88 √

    Настройка/Установка:
    (ver 1.0) sm_time_before_request - Время перед отправлением следующей заявки.
    (ver 2.0) sm_request_showban - Отображать в меню заявок подсказку о банах (1/0)
    sm_request_flag - Флаг для отображения в админке меню заявок ("c")
    PHP:
    "request"
    {
        
    "driver"            "sqlite"
        "host"                "localhost"
        "database"            "request"
        "user"                "root"
        "pass"                ""
    }

    История изменений:
    25.08.16 ver 2.0 : - Полностью переписан для базы SQLite (не mysql!)
    - Управление заявками выведено в отдельный пункт в админке
    - Переделана навигация в меню, подменю возвращают в меню при закрытии
    27.08.16 ver 2.1: Request: Advanced [SM 1.7]
    28.08.16 ver 2.2: Request: Advanced [SM 1.7]
    28.08.16 ver 2.2.1: Request: Advanced [SM 1.7]
    09.09.16 ver 2.2.2: Request: Advanced [SM 1.7]


    1. Обойти ограничения символов в чате. Сейчас многие заявки выводятся не полностью.
    2. Возможность игрокам удалять не только последнюю свою заявку, но и на выбор. ver. 2.0
    3. Оповещение игрока если изменился статус его заявки. ver. 2.1
    4. Статистика, в планах добавить туда: Кол-во заявок, рассмотренных, принятых, отклоненных ver. 2.0.
    5. Систему сортировки заявок в файле, тиснение их id по порядку от 1. (сейчас если заявка удалена, её id, будет всегда свободно). ver. 2.0.
    6. Протестировать на возможные дыры из-за keyvalues, например если в заявке будут кавычки. ver. 2.0.
    7. Оповещение администраторов при заходе о нерассмотренных заявках. ver. 2.1
    8. Поддержка mysql

    9. Добавить квар на минимальное кол-во символов в заявке.
    10. Более подробное логгирование в консоль. (например при написании новой заявки)

    Спасибо R1KO и AlmazOn за помощь ^-^
     

    Вложения:

    • Requests.smx
      Размер файла:
      10,3 КБ
      Просмотров:
      63
    • Requests.sp
      Размер файла:
      13,3 КБ
      Просмотров:
      100
    • request.png
      request.png
      Размер файла:
      321 КБ
      Просмотров:
      366
    • Request22.sp
      Размер файла:
      26,8 КБ
      Просмотров:
      34
    • Request22.smx
      Размер файла:
      17,4 КБ
      Просмотров:
      26
    Последнее редактирование: 13 окт 2016
    MOHAX, pentaxist, Александр51 и 6 другим нравится это.
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    Единственный способ - выводить нужные части через 2-3 PrintToChat(All).
     
  3. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    48
    AlmazON, Да, именно так и расчитывал. Помоги обновить твой сток, под новый синтаксис:
    (попробовал сам, но с массивами char не разобрался)
    PHP:
    stock void ExtraPrintToChat(int client, const char[] textany:...)
    {
        
    int a strlen(text)+190l;
        
    char b[a],  s[= ++ReplaceString(bVFormat(batext3), "\n""^"false)][192];
        for (
    int m ExplodeString(b"^"sl192), pmp++) PrintToChat(clients[p]);
    }
     
  4. m9c0

    m9c0

    Сообщения:
    93
    Симпатии:
    17
    @diller110, скажите, есть ли какие-то изменения в плагине спустя год?
    плагин то вроде хороший
     
    diller110 нравится это.
  5. 666pro

    666pro

    Сообщения:
    152
    Симпатии:
    12
    No
     
  6. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    48
    Если у вас есть какие-нибудь предложения, с удовольствием сделаю.
    Как минимум, можно перевести на SQL базу, чтобы работа была стабильнее и быстрее, но это если вам действительно будет нужно.
     
  7. m9c0

    m9c0

    Сообщения:
    93
    Симпатии:
    17
    @diller110, относительно sql идея хорошая!

    Вот мои предложения:
    1. Для админов, добавить пункт меню Request Advanced в админку. Обычные игроки так и будут юзать !rq
    2. Навигация по меню плагина не очень удобная. Например, если нужно выйти назад, то такого пункта нет. Добавить кнопку "Назад".
    3. Пофиксить длину символов в меню. Сейчас текст обрезается.
    4. Если возможно. Когда просматриваешь тикеты, сделать так, чтобы текст тикета выводился не в чате, а в этом же меню и при этом была бы кнопка "Назад"
    5. Статусы тикетов. Неплохо было бы их поменять. Я думаю, что это не составит труда. Сделать к примеру:
    - не просмотрено
    - принято
    - отклонено
    - в работе
    - в ожидании
    - выполнено

    Пока что все... если еще будут идеи, напишу)

    p.s. пока писал это сообщение, я 5й пункт уже сам сделал)
     
    Последнее редактирование: 15 июн 2016
    diller110 нравится это.
  8. 666FoX666

    666FoX666

    Сообщения:
    626
    Симпатии:
    60
    Оффтоп
     
  9. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    48
    В принципе, нет причин не завестись, попробуй, главное SM 1.7 и выше. Если будут ошибки, кидайте.
     
  10. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    Если не хватает совсем немного, то можно попробовать через StartMessageAll("SayText2") выводить сообщения - там реальный лимит заведомо больше.
     
  11. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    48
    @AlmazON, Чат в CS:GO (не знаю как в ксс), просто не предназначен для длинных сообщений. Человек может написать 300 символов, при вводе, а выведется ~192. Скорее всего легче будет, по методу твоего первого совета, просто дробить сообщения.
     
  12. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    Через эту "фичу" - 256. Обычный PrintToChat - 192, т.к. этот предел введён в самих нативах SM (там прямо есть это число, стоит даже просто посмотреть stock PrintToChatAll). Оффтоп
     
  13. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    48
    @AlmazON, Если разница такая, то конечно буду её использовать. А у тебя нет припасённого stock на этот случай? Как с ExtraPrintToChat, сделать функцию: StartSayText2Message(int client, const char[] text, any:...) Такую функцию можно будет за стандарт принять.
     
  14. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    Оффтоп Можно замутить include на это всё. Оффтоп
     
  15. gibs

    gibs Фитиль народного волненья

    Сообщения:
    536
    Симпатии:
    133
    Почему вы не рассматриваете нормальные методы? К примеру, мотд окно?
     
  16. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    Его нужность, как таковая, вообще вызывает сомнения - лучше просто самому прописать полный путь и всё.
    Для SM 1.7.0 и выше такое "смешение" не имеет смысла. Используй встроенный обратный вызов:
    PHP:
    public Action OnClientSayCommand(int client, const char[] command, const char[] sArgs)
    Какие-то большие у тебя массивы.
    PHP:
    FormatTime(datevar11"%m/%d/%Y");
    FormatTime(timevar9"%H:%M:%S");
    GetClientName(iClientplayernameMAX_NAME_LENGTH);
    GetClientAuthId(iClientAuthId_Steam2steamid32);
    У тебя повторяется первая строчка для всего switch'а, когда её можно вынести, как общую.
    На CS:S NoSteam оно вообще не работало в последних версиях, уж не знаю, починили ли.
     
  17. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    48
    @gibs, Почитав твои сообщения, я понял, что ты все делаешь или на 6 из 5, или не делаешь. По делу, мотд конечно круто, но и простенький плагин меню-чат, назвать ненормальным методом не правильно. Суть именно в простоте отправке заявок, по ходу игры.

    @AlmazON, Спасибо за исправления через год создания темы. :ab: Возникла беда с базой данных.
    Код:
    SQL_FastQuery(db, "CREATE TABLE IF NOT EXISTS Request (id int UNSIGNED AUTO_INCREMENT PRIMARY KEY, name varchar(64), steamid varchar(32), time int(12), request varchar(256), status int);");
    
    Вот так создаю таблицу, пробовал еще: id int NOT NULL PRIMARY KEY (по примеру). При вставке строки, id не присваивается, хотя как Primary должен. Непонятка.
    __
    Вставляю так:
    Код:
    FormatEx(query, 512, "INSERT INTO Request (name, steamid, time, request, status) VALUES ('%s', '%s', '%d', '%s', '0');", name, steamid, GetTime(), Text);
     
  18. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.511
    Симпатии:
    1.963
    Оффтоп
     
  19. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.972
    Симпатии:
    2.978
    @diller110, база sql или mysql ? и какая беда то?
     
    Последнее редактирование: 17 июн 2016
  20. diller110

    diller110

    Сообщения:
    138
    Симпатии:
    48

    Вложения:

    • Request2.sp
      Размер файла:
      6,1 КБ
      Просмотров:
      6