Для начала саму статистику можно найти на filesearch.ru.
Установить как написано в readme.txt.
Единственный момент, это про добавление задачи в крон, согласно инструкции надо добавить строчку:
*/15 * * 1 * php -q /path/to/exec.php >/dev/null 2>&1
Как написано в readme.txt - "обновление каждые 15 минут", но согласно документации cron строка */15 * * 1 * будет выполнять команду каждые 15 минут в январе(цифра 1) (если я не прав поправте!!!)
так что надо добавить строку вида:
*/15 * * * * php -q /path/to/exec.php >/dev/null 2>&1
А я бы еще сделал так:
*/15 * * * * "cd /path/to/; php -q /path/to/exec.php >/dev/null 2>&1"
Далее, нивкоем случаи не стоит делать то что написал Romaaa тут, а именно коментировать строчку 43 в файле exec.php!!! Это привидет к тому, что в базу будут писаться все действия от пользователя "не кто".
Почему это так:
Как мне удалось выяснить, автор мода MTA изменил строку вывода статистики для ASE в версии 0.4.1, а автор phpMTAS не успел изменить парсер на этот вывод, так как по всей видимости проект phpMTAS закрыт. Все это приводит к тому, что при запуске файла exec.php идет проверка нет ли пользователей в игре(почему необходима эта проверка, чуть позже), эта проверка как раз строчка 43.
PHP:
if($query_server['current'] != 0 && $query_server['name'] != "No Response.") die("ERROR: Cannot parse while players are connected.\n");
и в ответ выдается сообщение: Cannot parse while players are connected, хотя вы уверены, что на сервер никого нет. Для этого не мешалобы поинтересоваться, что имеено возвращает запрос
PHP:
$query_server['current']
и почему он не равен 0, если вы вставите
PHP:
print $query_server['current'];
где нибудь на строчке 45, то при запуске скрипта, вы увидите какое число выдает в переменной $query_server['current'], у меня оно(было) 16 к примеру, а теперь идем в настройки своего MTA сервера, и смотрим 16(в моем случаи) это максимальное количество игроков на сервере! Вот он баг!!!
Теперь правим его:
идем в файл functions.php и ищем строку 259 это как раз и есть парсер.
PHP:
list($null,$server['name'],$server['version'],$null,$server['current'],$server['max']) = explode("/////",$raw);
тут убираем $null перед $server['current'], должно получиться следующие
PHP:
list($null,$server['name'],$server['version'],$server['current'],$server['max']) = explode("/////",$raw);
теперь если вы не убрали print из файла exec.php то вы можете запустить файл exec.php и посмотреть на вывод, у вас вместо числа 16, будет 0(если никого нет) и скрипт отработает на ура. Теперь можно этот print из файла exec.php убрать.
Все, скрипт работает, немного заметок о работе скрипта:
Если вы будете в процессе тестирования заходить на сервер один, и игроков больше не будет, то после запуска скрипта, вы все равно в базе и на странице ничего не увидите! Так как игра в понятии phpMTAS начинается именно тогда когда хоть одна машина угнана, хоть одно убийство совершено и хоть одна смерь произошла
PHP:
if($val['death'] || $val['kill'] || $val['veh'])
В свою очередь, сам сервер MTA начинает писать эту статистику в лог только тогда, когда игроков больше 1го.
Скрипт exec.php отработает только тогда, когда все от сервера отключаться, и игра в понятии статистики закончится. Согласно записи в кроне, скрипт exec.php будет пытаться отработать каждые 15 минут. В связи с этим всем вместе взятым: статистика не будет отображаться во время игры, отображение статистики после окончания игры произойдет не позднее чем через 15 минут, после того, как последний пользователь отключится от сервера.
Статистика работает таким образом, так как после отработки скрипта exec.php старый лог файл обнуляется, и изза этого теряются ID пользователя. Сопоставление ID пользователя с именем пользователя происходит во время подключения пользователя, строчка Join.... Если скрипт будет отрабатывать во время игры, то это сопоставление пропадет. Именно по этому нельзя коментировать строчку 43 в файле exec.php
Это пожалуй все.
В чем не прав, пишите.