Raised This Month: $51 Target: $400
 12% 

Solved afk slay plugin


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
mousesports
Senior Member
Join Date: Oct 2010
Old 01-13-2019 , 04:18   afk slay plugin
Reply With Quote #1

Hello,
I have this slay_afk plugin that sometimes fails. He is set to slay after 15 seconds to those who are afk, but sometimes he also kills at least one person who is not afk.
Thank you !

PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#define TIME 20.0
new Float:player_origin[33][3];
public 
plugin_init()
{
     
RegisterHam(Ham_Spawn"player""e_Spawn"1);
}
 
public 
e_Spawn(id)
{
     if(
is_user_alive(id))
     {
           
set_task(0.8"get_spawn"id);
     }
     return 
HAM_IGNORED;
}

public 
get_spawn(id)
{
     
pev(idpev_originplayer_origin[id]);
     
set_task(TIME"check_afk"id);
}
 
public 
check_afk(id)
{
     if(
is_user_alive(id))
     {
          if(
same_origin(id))
          {
               
user_kill(id);
               new 
name[33];
               
get_user_name(idname32);
               
client_print(0print_chat"%s was killed for being an AFK."name);
          }
     }
}
 
public 
same_origin(id)
{
       new 
Float:origin[3];
       
pev(idpev_originorigin);
       for(new 
03i++)
             if(
origin[i] != player_origin[id][i])
                   return 
0;
       return 
1;


Last edited by mousesports; 01-13-2019 at 09:51.
mousesports is offline
X3.
Junior Member
Join Date: Sep 2018
Old 01-13-2019 , 08:34   Re: afk slay plugin
Reply With Quote #2

I just changed (kick #%d) to (amx_slay #%d)

try it

PHP Code:
#include <amxmodx>
#include <cstrike>

#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.

new g_oldangles[33][3]
new 
g_afktime[33]
new 
bool:g_spawned[33] = {true, ...}

public 
plugin_init() 
{
    
register_plugin("AFK Kicker","1.0b","Cheesy Peteza"
    
register_cvar("mp_afktime""120")    // Kick people AFK longer than this time
    
register_cvar("mp_afkminplayers""1")    // Only kick AFKs when there is atleast this many players on the server
    
set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")
    
register_event("ResetHUD""playerSpawned""be")
}

public 
checkPlayers() 
{
    for (new 
1<= get_maxplayers(); i++) 
    {
        if (
is_user_alive(i) && is_user_connected(i) && !is_user_bot(i) && !is_user_hltv(i) && g_spawned[i]) 
        {
            if(
cs_get_user_team(i) == CS_TEAM_SPECTATOR)
            return 
PLUGIN_HANDLED

            
new newangle[3]
            
get_user_origin(inewangle)

            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
}

check_afktime(id
{
    new 
numplayers get_playersnum()
    new 
minplayers get_cvar_num("mp_afkminplayers")

    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."maxafktimeMIN_AFK_TIME)
            
maxafktime MIN_AFK_TIME
            set_cvar_num
("mp_afktime"MIN_AFK_TIME)
        }

        if ( 
maxafktime-WARNING_TIME <= g_afktime[id] < maxafktime
        {
            new 
timeleft maxafktime g_afktime[id]
            
client_print(idprint_chat"[AFK] You have %i seconds to move or you will be slayed for being AFK"timeleft)
        } 
        else if (
g_afktime[id] > maxafktime
        {
            new 
name[32]
            
get_user_name(idname31)
            
client_print(0print_chat"[AFK] %s was slayed for being AFK longer than %i seconds"namemaxafktime)
            
log_amx("%s was slayed for being AFK longer than %i seconds"namemaxafktime)
            
server_cmd("amx_slay #%d ^"AFK for more than %i seconds^""get_user_userid(id), maxafktime)
        }
    }
}

public 
client_connect(id
{
    
g_afktime[id] = 0
    
return PLUGIN_HANDLED
}

public 
client_putinserver(id
{
    
g_afktime[id] = 0
    
return PLUGIN_HANDLED
}

public 
playerSpawned(id
{
    
g_spawned[id] = false
    
new sid[1]
    
sid[0] = id
    set_task
(0.75"delayedSpawn",_sid1)    // 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

X3. is offline
mousesports
Senior Member
Join Date: Oct 2010
Old 01-13-2019 , 09:00   Re: afk slay plugin
Reply With Quote #3

Thank you !
I will go to test it .
mousesports is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 18:43.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode