new MenuPlayerschooseplayer[32]
register_plugin("VOTEKICK","1.00","NL)Ramon(NL")
register_clcmd("say /votekick","Showchooseplayer")
register_menucmd(register_menuid("allvote"), Keysallvote, "Pressedallvote")
register_menucmd(register_menuid("yousure"), Keysyousure, "Pressedyousure")
register_menucmd(register_menuid("chooseplayer"), Keyschooseplayer, "Pressedchooseplayer")
register_concmd("amx_blockvotekick","blockvotekick", ADMIN_LEVEL_H,"")
register_concmd("amx_allowvotekick","allowvotekick", ADMIN_LEVEL_H,"")
register_concmd("vote_kick_reason","reasonenter")
if(!votekicking[id]) return PLUGIN_HANDLED
read_args(votekickreason,255)
remove_quotes(votekickreason)
client_print(id,print_chat,"Reason to short")
public get_vaultkey(key[41],id) {
get_user_authid(id,Authid,31)
format(key,40,VaultKey,Authid)
public get_vaultkeytime(key[41],id) {
get_user_authid(id,Authid,31)
format(key,40,VaultKeyTime,Authid)
public blockvotekick(id,level,cid) {
if (!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
new player = cmd_target(id, arg, 11)
if(is_user_connected(player)) {
get_user_name(id,name,31)
get_user_authid(id,authid,31)
get_user_name(player,name2,31)
get_user_authid(player,authid2,31)
get_time("%x %X",nowtime,31)
write_file("addons/amxmodx/logs/votekick.log","")
format(message,199,"%s: %s %s Blocked votekick rights of %s %s",nowtime,name,authid,name2,authid2)
write_file("addons/amxmodx/logs/votekick.log",message)
client_print(id,print_chat,"Player %s's votekick right changed sucessfully",name2)
client_print(player,print_chat,"Your right to votekick has been removed by an admin")
public allowvotekick(id,level,cid) {
if (!cmd_access(id,level,cid,1)) return PLUGIN_HANDLED
new player = cmd_target(id, arg, 11)
if(is_user_connected(player)) {
get_user_name(id,name,31)
get_user_authid(id,authid,31)
get_user_name(player,name2,31)
get_user_authid(player,authid2,31)
get_time("%x %X",nowtime,31)
write_file("addons/amxmodx/logs/votekick.log","")
format(message,199,"%s: %s %s Allowed votekick rights of %s %s",nowtime,name,authid,name2,authid2)
write_file("addons/amxmodx/logs/votekick.log",message)
client_print(id,print_chat,"Player %s's votekick right changed sucessfully",name2)
client_print(player,print_chat,"Your votekick block has been removed by an admin",name)
public Showchooseplayer(id) {
get_user_authid(id,authid,31)
if(equal(authid,"STEAM_ID_PENDING")) {
client_print(id,print_chat,"You can't votekick right after u connect.")
if(get_vaultdata(key) > get_systime()) {
client_print(id,print_chat,"Your votekick rights has been temporary disabled.")
if(get_playersnum() < 3) {
client_print(id,print_chat,"Minimum of 3 players needed to votekick")
new allowed = get_vaultdata(key)
//new allowed = str_to_num(AuthidAndData)
client_print(id,print_chat,"Your votekick rights has been removed by an admin due to abuse, you cant votekick anymore")
ShowMenuchooseplayer(id, MenuPoschooseplayer = 0)
client_print(id,print_chat,"Another vote process is in progress or has just ended, please wait")
public client_authorized(id) {
if(!vaultdata_exists(key)) {
public ShowMenuchooseplayer(id, position) {
if (position < 0) { return 0; }
get_players(MenuPlayerschooseplayer, Num)
if (Start >= Num) { Start = position = MenuPoschooseplayer = 0; }
new Len = format(MenuBody, 255, "VoteKick player%d/%d^n^n", position+1, (Num / 7 + ((Num % 7) ? 1 : 0 )) )
if (End > Num) { End = Num; }
k = MenuPlayerschooseplayer[i]
get_user_name(k, UserName, 31)
Keys |= (1<<CurrentKey++)
Len += format(MenuBody[Len], (255-Len), "%i. %s^n", CurrentKey, UserName)
format(MenuBody[Len], (255-Len), "^n9. Next^n%s", position ? "0. Back" : "0. Exit")
format(MenuBody[Len], (255-Len), "^n%s", position ? "0. Back" : "0. Exit")
show_menu(id, Keys, MenuBody, -1, "chooseplayer")
public Pressedchooseplayer(id, key) {
case 8: ShowMenuchooseplayer(id, ++MenuPoschooseplayer) // More Option
case 9: ShowMenuchooseplayer(id, --MenuPoschooseplayer) // Back Option
// Get User ID and Username
Showyousure(id,MenuPlayerschooseplayer[MenuPoschooseplayer * 7 + key])
public Showyousure(id,tokick) {
client_print(id,print_chat,"Another vote process is in progress or has just ended, please wait")
server_cmd("kick #%d ^"Because you want to votekick yourself! (noob)^"", get_user_userid(id))
if(is_user_admin(tokick)) {
client_print(id,print_chat,"You CANT votekick an admin, if you have problems with this admin, contact another admin.")
get_user_name(id,name,31)
client_print(tokick,print_chat,"%s tryed to votekick you, votekick blocked, also your actions are LOGGED!")
write_file("addons/amxmodx/logs/votekick.log","")
get_time("%x %X",nowtime,31)
get_user_authid(id,authid,31)
get_user_name(tokick,name2,31)
get_user_authid(tokick,authid2,31)
format(message,199,"%s: %s %s wanted to start a votekick against admin %s %s, votekick BLOCKED",nowtime,name,authid,name2,authid2)
write_file("addons/amxmodx/logs/votekick.log",message)
get_user_name(tokick,name,31)
format(menu,255,"Are you sure you want to votekick:^n%s?^nIf less then 40 procent votes yes^nyou will be banned for 10 minutes^nif more than 60 procent votes yes^n%s will be^nbanned for 10 minutes^n^n1. YES (READ THE ABOVE)^n2. NO^n",name,name)
show_menu(id, Keysyousure, menu, 30, "yousure") // Display menu
public Pressedyousure(id, key) {
client_print(0,print_chat,"Another vote process is in progress or has just ended, please wait")
client_cmd(id,"messagemode vote_kick_reason")
set_hudmessage(255, 0, 0, 0.0, 0.1, 0, 6.0, 12.0)
show_hudmessage(id, "Please type a valid votekick reason and press enter.^nAny invalid reason to may^nresult in a votekick block!!!")
public startvotekick(id) {
client_print(id,print_chat,"Another vote process is in progress or has just ended, please wait")
get_user_name(id,name,31)
get_user_authid(id,authid,31)
get_user_name(votekicking[id],name2,31)
get_user_authid(votekicking[id],authid2,31)
get_time("%x %X",nowtime,31)
format(message,199,"%s: %s %s started a votekick against %s %s Reason to votekick:",nowtime,name,authid,name2,authid2)
write_file("addons/amxmodx/logs/votekick.log","")
write_file("addons/amxmodx/logs/votekick.log",message)
write_file("addons/amxmodx/logs/votekick.log",votekickreason)
get_user_authid(id,votekickids[0],31)
get_user_authid(votekicking[id],votekickids[1],31)
get_user_name(id,name1,31)
get_user_name(votekicking[id],name2,31)
format(menu,255,"%s started a votekick^nDo you want to votekick %s?^nReason:^n%s^n^n1. Yes ^n2. No^n^n4. Vote yes anonymously^n^n6. None.",name1,name2,votekickreason)
show_menu(0, Keysallvote, menu, 30, "allvote") // Display menu
set_task(30.0,"voteend",id)
set_task(180.0,"allowvote",id)
client_print(0,print_chat,"%s started a votekick against %s.",name1,name2)
client_print(0,print_chat,"REASON: %s",votekickreason)
suspendvotekick(votekickids[0],600)
public Pressedallvote(id, key) {
get_user_name(id,name,31)
client_print(0,print_chat,"%s voted yes",name)
get_user_name(id,name,31)
client_print(0,print_chat,"%s voted no",name)
new Float:totalvotes = float(votes[0] + votes[1])
new Float:percent = (votes[0] / totalvotes * 100.0)
client_print(0,print_chat,"Votekick results: less than 40 procent voted yes. Votekicker banned for 10 minutes")
write_file("addons/amxmodx/logs/votekick.log","Vote failed, votekicker kicked")
new players[32], pnum, player
get_players(players, pnum)
for( new i=0; i<pnum; i++){
get_user_authid(player,authid,31)
if(equal(authid,votekickids[0])) {
server_cmd("kick #%d ^"Votekicked by failed vote, 10 mintes ban^"", get_user_userid(player))
server_cmd("banid ^"10^" ^"%s^";wait;writeid", authid)
suspendvotekick(authid,86400)
server_cmd("banid ^"10^" ^"%s^";wait;writeid", votekickids[0])
set_task(10.0,"checkifuserison",0,votekickids[0],31)
set_task(30.0,"checkifuserison",0,votekickids[0],31)
set_task(60.0,"checkifuserison",0,votekickids[0],31)
checkifuserison(votekickids[1])
suspendvotekick(votekickids[0],86400)
client_print(0,print_chat,"Votekick results: more than 60 procent voted yes. User banned for 10 minutes.")
write_file("addons/amxmodx/logs/votekick.log","Vote succeeded, user kicked")
new players[32], pnum, player
get_players(players, pnum)
for( new i=0; i<pnum; i++){
get_user_authid(player,authid,31)
if(equal(authid,votekickids[1])) {
server_cmd("kick #%d ^"Votekicked by 60 procent or more, 10 minutes ban^"", get_user_userid(player))
server_cmd("banid ^"10^" ^"%s^";wait;writeid", authid)
suspendvotekick(authid,86400)
server_cmd("banid ^"10^" ^"%s^";wait;writeid", votekickids[1])
set_task(10.0,"checkifuserison",0,votekickids[1],31)
set_task(30.0,"checkifuserison",0,votekickids[1],31)
set_task(60.0,"checkifuserison",0,votekickids[1],31)
checkifuserison(votekickids[1])
suspendvotekick(votekickids[1],86400)
write_file("addons/amxmodx/logs/votekick.log","Vote failed, no results")
client_print(0,print_chat,"Votekick results: Between 40 and 60 procent. No actions taken")
public checkifuserison(steamid[]) {
new players[32], pnum, player
get_players(players, pnum)
for( new i=0; i<pnum; i++){
get_user_authid(player,authid,31)
if(equal(authid,votekickids[1])) {
server_cmd("kick #%d ^"Votekicked/Failed votekick, no recocnect allowed. ^"", get_user_userid(player))
public suspendvotekick(authid[32],seconds) {
format(key,40,VaultKeyTime,authid)
num_to_str(get_systime() + seconds,data,19)
public allowvote() canvote = false