[1.2] Players MySQL Stats

d3m37r4

Постоялец
Регистрация
8 Июн 2017
Сообщения
165
Симпатии
66
Пол
Мужской
#1
Автор: Neygomon
Версия: 1.2

Описание:
Легкий плагин для ведения и записи игровой статистики в БД MySQL.

Особенности плагина:
  • Не требуется наличие модуля csx (для работы требуется модуль engine)
  • Прост в настройке
  • Поддержка utf8 ников

Команды:
  • remove_stats - сброс статистики (вводится в консоли сервера)
  • /top15 - отображение Топ 15 игроков сервера (сортировка ведется по скиллу)
  • /rank - отображение позиции игрока в общей игровой статистике
  • /rankstats - личная статистика игрока
  • /me - показ нанесенного игроком урона
  • /hp - показывает ник убийцы, количество оставшихся у него жизней и брони.

PHP:
/*
    Удалить юзера из БД
    Удаляет так же инфу из массива, если игрок находится на сервере
    Удаление происходит по authid
    Натив возвращает 1 в случае успеха или 0, если что то пошло нет так...
*/
native ps_remove_player(authid[]);

/*
    Установить произвольные значения параметров. Смотрите SetParams
    * Изменения применяются только для БД!
    * Если Вы поставили, к примеру, 10 фрагов, а игрок в это время находится на сервере и настрелял еще 10, то в БД будет 20
    Обновление информации происходит по authid
    
    Натив возвращает 1 в случае успеха или 0, если что то пошло нет так...
*/
native ps_setinfo_player(authid[], SetParams:param, value);

/*
    Получает текущий урон, нанесенный игроком за раунд
    bCheckConnect - проверить игрока, подключен или нет
    
    Натив возвращает текущий урон, либо -1, если игрок не подключен при bCheckConnect == true
*/
native ps_get_player_damage(index, bool:bCheckConnect = true);

/*
    Получает время, проведенное на сервере в секундах
    bCheckConnect - проверить игрока, подключен или нет
    
    Натив возвращает время проведенное на сервере, либо -1, если игрок не подключен при bCheckConnect == true
*/
native ps_get_player_gametime(index, bool:bCheckConnect = true);
PHP:
#define MYSQL_HOST "127.0.0.1"
#define MYSQL_USER ""
#define MYSQL_PASS ""
#define MYSQL_DBDB ""

#define UpdateStatsType 2
   // 1 - Обновить статистику игрока(жертвы, убийцы) при убийстве.
   // Если Ваша база говно, то используйте этот метод
   //
   // 2 - Обновлять статистику всех игроков по таймеру, либо при запросе /rank, /top15 и тд
   // Как по мне, самый адекватный способ :)
   //
   // 3 - Обновлять статистику всех игроков при убийстве кого-либо
   // Статистика точнее, чем в UpdateStatsType 1 и UpdateStatsType 2, но ТЯЖЕЛЕЕ
   // Используйте, если нужны точные данные и Ваша база сможет схавать такие издевательства :D
   //
   // Конечно же обновление и при дисконнекте!

#define FreqUpdateByTime 20.0
   // Частота обновлений для UpdateStatsType 2
   // Если не используете WEB или пофиг на актуальность данных - закомментируйте. Тогда обновления будут только при запросах

#define PrunedDays 10
   // Через сколько дней удалять игроков из БД с момента последнего подключения
   
#define AntiFloodSecs 20
   // Защита от флуда БД
   // Спасает от идиотов, которые долбят стату постоянно, вызывая лаги
   
#define SendMeAndHpOnDeath
   // Отправлять жертве инфу из say /me и say /hp

#define KillAssist 50
   // Считать ассисты
   // name1 + name2 by max damage
   // Число - минимальный урон, начиная с которого игрок может считаться ассистом
Установка:
  • Заливаем дамп players_stats.sql к себе в БД.
  • Заливаем файл стилей stats.css к себе на web-сервер, в исходнике необходимо заменить путь до стиля, 534 и 507 строка, меняем на свое:
    Код:
    http://stats.neugomon.ru/srv/stats.css
  • Компилируем плагин, предварительно закинув в компилятор инклуд player_stats.inc.
  • Заливаем на сервер, в папку addons/amxmodx/plugins файл players_mysql_stats.amxx.
  • Добавляем запись players_mysql_stats.amxx в файл addons/amxmodx/configs/plugins.ini
 

Вложения

tpylala

Пользователь
Регистрация
8 Июн 2017
Сообщения
18
Симпатии
8
Пол
Мужской
#3

Endzhey

