AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Kick dead players after 60 sec (https://forums.alliedmods.net/showthread.php?t=92877)

LaineN 05-21-2009 11:42

Kick dead players after 60 sec
 
Hi!
I've tryed to make a plugin that will kick a player if he was dead for 60 seconds, but I have some problems with it. Here is my code:

PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>

#pragma semicolon 1

#define PLUGIN_NAME    "Dead Kicker"
#define PLUGIN_VERSION    "1.0"
#define PLUGIN_AUTHOR    "LaineN"

new bool:gbAlive[33];

new 
gDeadTime[33];

new 
gMaxPlayers;

public 
plugin_init()
{
    
register_plugin(PLUGIN_NAMEPLUGIN_VERSIONPLUGIN_AUTHOR);
    
    
RegisterHam(Ham_Spawn"player""fwd_PlayerSpawn"1);
    
    
register_event("DeathMsg""event_PlayerDeath""a");
    
    
set_task(5.0"TaskCheckPlayers"___"b");
    
    
gMaxPlayers get_maxplayers();
}

public 
client_putinserver(id)
{
    
gbAlive[id] = false;
    
    
gDeadTime[id] = 0;
}

public 
client_disconnect(id)
{
    
gbAlive[id] = false;
}

public 
fwd_PlayerSpawn(id)
{
    
gbAlive[id] = true;
}

public 
event_PlayerDeath()
{
    new 
id read_data(2);
    
    
gbAlive[id] = false;
}

public 
TaskCheckPlayers()
{
    if ( 
get_playersnum() > )
    {
        for ( new 
id 1id <= gMaxPlayersid++ )
        {
            if ( 
access(idADMIN_IMMUNITY)
            || 
is_user_hltv(id) ) continue;
            
            if ( !
gbAlive[id] )
            {
                
gDeadTime[id] += 5;
                
CheckDeadTime(id);
            }
            else
            {
                if ( 
gDeadTime[id] > gDeadTime[id] = 0;
            }
        }
    }
}

CheckDeadTime(id)
{
    if ( 
gDeadTime[id] >= 60 )
    {
        new 
szName[32];
        
get_user_name(idszNamesizeof(szName) - 1);
        
        
client_print(0print_chat"%s was kicked for being dead longer than 60 seconds!"szName);
        
server_cmd("kick #%i ^"You were kicked for being dead longer than 60 seconds^""get_user_userid(id));
    }


After 60 seconds this message starts to print every 5 seconds:
Code:

was kicked for being dead longer than 60 seconds!
Even if you are dead, or alive.

Someone see some faults in the code?

Dores 05-21-2009 13:40

Re: Kick dead players after 60 sec
 
well, i don't know if there are more problems, didn't look deeply, but:
PHP Code:

public event_PlayerDeath(id)
{
    
gbAlive[id] = false;
    
    return 
PLUGIN_CONTINUE;
}

--->

public event_PlayerDeath()
{
    
gbAlive[read_data(2)] = false;
    
    return 
PLUGIN_CONTINUE;



LaineN 05-21-2009 14:14

Re: Kick dead players after 60 sec
 
Quote:

Originally Posted by Dores (Post 831798)
well, i don't know if there are more problems, didn't look deeply, but:
PHP Code:

public event_PlayerDeath(id)
{
    
gbAlive[id] = false;
    
    return 
PLUGIN_CONTINUE;
}

--->

public event_PlayerDeath()
{
    
gbAlive[read_data(2)] = false;
    
    return 
PLUGIN_CONTINUE;



Thanks, how could I be so blind? :o

xPaw 05-21-2009 14:19

Re: Kick dead players after 60 sec
 
Quote:

Originally Posted by LaineN (Post 831821)
Thanks, how could I be so blind? :o

Easy.

LaineN 05-21-2009 16:39

Re: Kick dead players after 60 sec
 
LOL. Still the same problem! :(
Can't find the fault.

EDIT: Code updated.

hleV 05-21-2009 17:17

Re: Kick dead players after 60 sec
 
Code:
#include <amxmodx> #include <hamsandwich>   new MaxDeadTime, IsDead[33];   public plugin_init() {         MaxDeadTime = register_cvar("amx_maxdeadtime", "60");           RegisterHam(Ham_Killed, "player", "PlayerKilled", 1);         RegisterHam(Ham_Spawn, "player", "PlayerSpawned", 1); }   public client_disconnect(Cl)         IsDead[Cl] = false;   public PlayerKilled(Cl) {         IsDead[Cl] = true;           set_task(get_pcvar_float(MaxDeadTime), "KickDeadPlayer", Cl); } public PlayerSpawned(Cl) {         IsDead[Cl] = false;           remove_task(Cl); }   public KickDeadPlayer(Cl) {         new szName[32];         get_user_name(Cl, szName, sizeof(szName) - 1);                   client_print(0, print_chat, "%s was kicked for being dead longer than 60 seconds!", szName);         server_cmd("kick #%i ^"You were kicked for being dead longer than 60 seconds^"", get_user_userid(Cl)); }

LaineN 05-21-2009 18:14

Re: Kick dead players after 60 sec
 
Thanks, worked! :D


All times are GMT -4. The time now is 01:31.

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