ReHLDS/HLDS CSstatsX SQL by serfreeman1337 [0.74]

Vesuvius

НЕ СКРИПТЕР!!!
Команда форума
Администратор
Регистрация
8 Июн 2017
Сообщения
1.453
Симпатии
477
Пол
Мужской
#1
Автор: serfreeman1337
Версия:
0.74
Источник: CSstatsX SQL
GitHub - serfreeman1337/csstatsx-sql: Запись статистики csstats в БД MySQL


Описание
Запись игровой статистики Counter-Strike в БД MySQL или SQLite. Плагин может выступать в качестве полной замены модуля CSX. После установки он начнет самостоятельность считать статистику игроков и записывать её в базу данных, но чтобы все ваши плагины статистик начали использовать его данные придется немного их изменить, об этом ниже. Может работать с локальной базой данных SQLite. Из новых функций есть подсчет времени нахождения игрока на сервере и расчет скилла по формуле ELO, запись статистики по используемому оружию и истори игр игроков (на подобии HLstatsX:CE). С версии 0.7.2 была добавлена статистика по помощи в убийствах (ассисты).

Требования
  • AMXX 1.8.2 или выше.
Установка
  • Скомпилируйте плагин.
    • Для поддержки utf8 ников требуется AMXX 1.8.3, компилить так-же нужно будет с компилятором от 1.8.3 версии.
  • Раскомментируйте нужный модуль SQL в файле addons/amxmodx/configs/modules.ini.
  • Укажите данные для подключения в кварах csstats_sql_host, csstats_sql_user, csstats_sql_pass, csstats_sql_db, csstats_sql_type.
  • Чтобы плагины статистики начали использовать данные с SQL выполните инструкции ниже.
  • Для обновления с версии 0.4 выполните импорт csstats_04_to_05.sql.
  • Для обновления с версии 0.5 dev выполните импорт csstats_05dev_to_05.sql.
  • Для обновления с версии 0.6 на версию 0.7 выполните импорт csstats_06_to_07.sql.
  • Для обновления с версии 0.7 на версию 0.7.2 выполните импорт csstats_07_to_072.sql.
    • Выполните импорт csstats_07_to_072_maps.sql, если включена запись статистики за карту.
    • Перекомпилите все плагины с новым csstatsx_sql.inc.
  • Для записи статистики за карту необходимо выполнить импорт файла csstats_maps.sql в БД.
    • csstats_maps_sqlite.sql для sqlite.
  • Для обновления с CsStats MySQL выполните импорт csstats_mysql_convert.sql(обратите внимание на название таблицы в sql файле).
    • ВНИМАНИЕ! Опыт, количество подключений и побед конвертированы не будут!
Вариант с заменой модуля CSX
  • Выключите сервер.
  • Файл dummy_csx_amxx из архива переименуйте в csx_amxx.
  • Замените этим файлом ваш модуль в папке addons/amxmodx/modules.
  • Задайте квар csstats_sql_forwards в 1.
  • Пропишите csstatsx_sql.amxx ВЫШЕ всех остальных ваших плагинов статистики.
Вариант без замены модуля CSX
Выполните следующие инструкции для ВСЕХ ваших плагинов статистики.
  • Откройте исходник плагина.
  • Добавьте следующий код в начало файла:
C++:
native get_statsnum_sql()
native get_user_stats_sql(index, stats[8], bodyhits[8])
native get_stats_sql(index, stats[8], bodyhits[8], name[], len, authid[] = "", authidlen = 0)
native get_stats_sql_thread(id,position,top,callback[]);
  • Замените все строчки get_statsnum на get_statsnum_sql.
  • Замените все строчки get_user_stats на get_user_stats_sql.
  • Замените все строчки get_stats на get_stats_sql.
  • Скомпилируйте плагин.
Квары
Квары можно прописывать в amxx.cfg или server.cfg.​
C++:
csstats_sql_host "localhost"     // хост БД MySQL
csstats_sql_user "root"          // пользователь БД MySQL
csstats_sql_pass ""              // пароль БД MySQL
csstats_sql_db "amxx"            // название БД.
csstats_sql_table "csstats"      // название таблицы.
csstats_sql_type "mysql"         // тип используемой базы данных. mysql - база данных MySQL. sqlite - локальная база данных SQLite.
csstats_sql_create_db "1"        // автоматическое создание таблицы в БД. 0 - не отправлять запрос. 1 - отправлять запрос при загрузке карты.
csstats_rank "1"                 // как вести учет игроков: -1 - не учитывать, 0 - по нику, 1 - по steamid, 2 - по ip
csstats_sql_update "-1"          // как обновлять статистику игрока в БД -2 - при смерти и дисконнекте -1 - в конце раунда и дисконнекте
                                 // 0 - при дисконнекте значение больше 0 - через указанное кол-во секунд и дисконнекте
csstats_sql_forwards "0"         // включить собственные форварды для client_death, client_damage
                                 // 0 - выключить 1 - включить, небоходимо, если csstats_sql используется в качестве замены модуля
