#include <amxmodx>
#include <reapi>
+#include <csstatsx_sql>
-#if AMXX_VERSION_NUM < 183
- #include <colorchat>
- #define client_disconnected client_disconnect
-#endif
/* SETTINGS */
#define IGNORE_FLAGS "t"
// Игнорируемые флаги
// Закомментировать, если не нужно игнорируемые флаги
#define TIME 1.0
// Каждые n секунды проверить статистику игрока
#define MAX_AWARDS 254
// Максимальная кол-во наград
/* DICTIONARY */
#define TOP_CHAT_MESSAGE "^1[^4Top Awards^1] Вы ^3поднялись на %d ^1место. Бонусные флаги: ^4%s"
// Закомментировать, если не нужно сообщение при поднятие место
#define NO_TOP_CHAT_MESSAGE "^1[^4Top Awards^1] Вы ^3опустились на %d ^1место. ^3Нет бонусных флагов"
// Закомментировать, если не нужно сообщение при понижение место
/* Do not touch arrays */
-new bool:GiveAward[33];
+new bool:GiveAward[MAX_PLAYERS+1];
enum _:DATA { FLAGS[32] };
new g_arrAwardData[MAX_AWARDS][DATA], g_iDataSize = 1;
public plugin_init()
{
register_plugin("[ReAPI] Top Awards", "1.0", "Dom1no_[KZ]");
RegisterHookChain(RG_CBasePlayer_Spawn, "client_player_spawn", true);
}
public plugin_cfg()
{
- new szPath[64];
+ new szPath[PLATFORM_MAX_PATH];
get_localinfo("amxx_configsdir", szPath, charsmax(szPath));
add(szPath, charsmax(szPath), "/top_awards.ini");
new iFile = fopen(szPath, "rt");
if(!iFile)
{
new szError[96];
formatex(szError, charsmax(szError), "File '%s' not found OR incorrect CHMOD!", szPath);
set_fail_state(szError);
}
new szBuffer[MAX_AWARDS];
while(!feof(iFile))
{
fgets(iFile, szBuffer, charsmax(szBuffer));
trim(szBuffer);
if(!szBuffer[0] || szBuffer[0] == ';')
continue;
if(parse(szBuffer,
g_arrAwardData[g_iDataSize][FLAGS], charsmax(g_arrAwardData[][FLAGS])
) == 1) g_iDataSize++;
}
fclose(iFile);
}
public client_putinserver(id) GiveAward[id] = false;
public client_disconnected(id) GiveAward[id] = false;
public client_player_spawn(id) set_task(TIME, "ItemAwards", id)
public ItemAwards(id)
{
#if defined IGNORE_FLAGS
if(!GiveAward[id] && get_user_flags(id) & read_flags(IGNORE_FLAGS))
return
#endif
- new szStats[8];
- new iRank = get_user_stats(id, szStats, szStats);
+ new szStats[STATSX_MAX_STATS];
+ new iRank = get_user_stats_sql(id, szStats, szStats);
if(iRank < g_iDataSize)
{
if(~get_user_flags(id) & read_flags(g_arrAwardData[iRank][FLAGS]))
{
set_user_flags(id, read_flags(g_arrAwardData[iRank][FLAGS]))
#if defined TOP_CHAT_MESSAGE
ColorChat(id, NORMAL, TOP_CHAT_MESSAGE, iRank, g_arrAwardData[iRank][FLAGS]);
#endif
GiveAward[id] = true;
}
}
else
{
remove_user_flags(id);
#if defined NO_TOP_CHAT_MESSAGE
ColorChat(id, NORMAL, NO_TOP_CHAT_MESSAGE, iRank);
#endif
GiveAward[id] = false;
}
}