Ping/FPS Kicker v1.0
#1
Bueno, aporto este Ping/FPS Kicker que un usuario anterior pidio, se que esta el de Alex y todo eso, pero bueno, este usa otro método de obtener los fps, además de un menú donde muestra el player con sus respectivos fps y ping.
Sólo lo aporto, se que el método de fps no es del mejor, pero bueno..

Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <engine>

enum _:CVars
{
    
FPS_LIMIT,
    
PING_LIMIT
};

new 
g_cVars[CVars];

enum
{
    
TASKID_PINGFPS    6021,
    
TASKID_FPS
};

new 
g_fps[33][33], g_i[33];
new 
g_maxplayers;


public 
plugin_init() {
    
register_plugin("Ping/FPS Kicker""v1.0""heNK'");
    
    
register_clcmd("say /verfps""MenuPlayers");
    
register_clcmd("say /verping""MenuPlayers");
    
    
register_clcmd("say /fps""Estadisticas");
    
register_clcmd("say /misfps""Estadisticas");
    
register_clcmd("say /miping""Estadisticas");
    
register_clcmd("say /ping""Estadisticas");
    
    
g_cVars[FPS_LIMIT] = register_cvar("fps_limit""120");
    
g_cVars[PING_LIMIT] = register_cvar("ping_limit""300");
    
    
set_task((60.0*2.0), "TaskShowPublicidad", .flags="b");
    
    
g_maxplayers get_maxplayers();

}

public 
client_putinserver(id)
    
set_task(0.1"count"id TASKID_FPS, .flags="b"),
    
set_task(1.0"CheckStatus"id TASKID_PINGFPS, .flags="b");
public 
client_disconnect(id)
    
remove_task(id TASKID_FPS), remove_task(id TASKID_PINGFPS);

public 
CheckStatus(id) {
    
id -= TASKID_PINGFPS;
    if(
is_user_admin(id))
        return;
    new 
fpspingloss;
    
get_user_ping(idpingloss);
    
fps get_user_fps(id);
    if(
fps >= get_pcvar_num(g_cVars[FPS_LIMIT]))
        
server_cmd("kick #%d ^"Excediste el limite de fps %d/%d^""get_user_userid(id), fpsget_pcvar_num(g_cVars[FPS_LIMIT]));
    if(
ping >= get_pcvar_num(g_cVars[PING_LIMIT]))
        
server_cmd("kick #%d ^"Excediste el limite de ping %d/%d^""get_user_userid(id), pingget_pcvar_num(g_cVars[PING_LIMIT]));
}

public 
MenuPlayers(id
{
    new 
menu menu_create("Ver FPS/Ping Jugadores: ""HandlerMenuPlayers");
    
    for(new 
id2 1id2 <= g_maxplayersid2++) {
        if(
is_user_connected(id2)) {
            new 
Opcion[100], Name[32], szId[5], pingloss;
            
get_user_name(id2Namecharsmax(Name));
            
get_user_ping(id2pingloss);
            
num_to_str(id2szId4);
            
formatex(Opcioncharsmax(Opcion), "%s \y(%d\d/\r%d\y)"Nameget_user_fps(id2), ping);
            
menu_additem(menuOpcionszId0);
        }
    }
    
    
menu_display(idmenu0);
}

public 
HandlerMenuPlayers(idmenuitem)
    switch(
item) {
        case 
MENU_EXIT
            
menu_destroy(menu);
        default: 
MenuPlayers(id);
    }

public 
Estadisticas(id) {
    new 
pingloss;
    
get_user_ping(idpingloss);
    
client_print(idprint_chat"Tienes %d/%d de FPS"get_user_fps(id), get_pcvar_num(g_cVars[FPS_LIMIT]));
    
client_print(idprint_chat"Tienes %d/%d de PING"pingget_pcvar_num(g_cVars[PING_LIMIT]));
}
    
public 
client_PreThink(id
    
g_fps[id][10]++

public 
count(id) { 
    
id -= TASKID_FPS;
    if ( 
g_i[id] < 
        
g_i[id]++; 
    else
        
g_i[id] = 0
    
    
g_fps[id][g_i[id]] = g_fps[id][10]; 
    
g_fps[id][10] = 0


get_user_fps(id)  { 
    new 
i
    
new 0
    
    
for ( 010i++ ) 
        
+= g_fps[id][i]
    
    return 
5
}

public 
TaskShowPublicidad()
    
client_print(0print_chat"[MENSAJE] Recuerda que el maximo de FPS es de %d y de PING es de %d"get_pcvar_num(g_cVars[FPS_LIMIT]), get_pcvar_num(g_cVars[PING_LIMIT])); 
Responder
#2
Hubiese sido mejor que hubieses hecho un plugin que saque a los que han durado mas de 5 minutos pero que no saque a los Admin Pero no digo nada lo contrario buen aporteMario
Corazón I dream of someday being able to have your near. Corazón
[Imagen: 76561199006140497.png]
Responder
#3
(09/10/2019, 06:55 PM)andres_1041 escribió: Hubiese sido mejor que hubieses hecho un plugin que saque a los que han durado mas de 5 minutos pero que no saque a los Admin Pero no digo nada lo contrario buen aporteMario

Ahí agrego que si es admin, no pase nada.
Responder
#4
Explicame por qué usas ese método tan impreciso y no usas el siguiente:

Código PHP:
new Float:gF_ClientFPS[33]

register_forward FM_CmdStart"Fw_CmdStart")

public 
Fw_CmdStart ( const id, const uc_handle, const seed )
{
    static 
MSec
    MSec 
get_uc uc_handleUC_Msec )

    
gF_ClientFPS[id] = ( / ( MSec 0.001 ) )


Apurate
(15/12/2020, 07:06 PM)Mario AR. escribió: Cuando tu acatante conozca de tu nuevo puerto, te volverá a atacar
Responder
#5
1- primero que nada buen aporte niper
2- me podrias explicar porque el metodo de niper es impreciso ? y como hago para que tu metodo tenga la misma funcion del de niper
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)