csstats_sql_rankformula "0"      // формула расчета позиции игрока 0 - убийства - смерти - тк 1 - убийства 2 - убийства + хедшоты
                                 // 3 - скилл 4 - время онлайн.
csstats_sql_skillformula "0"     // формула расчета скилла 0 - The ELO Method (http://fastcup.net/rating.html)
csstats_sql_weapons "0"          // запись статистики по используемому оружию 0 - запись выключена 1 - включить запись.
                                 // В БД будет создана новая таблица csstats_weapons. ВНИМАНИЕ: квар csstats_sql_create_db должен быть установлен в 1
csstats_sql_maps "0"             // запись истории игр игрока 0 - запись выключена 1 - запись включена.
                                 // ВНИМАНИЕ: нужно выполнить импорт файла csstats_maps.sql в БД. Смотрите инструкцию по установке.[/INDENT]
csstats_sql_autoclear "0"        // автоматическое удаление неактивных игроков в БД, которые не заходили на сервер указанное количество дней.
csstats_sql_autoclear_day "0"    // автоматический полный сброс статистики в указанный день месяца
csstats_sql_cachetime "-1"       // функция кеширование для get_stats -1 - кеш включен 0 - кеш выключен не работает при csstats_sql_update -2 и 0
csstats_sql_assisthp "50"        // минимальный урон для учета ассиста. 0 - выключить учет ассистов.
Команды
  • csstats_sql_reset - полный сброс статистики. Выполнять нужно в консоли сервера или через RCON.
Информация
  • Из-за особенности хранения данных в БД, плагин вернет наименьший ранг в случае если статистика 2х и более игроков совпадает.
Дополнения

CSXSQL: Onlinetime Awards - альтернатива TOPx By GameTime для CSstatsX SQL. Плагин для выдачи флагов доступа ТОП игрокам по сыгранному времени. Настраивается в исходнике:
C++:
#define TOP 3                                      // Скольким игрокам из топа выдавать флаги?
#define IGNORE_FLAGS (ADMIN_MENU|ADMIN_LEVEL_H)    // Не выдавать плюшки игрокам с этими флагами
#define GIVE_FLAGS ADMIN_LEVEL_H                   // Выдаваемые флаги
FAQ

Вопрос: Почему долго открывается окно /top15 ?
  • Ваша БД долго отвечает на запросы плагина. MySQL БД или перегружена или слишком много запросов от плагинов (не только от csstats sql). В последнее случае проверьте квар csstats_sql_update и если он имеет значение -2, то попробуйте установить режим работы в -1 или 0. Я тестировал плагин у себя с удаленной MySQL БД на сервере hldm.org, пинг до который был 100-120 мс, время открытия топа при 31 ботах и csstats_sql_update -2 было примерно 5-8 секунд. Проверьте какие еще плагины могут часто работать с базой данных. В версии 0.7 был улучшен кеш запросов, что должно уменьшить время открытие топа, смотрите квар csstats_sql_cachetime. С локальной БД SQLite таких проблем наблюдаться не должно.

Вопрос: Выходит ошибка #2002 Can't connect to local MySQL server through socket '/tmp/mysql.sock'. Что делать?
  • Указать в качестве хоста (csstats_sql_host) 127.0.0.1 вместо localhost. Если Вы владелец VDS, то можете попробовать сделать симлинк файла сокета:
    • Ищем свой mysql.sock командами:
      C++:
      sudo find / | grep mysqld.sock
      sudo find / | grep mysql.sock
    • делаем симлинк:
      C++:
      ln -s /run/mysqld/mysqld.sock /tmp/mysql.sock
Вопрос: Выходит ошибка #1045 Access denied for user 'root'@'localhost' (using password: NO). Что делать?
  • Проверить правильность данных для доступа к MySQL. Прописать квары плагина в файле addons/amxmodx/configs/amxx.cfg.
Вопрос: Лаги при отображении топа игроков
  • Для отображения топ игроков используются прямые запросы, которые могут вызвать лаги запросе таблицы с игроками. С версии 0.4 я добавил возможность осуществлять потоковые запросы, но чтобы ваши плагины начали использовать эту возможность потребуются знания в скриптинге под AMXX. Можете отослать мне исходники ваших плагинов для добавления этой поддержки. Ну или воспользоваться одним из плагинов ниже. Готовые плагины с поддержкой потоковых запросов
 

Вложения

Последнее редактирование: Vesuvius

ph3ronix

Пользователь
Регистрация
12 Янв 2018
Сообщения
14
Симпатии
0
Пол
Мужской
#2
I am confused about installation..Can you plz help me?
 

Vesuvius

НЕ СКРИПТЕР!!!
Команда форума
Администратор
Регистрация
8 Июн 2017
Сообщения
1.453
Симпатии
477
Пол
Мужской
#3

San

Пользователь
Регистрация
4 Фев 2018
Сообщения
55
Симпатии
0
#4
Возможно ли сделать что бы при убийстве писалось кто убил и сколько hp осталось. Как например в players_mysql_stats