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

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #21
@diller110,
PHP:
GetClientName(iClient, name, 64);
            ReplaceString(name, 64, "'", "", false);
            ReplaceString(name, 64, "\"", "", false);
            GetClientAuthId(iClient, AuthId_Steam2, steamid, 32);
            ReplaceString(Text, 512, "'", "", false);
            ReplaceString(Text, 512, "\"", "", false);
это еще зачем? - SQL_EscapeString

Перед созданием таблицы лоч базу (SQL_LockDatabase), а после создания SQL_UnlockDatabase
PHP:
SQL_FastQuery(db, "CREATE TABLE IF NOT EXISTS Request (id int(11) NOT NULL AUTO_INCREMENT, name varchar(64), steamid varchar(32), time int(12), request varchar(256), status int);");

PHP:
"`id` UNSIGNED INTEGER PRIMARY KEY AUTOINCREMENT"

И еще глянь Типы данных в SQLite версии 3 — xBB.uz
--- Добавлено позже ---
@diller110,
PHP:
PrintToChat(iClient, " \x06[Request] \x01Ваша заявка: (%d)\x06%s", strlen(Text), Text);
strlen шта?
после добавления просто получи SQL_GetInsertId и выводи уже тогда это сообщение.

И приведи всё в новый синтаксис, а то глаза болят что всё по разному.
--- Добавлено позже ---
@diller110,
PHP:
PrintToChat(iClient, " \x06[Request] \x01Ваша заявка: (%d)\x06%s", strlen(Text), Text);
strlen шта?
после добавления просто получи SQL_GetInsertId и выводи уже тогда это сообщение.

И приведи всё в новый синтаксис, а то глаза болят что всё по разному
 

diller110

Добрая душа
Сообщения
353
Реакции
278
@R1KO, Спасибо! Поставил нормальные типы данных, все заработало)
Это я просто измерял кол-во символов сообщения. Интересно, что при вводе сообщения, ограничение не 192, а ~500.
Мне интересно, ведь эта функция экранирует запрос, чтобы содержащиеся данные не ломали структуру запроса. Зачем ей нужна переменная базы? Неужели она отправляет строку в базу, та её экранирует, возвращает, и затем плагин снова отправляет?) (какой бред я пишу))
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #23
Мне интересно, ведь эта функция экранирует запрос, чтобы содержащиеся данные не ломали структуру запроса. Зачем ей нужна переменная базы? Неужели она отправляет строку в базу, та её экранирует, возвращает, и затем плагин снова отправляет?)
Тоже было интересно, перерыл исходники в итоге нашел что оригинальная функция mysql_real_escape_string тоже имеет на входе строку и базу
PHP:
needed = mysql_real_escape_string(m_mysql, buffer, str, size);
Это я просто измерял кол-во символов сообщения. Интересно, что при вводе сообщения, ограничение не 192, а ~500.
по идее оно там не нужно
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@AlmazON, мне кажется, что в ксго вопрос но-стим как минимум не очень актуальный.
@diller110, через форму в мотд можно отправить нужное количество символов, а чат довольно ограничен.
Можно, конечно, ограничиться, но лучше сделать по нормальному.
Я бы транзакцией создавал uuid() и делал запись в базе, куда бы вносил уникальный ключ, стим айди и текущее время. А затем открывал бы в мотд страничку с этим ключём. Если страница будет открыта без ключа или ключ будет отсутствовать в бд, то перекидывать на 404. Старые просроченные записи удалять через автоматическую процедуру. Ну а каким должен быть остальной функционал не так сложно понять.
Плагин даже в таком варианте будет прост как пробка, хоть и будет требовать вебсервер и mysql базу, но преимущество в неограниченном количестве символов просто "на лицо".
 

Drumanid

Нестандартное звание
Сообщения
1,862
Реакции
1,748
Есть предложение..

Админ заходит на сервер, через 15 секунд будет вылезать менюшка с жалобами на игроков КОТОРЫЕ В ДАННЫЙ МОМЕНТ НАХОДЯТСЯ В СЕТИ, чтобы сразу рассмотреть жалобу на них :big_boss:
 

666FoX666

Участник
Сообщения
702
Реакции
210
@diller110, завёлся, даже ошибок нет. Но чёт как-то совсем под CSS не адаптировано. Некоторые пункты работают через раз (Например, после отправки жалобы, меню не открывается в течении секунд 15). Разукраска не работает, ну и оформление в чате (Но это не самое страшное). В принципе, если заморочиться (Мне), могу попробовать выложить вариант под CSS, но это сильно потом)
 

m9c0

Участник
Сообщения
159
Реакции
72
@diller110, Спасибо! Обновил на своем сервере плагин. Работает без ошибок! Протестировал и вот что обнаружил\хотелось бы увидеть:

1. Если зайти в меню, с помощью команды !rq - выбрать пункт "Статистика" - и нажать "Выход" - то попадаешь в главное меню "Управление заявками" (админка). Такого как бы не должно быть. А что если простой пользователь это обнаружит? Надо бы исправить. Скриншот менюшки прилагаю

2. Если изменить статус заявки, то в чате выводится: [Request] Статус заявки 2 изменен на 3. Лично я примерно понимаю, что это значит, но все-таки хотелось бы видеть что-то такое: "[Request] Статус заявки 2 изменен на Выполнено" к примеру. Скриншот прилагаю

3. Как я уже ранее просил, побольше бы статусов заявок:
- Не просмотрено
- Принято
- Отклонено
- В работе
- В ожидании
- Выполнено

4. Есть ли вообще необходимость в менюшках писать "Конец списка"?

======================

Немного исправил перевод плагина.
Если можешь, то внеси изменения в мою версию.
 

Вложения

  • выход из статистики.jpg
    выход из статистики.jpg
    157.7 КБ · Просмотры: 38
  • статус заявки.jpg
    статус заявки.jpg
    142 КБ · Просмотры: 37
  • Request2.sp
    21.4 КБ · Просмотры: 6

diller110

Добрая душа
Сообщения
353
Реакции
278
Список изменений версии 2.1:
  • Добавлены квары sm_request_showban и sm_request_flag.
    • sm_request_showban 1 - Если у вас ведется запись демок, в меню появится пункт "Подозрения в читерстве", с таким сообщением: request-cheater.png
    • sm_request_flag "с" - Флаг доступа в админке к управлению заявками.
  • Небольшие изменения, для поддержки большего кол-ва статусов. (добавлять прямо в исходнике)
  • Оповещение игрока если его заявка изменена:
    • При условии, что он в онлайне - сразу
    • Если карта не менялась, а игрок зашел - при входе
  • Оповещение админа при входе о кол-ве непрочитанных заявок (статус 0)
  • Косметические изменения сообщений и менюшек (спасибо @m9c0)
 
  • Мне нравится
Реакции: m9c0

m9c0

Участник
Сообщения
159
Реакции
72
@diller110, следующий обзор будет про этот плагин. Я думаю ближе к концу сентября сниму и выложу)
 

diller110

Добрая душа
Сообщения
353
Реакции
278
@m9c0,
попадаешь в главное меню "Управление заявками"
Только если ты админ. Просто не хотелось делать две разные менюшки, поэтому сделал перенаправление. Убрал, теперь наоборот, из админки кидает в пользовательское меню.
"[Request] Статус заявки 2 изменен на Выполнено"
Сделал
побольше бы статусов заявок
Не вижу смысла в большем кол-ве статусов, например: Просмотрено... непонятно игроку, что с этим делать.
Есть ли вообще необходимость в менюшках писать "Конец списка"?
Исправил.
Если можешь, то внеси изменения в мою версию.
Изменений много. Все твои исправления поправил, а цвета можешь через Notepad++ изменить: с \x06 на \x07
 
  • Мне нравится
Реакции: m9c0
A

Altaj

Почему в меню все пункты под цифрами? Это особенность соурс мода?
Перешёл на GO с 1.6 и немного напрягает такое.
 

diller110

Добрая душа
Сообщения
353
Реакции
278
@Altaj, Вроде можно сделать без пунктов через Panel, но думаю только проблем наживешь, а так и ориентироваться легче.
 

m9c0

Участник
Сообщения
159
Реакции
72
@diller110, протестировал версию 2.1, вроде все в порядке. Спасибо!
 

diller110

Добрая душа
Сообщения
353
Реакции
278
Список изменений версии 2.2:
  • Исправлен фриз при удалении заявки и мелкие доработки в коде.
  • Изменены некоторые пункты меню (см. скриншоты):
    • Убраны ненужные цифры (за идею спасибо @Altaj )
    • Возвращение в главное меню при редактировании заявки
    • Статистика возвращает в правильное меню
    • Меню управления заявкой умещается на одной странице
    • request22.png
p.s. Извините что так часто изменения, хотя от идей не откажусь.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #40
@diller110,
  1. PHP:
    char TAG[] = " \x06[Request]";
    char statuss[][] = {"Не просмотрено", "В работе", "Выполнено", "Отклонено"};
    объяви их как static const
  2. где же #pragma newdecls required ?
  3. Format(buffer, maxlength, "Статистика");
    FomatEx быстрее
  4. char Text[512]; вроде как лимит для чата 192.
  5. PHP:
    name_safe[64], Text_safe[512];
    Для Escape нужно maxlen*2+1.
  6. if(StrEqual(Text, "\"\"", false))
    После TrimString строка просто будет пустой и потому достаточно if(!Text[0])
  7. stock на ф-ях не нужен.
  8. PHP:
    public void DB_InformClient(Database dbase, DBResultSet results, const char[] error, any data){
    	if (results != null)
    и другие каллбеки запросов - лучше выводить эррор в случае ошибки, тогда можно будет легко отследить где и когда произошла ошибка.
 
Сверху Снизу