No tengo ideas para presentarme así que voy al grano, Este plugin es muy usado entre servidores pug (pick up game), o mix (como se les diga en su país), Y bien lo hice a pedido de un man.
El plugin inicia una votación para expulsar al player, Donde se abre dicho menú para todos los jugadores para elegir entre si o no.
Modo de uso
.votekick "Nombre" "Razón"
Si no ponen una razón, no se preocupen el mismo plugin les pone una
Y también le puse una cvar para decidir en que tiempo acaba la votación, yo le puse 10 segundos
Cvar
tiempo_vote "10.0"
Version 1.1
Version 1.0
El plugin inicia una votación para expulsar al player, Donde se abre dicho menú para todos los jugadores para elegir entre si o no.
Modo de uso
.votekick "Nombre" "Razón"
Si no ponen una razón, no se preocupen el mismo plugin les pone una
Y también le puse una cvar para decidir en que tiempo acaba la votación, yo le puse 10 segundos
Cvar
tiempo_vote "10.0"
Version 1.1
Código PHP:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
new gRazon[32], gVic[32], time_, index_, iMaxPlayers
new votos[2]
#define TASK 6548
new bool:active
public plugin_init()
{
register_plugin("Votekick Player", "1.1", "OsweRRR")
register_clcmd(".votekick", "cmdVotekick")
time_ = register_cvar("tiempo_vote", "10.0")
iMaxPlayers = get_maxplayers();
}
public cmdVotekick(id)
{
if(active)
{
console_print(id, "[AMXX] Ya hay una votacion activa espera a que finalize.")
return PLUGIN_HANDLED
}
new arg[32]
read_argv(1, arg, 31)
new target = cmd_target(id, arg, CMDTARGET_ALLOW_SELF)
if(!target)
return PLUGIN_HANDLED
read_argv(2, gRazon, 31)
if(!gRazon[0])
formatex(gRazon, 31, "Sin Especificar.")
arrayset(votos, 0, 2)
index_ = target
active = true
start_vote()
static name[32];
get_user_name(id, name, 31)
client_print(0, print_chat, "[AMXX] Jugador %s inicio una votacion para expulsar a %s", name, gVic)
return PLUGIN_HANDLED
}
public start_vote()
{
new info[85]
get_user_name(index_, gVic, 31)
formatex(info, charsmax(info), "\wExpulsar: \r%s \d| \wRazon: \r%s", gVic, gRazon)
new menu = menu_create(info, "handle_vote")
menu_additem(menu, "Si", "1")
menu_additem(menu, "No", "2")
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER)
for(new i = 1; i <= iMaxPlayers; ++i)
{
if(!is_user_connected(i))
continue
menu_display(i, menu, 0)
}
set_task(Float:get_pcvar_float(time_), "end_vote", TASK)
}
public handle_vote(id, menu, item)
{
if(!active || item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new iAccess, iData[6], name[32], iCallBack
menu_item_getinfo(menu, item, iAccess, iData, charsmax(iData), name, charsmax(name), iCallBack)
switch(str_to_num(iData))
{
case 1: votos[0]++
case 2: votos[1]++
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public client_disconnect(id)
{
if(index_ == id && active == true)
{
if(task_exists(TASK))
remove_task(TASK)
for(new i = 1; i <= iMaxPlayers; ++i)
{
if(!is_user_connected(i))
continue;
menu_cancel(i);
}
active = false
arrayset(votos, 0, 2)
}
}
public end_vote()
{
for(new i = 1; i <= iMaxPlayers; ++i)
{
if(!is_user_connected(i))
continue;
menu_cancel(i)
}
if(votos[0] > votos[1])
{
client_print(0, print_chat, "[AMXX] El jugador %s, Fue expulsado con %d votos a favor.", gVic, votos[0])
server_cmd("kick #%d ^"%s^"", get_user_userid(index_), gRazon)
}
else if(votos[1] > votos[0])
client_print(0, print_chat, "[AMXX] El jugador %s, No fue expulsado con %d votos en contra.", gVic, votos[1])
else
client_print(0, print_chat, "[AMXX] Los votos estan empatados por lo tanto no se expulsara a %s.", gVic)
active = false
}
Version 1.0