Code: Select all
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#define PLUGIN "Score and Round"
#define VERSION "1.1"
#define AUTHOR "lexzor"
#define ColorR 255
#define ColorG 255
#define ColorB 255
#define SIZEOFDATA 5
#pragma semicolon 1
enum _:DATA
{
T,
CT,
TotalT,
TotalCT,
ROUND
}
new g_iData[DATA];
new const g_sznVaultName[] = "scoreandround";
new g_nVault;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("HLTV", "OnRoundStart", "a", "1=0", "2=0");
register_event("TextMsg", "OnRoundRestart", "a", "2&#Game_C", "2&#Game_w");
register_event("SendAudio", "OnTerroristWin", "a", "2&%!MRAD_terwin");
register_event("SendAudio", "OnCTWin", "a", "2&%!MRAD_ctwin" );
set_task(1.0, "ShowInfo", .flags = "b");
register_clcmd("amx_reset_score_hud", "reset_data", ADMIN_LEVEL_A, "Reset saved team score");
g_nVault = nvault_open(g_sznVaultName);
if(g_nVault == -1)
{
set_fail_state("[%s] Plugin couldn't open nVault file!", PLUGIN);
}
_GetData();
}
public plugin_end()
{
_SaveData();
nvault_close(g_nVault);
}
public reset_data(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
{
return PLUGIN_HANDLED;
}
new szMap[64];
get_mapname(szMap, charsmax(szMap));
nvault_remove(g_nVault, szMap);
client_print(id, print_console, "[%s] The team score was reset!", PLUGIN);
return PLUGIN_CONTINUE;
}
public _GetData()
{
new szData[64], szT[4], szCT[4], iTS;
new szMap[64];
get_mapname(szMap, charsmax(szMap));
if(nvault_lookup(g_nVault, szMap, szData, charsmax(szData), iTS))
{
replace_all(szData, charsmax(szData), "#", " ");
parse(szData, szT, charsmax(szT), szCT, charsmax(szCT));
g_iData[TotalT] = str_to_num(szT);
g_iData[TotalCT] = str_to_num(szCT);
}
else
{
for(new i = 0; i < SIZEOFDATA; i++)
{
g_iData[i] = 0;
}
}
}
public _SaveData()
{
new szData[64];
new szMap[64];
get_mapname(szMap, charsmax(szMap));
formatex(szData, charsmax(szData), "%i#%i", g_iData[TotalT], g_iData[TotalCT]);
nvault_set(g_nVault, szMap, szData);
}
public OnRoundStart()
{
g_iData[ROUND]++;
}
public OnRoundRestart()
{
g_iData[T] = 0;
g_iData[CT] = 0;
g_iData[ROUND] = 0;
}
public OnTerroristWin()
{
g_iData[T] += 1;
g_iData[TotalT] += 1;
}
public OnCTWin()
{
g_iData[CT] += 1;
g_iData[TotalCT] += 1;
}
public ShowInfo()
{
new szMessage[128], szMap[64];
new iTimeleft = get_timeleft();
get_mapname(szMap, charsmax(szMap));
formatex(szMessage, charsmax(szMessage), "Counter VS Terrorist^n%i -------- %i^nRound %i^n%d:%02d^nMap %s^nCT Total Wins %i [-] %i T Total Wins",
g_iData[CT], g_iData[T], g_iData[ROUND], iTimeleft / 60, iTimeleft % 60, szMap, g_iData[TotalCT], g_iData[TotalT]);
set_hudmessage(ColorR, ColorG, ColorB, -1.0, 0.03, _, _, 1.0, _, _, -1);
show_hudmessage(0, szMessage);
}