Инфо из csstats.inc:
/* Gets overall stats which stored in stats.dat file in amx folder
* and updated on every mapchange or user disconnect.
* Function returns next index of stats entry or 0 if no more exists. */
native get_stats(index,stats[8],bodyhits[8],name[],len,authid[] = "",authidlen = 0);
Синтаксис:
get_stats ( index, stats[8], bodyhits[8], name[], len, authid[] = "", authidlen = 0 )
- index - Номер строки. То есть если вам нужен игрок с рангом 1 то это будет строка 0, если нужен с рангом 500,то это будет 499 строка.
- stats[8] - Массив для параметров статистики
- 0 - kills - Количество убийств
- 1 - deaths - Количество смертей
- 2 - headshots - Количество убийств в голову
- 3 - teamkilling - Количество убийств членов своей команды
- 4 - shots - Общее число выстрелов
- 5 - hits - Количество попаданий
- 6 - damage - Всего нанесено урона
- 0 - kills - Количество убийств
- bodyhits[8] - Массив для параметров попаданий
- 0 - generic (none) - универсальный (ни один) ( переведено по словарю, не знаю что такое)
- 1 - head - Попаданий в голову
- 2 - chest - Попаданий в грудь
- 3 - stomach - Попаданий в живот
- 4 - leftarm - Попаданий в левую руку
- 5 - rightarm - Попаданий в правую руку
- 6 - leftleg - Попаданий в левую ногу
- 7 - rightleg - Попаданий в правую ногу
- 0 - generic (none) - универсальный (ни один) ( переведено по словарю, не знаю что такое)
- name[] - Имя игрока
- len - Максимальная длина имени
- authid[]="" - Стим айди игрока ( или параметр по которому считается статистика)
- authidlen = 0 - Длина параметра по которому считается статистика
Функция получает полную статистику из фала stats.dat в папке amx, который обновляется каждый раз при смене карты или отсоединении клиента.
Функция возвращает нужную строку ( по индексу) или 0, если заданного индекса не существует.
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <csx>
#define PLUGIN "[CSX csstats.inc] Get stats"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /stats","stats")
}
public stats(id){
new stats[8],bodyhits[8],name[32],authid[64]
get_stats(0,stats,bodyhits,name,31,authid,63)
client_print(id,print_console,"Fields in stats are")
client_print(id,print_console,"Kills:%d ^nDeaths:%d ^nHshots:%d^nTkill:%d^nShots:%d^nHits:%d^nDamage:%d^n",stats[0],stats[1],stats[2],stats[3],stats[4],stats[5],stats[6])
client_print(id,print_console,"Fields bodyhits are")
client_print(id,print_console,"Generic (none):%d^nHead:%d^nChest:%d^nStomach:%d^nLefttarm:%d^nRighttarm:%d^nLeftleg:%d^nRightleg:%d",bodyhits[0],bodyhits[1],bodyhits[2],bodyhits[3],bodyhits[4],bodyhits[5],bodyhits[6],bodyhits[7])
client_print(id,print_console,"Name and authid")
client_print(id,print_console,"Name:%s,authid:%s",name,authid)
}
Описание:
Зарегистрируем команду say /stats, для выполнения функции public stats(id), где будет учиться работать с изучаемой функцией.
Для успешной работы нам потребуется создать 4 массива, с размерностью указанной в синтаксисе функции.
И выполняем функцию get_stats, указав в первом параметре 0, что означает что мы хотим получить первую строку из файла, то есть Топ1 сервера (статистики)
Мы не будет обрабатывать данные, высчитывать проценты и друге действия, так как это совсем другая история.
В данном примере мы просто выведем полученные результаты в консоль.
Посмотрите на результат работы скрипта:
Fields in stats are
Kills:1545
Deaths:684
Hshots:430
Tkill:2
Shots:17568
Hits:6945
Damage:181750
Fields bodyhits are
Generic (none):0
Head:776
Chest:1140
Stomach:977
Lefttarm:1674
Righttarm:877
Leftleg:628
Rightleg:571
Name and authid
Name:Anemico,authid:Anemico
Kills:1545
Deaths:684
Hshots:430
Tkill:2
Shots:17568
Hits:6945
Damage:181750
Fields bodyhits are
Generic (none):0
Head:776
Chest:1140
Stomach:977
Lefttarm:1674
Righttarm:877
Leftleg:628
Rightleg:571
Name and authid
Name:Anemico,authid:Anemico
У вас будет тоже самое, только естественно данные будут ваши!
Что бы проверить правильность, можете открыть привычный вам топ15 и сравнить.
К стати, он получается примерно таким же способом, только там цикл, от 0 до 14, что бы получить первые 15 строк из файла.
И парочка арифметических действий, что бы высчитать эффективность и что там еще есть..
В принципе ни чего сложного, главное уяснять для себя, что в массиве stats[0] хранятся фраги, а в stats[1] смерти.
Выглядит это примерно так:
Это фраги: stats[0]
Это смерти: stats[1]
Это фраги в голову: stats[2]
То есть этот массив не для каждого игрока, а под набор данных.
Надеюсь вы поняли о чем идет речь.
Попрактикуйтесь немного, попробуйте высчитать коэффициент эффективности сами и если вы без подсказок сможете это сделать, то можно считать что вы полностью разобрались с этой функцией.
Если же вы хотите получить статистику для конкретного пользователя, то нужно воспользоваться функцией get_user_stats, она очень похожа и немного проще, о ней я расскажу чуть позже.