Sprawdź ten kod:
/* AMX Mod script.
*
* © Copyright 2002, OLO
* This file is provided as is (no warranties).
*
*/
#include <amxmod>
/* cvars:
* max. time on which map can be extended (there will be always min. one vote)
* amx_extendmap_max < value >
*
* when voting is successful set how much time we want play
* amx_extendmap_step < value >
*/
new gShowVote = 1
new gVotes
new bool:cstrike_running
new logfilename[256]
public check_votes(){
new players[32], inum
get_players(players,inum,"c")
new Float:step_time = get_cvar_float("amx_extendmap_step")
new Float:mp_time = get_cvar_float("mp_timelimit")
new Float:vote_ratio = get_cvar_float("amx_extendmap_ratio")
new Float:result_v = inum ? (float(gVotes) / float(inum)) : 0.0
if (result_v >= vote_ratio) {
client_print(0,print_chat,"[AMX] Voting successful. Map will be extended to next %.0f minutes",step_time)
log_to_file(logfilename,"Vote: Voting for the map extending successful (ratio ^"%.2f^") (needed ^"%.2f^") (time ^"%.0f^")",
result_v,vote_ratio,step_time)
new Float:new_time = mp_time + step_time
set_cvar_float("mp_timelimit",new_time)
if (new_time < get_cvar_float("amx_extendmap_max") )
gShowVote = 1
else
remove_task(7777)
}
else {
remove_task(7777)
client_print(0,print_chat,"[AMX] Voting failed. Map won't be extended")
log_to_file(logfilename,"Vote: Voting for the map extending failed (ratio ^"%.2f^") (needed ^"%.2f^")",
result_v, vote_ratio)
}
return PLUGIN_HANDLED
}
public vote_count(id,key){
if (get_cvar_float("amx_vote_answers")) {
new name[32]
get_user_name(id,name,31)
client_print(0,print_chat,"* %s voted %s extending",name,key ? "against" : "for")
}
if (!key) ++gVotes
return PLUGIN_HANDLED
}
public vote_extend(){
new timeleft = get_timeleft()
if (gShowVote&&(timeleft>0)&&(timeleft<120)){
gShowVote = 0
gVotes = 0
new mapname[64]
get_mapname(mapname,63)
new menu[256]
if (cstrike_running)
format(menu,255,"\yAMX Extend map %s?\w^n^n1. Yes^n2. No",mapname)
else
format(menu,255,"AMX Extend map %s?^n^n1. Yes^n2. No",mapname)
show_menu(0,(1<<0)|(1<<1),menu,10)
set_task(10.0,"check_votes")
client_cmd(0,"spk Gman/Gman_Choose2")
client_print(0,print_chat,"[AMX] Voting for the map extending started...")
log_to_file(logfilename,"Vote: Voting for the map extending started (map ^"%s^")",mapname)
}
return PLUGIN_HANDLED
}
public plugin_init(){
register_plugin("Map Extend Vote","1.0","default")
register_menucmd(register_menuid("AMX Extend map "),(1<<0)|(1<<1),"vote_count")
register_cvar("amx_extendmap_ratio","0.4")
register_cvar("amx_extendmap_max","90")
register_cvar("amx_extendmap_step","15")
register_cvar("amx_vote_answers","0")
set_task(10.0,"vote_extend",7777,"",0,"b")
new mod_name[32]
get_modname(mod_name,31)
cstrike_running = equal(mod_name,"cstrike") ? true : false
get_time("addons/amx/logs/admin%m%d.log",logfilename,255)
return PLUGIN_CONTINUE
}