Enviar respuesta 
Ayuda con sxe advanced bans
Autor Mensaje
danips Sin conexión
Miembro Junior


Mensajes: 9
Registro en: Dec 2018
Reputación: 0
Mensaje: #1
Ayuda con sxe advanced bans
hola quería saber si alguien puede modificar este complemento para que con el comando "say /banlocal" se abra un menu de los jugadores y al seleccionar el jugador dar la razon y el tiempo, acá es al rever primero se elije la razón y el tiempo y luego se abre el menu para elegir el jugador
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <fvault>

#define PLUGIN "Advance sXe BanMenu"
#define VERSION "1.4"
#define AUTHOR "Destro"

new const g_vault_name[] = "advance_sxe_ban"

new g_admin_tiempo[33], g_admin_razon[33][64]

const 
MAX_SAVE_LAST 25
new g_last_name[MAX_SAVE_LAST][32], g_last_ip[MAX_SAVE_LAST][25], g_last_hid[MAX_SAVE_LAST][20], g_last_steamid[MAX_SAVE_LAST][32]
new 
g_last_initg_last_size

new g_maxplayers

/*===========================================================================*
    INIT
*============================================================================*/
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_concmd("amx_sxe_banmenu""cmd_localban"ADMIN_BAN"<minutos> [razon]")
    
register_concmd("amx_sxe_unbanmenu""cmd_unban"ADMIN_IMMUNITY"-sXe UnbanMenu")
    
register_concmd("amx_sxe_addban""cmd_addban"ADMIN_IMMUNITY"<HID> <minutos> [razon]")
    
register_clcmd("amx_sxe_players""cmd_players")
    
register_clcmd("amx_sxe_last""cmd_last")
    
register_clcmd("sxe_debug""test")
    
    
register_cvar("scripter_destro"PLUGINFCVAR_SERVER|FCVAR_SPONLY)
    
register_cvar("scripter_contact""skype:ema_destro_cs"FCVAR_SERVER|FCVAR_SPONLY)
    
    
g_maxplayers get_maxplayers()
}

public 
plugin_cfg()
{
    if(
is_plugin_loaded("Pause Plugins") > -1)
        
server_cmd("amx_pausecfg add ^"%s^""PLUGIN)
        
    new Array:
keys ArrayCreate(20)
    new Array:
datas ArrayCreate(20)

    new 
total fvault_load(g_vault_namekeysdatas)

    new 
key[20], data[20], str_minutos[15], minutos
    
for(new 0totali++ )
    {
        
ArrayGetString(keysikey19)
        
ArrayGetString(datasidata19)
    
        
parse(datastr_minutos14)
    
        
minutos str_to_num(str_minutos)
        if(
minutos)
        {
            
minutos  = (minutos-get_systime())/60
            
if(minutos <= 0)
            {
                
fvault_remove_key(g_vault_namekey)
                continue
            }
        }
    }
}

/*===========================================================================*
    FWs
*============================================================================*/
public client_connect(id)
    
check_is_banned(id)
    
public 
client_putinserver(id)
    
check_is_banned(id)
    
public 
client_disconnect(id)
{
    new 
slot 0

    
if(g_last_size MAX_SAVE_LAST)
        
slot g_last_size++
    else
    {
        
slot g_last_init++
        if(
g_last_init == MAX_SAVE_LAST)
            
g_last_init 0
    
}
    
    
get_user_ip(idg_last_ip[slot], 24)
    
get_user_name(idg_last_name[slot], 31)
    
get_user_info(id"*HID"g_last_hid[slot], 19)
    
get_user_authid(idg_last_steamid[slot], 31)
}

