serfreeman1337

Empire-Host.org - Аренда игровых серверов

CSstatsX SQL

Запись игровой статистики Counter-Strike в БД MySQL или SQLite.

Описание

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

Версия: 0.7.4 от 06.07.2016 [ GIT ]

Требования

  • AMXX 1.8.2 hg26 или выше.
  • AMXX 1.8.3 git3799 для поддержки UTF8 ников.
  • direct_hands.exe

Дополнения

Установка

  • Скомпилируйте плагин.
    • Для поддержки 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

Выполните следующие инструкции для ВСЕХ ваших плагинов статистики.

  • Откройте исходник плагина.
  • Добавьте следующий код в начало файла:
  • Замените все строчки get_statsnum на get_statsnum_sql.
  • Замените все строчки get_user_stats на get_user_stats_sql.
  • Замените все строчки get_stats на get_stats_sql.
  • Скомпилируйте плагин.

Квары

Квары можно прописывать в amxx.cfg или server.cfg.

  • 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_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" - формула расчета скилла
  • csstats_sql_weapons "0" - запись статистики по используемому оружию
    • 0 - запись выключена
    • 1 - включить запись.
      • В БД будет создана новая таблица csstats_weapons.
        ВНИМАНИЕ: квар csstats_sql_create_db должен быть установлен в 1
  • csstats_sql_maps "0" - запись истории игр игрока
    • 0 - запись выключена
    • 1 - запись включена.
      • ВНИМАНИЕ: нужно выполнить импорт файла csstats_maps.sql в БД.
        Смотрите инструкцию по установке.
  • 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.

Лаги при отображении топа игроков

Для отображения топ игроков используются прямые запросы, которые могут вызвать лаги запросе таблицы с игроками. С версии 0.4 я добавил возможность осуществлять потоковые запросы, но чтобы ваши плагины начали использовать эту возможность потребуются знания в скриптинге под AMXX. Можете отослать мне исходники ваших плагинов для добавления этой поддержки. Ну или воспользоваться одним из плагинов ниже.

Готовые плагины с поддержкой потоковых запросов:

Спасибо Lev с форума aghl.ru за модуль dummy_csx.

CSXSQL: Onlinetime Awards

Альтернатива TOPx By GameTime для CSstatsX SQL. Плагин для выдачи флагов доступа ТОП игрокам по сыгранному времени. Настраивается в исходнике:

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 командами:
    • делаем симлинк:

  • Выходит ошибка #1045 Access denied for user 'root'@'localhost' (using password: NO). Что делать?
  • Проверить правильность данных для доступа к MySQL. Прописать квары плагина в файле addons/amxmodx/configs/amxx.cfg.

Скачать

