Mensajes: 385
Temas: 144
Registro en: Mar 2020
Reputación:
0
Buenas tardes!
Antes de ayer probe este plugin que me habían recomendado de acá.. el tema es el siguiente ni bien empieza la ronda me manda a todos de specs y después los kickea.. pensé que era algún tipo de problema con algún otro plugin pero sinceramente no estaría encontrando la solución que dicen que puede ser ?
PD:no tengo el sma.
Mensajes: 3,238
Temas: 47
Registro en: Feb 2015
Reputación:
34
11/06/2020, 01:09 PM
(Última modificación: 11/06/2020, 01:10 PM por Skylar. Edited 1 time in total.)
Si no tenes el .sma no podemos hacer nada, saludos
Mensajes: 242
Temas: 106
Registro en: Apr 2020
Reputación:
0
25/06/2020, 05:56 PM
(Última modificación: 25/06/2020, 10:48 PM por totopizza. Edited 1 time in total.
Razón: PHP TAG
)
A mi me pasa exactamente lo mismo, cambia de mapa y los que se conecta los mata y los manda como espectador.
aca esta el sma que vino con el plugin
Código PHP: /* AMX MOD X Plugin
This file is provided as is (no warranties) */
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta>
#define PLUGIN "AFK Manager" #define VERSION "1.2" #define AUTHOR "Alka"
#define CHECK_ACTIV_FREQUENCY 1 //DON'T CHANGE #define MIN_CHECK_TIME 10 //Just for safe #define MAX_AFK_SPECTATORS 3
#define PLUGIN_TAG "AFK" #define ADMIN_ACCES_FLAG ADMIN_MENU #define ADMIN_IMMUNITY_FLAG ADMIN_KICK
enum Cvars {
CVAR_AUTOCHECK = 0, CVAR_FASTMACHINE, CVAR_AC_TIME, CVAR_AC_IMMUNITY, CVAR_AC_MAXAFKTIME, CVAR_AC_BOMBTIME, CVAR_AC_PUNISH, CVAR_AFK_MENU, CVAR_UNASSIGNED_CHECK, CVAR_UNASSIGNED_TIME, CVAR_FS_KICK_SPEC }
new lastactive[33], nextcheck[33]; new player_id[33], player_name[32][33]; new bomb_carrier; new pcvar[Cvars]; new bool:user_recording_demo[33];
new const afk_kick_reason[] = "Fuiste expulsado por estar Afk por un largo tiempo!";
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("afk_manager.txt");
register_forward(FM_CmdStart, "Fwd_CmdStart"); register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb");
register_clcmd("say /afk", "AfkMenu"); register_clcmd("say_team /afk", "AfkMenu");
pcvar[CVAR_AUTOCHECK] = register_cvar("afk_autocheck", "1"); // (Predeterminado: 1) - Autocheck para jugadores afk pcvar[CVAR_FASTMACHINE] = register_cvar("afk_ac_fastmachine", "0"); // (Predeterminado: 0) - Si este cvar está configurado en 1, los jugadores serán verificados cada segundo ( 1.0 ) pcvar[CVAR_AC_TIME] = register_cvar("afk_ac_time", "20"); // (Predeterminado: 20) - El intervalo de tiempo, para verificar afk players pcvar[CVAR_AC_IMMUNITY] = register_cvar("afk_ac_immunity", "1"); // si este cvar se establece en 1, los administradores no se verifican pcvar[CVAR_AC_MAXAFKTIME] = register_cvar("afk_ac_maxafktime", "80"); // - Tiempo en segundos, cuánto puede estar afk un jugador pcvar[CVAR_AC_BOMBTIME] = register_cvar("afk_ac_bombtime", "20");// Tiempo después de que el jugador afk arroje la bomba. pcvar[CVAR_AC_PUNISH] = register_cvar("afk_ac_punish_type", "1"); // 1 = Mover a la especificación. / 2 = Kick pcvar[CVAR_AFK_MENU] = register_cvar("afk_menu", "2"); //activar / desactivar el menú Afk. ( 0 Desactivado) ( 1 Todos los jugadores) ( Solo 2 administradores) pcvar[CVAR_UNASSIGNED_CHECK] = register_cvar("afk_unassigned_check", "1"); // Si un jugador permanece más de "x" segundos en el equipo no asignado, será expulsado pcvar[CVAR_UNASSIGNED_TIME] = register_cvar("afk_unassigned_time", "20"); pcvar[CVAR_FS_KICK_SPEC] = register_cvar("afk_fs_kick_spec", "1"); // ( Valor predeterminado: 1): si el servidor está lleno y un jugador se está conectando, un jugador de especificaciones será expulsado.
if(get_pcvar_num(pcvar[CVAR_AUTOCHECK]) && get_pcvar_num(pcvar[CVAR_FASTMACHINE]) && !get_pcvar_num(pcvar[CVAR_AC_TIME])) { set_task(1.0, "AutoCheck_Afk"); } if(get_pcvar_num(pcvar[CVAR_AUTOCHECK]) && !get_pcvar_num(pcvar[CVAR_FASTMACHINE]) && get_pcvar_num(pcvar[CVAR_AC_TIME]) > MIN_CHECK_TIME) { set_task(get_pcvar_float(pcvar[CVAR_AC_TIME]), "AutoCheck_Afk"); } AutoCheck_Afk_Bomb(); }
public Fwd_CmdStart(id, uc_handle, seed) { new systime = get_systime();
if(nextcheck[id] < systime) { new button = get_uc(uc_handle, UC_Buttons); if(button != 0) { lastactive[id] = systime; nextcheck[id] = systime + CHECK_ACTIV_FREQUENCY; } } return FMRES_HANDLED; }
public AfkMenu(id) { if(!get_pcvar_num(pcvar[CVAR_AFK_MENU])) { client_print(id, print_chat, "%L", LANG_PLAYER, "AFK_MENU_DISABLED", PLUGIN_TAG); return 1; } if(get_pcvar_num(pcvar[CVAR_AFK_MENU]) == 2 && !is_user_admin(id)) { client_print(id, print_chat, "%L", LANG_PLAYER, "AFK_MENU_DISABLED", PLUGIN_TAG); return 1; }
new menu = menu_create("\yAfk Players Check:", "AfkMenu_Handler");
new players[32], num, x, pos_id[4]; get_players(players, num);
new name[32]; new actualtime, playertime, mins, secs; new Buffer[64];
actualtime = get_systime();
for(new i = 0 ; i < num ; i++) { x = players[i];
formatex(pos_id, sizeof pos_id - 1, "%d", x); get_user_name(x, name, sizeof name - 1);
playertime = actualtime - lastactive[x];
if((playertime / 60) >= 1) { mins = playertime / 60; secs = playertime % 60; } else { mins = 0; secs = playertime; } if(is_user_admin(x)) { formatex(Buffer, sizeof Buffer - 1, "\r* \w%s ^t^t \y(%s%d:%s%d)^t%s", name, mins < 10 ? "0" : "", mins, secs < 10 ? "0" : "", secs, is_user_alive(x) ? "" : "(Dead)"); } else { formatex(Buffer, sizeof Buffer - 1, "\w%s ^t^t \y(%s%d:%s%d)^t%s", name, mins < 10 ? "0" : "", mins, secs < 10 ? "0" : "", secs, is_user_alive(x) ? "" : "(Dead)"); } menu_additem(menu, Buffer, pos_id, 0); } menu_addblank(menu, 0); menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0);
return 0; }
public AfkMenu_Handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; } new data[6]; new access, callback; menu_item_getinfo(menu, item, access, data, sizeof data - 1,_,_, callback);
player_id[id] = str_to_num(data); get_user_name(player_id[id], player_name[id], sizeof player_name - 1);
if((get_user_flags(id) & ADMIN_ACCES_FLAG)) { ShowAfkSubMenu(id); } else { menu_display(id, menu, 0); return; } }
public ShowAfkSubMenu(id) { new Buffer[128]; formatex(Buffer, sizeof Buffer - 1, "\wManage Afk player, \y%s:", player_name[id]);
new menu = menu_create(Buffer, "AfkSubMenu_Handler");
menu_additem(menu, "\wMove to Spectators", "1", 0); menu_additem(menu, "\wKick", "2", 0);
menu_addblank(menu, 0); menu_setprop(menu, MPROP_EXIT, MEXIT_NORMAL); menu_display(id, menu, 0); }
public AfkSubMenu_Handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; } new data[6]; new access, callback; menu_item_getinfo(menu, item, access, data, 2,_,_, callback);
new key = str_to_num(data);
switch(key) { case 1: { if(is_user_connected(player_id[id]) && cs_get_user_team(player_id[id]) != CS_TEAM_SPECTATOR) { user_silentkill(player_id[id]); cs_set_user_team(player_id[id], CS_TEAM_SPECTATOR);
Check_Spec_Slots(); } } case 2: { server_cmd("kick #%i ^"%s^"", get_user_userid(player_id[id]), afk_kick_reason); } } }
public AutoCheck_Afk() { if(!get_pcvar_num(pcvar[CVAR_AUTOCHECK])) return;
new players[32], num, x; get_players(players, num);
new actualtime = get_systime(); new playertime;
for(new i = 0 ; i < num ; i++) { x = players[i];
if(!is_user_connected(x)) return;
if(get_pcvar_num(pcvar[CVAR_AC_IMMUNITY])) { if((get_user_flags(x) & ADMIN_IMMUNITY_FLAG)) continue; }
playertime = actualtime - lastactive[x];
new name[32]; get_user_name(x, name, sizeof name - 1);
if(playertime >= get_pcvar_num(pcvar[CVAR_AC_MAXAFKTIME]) && cs_get_user_team(x) == CS_TEAM_CT || cs_get_user_team(x) == CS_TEAM_T) { switch(get_pcvar_num(pcvar[CVAR_AC_PUNISH])) { case 1: { user_silentkill(x); cs_set_user_team(x, CS_TEAM_SPECTATOR);
client_print(0, print_chat, "%L", LANG_PLAYER, "AFK_SPEC", PLUGIN_TAG, name, get_pcvar_num(pcvar[CVAR_AC_MAXAFKTIME]));
Check_Spec_Slots(); } case 2: { server_cmd("kick #%i ^"%s^"", get_user_userid(x), afk_kick_reason);
client_print(0, print_chat, "%L", LANG_PLAYER, "AFK_KICK", PLUGIN_TAG, name, get_pcvar_num(pcvar[CVAR_AC_MAXAFKTIME])); } } } } }
public AutoCheck_Afk_Bomb() { new players[32], num, x; get_players(players, num, "a");
new actualtime = get_systime(); new playertime;
for(new i = 0 ; i < num ; i++) { x = players[i];
if(!is_user_connected(x)) return;
playertime = actualtime - lastactive[x];
new name[32]; get_user_name(x, name, sizeof name - 1);
if(playertime >= get_pcvar_num(pcvar[CVAR_AC_BOMBTIME]) && x == bomb_carrier) { engclient_cmd(x, "drop", "weapon_c4");
if(num < 2) return;
new c4 = engfunc(EngFunc_FindEntityByString, -1, "classname", "weapon_c4"); if(!c4) return;
new c4_backpack = pev(c4, pev_owner); if(!c4_backpack) return;
new target = random_t_player();
set_pev(c4_backpack, pev_flags, pev(c4_backpack, pev_flags) | FL_ONGROUND); dllfunc(DLLFunc_Touch, c4_backpack, target);
client_print(0, print_chat, "%L", LANG_PLAYER, "AFK_BOMB_TRANSFER", PLUGIN_TAG, name); }
} set_task(1.0, "AutoCheck_Afk_Bomb"); }
public Check_Spec_Slots() { new players[32], num, x; get_players(players, num);
new SpecNum;
new actualtime = get_systime(); new playertime;
for(new i = 0 ; i < num ; i++) { x = players[i];
if(!is_user_connected(x)) continue;
if(get_pcvar_num(pcvar[CVAR_AC_IMMUNITY])) { if((get_user_flags(x) & ADMIN_IMMUNITY_FLAG)) continue; }
if(user_recording_demo[x]) continue;
playertime = actualtime - lastactive[x];
if(cs_get_user_team(x) == CS_TEAM_SPECTATOR && playertime >= get_pcvar_num(pcvar[CVAR_AC_MAXAFKTIME])) ++SpecNum; } if(SpecNum > MAX_AFK_SPECTATORS) { new rnd_player = random_afk_spec_player();
server_cmd("kick #%i ^"%s^"", get_user_userid(rnd_player), afk_kick_reason);
client_print(0, print_chat, "%L", LANG_PLAYER, "AFK_KICK_RND", PLUGIN_TAG); } }
public bomb_events() { new arg[64], message[64], name[32], userid, id; read_logargv(0, arg, sizeof arg - 1) ; read_logargv(2, message, sizeof message - 1) ; parse_loguser(arg, name, sizeof name - 1, userid); id = find_player("k", userid); if(equali(message,"Spawned_With_The_Bomb") || equali(message,"Got_The_Bomb")) { bomb_carrier = id; } else if(equali(message, "Planted_The_Bomb") || equali(message,"Dropped_The_Bomb")) { bomb_carrier = 0; } return 1; }
public random_t_player() { new players[32], num; get_players(players, num, "ae", "TERRORIST");
return players[random_num(0, num)]; }
public random_afk_spec_player() { new players[32], num, player, who, shortest = 999999; get_players(players, num, "e", "SPECTATORS");
new actualtime = get_systime(); new playertime;
for(new i = 0 ; i < num ; i++) { player = players[i];
if(!is_user_connected(player)) continue;
if(user_recording_demo[player]) continue;
playertime = actualtime - lastactive[player];
if(shortest > playertime) { shortest = playertime; who = player; } } return who; }
public client_command(id) { new arg[13]; read_argv(0, arg , sizeof arg - 1);
if(equali(arg, "record")) user_recording_demo[id] = true;
else if(equali(arg, "stopdemo")) user_recording_demo[id] = false; }
public client_disconnect(id) user_recording_demo[id] = false;
public client_connect(id) { if(!get_pcvar_num(pcvar[CVAR_FS_KICK_SPEC])) return;
if(get_maxplayers() == get_playersnum(0)) { new players[32], num get_players(players, num, "e", "SPECTATORS");
if(num > 1) { new rnd_player = random_afk_spec_player();
server_cmd("kick #%i ^"%s^"", get_user_userid(rnd_player), afk_kick_reason); } } player_id[id] = 0; } public client_putinserver(id) { if(!get_pcvar_num(pcvar[CVAR_UNASSIGNED_CHECK])) return;
set_task(get_pcvar_float(pcvar[CVAR_UNASSIGNED_TIME]), "UnassignedPlayer_Check", id); }
public UnassignedPlayer_Check(id) { if(!is_user_connected(id)) return;
if(cs_get_user_team(id) == CS_TEAM_UNASSIGNED) { server_cmd("kick #%i ^"%s^"", get_user_userid(id), afk_kick_reason); } }
Mensajes: 385
Temas: 144
Registro en: Mar 2020
Reputación:
0
25/06/2020, 06:21 PM
(Última modificación: 25/06/2020, 10:49 PM por totopizza. Edited 1 time in total.
Razón: PHP TAG
)
(25/06/2020, 05:56 PM)cahervar escribió: A mi me pasa exactamente lo mismo, cambia de mapa y los que se conecta los mata y los manda como espectador.
aca esta el sma que vino con el plugin
Código PHP: /* AMX MOD X Plugin
This file is provided as is (no warranties) */
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta>
#define PLUGIN "AFK Manager" #define VERSION "1.2" #define AUTHOR "Alka"
#define CHECK_ACTIV_FREQUENCY 1 //DON'T CHANGE #define MIN_CHECK_TIME 10 //Just for safe #define MAX_AFK_SPECTATORS 3
#define PLUGIN_TAG "AFK" #define ADMIN_ACCES_FLAG ADMIN_MENU #define ADMIN_IMMUNITY_FLAG ADMIN_KICK
enum Cvars { CVAR_AUTOCHECK = 0, CVAR_FASTMACHINE, CVAR_AC_TIME, CVAR_AC_IMMUNITY, CVAR_AC_MAXAFKTIME, CVAR_AC_BOMBTIME, CVAR_AC_PUNISH, CVAR_AFK_MENU, CVAR_UNASSIGNED_CHECK, CVAR_UNASSIGNED_TIME, CVAR_FS_KICK_SPEC }
new lastactive[33], nextcheck[33]; new player_id[33], player_name[32][33]; new bomb_carrier; new pcvar[Cvars]; new bool:user_recording_demo[33];
new const afk_kick_reason[] = "Fuiste expulsado por estar Afk por un largo tiempo!";
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_dictionary("afk_manager.txt"); register_forward(FM_CmdStart, "Fwd_CmdStart"); register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb"); register_clcmd("say /afk", "AfkMenu"); register_clcmd("say_team /afk", "AfkMenu"); pcvar[CVAR_AUTOCHECK] = register_cvar("afk_autocheck", "1"); // (Predeterminado: 1) - Autocheck para jugadores afk pcvar[CVAR_FASTMACHINE] = register_cvar("afk_ac_fastmachine", "0"); // (Predeterminado: 0) - Si este cvar está configurado en 1, los jugadores serán verificados cada segundo ( 1.0 ) pcvar[CVAR_AC_TIME] = register_cvar("afk_ac_time", "20"); // (Predeterminado: 20) - El intervalo de tiempo, para verificar afk players pcvar[CVAR_AC_IMMUNITY] = register_cvar("afk_ac_immunity", "1"); // si este cvar se establece en 1, los administradores no se verifican pcvar[CVAR_AC_MAXAFKTIME] = register_cvar("afk_ac_maxafktime", "80"); // - Tiempo en segundos, cuánto puede estar afk un jugador pcvar[CVAR_AC_BOMBTIME] = register_cvar("afk_ac_bombtime", "20");// Tiempo después de que el jugador afk arroje la bomba. pcvar[CVAR_AC_PUNISH] = register_cvar("afk_ac_punish_type", "1"); // 1 = Mover a la especificación. / 2 = Kick pcvar[CVAR_AFK_MENU] = register_cvar("afk_menu", "2"); //activar / desactivar el menú Afk. ( 0 Desactivado) ( 1 Todos los jugadores) ( Solo 2 administradores) pcvar[CVAR_UNASSIGNED_CHECK] = register_cvar("afk_unassigned_check", "1"); // Si un jugador permanece más de "x" segundos en el equipo no asignado, será expulsado pcvar[CVAR_UNASSIGNED_TIME] = register_cvar("afk_unassigned_time", "20"); pcvar[CVAR_FS_KICK_SPEC] = register_cvar("afk_fs_kick_spec", "1"); // ( Valor predeterminado: 1): si el servidor está lleno y un jugador se está conectando, un jugador de especificaciones será expulsado. if(get_pcvar_num(pcvar[CVAR_AUTOCHECK]) && get_pcvar_num(pcvar[CVAR_FASTMACHINE]) && !get_pcvar_num(pcvar[CVAR_AC_TIME])) { set_task(1.0, "AutoCheck_Afk"); } if(get_pcvar_num(pcvar[CVAR_AUTOCHECK]) && !get_pcvar_num(pcvar[CVAR_FASTMACHINE]) && get_pcvar_num(pcvar[CVAR_AC_TIME]) > MIN_CHECK_TIME) { set_task(get_pcvar_float(pcvar[CVAR_AC_TIME]), "AutoCheck_Afk"); } AutoCheck_Afk_Bomb(); }
public Fwd_CmdStart(id, uc_handle, seed) { new systime = get_systime(); if(nextcheck[id] < systime) { new button = get_uc(uc_handle, UC_Buttons); if(button != 0) { lastactive[id] = systime; nextcheck[id] = systime + CHECK_ACTIV_FREQUENCY; } } return FMRES_HANDLED; }
public AfkMenu(id) { if(!get_pcvar_num(pcvar[CVAR_AFK_MENU])) { client_print(id, print_chat, "%L", LANG_PLAYER, "AFK_MENU_DISABLED", PLUGIN_TAG); return 1; } if(get_pcvar_num(pcvar[CVAR_AFK_MENU]) == 2 && !is_user_admin(id)) { client_print(id, print_chat, "%L", LANG_PLAYER, "AFK_MENU_DISABLED", PLUGIN_TAG); return 1; } new menu = menu_create("\yAfk Players Check:", "AfkMenu_Handler"); new players[32], num, x, pos_id[4]; get_players(players, num); new name[32]; new actualtime, playertime, mins, secs; new Buffer[64]; actualtime = get_systime(); for(new i = 0 ; i < num ; i++) { x = players[i]; formatex(pos_id, sizeof pos_id - 1, "%d", x); get_user_name(x, name, sizeof name - 1); playertime = actualtime - lastactive[x]; if((playertime / 60) >= 1) { mins = playertime / 60; secs = playertime % 60; } else { mins = 0; secs = playertime; } if(is_user_admin(x)) { formatex(Buffer, sizeof Buffer - 1, "\r* \w%s ^t^t \y(%s%d:%s%d)^t%s", name, mins < 10 ? "0" : "", mins, secs < 10 ? "0" : "", secs, is_user_alive(x) ? "" : "(Dead)"); } else { formatex(Buffer, sizeof Buffer - 1, "\w%s ^t^t \y(%s%d:%s%d)^t%s", name, mins < 10 ? "0" : "", mins, secs < 10 ? "0" : "", secs, is_user_alive(x) ? "" : "(Dead)"); } menu_additem(menu, Buffer, pos_id, 0); } menu_addblank(menu, 0); menu_setprop(menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, menu, 0); return 0; }
public AfkMenu_Handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; } new data[6]; new access, callback; menu_item_getinfo(menu, item, access, data, sizeof data - 1,_,_, callback); player_id[id] = str_to_num(data); get_user_name(player_id[id], player_name[id], sizeof player_name - 1); if((get_user_flags(id) & ADMIN_ACCES_FLAG)) { ShowAfkSubMenu(id); } else { menu_display(id, menu, 0); return; } }
public ShowAfkSubMenu(id) { new Buffer[128]; formatex(Buffer, sizeof Buffer - 1, "\wManage Afk player, \y%s:", player_name[id]); new menu = menu_create(Buffer, "AfkSubMenu_Handler"); menu_additem(menu, "\wMove to Spectators", "1", 0); menu_additem(menu, "\wKick", "2", 0); menu_addblank(menu, 0); menu_setprop(menu, MPROP_EXIT, MEXIT_NORMAL); menu_display(id, menu, 0); }
public AfkSubMenu_Handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; } new data[6]; new access, callback; menu_item_getinfo(menu, item, access, data, 2,_,_, callback); new key = str_to_num(data); switch(key) { case 1: { if(is_user_connected(player_id[id]) && cs_get_user_team(player_id[id]) != CS_TEAM_SPECTATOR) { user_silentkill(player_id[id]); cs_set_user_team(player_id[id], CS_TEAM_SPECTATOR); Check_Spec_Slots(); } } case 2: { server_cmd("kick #%i ^"%s^"", get_user_userid(player_id[id]), afk_kick_reason); } } }
public AutoCheck_Afk() { if(!get_pcvar_num(pcvar[CVAR_AUTOCHECK])) return; new players[32], num, x; get_players(players, num); new actualtime = get_systime(); new playertime; for(new i = 0 ; i < num ; i++) { x = players[i]; if(!is_user_connected(x)) return; if(get_pcvar_num(pcvar[CVAR_AC_IMMUNITY])) { if((get_user_flags(x) & ADMIN_IMMUNITY_FLAG)) continue; } playertime = actualtime - lastactive[x]; new name[32]; get_user_name(x, name, sizeof name - 1); if(playertime >= get_pcvar_num(pcvar[CVAR_AC_MAXAFKTIME]) && cs_get_user_team(x) == CS_TEAM_CT || cs_get_user_team(x) == CS_TEAM_T) { switch(get_pcvar_num(pcvar[CVAR_AC_PUNISH])) { case 1: { user_silentkill(x); cs_set_user_team(x, CS_TEAM_SPECTATOR); client_print(0, print_chat, "%L", LANG_PLAYER, "AFK_SPEC", PLUGIN_TAG, name, get_pcvar_num(pcvar[CVAR_AC_MAXAFKTIME])); Check_Spec_Slots(); } case 2: { server_cmd("kick #%i ^"%s^"", get_user_userid(x), afk_kick_reason); client_print(0, print_chat, "%L", LANG_PLAYER, "AFK_KICK", PLUGIN_TAG, name, get_pcvar_num(pcvar[CVAR_AC_MAXAFKTIME])); } } } } }
public AutoCheck_Afk_Bomb() { new players[32], num, x; get_players(players, num, "a"); new actualtime = get_systime(); new playertime; for(new i = 0 ; i < num ; i++) { x = players[i]; if(!is_user_connected(x)) return; playertime = actualtime - lastactive[x]; new name[32]; get_user_name(x, name, sizeof name - 1); if(playertime >= get_pcvar_num(pcvar[CVAR_AC_BOMBTIME]) && x == bomb_carrier) { engclient_cmd(x, "drop", "weapon_c4"); if(num < 2) return; new c4 = engfunc(EngFunc_FindEntityByString, -1, "classname", "weapon_c4"); if(!c4) return; new c4_backpack = pev(c4, pev_owner); if(!c4_backpack) return; new target = random_t_player(); set_pev(c4_backpack, pev_flags, pev(c4_backpack, pev_flags) | FL_ONGROUND); dllfunc(DLLFunc_Touch, c4_backpack, target); client_print(0, print_chat, "%L", LANG_PLAYER, "AFK_BOMB_TRANSFER", PLUGIN_TAG, name); } } set_task(1.0, "AutoCheck_Afk_Bomb"); }
public Check_Spec_Slots() { new players[32], num, x; get_players(players, num); new SpecNum; new actualtime = get_systime(); new playertime; for(new i = 0 ; i < num ; i++) { x = players[i]; if(!is_user_connected(x)) continue; if(get_pcvar_num(pcvar[CVAR_AC_IMMUNITY])) { if((get_user_flags(x) & ADMIN_IMMUNITY_FLAG)) continue; } if(user_recording_demo[x]) continue; playertime = actualtime - lastactive[x]; if(cs_get_user_team(x) == CS_TEAM_SPECTATOR && playertime >= get_pcvar_num(pcvar[CVAR_AC_MAXAFKTIME])) ++SpecNum; } if(SpecNum > MAX_AFK_SPECTATORS) { new rnd_player = random_afk_spec_player(); server_cmd("kick #%i ^"%s^"", get_user_userid(rnd_player), afk_kick_reason); client_print(0, print_chat, "%L", LANG_PLAYER, "AFK_KICK_RND", PLUGIN_TAG); } }
public bomb_events() { new arg[64], message[64], name[32], userid, id; read_logargv(0, arg, sizeof arg - 1) ; read_logargv(2, message, sizeof message - 1) ; parse_loguser(arg, name, sizeof name - 1, userid); id = find_player("k", userid); if(equali(message,"Spawned_With_The_Bomb") || equali(message,"Got_The_Bomb")) { bomb_carrier = id; } else if(equali(message, "Planted_The_Bomb") || equali(message,"Dropped_The_Bomb")) { bomb_carrier = 0; } return 1; }
public random_t_player() { new players[32], num; get_players(players, num, "ae", "TERRORIST"); return players[random_num(0, num)]; }
public random_afk_spec_player() { new players[32], num, player, who, shortest = 999999; get_players(players, num, "e", "SPECTATORS"); new actualtime = get_systime(); new playertime; for(new i = 0 ; i < num ; i++) { player = players[i]; if(!is_user_connected(player)) continue; if(user_recording_demo[player]) continue; playertime = actualtime - lastactive[player]; if(shortest > playertime) { shortest = playertime; who = player; } } return who; }
public client_command(id) { new arg[13]; read_argv(0, arg , sizeof arg - 1); if(equali(arg, "record")) user_recording_demo[id] = true; else if(equali(arg, "stopdemo")) user_recording_demo[id] = false; }
public client_disconnect(id) user_recording_demo[id] = false;
public client_connect(id) { if(!get_pcvar_num(pcvar[CVAR_FS_KICK_SPEC])) return; if(get_maxplayers() == get_playersnum(0)) { new players[32], num get_players(players, num, "e", "SPECTATORS"); if(num > 1) { new rnd_player = random_afk_spec_player(); server_cmd("kick #%i ^"%s^"", get_user_userid(rnd_player), afk_kick_reason); } } player_id[id] = 0; } public client_putinserver(id) { if(!get_pcvar_num(pcvar[CVAR_UNASSIGNED_CHECK])) return; set_task(get_pcvar_float(pcvar[CVAR_UNASSIGNED_TIME]), "UnassignedPlayer_Check", id); }
public UnassignedPlayer_Check(id) { if(!is_user_connected(id)) return; if(cs_get_user_team(id) == CS_TEAM_UNASSIGNED) { server_cmd("kick #%i ^"%s^"", get_user_userid(id), afk_kick_reason); } }
Si, por lo visto nadie sabe como solucionarlo
Mensajes: 168
Temas: 53
Registro en: Jun 2020
(25/06/2020, 06:21 PM)Gstrigl escribió: Si, por lo visto nadie sabe como solucionarlo
Usa el [/php]
Mensajes: 385
Temas: 144
Registro en: Mar 2020
Reputación:
0
(25/06/2020, 06:31 PM)Ricardo01 escribió: Usa el [/php] ??
Mensajes: 19
Temas: 0
Registro en: Aug 2019
Reputación:
0
No te ahogues en un vaso de agua con algo que no te anda, edita este a tu gusto que lo encontre en internet y anda perfecto
Código PHP: #include <amxmodx> #include <hamsandwich>
new const g_szPluginName[] = "AFK Kicker"; new const g_szPluginVers[] = "v1.0"; new const g_szPluginAuth[] = "Cheesy Peteza (EDIT: CSAxel)";
#pragma semicolon 1
#define MIN_AFK_TIME 30 #define WARNING_TIME 20 #define CHECK_FREQ 5
new g_oldangles[33][3]; new g_afktime[33]; new bool:g_spawned[33] = { true, ... };
new g_iMaxPlayers;
const TASK_CHECK = 21050;
public plugin_init() { register_plugin(g_szPluginName, g_szPluginVers, g_szPluginAuth); register_cvar(g_szPluginName, g_szPluginVers, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY); RegisterHam(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", true); register_cvar("mp_afktime", "90"); register_cvar("mp_afkminplayers", "10"); g_iMaxPlayers = get_maxplayers(); set_task(float(CHECK_FREQ), "CheckPlayers", TASK_CHECK, _, _, "b"); }
public CheckPlayers() { static id; for (id = 1; id <= g_iMaxPlayers; id++) { if (!is_user_alive(id)) continue; if (get_user_flags(id) & ADMIN_IMMUNITY) continue; if (g_spawned[id]) { static szAngles[3]; get_user_origin(id, szAngles);
if (szAngles[0] == g_oldangles[id][0] && szAngles[1] == g_oldangles[id][1] && szAngles[2] == g_oldangles[id][2]) { g_afktime[id] += CHECK_FREQ; CheckTime(id); } else { g_oldangles[id][0] = szAngles[0]; g_oldangles[id][1] = szAngles[1]; g_oldangles[id][2] = szAngles[2]; g_afktime[id] = 0; } } } return PLUGIN_HANDLED; }
CheckTime(id) { static iPlayersNum, iPlayersMin; iPlayersNum = get_playersnum(); iPlayersMin = get_cvar_num("mp_afkminplayers"); if (iPlayersNum >= iPlayersMin) { static iTimeMax, iTimeLeft; iTimeMax = get_cvar_num("mp_afktime"); if (iTimeMax < MIN_AFK_TIME) { iTimeMax = MIN_AFK_TIME; set_cvar_num("mp_afktime", MIN_AFK_TIME); }
if ((iTimeMax - WARNING_TIME) <= g_afktime[id] < iTimeMax) { iTimeLeft = (iTimeMax - g_afktime[id]); ChatColor(id, "^x04[^x01TuVieja^x04]^x01 Tienes ^x03%i ^x01segundos para moverte sino serás expulsado.", iTimeLeft); } else if (g_afktime[id] > iTimeMax) { static szName[32]; get_user_name(id, szName, charsmax(szName)); ChatColor(0, "^x04[^x01TuVieja^x04]^x01 El jugador ^x03%s ^x01fue expulsado por estar ^x04%i ^x01segundos inactivo.", szName, iTimeMax); server_cmd("kick #%d ^"Fuiste expulsado por estar más de %i segundos inactivo^"", get_user_userid(id), iTimeMax); } } }
public client_connect(id) { g_afktime[id] = 0; return PLUGIN_HANDLED; }
public client_putinserver(id) { g_afktime[id] = 0; return PLUGIN_HANDLED; }
public Ham_PlayerSpawn_Post(id) { if (!is_user_alive(id)) return; g_spawned[id] = false; static szID[1]; szID[0] = id; set_task(0.75, "delayedSpawn",_, szID, sizeof(szID)); }
public delayedSpawn(szID[]) { get_user_origin(szID[0], g_oldangles[szID[0]]); g_spawned[szID[0]] = true; return PLUGIN_HANDLED; }
stock ChatColor(id, const input[], any:...) { static szMsg[191]; vformat(szMsg, 190, input, 3); message_begin(id ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, get_user_msgid("SayText"), .player = id); write_byte(id ? id : 33); write_string(szMsg); message_end(); }
|