/*===========================================================================*
    CMDs
*============================================================================*/
public cmd_localban(idlevelcid)
{
    if(!
cmd_access(idlevelcid2))
        return 
PLUGIN_HANDLED

    read_argv
(1g_admin_razon[id], charsmax(g_admin_razon[]))
    
remove_quotes(g_admin_razon[id])
    
g_admin_tiempo[id] = str_to_num(g_admin_razon[id])
    
    if(!(
get_user_flags(id)&ADMIN_IMMUNITY) && (!g_admin_tiempo[id] || g_admin_tiempo[id]  > 6000))
        
g_admin_tiempo[id] = 6000

    
    read_argv
(2g_admin_razon[id], charsmax(g_admin_razon[]))
    
remove_quotes(g_admin_razon[id])
    if(!
g_admin_razon[id][0]) copy(g_admin_razon[id], charsmax(g_admin_razon[]), "-No especificada-")
    else {
        
replace_all(g_admin_razon[id], charsmax(g_admin_razon[]), "^"", "")
        replace_all(g_admin_razon[id], charsmax(g_admin_razon[]), "
%", " ")
    }
    
    show_menu_localban(id)

    return PLUGIN_HANDLED
}

public cmd_unban(id, level, cid)
{
    if(!cmd_access(id, level, cid, 1) || !(get_user_flags(id)&ADMIN_IMMUNITY))
        return PLUGIN_HANDLED

    show_menu_unban(id)

    return PLUGIN_HANDLED
}

public cmd_addban(id, level, cid)
{
    if(!cmd_access(id, level, cid, 3))
        return PLUGIN_HANDLED

    new hid[20], tiempo, razon[64], name_adm[32]
    
    read_argv(2, hid, 19)
    remove_quotes(hid)
    tiempo = str_to_num(hid)
    
    read_argv(1, hid, 19)
    remove_quotes(hid)
    
    read_argv(3, razon, 63)
    remove_quotes(razon)
    
    if(!razon[0]) copy(razon, 63, "
-No especificada-")
    else {
        replace_all(razon, 63, "
^"""")
        
replace_all(razon63"%"" ")
    }
    
    
get_user_name(idname_adm63)

    
chat_color(0"!g[sXe] !g%s: !yAddBan HID: !g%s"name_admhid)
    
console_print(id"- [sXe] HID agregado a la lista.")
    
log_to_file("advance_sxe_ban.log""ADMIN %s: Addban: HID: %s - Minutos: %d - Razón: %s",
    
name_admhidtiemporazon)

    new 
vault_data[128]
    
formatex(vault_datacharsmax(vault_data), "%d ^"(addban)^" ^"%s^" ^"%s^""tiempo?(get_systime()+(tiempo*60)):0razonname_adm)
    
fvault_set_data(g_vault_namehidvault_data)

    return 
PLUGIN_HANDLED
}

public 
test(id)
{
    new 
name[32], ip[25], hid[20], steamid[32]
     
    
client_print(0print_console"^nDEBUG:^n #  %-16.15s   %-20s      %-8s       %-4.3s",
    
"nick""steamid""hid""ip")
    
    for(new 
player=1player<=g_maxplayersplayer++)
    {
        if(!
is_user_connected(player)) continue
        
        
get_user_ip(playerip24)
        
get_user_name(playername31)
        
get_user_info(player"*HID"hid19)
        
get_user_authid(playersteamid31)

        
client_print(0print_console"%2d  %-16s  %-20s   %-8s    %-4s"playernamesteamidhidip)
    }
    
client_print(0print_console"---------------------------------------------")
}

public 
cmd_players(id)
{
    new 
name[32], ip[25], hid[20], steamid[32]
     
    
console_print(id"^nInformacion de los jugadores online:^n #  %-16.15s   %-20s      %-8s       %-4.3s",
    
"nick""steamid""hid""ip")
    
    for(new 
player=1player<=g_maxplayersplayer++)
    {
        if(!
is_user_connected(player)) continue
        

        
get_user_ip(playerip24)
        
get_user_name(playername31)
        
get_user_info(player"*HID"hid19)
        
get_user_authid(playersteamid31)

        
console_print(id"%2d  %-16s  %-20s   %-8s    %-4s"playernamesteamidhidip)
    }
    
console_print(id"---------------------------------------------")
    
    return 
PLUGIN_HANDLED
}

public 
cmd_last(id)
{
    
console_print(id"^nUltimos jugadores en desconectarce:^n #  %-16.15s   %-20s      %-8s       %-4.3s",
    
"nick""steamid""hid""ip")
    
    new 
fix_slot
    
for(new slotslot<g_last_sizeslot++)
    {
        
fix_slot = (g_last_init slot) % MAX_SAVE_LAST
        console_print
(id"%2d  %-16s  %-20s   %-8s    %-4s"slot+1,
        
g_last_name[fix_slot], g_last_steamid[fix_slot], g_last_hid[fix_slot], g_last_ip[fix_slot])
    }
    
console_print(id"---------------------------------------------")
    
    return 
PLUGIN_HANDLED
}


/*===========================================================================*
    MENUEs
*============================================================================*/
show_menu_localban(id)
{
    new 
name[32], data[14], title[256], tiempo[32]
    
    if(
g_admin_tiempo[id] > 2880)
        
formatex(tiempo31"%d Días", ((g_admin_tiempo[id]/60)/24))
    else if(
g_admin_tiempo[id] > 240)
        
formatex(tiempo31"%d Horas", (g_admin_tiempo[id]/60))
    else if(
g_admin_tiempo[id] > 0)
        
formatex(tiempo31"%d Minutos"g_admin_tiempo[id])
    else 
copy(tiempo31"permanente")
    
    
formatex(titlecharsmax(title),
    
"Advance sXe BanMenu:^n\d-\wTiempo: \y%s^n\d-\wRazón: \y^"%s^"^n\rpaginas: ",
    
tiempog_admin_razon[id])
    
    new 
menu menu_create(title"menu_localban")  
    
    for(new 
1<= g_maxplayersi++)
    {
        if(!
is_user_connected(i)) continue
            
        
get_user_name(iname31)
        
formatex(data13"%d %d"iget_user_userid(i))
        
menu_additem(menunamedata)
    }
    
menu_display(idmenu0)
}

public 
menu_localban(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
data[14], nullname[32]
    
menu_item_getinfo(menuitemnulldata13name31null)
    
    new 
target
    
if(!check_player_menu(datatarget) || !is_user_connected(target) || is_user_hltv(target) || is_user_bot(target))
    {
        
chat_color(id"!g[sXe] !tJugador inválido")
        
menu_destroy(menu)
        
show_menu_localban(id)
        return 
PLUGIN_HANDLED
    
}
    
    
show_menu_confirmar(idtargetname)
    
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
show_menu_confirmar(idtargettarget_name[])
{
    new 
title[256], data[14], tiempo[32]
    
    if(
g_admin_tiempo[id] > 2880)
        
formatex(tiempo31"%d Días", ((g_admin_tiempo[id]/60)/24))
    else if(
g_admin_tiempo[id] > 240)
        
formatex(tiempo31"%d Horas", (g_admin_tiempo[id]/60))
    else if(
g_admin_tiempo[id] > 0)
        
formatex(tiempo31"%d Minutos"g_admin_tiempo[id])
    else 
copy(tiempo31"permanente")
    
    
formatex(titlecharsmax(title),
    
"\wBanear localmente a \y %s^n\d-\wMinutos: \y%d^n\d-\wRazón: \y%s",
    
target_nameg_admin_tiempo[id], g_admin_razon[id])
    
    new 
menu menu_create(title"menu_confirmar")

    
formatex(data13"%d %d"targetget_user_userid(target))
    
menu_additem(menu"\rconfirmar"data0)
    
menu_additem(menu"cancelar""E"0)
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER)

    
    
menu_display(idmenu0)
}

public 
menu_confirmar(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
data[14], null[2]
    
menu_item_getinfo(menuitemnull[0], data13null1null[0])
    
    if(
data[0] == 'E')
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
target
    
if(!check_player_menu(datatarget) || !is_user_connected(target) || is_user_hltv(target) || is_user_bot(target))
    {
        
chat_color(id"!g[sXe] !tJugador inválido")
        
menu_destroy(menu)
        
show_menu_localban(id)
        return 
PLUGIN_HANDLED
    
}
    
    new 
name_adm[32], name_target[32], ip[25], hid[20]
    
get_user_name(idname_adm31)
    
get_user_ip(targetip24)
    
get_user_name(targetname_target31)
    
get_user_info(target"*HID"hid19)
    
    if(!
hid[0])
    {
        
chat_color(id"!g[sXe] !tError al obtener el HID")
        
menu_destroy(menu)
        
show_menu_localban(id)
        return 
PLUGIN_HANDLED
    
}
    
    new 
tiempo[32]
    if(
g_admin_tiempo[id] > 2880)
        
formatex(tiempo31"%d Días", ((g_admin_tiempo[id]/60)/24))
    else if(
g_admin_tiempo[id] > 240)
        
formatex(tiempo31"%d Horas", (g_admin_tiempo[id]/60))
    else if(
g_admin_tiempo[id] > 0)
        
formatex(tiempo31"%d Minutos"g_admin_tiempo[id])
    else 
copy(tiempo31"permanente")
    
    
chat_color(0"!g[sXe] !g%s: !ybaneo localmente a !g%s"name_admname_target)
    
log_to_file("advance_sxe_ban.log""ADMIN %s: %s fue baneado localmente. Tiempo: %s - Razon: %s ip: %s - hid: %s",
    
name_admname_targettiempog_admin_razon[id], iphid)

    
cmd_players(target)
    
server_cmd("kick #%d ^"Fuiste baneado localmenteTiempo: %Razon: %s^""get_user_userid(target), tiempog_admin_razon[id])
    
    new 
vault_data[256]
    
formatex(vault_datacharsmax(vault_data), "%d ^"%s^" ^"%s^" ^"%s^""g_admin_tiempo[id]?(get_systime()+(g_admin_tiempo[id]*60)):0name_targetg_admin_razon[id], name_adm)
    
fvault_set_data(g_vault_namehidvault_data)
    
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
show_menu_unban(id)
{
    new 
menu menu_create("sXe: \rUnBan""menu_unban")  

    new 
total fvault_size(g_vault_name)

    new 
key[20], data[128], str_minutos[15], name[32], minutos
    
for(new 0totali++ )
    {
        
fvault_get_keyname(g_vault_nameikeycharsmax(data))
        
fvault_get_data(g_vault_namekeydatacharsmax(data))

        
parse(datastr_minutos14name31)

        
minutos str_to_num(str_minutos)
        if(
minutos)
        {
            
minutos  = (minutos-get_systime())/60
            
if(minutos <= 0)
            {
                
fvault_remove_key(g_vault_namekey)
                continue
            }
        }

        
formatex(data127"%s \y(HID:%s)"namekey)
    
        
menu_additem(menudatakey)
    }
    
    
menu_display(idmenu0)
}

public 
menu_unban(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
hid[20], null[2]
    
menu_item_getinfo(menuitemnull[0], hid19null1null[0])

    
show_menu_unban_info(idhid)

    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
show_menu_unban_info(idhid[20])
{
    new 
data[256], str_minutos[15], name[32], razon[64], admin[32], minutostime_aplicado,
    
fecha_aplicado[25], fecha_caduca[25], tiempo[32]
    
    
fvault_get_data(g_vault_namehiddatacharsmax(data), time_aplicado)
    
parse(datastr_minutos14name31razon63admin31)
    
format_time(fecha_aplicado24"%d/%m/%Y - %H:%M"time_aplicado)
    
    
minutos str_to_num(str_minutos)
    if(
minutos)
    {
        
format_time(fecha_caduca24"%d/%m/%Y - %H:%M"minutos)
        
minutos  = (minutos-get_systime())/60
        
if(minutos <= 0)
        {
            
fvault_remove_key(g_vault_namehid)
            
show_menu_unban(id)
            return
        }
        if(
minutos 2880)
            
formatex(tiempo31"%d Días", ((minutos/60)/24))
        else if(
minutos 240)
            
formatex(tiempo31"%d Horas", (minutos/60))
        else if(
minutos 0)
            
formatex(tiempo31"%d Minutos"minutos)
        else 
copy(tiempo31"permanente")
    }
    else 
copy(fecha_caduca15"Permanente")
    

    
formatex(datacharsmax(data),
    
"\ysXe: \rConfirmar UnBan^n^n\wNombre: \y%s ^n\wHID: \r%s^n\wRazón:\y%s^n\wAdmin:\r%s^n\wAplicado: \y%s^n\wVence: \y%s^n\wTiempo restantes: \y%s",
    
namehidrazonadminfecha_aplicadofecha_caducatiempo)
    
    new 
menu menu_create(data"menu_unban_info")

    
menu_additem(menu"\rDesbanear"hid)
    
menu_additem(menu"Atrás""-")
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER)

    
menu_display(idmenu0)
}

public 
menu_unban_info(idmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    new 
hid[20], null[2]
    
menu_item_getinfo(menuitemnull[0], hid19null1null[0])

    if(
hid[0] == '-')
    {
        
show_menu_unban(id)
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    
chat_color(id"!g[sXe] !yJugador desbaneado - HID: !g%s"hid)
    
    new 
name_adm[32]
    
get_user_name(idname_adm31)
    
log_to_file("advance_sxe_ban.log""ADMIN %s: hid %s fue desbaneada.",
    
name_admhid)
    
    
fvault_remove_key(g_vault_namehid)

    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}
/*===========================================================================*
    STOCKs
*============================================================================*/
stock check_player_menu(data[], &return_player)
{
    static 
strid[6], struserid[8]
    
parse(datastrid5struserid7)
    
    
return_player str_to_num(strid)
    if(
is_user_connected(return_player) && get_user_userid(return_player) == str_to_num(struserid))
        return 
1
        
    
return 0
}

stock check_is_banned(id)
{
    new 
hid[20], data[128]
    
get_user_info(id"*HID"hid19)
    
    if(!
hid[0]) return 0
    
    
if(!fvault_get_data(g_vault_namehiddatacharsmax(data)))
        return 
0

    
new str_minutos[15], name[32], razon[64], tiempo[32]
    
parse(datastr_minutos14name31razon63)
    
    new 
minutos str_to_num(str_minutos)
    if(
minutos)
    {
        
minutos = (minutos-get_systime())/60
        
if(minutos <= 0)
        {
            
fvault_remove_key(g_vault_namehid)
            return 
0
        
}
        
        if(
minutos 2880)
            
formatex(tiempo31"%d Días", ((minutos/60)/24))
        else if(
minutos 240)
            
formatex(tiempo31"%d Horas", (minutos/60))
        else if(
minutos 0)
            
formatex(tiempo31"%d Minutos"minutos)
        else 
copy(tiempo31"permanente")
    }
    
    
server_cmd("kick #%d ^"Fuiste baneado localmenteTiempo: %Razon: %s^""get_user_userid(id), tiemporazon)
    
    return 
1
}

stock chat_color(const id, const input[], any:...)
{
    new 
count 1players[32], i
    
static msg[191]

    if(
numargs() == 2)
        
copy(msg190input)
    else
        
vformat(msg190input3)
    
    
replace_all(msg190"!g""^4")
    
replace_all(msg190"!y""^1")
    
replace_all(msg190"!t""^3")
    
    if (
idplayers[0] = id; else get_players(playerscount"ch")
    {
        for(
0counti++)
        {
            if(
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i])
                
write_string(msg)
                
message_end();
            }
        }
    }

13/07/2019 02:16 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Allied Modders en español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS