AlliedModders Donor
Join Date: Mar 2009
Location: panama
|
07-13-2013
, 10:33
Re: Pug MOD XT (Rewritten)
|
#86
|
hltv_record demos/test
hltv_stop
amx_map or map "de_dust2"
hltv_record demos/test
SERVER Crash amxmodx 1.8.2
AFK KICK
original
http://forums.alliedmods.net/showthread.php?t=23332
modification
PHP Code:
/* * * Author: Cheesy Peteza, remaked to meckelburg_final by greve * Date: 18-Mar-2004 * * * Description: A generic AFK Kicker that should work with nearly all Half-Life mods. * Tested with Natural-Selection v3.0 beta 3, Counter-Strike 1.6 and Day of Defeat. * * Cvars: * mp_afktime 300 Time a player is allowed to be AFK in seconds before they are kicked. (minimum 30 sec) * They time is only accumulated while they are alive. * mp_afkminplayers 0 Minimum number of players required to be on the server before the plugin starts kicking. * * * Requirements: AMXModX * * */
#include <amxmodx> #include <cstrike> #include <fun>
#define MIN_AFK_TIME 30 // I use this incase stupid admins accidentally set mp_afktime to something silly. #define WARNING_TIME 15 // Start warning the user this many seconds before they are about to be kicked. #define CHECK_FREQ 5 // This is also the warning message frequency.
#define PLUGIN "AFK kick" #define VERSION "1.3" #define AUTHOR "Twilight Suzuka"
#define TASK_TIMESPECT 60.0 #define SPECT_TASK 1126
new g_oldangles[33][3] new g_afktime[33] new bool:g_spawned[33] = {true, ...}
new gJailOne[3] = {-2710,2214,-314} new gJailTwo[3] = {-2710,2082,-314} new gJailThree[3] = {-2710,1949,-314}
new cvr_afktime_enabled
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_plugin("AFK Kicker","1.0b","Cheesy Peteza") register_cvar("afk_version", "1.0b", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY) register_cvar("mp_afktime", "90") // Kick people AFK longer than this time register_cvar("mp_afkminplayers", "0") // Only kick AFKs when there is atleast this many players on the server cvr_afktime_enabled = register_cvar("amx_afktime_enabled", "1") set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b") register_event( "TeamInfo", "join_team", "a") register_event("ResetHUD", "playerSpawned", "be") }
public client_connect(id) { g_afktime[id] = 0 return PLUGIN_HANDLED }
public client_putinserver(id) { if(!is_user_hltv(id)) { set_task(TASK_TIMESPECT, "task_kickplayer", id + SPECT_TASK) g_afktime[id] = 0 } return PLUGIN_HANDLED }
public client_disconnect(id) { if( task_exists( id + SPECT_TASK )) { remove_task( id + SPECT_TASK ) } }
public task_kickplayer(id) { id -= SPECT_TASK server_cmd("kick #%d ^"Stay in spectator mode is not tolerated. 1 minute.^"", get_user_userid(id)) }
public join_team() { new id = read_data(1) static user_team[32] read_data(2, user_team, 31) if(!is_user_connected(id)) return PLUGIN_CONTINUE switch(user_team[0]) { case 'C': { remove_task( id + SPECT_TASK ) } case 'T': { remove_task( id + SPECT_TASK ) } } return PLUGIN_CONTINUE }
public checkPlayers() { if(get_pcvar_num(cvr_afktime_enabled)) { for (new i = 1; i <= get_maxplayers(); i++) { if (is_user_alive(i) && is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i]) { new newangle[3] get_user_origin(i, newangle) if ( newangle[0] == g_oldangles[i][0] && newangle[1] == g_oldangles[i][1] && newangle[2] == g_oldangles[i][2] ) { g_afktime[i] += CHECK_FREQ check_afktime(i) } else { g_oldangles[i][0] = newangle[0] g_oldangles[i][1] = newangle[1] g_oldangles[i][2] = newangle[2] g_afktime[i] = 0 } } } } return PLUGIN_HANDLED }
public check_afktime(id) { if(get_pcvar_num(cvr_afktime_enabled)) { new numplayers = get_playersnum() new minplayers = get_cvar_num("mp_afkminplayers") new origin[3] get_user_origin(id,origin,0) if ((numplayers >= minplayers)) { new maxafktime = get_cvar_num("mp_afktime") if (maxafktime < MIN_AFK_TIME) { log_amx("cvar mp_afktime %i is too low. Minimum value is %i.", maxafktime, MIN_AFK_TIME) maxafktime = MIN_AFK_TIME set_cvar_num("mp_afktime", MIN_AFK_TIME) } if(get_distance(gJailOne,origin) >= 100 && get_distance(gJailTwo,origin) >= 100 && get_distance(gJailThree,origin) >= 100) { if (g_afktime[id] > maxafktime) { new name[32] get_user_name(id, name, 31) log_amx("%s was kicked for being AFK longer than %i seconds", name, maxafktime) server_cmd("kick #%d ^"You were kicked for being AFK longer than %i seconds^"", get_user_userid(id), maxafktime) } } else g_afktime[id] = 0 } } }
public playerSpawned(id) { g_spawned[id] = false new sid[1] sid[0] = id set_task(0.75, "delayedSpawn",_, sid, 1) // Give the player time to drop to the floor when spawning return PLUGIN_HANDLED }
public delayedSpawn(sid[]) { get_user_origin(sid[0], g_oldangles[sid[0]]) g_spawned[sid[0]] = true return PLUGIN_HANDLED }
"^SmileY" AFK KICK
original
http://forums.alliedmods.net/showthread.php?t=15106
Your modification looks pretty good .. as you integrate PUG.sma
separately or will have?
PHP Code:
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <fakemeta>
#include <AFK_TIME>
#pragma semicolon 1
#define IMMUNITY ADMIN_IMMUNITY
#define CHECK_FREQ 5
#define EVENT_JOIN 1 #define EVENT_SPEC 2 #define EVENT_AFK 4
#define MAX_PLAYER_CNT 33 #define MAX_COORD_CNT 3
new g_playerJoined[MAX_PLAYER_CNT],g_playerSpawned[MAX_PLAYER_CNT]; new g_timeJoin[MAX_PLAYER_CNT],g_timeSpec[MAX_PLAYER_CNT], g_timeAFK[MAX_PLAYER_CNT]; new g_prevCoords[MAX_PLAYER_CNT][MAX_COORD_CNT];
new bool:g_roundInProgress = false;
new JOIN_PLAYERS,SPEC_PLAYERS,AFK_PLAYERS; new JOIN_TIME,SPEC_TIME,AFK_TIME; new AFK_IMMUNITY,AFK_IMMUNITY_WARNING,AFK_WARNING_TIME;
public plugin_init() { register_plugin("Anti AFK (Play or Be Kicked)",AMXX_VERSION_STR,"Brad Jones");
register_dictionary("AFK.txt"); register_dictionary("time.txt");
register_event("ResetHUD","event_resethud","be"); register_forward(FM_PlayerPostThink,"fm_playerPostThink");
register_logevent("event_round_start",2,"0=World triggered","1=Round_Start"); register_logevent("event_round_end",2,"0=World triggered","1=Round_End"); JOIN_PLAYERS = register_cvar("afk_join_min","1"); // Minimo de jogadores SPEC_PLAYERS = register_cvar("afk_spec_min","1"); // Minimo de jogadores AFK_PLAYERS = register_cvar("afk_afk_min","1"); // Minimo de jogadores
JOIN_TIME = register_cvar("afk_join_time","30"); // Tempo para escolher um time SPEC_TIME = register_cvar("afk_spec_time","60"); // Tempo para ficar de espectador AFK_TIME = register_cvar("afk_afk_time","120"); // Tempo para ficar Away
AFK_IMMUNITY = register_cvar("afk_immunity","1"); AFK_IMMUNITY_WARNING = register_cvar("afk_immunity_warning","1"); AFK_WARNING_TIME = register_cvar("afk_warning_time","15");
set_task(float(CHECK_FREQ),"check_players", .flags="b"); }
public fm_playerPostThink(id) { if(!g_playerJoined[id] && is_user_connected(id)) { if(cs_get_user_team(id) != CS_TEAM_UNASSIGNED) g_playerJoined[id] = true; } }
public client_disconnect(id) { g_playerJoined[id] = false; g_playerSpawned[id] = false; g_timeJoin[id] = 0; g_timeSpec[id] = 0; g_timeAFK[id] = 0; }
public event_resethud(id) { if(!g_playerSpawned[id]) g_playerSpawned[id] = true; }
public event_round_end() { g_roundInProgress = false; }
public event_round_start() { new iPlayers[32],iNum,Players; get_players(iPlayers,iNum,"ch"); for(new i;i < iNum;i++) { Players = iPlayers[i];
get_user_origin(Players,g_prevCoords[Players],3); } g_roundInProgress = true; }
public check_players() { new playerCnt = get_playersnum(); new eventType,curCoords[MAX_COORD_CNT];
new bool:checkJoinStatus = (get_pcvar_num(JOIN_TIME) && playerCnt >= get_pcvar_num(JOIN_PLAYERS)); new bool:checkSpecStatus = (get_pcvar_num(SPEC_TIME) && playerCnt >= get_pcvar_num(SPEC_PLAYERS)); new bool:checkAFKStatus = (get_pcvar_num(AFK_TIME) && playerCnt >= get_pcvar_num(AFK_PLAYERS) && g_roundInProgress);
for(new id = 1;id <= get_maxplayers();id++) { if(!is_user_connected(id) || is_user_bot(id) || is_user_hltv(id)) continue;
if(g_playerJoined[id]) { eventType = (cs_get_user_team(id) == CS_TEAM_SPECTATOR) ? EVENT_SPEC : EVENT_AFK;
if(eventType == EVENT_AFK && checkAFKStatus && g_playerSpawned[id] && is_user_alive(id)) { get_user_origin(id, curCoords,3);
if(g_prevCoords[id][0] == curCoords[0] && g_prevCoords[id][1] == curCoords[1] && g_prevCoords[id][2] == curCoords[2]) { g_timeAFK[id] += CHECK_FREQ; } else { g_prevCoords[id] = curCoords; g_timeAFK[id] = 0; } } else if(eventType == EVENT_SPEC && checkSpecStatus) g_timeSpec[id] += CHECK_FREQ;
else continue; } else { eventType = EVENT_JOIN;
if(checkJoinStatus) g_timeJoin[id] += CHECK_FREQ;
else continue; } handle_time_elapsed(id,eventType); } }
public handle_time_elapsed(id,eventType) { new immunityFlag = get_pcvar_num(AFK_IMMUNITY); new warningFlag = get_pcvar_num(AFK_IMMUNITY_WARNING);
new maxSeconds,elapsedSeconds,eventImmunity,showWarning;
if(eventType == EVENT_JOIN) { maxSeconds = get_pcvar_num(JOIN_TIME); elapsedSeconds = g_timeJoin[id]; eventImmunity = immunityFlag & EVENT_JOIN; showWarning = eventImmunity ? warningFlag & EVENT_JOIN : 1; } else if(eventType == EVENT_SPEC) { maxSeconds = get_pcvar_num(SPEC_TIME); elapsedSeconds = g_timeSpec[id]; eventImmunity = immunityFlag & EVENT_SPEC; showWarning = eventImmunity ? warningFlag & EVENT_SPEC : 1; } else if(eventType == EVENT_AFK) { maxSeconds = get_pcvar_num(AFK_TIME); elapsedSeconds = g_timeAFK[id]; eventImmunity = immunityFlag & EVENT_AFK; showWarning = eventImmunity ? warningFlag & EVENT_AFK : 1; } else return; new warningStartSeconds = maxSeconds - get_pcvar_num(AFK_WARNING_TIME); if(elapsedSeconds >= maxSeconds) { if(eventImmunity && get_user_flags(id) & IMMUNITY) return;
new msgReason[32],msgAnnounce[32]; switch(eventType) { case EVENT_JOIN: { copy(msgReason,charsmax(msgReason),"KICK_JOIN_REASON"); copy(msgAnnounce,31,"KICK_JOIN_ANNOUNCE"); } case EVENT_SPEC: { copy(msgReason,charsmax(msgReason),"KICK_SPEC_REASON"); copy(msgAnnounce,31,"KICK_SPEC_ANNOUNCE"); } case EVENT_AFK: { copy(msgReason,charsmax(msgReason),"KICK_AFK_REASON"); copy(msgAnnounce,31,"KICK_AFK_ANNOUNCE"); } } new maxTime[128]; get_time_length(id,maxSeconds,timeunit_seconds,maxTime,charsmax(maxTime));
new szReason[35]; formatex(szReason,charsmax(szReason),"%L",id,msgReason,maxTime); Disconnect(id,szReason); new iPlayers[32],iNum,Players; get_players(iPlayers,iNum,"ch"); new szName[32]; get_user_name(id,szName,charsmax(szName));
for(new i;i < iNum;i++) { Players = iPlayers[i]; get_time_length(Players,maxSeconds,timeunit_seconds,maxTime,charsmax(maxTime)); client_print(Players,print_chat,"[PugSP] %L",Players,msgAnnounce,szName,maxTime); } } else if(warningStartSeconds <= elapsedSeconds && showWarning) { new msgWarning[32]; switch(eventType) { case EVENT_JOIN: copy(msgWarning,charsmax(msgWarning),"KICK_JOIN_WARNING"); case EVENT_SPEC: copy(msgWarning,charsmax(msgWarning),"KICK_SPEC_WARNING"); case EVENT_AFK: copy(msgWarning,charsmax(msgWarning),"KICK_AFK_WARNING"); } new timeLeft[128]; get_time_length(id,maxSeconds - elapsedSeconds,timeunit_seconds,timeLeft,charsmax(timeLeft)); client_print(id, print_chat,"[PugSP] %L",id,msgWarning,timeLeft); } }
stock Disconnect(const id,const szReason[] = "") { message_begin(MSG_ONE,SVC_DISCONNECT,_,id); write_string(szReason); message_end(); }
__________________
Last edited by kwpd; 07-13-2013 at 10:35.
|
|