Icon of CSstatsX SQL csstatsx-sql.zip (63.4 KiB)
  • Здравствуйте, это ошибка какая-то, или так и должно быть ?

    Суть:если я убью одного, то в стату защищает его только под конец след.раунда, т.е. весь следующий раунд игра идёт с той же статистикой.
    Если я убиваю более 1-го игрока, к примеру "5", то зачислится "4", и через раунд ещё "1"

    csstats_sql_update -1
    csstats_sql_cachetime 0

  • На версии 0.7.2 /top15 иногда не обновляется, только после смены карты, хотя /rank и /rankstats обновляется стабильно. стоит csstats_sql_update "-2", а при значении больше 0 вообще не обновляется ничего.
    На 0.7.1 таких проблем не возникало. 072 таблицы создавались с нуля, не обновлялись.

    • Как не обновляется? Просто не открывается или что?

      • Открывается, но в нём старая инфа.
        Например: было у меня 100 фрагов, убил ещё 10, пишу /rank, показывается, что у меня 110 фрагов, тут же пишу /top, показывает 100 фрагов.
        А когда csstats_sql_update больше 0 то инфа вообще в БД не отправляется. Ставил 60, у меня csdm.
        Ошибок в логах никаких нет. Rehlds и Regame last, amx 182, сейчас проверяю на 183.

  • r0de:

    privet. u menja jestj problema so skillami

    aes_statsx_skill "0 60.0 75.0 85.0 100.0 115.0 130.0 140.0 150.0 165.0 180.0 195.0 210.0"

    kogda skill 100, to pokazivajet M+, kogda skill 165, togda pokazivajet G, kak ispravit?

  • Добавьте пожалуйста функцию удаления игроков из статистики имеющих меньше определенного количества фрагов.

  • Для компиляции с AES закомментируйте #define NO_AES в исходнике.
    В каком и где?

  • serfreeman1337, Can you make such cvar how in original stats to clean up rank automatically in sql > csstats_sql_maxsize

    in original
    // Max size of the stats file
    //
    // Default value: 3500
    csstats_maxsize 16000

  • Подскажи пожалуйста как правильнее будет прописать в исходник:
    /*
    * хост mysql
    */
    cvar[CVAR_SQL_HOST] = register_cvar("csstats_sql_host","localhost",FCVAR_UNLOGGED|FCVAR_PROTECTED)

    /*
    * пользователь mysql
    */
    cvar[CVAR_SQL_USER] = register_cvar("csstats_sql_user","root",FCVAR_UNLOGGED|FCVAR_PROTECTED)

    /*
    * пароль mysql
    */
    cvar[CVAR_SQL_PASS] = register_cvar("csstats_sql_pass","",FCVAR_UNLOGGED|FCVAR_PROTECTED)

    /*
    * название БД mysql или sqlite
    */
    cvar[CVAR_SQL_DB] = register_cvar("csstats_sql_db","amxx",FCVAR_UNLOGGED|FCVAR_PROTECTED)

  • L 05/21/2016 - 01:54:40: [ACTIVATED] Plugin Opengl Detector 0.7.9d activated
    L 05/21/2016 - 01:54:40: [ACTIVATED] Plugin AIM Detector 0.7.5d activated
    L 05/21/2016 - 01:54:40: [csstatsx_sql.amxx] SQL connection failed
    L 05/21/2016 - 01:54:40: [csstatsx_sql.amxx] [ 2002 ] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    L 05/21/2016 - 01:54:40: [csstatsx_sql.amxx] SQL connection failed
    L 05/21/2016 - 01:54:40: [csstatsx_sql.amxx] [ 2002 ] Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    L 05/21/2016 - 01:54:40: [fB 1.2]mySQL is OK! Time difference -163 sec, DB delay 0.555386424 sec

    А что делать например если у меня не VDS, я сервер одного хоста конекчу к базе данных другого хостинга и у меня ошибка эта вылезает все равно.. Я пишу в поле хост адресс своего сайта и через него у меня идет коннект..

    • Прописать данные mysql в исходнике плагина.
      Потому что квары из amxx.cfg нормально читаются только со стандартным admin.amxx или amxbans.

  • Привет, хотелось бы узнать по какому принципу работает CSXSQL: Onlinetime Awards? То есть по какому сыгранному времени? И где настраивается время проведенное на сервере? Или он просто выдает флаги топ 3 например кто на первых 3-х местах в топе?

  • Поправь =)

    подсчет времени нахождениЯ игрока на сервере

  • serfeeman, после CSstatsX SQL установки (установка прошла корректно), плагин AES: StatsX CStrike перестал отображать в /top15, /rank - звания игроков, хотя
    aes_statsx_top "*abcfij"
    aes_statsx_rank "bcij"
    aes_statsx_astats "aj"
    так же перестали работать команды /alist и /astats
    plugins_aes.ini :
    csstatsx_sql.amxx ; для записи в БД
    aes_statsx_cstrike_n.amxx ; сама статистика
    statsx_collor_sql.amxx ; /me, hp

    • Что ты сделал, чтобы выяснить причину?
      Сообщения об ошибках должны содержать логи (amxmodx/logs), список плагинов (amxx plugins), список команд (amxx cmds), информации о версиях (version, amxx version). И лучше об этом писать на форум поддержки или мне по контактам.

  • [AMXX] Displaying debug trace (plugin "csstatsx_sql.amxx")
    [AMXX] Run time error 4: index out of bounds
    [AMXX] [0] csstatsx_sql.sma::Stats_SaveHit (line 797)
    [AMXX] [1] csstatsx_sql.sma::EventHook_Damage (line 612)
    Что делать?

  • Прости меня дубалома :) НО не получается у меня заставить ТОп 15 брать из базы . В базу плагин инфу кладет а выводит из dat файла :(
    что не так делаю уже перемучился компилить ....

  • L 03/17/2016 - 20:51:21: [AMXX] Displaying debug trace (plugin "csstatsx_sql.amxx", version "0.5")
    L 03/17/2016 - 20:51:21: [AMXX] Run time error 4: index out of bounds
    L 03/17/2016 - 20:51:21: [AMXX] [0] csstatsx_sql.sma::Stats_SaveHit (line 797)
    L 03/17/2016 - 20:51:21: [AMXX] [1] csstatsx_sql.sma::EventHook_Damage (line 612)

  • server crash

    • hmm

      Please follow compile instructions for all your stats plugins (eg miscstats.amxx lala) if you want replace csx module.
      But i recommend to just modify your stats plugins with "Without CSX module replacment" instruction, cos its ez.

  • I can not find in 1.8.3-dev-git4982-base

    • This in addons/amxmodx/scripting/include/csx.inc file.
      After you change those lines compile your plugins with addons/amxmodx/scripting/amxxpc.exe or just copy .sma to this folder and run compile.exe, your .amxx will be in compiled folder :)

  • Приветствую!
    Установил вчера данный плагин с заменой CSX. Все вроде бы супер, но сегодня обнаружил уйму дублирующихся записей в БД. В игре открываю /top, а там, начиная со второго места один и тот же игрок с одинаковыми значениями. Зашел в базу, а там его запись повторяется около 2000 раз. И не только его запись. У других игроков тоже имеются дубля. Это можно поправить?