01/10/2019, 11:56 AM
(Última modificación: 09/10/2019, 07:16 PM por Niper.-.. Edited 1 time in total.)
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..
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 fps, ping, loss;
get_user_ping(id, ping, loss);
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), fps, get_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), ping, get_pcvar_num(g_cVars[PING_LIMIT]));
}
public MenuPlayers(id)
{
new menu = menu_create("Ver FPS/Ping Jugadores: ", "HandlerMenuPlayers");
for(new id2 = 1; id2 <= g_maxplayers; id2++) {
if(is_user_connected(id2)) {
new Opcion[100], Name[32], szId[5], ping, loss;
get_user_name(id2, Name, charsmax(Name));
get_user_ping(id2, ping, loss);
num_to_str(id2, szId, 4);
formatex(Opcion, charsmax(Opcion), "%s \y(%d\d/\r%d\y)", Name, get_user_fps(id2), ping);
menu_additem(menu, Opcion, szId, 0);
}
}
menu_display(id, menu, 0);
}
public HandlerMenuPlayers(id, menu, item)
switch(item) {
case MENU_EXIT:
menu_destroy(menu);
default: MenuPlayers(id);
}
public Estadisticas(id) {
new ping, loss;
get_user_ping(id, ping, loss);
client_print(id, print_chat, "Tienes %d/%d de FPS", get_user_fps(id), get_pcvar_num(g_cVars[FPS_LIMIT]));
client_print(id, print_chat, "Tienes %d/%d de PING", ping, get_pcvar_num(g_cVars[PING_LIMIT]));
}
public client_PreThink(id)
g_fps[id][10]++
public count(id) {
id -= TASKID_FPS;
if ( g_i[id] < 9 )
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 j = 0
for ( i = 0; i < 10; i++ )
j += g_fps[id][i]
return j - 5
}
public TaskShowPublicidad()
client_print(0, print_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]));