Пользователь
Регистрация
8 Июн 2017
Сообщения
183
Симпатии
34
#4
можешь css стиль подставить с aes и будет такое оформление, только без картинок на скилле
да, спасибо, уже сделал.
не подскажешь команду для сброса статистики?
 

tpylala

Пользователь
Регистрация
8 Июн 2017
Сообщения
18
Симпатии
8
Пол
Мужской
#5

d3m37r4

Постоялец
Регистрация
8 Июн 2017
Сообщения
165
Симпатии
66
Пол
Мужской
#6
Endzhey, можно и с картинкой) Если бы встроенный браузер пиратской кс поддерживал css3 и некоторые свойства, можно было бы красивую статистику сделать.
 

Endzhey

Пользователь
Регистрация
8 Июн 2017
Сообщения
183
Симпатии
34
#7
Столкнулся с такой ошибкой. После бана motd не грузится.
[doublepost=1497621516][/doublepost]или как вообще убрать motd?
[doublepost=1497631392][/doublepost]Извините, не в ту тему вопрос.
Удалите пожалуйста.
 

Lite Style

Пользователь
Регистрация
11 Июн 2017
Сообщения
17
Симпатии
1
Пол
Женский
#8
Добрый день.
Такой вопрос к Ване, почему-то пишет "Нет данных MySQL"
Данные я ввела правильно, базу данных использую с хостинга, всё залила вроде правильно.
После этого решила обратиться к Тех.Поддержке хостинга, вот что мне ответили.
 

Вложения

  • 12,9 KB 95

neygomon

Его Темнейшество :j
Команда форума
Администратор
Регистрация
8 Июн 2017
Сообщения
649
Симпатии
302
Пол
Мужской
#9
Lite Style, потому что в базе нет записей
 

Endzhey

Пользователь
Регистрация
8 Июн 2017
Сообщения
183
Симпатии
34
#10
Добрый день.
Такой вопрос к Ване, почему-то пишет "Нет данных MySQL"
Данные я ввела правильно, базу данных использую с хостинга, всё залила вроде правильно.
После этого решила обратиться к Тех.Поддержке хостинга, вот что мне ответили.
Зайди на сервер и например пропиши килл в консоле чтобы записалась статистика.
[doublepost=1497865302][/doublepost]Веб морда есть под эту статистику?
 

d3m37r4

Постоялец
Регистрация
8 Июн 2017
Сообщения
165
Симпатии
66
Пол
Мужской
#12
Endzhey, breakt пилит по-тихоньку.
[doublepost=1497941044][/doublepost]При желании, можно подправить уже имеющиеся вебчасти, которые работают с фримановской статой.
 

d3m37r4

Постоялец
Регистрация
8 Июн 2017
Сообщения
165
Симпатии
66
Пол
Мужской
#14
neygomon, ну хизе короче) Я высказал свое предположение, не так давно себе стату переделывал под твою)
P.S. баннер статы модный)
 

KoSt9N

Пользователь
Регистрация
8 Июн 2017
Сообщения
157
Симпатии
2
#15
Welcome to the AMX Mod X 1.8.2 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

players_mysql_stats.sma(733 -- 737) : error 075: input line too long (after substitutions)
players_mysql_stats.sma(741) : error 029: invalid expression, assumed zero
players_mysql_stats.sma(741) : error 017: undefined symbol "d"
players_mysql_stats.sma(741) : error 029: invalid expression, assumed zero
players_mysql_stats.sma(741) : fatal error 107: too many error messages on one line

Compilation aborted.
5 Errors.


а чет через он лайн не компилит
 

d3m37r4

Постоялец
Регистрация
8 Июн 2017
Сообщения
165
Симпатии
66
Пол
Мужской
#16
KoSt9N, 733 строка длинная вроде, 1.8.2 на это ругается.
 

Cloud

Пользователь
Регистрация
9 Июн 2017
Сообщения
40
Симпатии
11
Пол
Мужской
#17
neygomon ассисты в отличии от смертей и убийств обновляются только если после получения ассиста сам кого-нибудь убьешь или умрешь. Почему так, и как сделать чтобы сразу обновлялись?
 

Cloud

Пользователь
Регистрация
9 Июн 2017
Сообщения
40
Симпатии
11
Пол
Мужской
#19
Inline т.е фраги и смерти моментально обновлять это не много запросов, а если еще всего лишь один параметр будет обновляться то уже много?
Это скорее сделано на всякий случай, и если бд не на дне морском находится и нормальный коннект то проблем то не должно быть, разве нет?
 

Inline

Пользователь
Регистрация
8 Июн 2017
Сообщения
233
Симпатии
77
Пол
Мужской
#20
Cloud, неправильно прочитал там) Нет, тогда норм будет, если обновлять