ReHLDS/HLDS CSstatsX SQL by serfreeman1337 [0.74]

Vesuvius

НЕ СКРИПТЕР!!!
Команда форума
Администратор
Регистрация
8 Июн 2017
Сообщения
1.514
Симпатии
519
Пол
Мужской
#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
Сообщения
15
Симпатии
0
Пол
Мужской
#2
I am confused about installation..Can you plz help me?
 

Vesuvius

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

San

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

Logarifm(2)

Пользователь
Регистрация
17 Июл 2017
Сообщения
8
Симпатии
0
#6
CSXSQL: Onlinetime Awards , поставил, если игрок спустился, у него все равно VIP остается.В чем может быть проблема?

csstatsx_sql.amxx
;statsx.amxx - этот закоментил все правильно?
aes_statsx_cstrike.amxx
csstatsx_playtime_awards.amxx

Второй вопрос, поставил miscstats.amxx со звуками
файл stats
SayRankStats ;Say /rankstats
SayRank ;Say /rank
SayTop15 ;Say /top15
SayStatsAll ;Say /stats
MultiKill ;MultiKill
MultiKillSound ;MultiKillSound
KnifeKill ;Knife Kill
KnifeKillSound ;Knife Kill Sound
GrenadeKill ;Grenade Kill
GrenadeSuicide ;Grenade Suicide
HeadShotKill ;HeadShot Kill
HeadShotKillSound ;HeadShot Kill Sound
RoundCounter ;Round Counter
RoundCounterSound ;Round Counter Sound
KillingStreak ;Killing Streak
KillingStreakSound ;Killing Streak Sound
EnemyRemaining ;Enemy Remaining
DoubleKill ;Double Kill
DoubleKillSound ;Double Kill Sound
FirstBloodSound ;First Blood Sound

Звуки грузят, все нормально, но не воспроизводятся, может ли быть это проблема из за плагинов выше?
 

Кирилл

Пользователь
Регистрация
24 Июл 2017
Сообщения
2
Симпатии
0
#7
03/16/2019 - 15:58:40: [AMXX] Displaying debug trace (plugin "csstatsx_sql.amxx", version "0.7.4+1")
L 03/16/2019 - 15:58:40: [AMXX] Run time error 10: native error (native "ExecuteForward")
L 03/16/2019 - 15:58:40: [AMXX] [0] csstatsx_sql.sma::Stats_SaveAssist (line 1791)
L 03/16/2019 - 15:58:40: [AMXX] [1] csstatsx_sql.sma::Stats_SaveKill (line 1955)
L 03/16/2019 - 15:58:40: [AMXX] [2] csstatsx_sql.sma::EventHook_Damage (line 1598)

кто сталкивался?
 

Molodoi

Команда форума
Модератор
Регистрация
14 Июн 2017
Сообщения
581
Симпатии
120
#8
Кирилл, у вас версия плагина version "0.7.4+1 а в описании 0.7.4. Нужно по крайней мере обратится к автору нового релиза или ждать ответа опытных скриптеров. + Приложите исходник.
 

GALAXY

Пользователь
Регистрация
11 Июн 2017
Сообщения
33
Симпатии
13
Пол
Мужской
#9
Данный плагин использую совместно с aes_statsx_cstrike от этого же автора. Все версии последние. Есть небольшая проблема. Криво считается показатель "выстрелов". Из за этого не верно отображается показатель "точность". Как мы знаем точность рассчитывается по формуле (попадания/всего выстрелов)*100
Все это можно протестировать с авп. Я могу сделать 6 выстрелов, а засчитается как 2 выстрела. Могу сделать 6 выстрелов, а засчитается как 0 выстрелов. Из за этого попаданий становится больше чем выстрелов. Отсюда не верный расчет точности. Процент точности может достигать 500 процентов и больше. А должно быть не больше 100 процентов.
У кого есть время посмотреть в чем может быть причина.