/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <colorchat>
#define PLUGIN "Frag Verseny"
#define VERSION "1.0"
#define AUTHOR "6almasok"
#define prefix "[Frag-V]"
new g_StartTime[33], g_EndTime[32], kill[33], bool:SwitchFrag, bool:FirstTask, x_tempid
new const view_hud[][] =
{
"A Fragverseny véget ért!^nElsõ: %s",
"A Fragverseny véget ért!^nElsõ: %s | Második: %s",
"A Fragverseny véget ért!^nElsõ: %s | Második: %s | Harmadik: %s",
"Jelenleg Fragverseny van (%s-%s)^n1. %s - ÖLÉS: %i",
"Jelenleg Fragverseny van (%s-%s)^n1. %s - ÖLÉS: %i | 2. %s - ÖLÉS: %i",
"Jelenleg Fragverseny van (%s-%s)^n1. %s - ÖLÉS: %i | 2. %s - ÖLÉS: %i | 3. %s - ÖLÉS: %i",
"A Fragverseny elkezdõdik %s-kor..."
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /fragmenu", "openMain")
register_clcmd("say /kills", "openKillViewer")
register_clcmd("START_TIME", "loadStart")
register_clcmd("END_TIME", "loadEnd")
register_clcmd("INDOK", "reset_kuld")
register_event("DeathMsg","halal","a")
}
public halal()
{
new attacker = read_data(1)
new victim = read_data(2)
if(!SwitchFrag) return PLUGIN_HANDLED
if(attacker == victim || attacker == 0)
return PLUGIN_HANDLED
kill[attacker]++
return PLUGIN_CONTINUE;
}
public loadStart(id)
{
g_StartTime[id] = EOS
read_args(g_StartTime, charsmax(g_StartTime))
remove_quotes(g_StartTime)
if(contain(g_StartTime, ":") != -1)
{
if((strlen(g_StartTime) != 5))
{
ColorChat(id, GREEN, "^4%s^1 Hibás idõ formátum!", prefix)
g_StartTime[id] = EOS
return PLUGIN_HANDLED
}
}
else
{
ColorChat(id, GREEN, "^4%s^1 Hibás idõ formátum!", prefix)
g_StartTime[id] = EOS
return PLUGIN_HANDLED
}
openMain(id)
return PLUGIN_HANDLED
}
public loadEnd(id)
{
g_EndTime[id] = EOS
read_args(g_EndTime, charsmax(g_EndTime))
remove_quotes(g_EndTime)
if(contain(g_EndTime, ":") != -1)
{
if((strlen(g_EndTime) != 5))
{
ColorChat(id, GREEN, "^4%s^1 Hibás idõ formátum!", prefix)
g_EndTime[id] = EOS
return PLUGIN_HANDLED
}
}
else
{
ColorChat(id, GREEN, "^4%s^1 Hibás idõ formátum!", prefix)
g_EndTime[id] = EOS
return PLUGIN_HANDLED
}
openMain(id)
return PLUGIN_HANDLED
}
public openMain(id)
{
if(!(get_user_flags(id) & ADMIN_CFG)) return PLUGIN_HANDLED
new szMenu[121],Time[10]
get_time("%H:%M:%S", Time, charsmax(Time))
format(szMenu, charsmax(szMenu), "\r%s \wVezérlõpult^n\dIdõ: %s", prefix, Time)
new menu = menu_create(szMenu, "main_handler")
if(!SwitchFrag) formatex(szMenu, charsmax(szMenu), "Kezdési Idõ: \y[%s]", g_StartTime[id] == EOS ? "pl. 10:00" : g_StartTime)
else formatex(szMenu, charsmax(szMenu), "A fragverseny elindúlt \y[%s-%s]^n", g_StartTime, g_EndTime)
menu_additem(menu, szMenu, "0", 0)
if(!SwitchFrag) formatex(szMenu, charsmax(szMenu), "Végetérési Idõ: \y[%s]^n", g_EndTime[id] == EOS ? "pl. 10:30" : g_EndTime)
else formatex(szMenu, charsmax(szMenu), "\rBeállitások")
menu_additem(menu, szMenu, "1", 0)
if(g_EndTime[id] != EOS && g_StartTime[id] != EOS && !SwitchFrag) menu_additem(menu, "\rVerseny elindítása!", "2", 0)
menu_display(id, menu, 0)
return PLUGIN_CONTINUE
}
public main_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
switch(item)
{
case 0:
{
if(!SwitchFrag) client_cmd(id, "messagemode START_TIME")
openMain(id)
}
case 1:
{
if(!SwitchFrag)
{
client_cmd(id, "messagemode END_TIME")
openMain(id)
}
else openSettings(id)
}
case 2:
{
FirstTask = true
openTimeChecker(id)
ColorChat(id, GREEN, "^4%s^1 A számláló elindúlt!", prefix)
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public openSettings(id) {
new szMenu[121]
format(szMenu, charsmax(szMenu), "\r%s \wBeállítások", prefix)
new menu = menu_create(szMenu, "settings_handler");
menu_additem(menu, "Verseny Leállítása", "0",0)
menu_additem(menu, "Ölés Nullázása", "1",0)
menu_additem(menu, "Játékosok Ölései", "2",0)
menu_display(id, menu, 0);
}
public settings_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
switch(item)
{
case 0: openSelect(id)
case 1: openReseter(id)
case 2: openKillViewer(id)
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public openKillViewer(id)
{
new szMenu[121], players[32], szTemp[10], pnum, Name[32]
get_players(players, pnum)
format(szMenu, charsmax(szMenu), "\r%s \wJátékosok Ölései", prefix)
new menu = menu_create(szMenu, "viewer_handler")
for(new i; i < pnum; i++)
{
get_user_name(players[i], Name, charsmax(Name))
formatex(szMenu, charsmax(szMenu),"%s \d[\yÖLÉS:\r %i\d]", Name, kill[players[i]])
num_to_str(players[i], szTemp, charsmax(szTemp))
menu_additem(menu, szMenu, szTemp)
}
menu_display(id, menu);
}
public viewer_handler(id,menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_CONTINUE
}
openKillViewer(id)
return PLUGIN_CONTINUE
}
public openSelect(id)
{
new menu = menu_create("\rBiztosan leakarod állítani a fragversenyt?", "select_handler");
menu_additem(menu, "Igen!", "0",0)
menu_additem(menu, "Nem!", "1",0)
menu_display(id, menu, 0);
}
public select_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
switch(item)
{
case 0:
{
FirstTask = false
SwitchFrag = false
ColorChat(0, GREEN, "^4%s ^1Egy ^3ADMIN ^1leállította a fragversenyt!", prefix)
}
case 1: openMain(id)
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public openReseter(id) {
new cim[121], players[32], pnum, Name[32], szTempid[10]
get_players(players, pnum)
format(cim, charsmax(cim), "\yJátékos ölésének nullázása!")
new menu = menu_create(cim, "reset_handler" )
for( new i; i<pnum; i++ )
{
get_user_name(players[i], Name, charsmax(Name))
num_to_str(players[i], szTempid, charsmax(szTempid))
menu_additem(menu, Name, szTempid, 0)
}
menu_display(id, menu, 0)
}
public reset_handler(id, menu, item)
{
if( item == MENU_EXIT ) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64], access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
x_tempid = str_to_num(data);
client_cmd(id, "messagemode INDOK");
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public reset_kuld(id)
{
new Msg[121], Name[32]
read_args(Msg, charsmax(Msg))
remove_quotes(Msg)
get_user_name(x_tempid, Name, charsmax(Name))
kill[x_tempid] = 0
ColorChat(0, GREEN, "^4%s^3 %s^1 ölései nullázva lettek! Indok: ^4%s", prefix, Name, Msg)
return PLUGIN_HANDLED;
}
public openTimeChecker(id)
{
if(FirstTask) set_task(0.5, "openTimeChecker",id)
new Time[10], SecSReset[10], SecEReset[10]
get_time("%H:%M:%S", Time, charsmax(Time))
formatex(SecSReset, charsmax(SecSReset), "%s:00", g_StartTime)
formatex(SecEReset, charsmax(SecEReset), "%s:00", g_EndTime)
if(!SwitchFrag)
{
set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 6.0, 0.5)
show_hudmessage(0, view_hud[6], g_StartTime)
}
else SeeBestPlayers(id)
if(equal(Time, SecSReset))
{
server_cmd("sv_restart 1")
SwitchFrag = true
}
if(equal(Time, SecEReset))
{
FirstTask = false
SwitchFrag = false
SeeBestPlayers(id)
}
return PLUGIN_CONTINUE;
}
public SeeBestPlayers(id)
{
new Players[32], Num;
get_players(Players, Num);
SortCustom1D(Players, Num, "sort_bestthree")
new Top1 = Players[0]
new Top2 = Players[1]
new Top3 = Players[2]
new TopName1[32], TopName2[32], TopName3[32]
get_user_name(Top1, TopName1, charsmax(TopName1))
get_user_name(Top2, TopName2, charsmax(TopName2))
get_user_name(Top3, TopName3, charsmax(TopName3))
if(!SwitchFrag)
{
set_hudmessage(0, 255, 0, -1.0, 0.10, 0, 6.0, 30.0)
if(Num == 1) show_hudmessage(0, view_hud[0], TopName1)
if(Num == 2) show_hudmessage(0, view_hud[1], TopName1, TopName2)
if(Num >= 3) show_hudmessage(0, view_hud[2], TopName1, TopName2, TopName3)
}
else
{
set_hudmessage(0, 127, 255, -1.0, 0.10, 0, 6.0, 0.5)
if(Num == 1) show_hudmessage(0, view_hud[3], g_StartTime, g_EndTime, TopName1, kill[Top1])
if(Num == 2) show_hudmessage(0, view_hud[4], g_StartTime, g_EndTime, TopName1, kill[Top1], TopName2, kill[Top2])
if(Num >= 3) show_hudmessage(0, view_hud[5], g_StartTime, g_EndTime, TopName1, kill[Top1], TopName2, kill[Top2], TopName3, kill[Top3])
}
}
public sort_bestthree(id1, id2)
{
if(kill[id1] > kill[id2]) return -1
else if(kill[id1] < kill[id2]) return 1
return 0
}