/* Script generated by Pawn Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#define PLUGIN "Plugin"
#define AUTHOR "Unknown"
#define VERSION "1.0"
new g_iUserFPS[32 + 1], Float:g_fCommandDelay[33];
new g_cMaxFPS, g_cDelayTimer, g_cDelayCommand, g_cMaxWarn, g_cFpsCheckOFF;
new iWarn[33];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /fps", "ClientOtherPlayerFPS");
g_cMaxFPS = register_cvar("MAXFPS", "121");//Mennyi a megengedelyezett maxfps
g_cDelayTimer = register_cvar("Timer", "1.0");//| ezt ne ird at, csak ha tudod mi | mpben
g_cDelayCommand = register_cvar("DelayChat", "10.0");//Chat tiltas | mpben
g_cMaxWarn = register_cvar("MAXWarn", "4");//Mennyi figyelmeztetes legyen a max, 4, vagy annal tobbet adj meg! 5 az 4, 4 az 3 és stb
g_cFpsCheckOFF = register_cvar("Ki/Be", "1")//Alap az 0 - nem ellenőrzi, 1 - ellenőrzi
set_task(10.0, "CheckFPS",_,_,_,"b");
register_forward(FM_PlayerPreThink, "fwdPlayerPreThink");
}
public fwdPlayerPreThink(id)
{
static Float:fGameTime, Float:fCountNext[MAX_PLAYERS], iCountFrames[MAX_PLAYERS], Float:fDelayTimer;
fDelayTimer = get_pcvar_float(g_cDelayTimer);
if(fCountNext[id] >= (fGameTime = get_gametime()))
{
iCountFrames[id]++;
return FMRES_IGNORED;
}
g_iUserFPS[id] = iCountFrames[id];
iCountFrames[id] = 0;
fCountNext[id] = fGameTime + fDelayTimer;
return FMRES_IGNORED;
}
public ClientOtherPlayerFPS(id)
{
new Menustring[256], Row[7], sName[MAX_NAME_LENGTH];
static players[32], pnum;
get_players(players, pnum, "c");
formatex(Menustring, charsmax(Menustring), "\r[Információ]\d |\w Kinek az fpsere vagy kivancsi?");
new menu = menu_create(Menustring, "ClientOtherPlayerFPS_h");
for(new i; i < pnum; i++)
{
get_user_name(players[i], sName, charsmax(sName));
formatex(Menustring, charsmax(Menustring),"%s", sName);
num_to_str(players[i], Row, charsmax(Row));
menu_additem(menu, Menustring, Row);
}
menu_setprop(menu, MPROP_EXITNAME, "\wKilepes");
menu_display(id, menu, 0);
}
public ClientOtherPlayerFPS_h(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new Data[6], Name[64], Access, Key;
menu_item_getinfo(menu, item, Access, Data, charsmax(Data), Name, charsmax(Name));
Key = str_to_num(Data);
if(g_fCommandDelay[id] >= get_gametime())
{
new Float:iTime = g_fCommandDelay[id] -= get_gametime();
client_print_color(id, print_team_default, "^4[Információ]^1 Ezt a parancsot nem hasznalhatod meg:^3 %.2f^1 mpig", iTime);
return PLUGIN_HANDLED;
}
g_fCommandDelay[id] = (get_gametime() + get_pcvar_float(g_cDelayCommand));
client_print_color(id, print_team_default, "^4[Információ]^3 %s^1 fps-e:^3 %d^1.", Name, g_iUserFPS[Key]);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public CheckFPS()
{
if(get_pcvar_num(g_cFpsCheckOFF) == 0)
return;
new iPlayers[32], iPnum, id;
get_players(iPlayers, iPnum, "ch");
for(new i = 0; i < iPnum; i++)
{
id = iPlayers[i];
if(g_iUserFPS[id] <= get_pcvar_num(g_cMaxFPS))
iWarn[id] = 0;
if(g_iUserFPS[id] > get_pcvar_num(g_cMaxFPS))
{
client_print_color(id, print_team_default, "^4[Információ]^3 Figyelmeztetes!^1 az FPS-ed nagyobb, mint a megengedett!^3 [%d/%d]", iWarn[id]+1, get_pcvar_num(g_cMaxWarn));
client_print_color(id, print_team_default, "^4[Információ]^1 A Konzolba ird be:^3 fps_max %d", get_pcvar_num(g_cMaxFPS));
iWarn[id]+= 1;
}
if(iWarn[id] == get_pcvar_num(g_cMaxWarn))
{
console_print(id, "------------**##**------------");
console_print(id, "Az fpsed: %d", g_iUserFPS[id]);
console_print(id, "Megengedett max fps: %d", get_pcvar_num(g_cMaxFPS));
console_print(id, "Figyelmeztetesek: %d/%d", iWarn[id], get_pcvar_num(g_cMaxWarn));
console_print(id, "------------**##**------------");
iWarn[id] = 0;
server_cmd("kick #%d", get_user_userid(id));
}
}
}
public client_disconnected(id)
{
g_fCommandDelay[id] = 0.0;
g_iUserFPS[id] = 0;
iWarn[id] = 0;
}