Пример Keyvalues статистики игроков (кол-во убийств/смертей).
Код
#include <sourcemod>
///////
// Глобальная переменная для хранения Handle группы
new Handle:kv;
// k - убийства, d - смерти
new k[MAXPLAYERS+1], d[MAXPLAYERS+1];
// стимы игроков
new String:SteaM[MAXPLAYERS+1][20];
///////
public OnPluginStart()
{
// Создаем новую пустую структуру группы
kv = CreateKeyValues("stats");
// Если мы уже сохраняли статистику и у нас есть cfg/stats.txt, то загружаем ее
FileToKeyValues(kv, "cfg/stats.txt");
for (new i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i)) MyFunc_GetPlayerStats(i);
}
// Ловим событие смерти игрока
HookEvent("player_death", player_death);
// Регистрируем команду для просмотра личной статистики
RegConsoleCmd("mystats", ConCmd:mystats_func);
}
public OnClientPutInServer(i)
{
MyFunc_GetPlayerStats(i);
}
Чтобы было удобнее смотреть на код, скачайте файл в прикреплениях. Мы создали глобальные массивы k и d для оптимизации. Получать данные из массива гораздо быстрее, проще и лучше, чем обрабатывать здоровый файл с данными. Сам файл статистики сохраняем после завершения карты или отключения скрипта. Ботов в статистике не учитываем.
Это конечно работает и тд, но что будет, когда данных будет слишком много в базе? Т.е. это будет не очень приятно для сервера, а о нем надо заботиться =) лучше использовать MYSQL для статистики. Там легко можно и ТОПы создать, да и на сайте где-то инфу высветить можно, позже дам пример.