Cerere plugin [rezolvat!]

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
sniper94
Membru, skill +1
Membru, skill +1
Posts: 201
Joined: 26 Feb 2011, 10:48
Detinator Steam: Nu
Detinator server CS: Dr.DynamicSpace.Ro
Reputatie: Restrictie mesaje private!
Has thanked: 21 times
Been thanked: 13 times
Contact:

15 Apr 2011, 14:21

As dori un plugin care sa dea slay la cei care sunt AFK........am mare nevoie
Last edited by KronoS eXtream on 20 Apr 2011, 10:52, edited 1 time in total.
Reason: + [rezolvat!]
RoyalServer
User avatar
essonid
Membru, skill +2
Membru, skill +2
Posts: 759
Joined: 20 Nov 2010, 16:57
Detinator Steam: Da
Detinator server CS: Nu
Reputatie: Membru Club eXtreamCS (o luna)
Location: London, United Kingdom
Has thanked: 29 times
Been thanked: 28 times

15 Apr 2011, 15:49

| Afiseaza codul
#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)
{
    remove_task(id)
    if(is_user_alive(id))
    {
        set_task(0.8, "get_spawn", id);
    }
    return HAM_IGNORED;
}

public get_spawn(id)
{
    pev(id, pev_origin, player_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(id, name, 32);
            client_print(0, print_chat,  "[AFK] %s a fost ucis pentru ca era AFK !", name);
        }
    }
}
 
public same_origin(id)
{
    new Float:origin[3];
    pev(id, pev_origin, origin);
    for(new i = 0; i < 3; i++)
        if(origin != player_origin[id])
            return 0;
    return 1;
}
A city full of people and my favorite is that waitress..
sniper94
Membru, skill +1
Membru, skill +1
Posts: 201
Joined: 26 Feb 2011, 10:48
Detinator Steam: Nu
Detinator server CS: Dr.DynamicSpace.Ro
Reputatie: Restrictie mesaje private!
Has thanked: 21 times
Been thanked: 13 times
Contact:

15 Apr 2011, 15:59

essonid wrote:
| Afiseaza codul
#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)
{
    remove_task(id)
    if(is_user_alive(id))
    {
        set_task(0.8, "get_spawn", id);
    }
    return HAM_IGNORED;
}

public get_spawn(id)
{
    pev(id, pev_origin, player_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(id, name, 32);
            client_print(0, print_chat,  "[AFK] %s a fost ucis pentru ca era AFK !", name);
        }
    }
}
 
public same_origin(id)
{
    new Float:origin[3];
    pev(id, pev_origin, origin);
    for(new i = 0; i < 3; i++)
        if(origin != player_origin[id])
            return 0;
    return 1;
}

Am bagat tot .... am compilat sma ...etc si nu merge....adica nu face nimic...am eu un plugin care da slay cand esti afk dar nu da slay si la admini si nu stiu cum sa rezolv asta
uitati sma:
| Afiseaza codul
#include <amxmodx>

#define MIN_AFK_TIME 60        // in caz ca cineva seteaza fara sa vrea prosteste cvar-ul mp_afktime
#define WARNING_TIME 5        // avertizarea jucatorului in legatura cu cat timp are pana sa i-a slay
#define CHECK_FREQ 1        // frecventa mesajului de avertizare

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

public plugin_init() 
{
    register_plugin("AFK Slayer", "2.0", "Cheesy Peteza & x") 
    register_cvar("afk_version", "2.0", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)

    register_cvar("mp_afktime", "60")    // da slay la cine e afk mai mult decat timpul setat la acest cvar
    register_cvar("mp_afkminplayers", "2")    // da slay la cineva afk mai mult decat timpul setat mai sus decat daca pe server sunt cel putin jucatorii setati in acest cvar

    set_task(float(CHECK_FREQ),"checkPlayers",_,_,_,"b")

    register_event("ResetHUD", "playerSpawned", "be")
}

public checkPlayers() 
{
    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) 
        {
            new newangle[3]
            get_user_origin(i, newangle)

            if ( newangle[0] == g_oldangles[0] && newangle[1] == g_oldangles[1] && newangle[2] == g_oldangles[2] ) 
            {
                g_afktime += CHECK_FREQ
                check_afktime(i)
            } 
            else 
            {
                g_oldangles[0] = newangle[0]
                g_oldangles[1] = newangle[1]
                g_oldangles[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("[DynamicSpace]Cvar-ul mp_afktime %i e prea mic. Valorea minima este: %i.", maxafktime, MIN_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(id, print_chat, "[DynamicSpace] Ai %i secunde pana sa primesti slay pentru ca esti AFK", timeleft)
        } 
        else if (g_afktime[id] > maxafktime) 
        {
            new arg[32]
            read_argv(1, arg, 31)
            
            client_print(0, print_chat, "[DynamicSpace] %s a fost traznit de fulger pentru a ca fost AFK mai mult de %i secunde", arg, maxafktime)
            log_amx("%s a fost traznit de fulger pentru a ca fost AFK mai mult de %i secunde", arg, maxafktime)
            server_cmd("amx_slay #%d ^"Ai primit slay ca ai stat AFK mai mult de %i secunde^"", 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",_, sid, 1)
    return PLUGIN_HANDLED
}

public delayedSpawn(sid[]) 
{
    get_user_origin(sid[0], g_oldangles[sid[0]])
    g_spawned[sid[0]] = true
    return PLUGIN_HANDLED
}
sniper94
Membru, skill +1
Membru, skill +1
Posts: 201
Joined: 26 Feb 2011, 10:48
Detinator Steam: Nu
Detinator server CS: Dr.DynamicSpace.Ro
Reputatie: Restrictie mesaje private!
Has thanked: 21 times
Been thanked: 13 times
Contact:

17 Apr 2011, 17:21

UP!!!
User avatar
TzUcK
Fost moderator
Fost moderator
Posts: 2947
Joined: 19 Jul 2009, 15:44
Detinator Steam: Da
Reputatie: Fost moderator
Has thanked: 70 times
Been thanked: 140 times
Contact:

17 Apr 2011, 18:55

| Afiseaza codul
#include <amxmodx> 
#include <amxmisc> 
#include <cstrike> 
#include <engine> 

#define AFK_CHECK_FREQ        5 // Check for afk-frequency. This is also the warning message frequency. 
#define SPEC_CHECK_FREQ      30 // Check for spec-kick. Has effect in afk_options 2 mode only. 
#define MIN_AFK_TIME         30 // I use this incase stupid admins accidentally set afk_optstime to something silly. 
#define BOMB_DROP_TIME       25 // Time until bomb gets dropped, it is also afk recognition time. 
#define SHOW_FREQ            20 // Frequence of afk-count-messages, only needed if the CVAR afk_show_counter is set to 1 
#define SPEC_AFK_CHECK_FREQ 180 // To recheck specplayers if afk or not with a menu ... 
#define WARNING_TIME         25 // Time to start warning players before kick or spec-switch 

// Do not touch the following items: 
#define MENU_SIZE           256 



new AfkT 
new AfkCT 
new numTalive 
new numCTalive 
new bombcarrier 
new lastCounterShow 
new i_afktime[33] 
new i_spectime[33] 
new s_plname[33][33] 
new f_lastangles[33][3] 
new f_spawnposition[33][3] 
new bool:b_spawned[33] = {true, ...} 
new bool:b_demorec[33] = {false, ...} 
new bool:b_afkname[33] = {false, ...} 
new bool:is_admin[33]  = {false, ...} 
new bool:b_tobeslayed[33] = {false, ...} 
new g_iMenuPosition[33] 
new g_coloredMenus  



// On plugin start 

public plugin_init() { 
    register_plugin("AFK KiSSS","3.0.0 Beta 1","Isobold")  
    register_cvar("afkslay_version", "3.0.0 Beta 1", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY) 
     
    register_cvar("afk_slaytime",      "90") // AFK-Time until slay 
    register_cvar("afk_optstime",     "150") // AFK-Time until afk_options will take effect (afk_kicktime in v.2) 
    register_cvar("afk_options",        "1") // 0 Spec, 1 Kick, 2 Spec+Kick, 3 Kick normal Players and Switch Admins to Spec, 4 nothing of these 
                                                // in case 3 afk_adminkimmunity will have no effect 
    register_cvar("afk_speckick",     "120") // time to be spec until kick (afk_options 2 only) 
    register_cvar("afk_minplayers",     "8") // Minimum players to kick someone (afk_options 1 and 2 only) 

    // 0 deactivate, 1 activate the following functions 
    register_cvar("afk_bombdrop",       "1") // 1 Bomb will be dropped after BOMB_DROP_TIME 
    register_cvar("afk_slayplayers",    "1") // 1 Slays AFK-Players when last survivor 
    register_cvar("afk_adminsimmunity", "0") // 1 Admin immune against slay 
    register_cvar("afk_adminkimmunity", "1") // 1 Admin immune against kick (against spec-kick to) (afk_options 1 and 2 only) 
    register_cvar("afk_admincimmunity", "1") // 1 Admin immune against switch to specmode (afk_options 0 and 2 only) 
    register_cvar("afk_show_counter",   "1") // 1 Displays a message every 20 seconds with the numbers and teams of afk_players ... 
                                                // ... if at least 1 AFK detected 
    register_cvar("afk_rename",         "1") // 1 Rename afk-players 
    register_cvar("afk_disable",        "0") // 1 Disable this plugin (4 example for clanwars) 
     
    register_event("ResetHUD", "playerSpawned", "be") 
    register_dictionary("afkkicker.txt") 
    register_dictionary("common.txt") 
    register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb") 


      
     
    set_task(float(AFK_CHECK_FREQ),"checkPositions",_,_,_,"b") 
    set_task(float(AFK_CHECK_FREQ),"checkDeath",_,_,_,"b") 
} 

public checkPositions() { 
    new playernum, pl, t_slay, t_opts, t_bomb, t_slay_time, t_opts_time, min_players 
    new a_ids[32], playerpos[3], playerview[3] 
    if(get_cvar_num("afk_disable")) return PLUGIN_HANDLED 
    get_players(a_ids, playernum, "ac") 
    t_slay = get_cvar_num("afk_slayplayers") 
    t_opts = get_cvar_num("afk_options") 
    t_bomb = get_cvar_num("afk_bombdrop") 
    t_slay_time = get_cvar_num("afk_slaytime") 
    t_opts_time = get_cvar_num("afk_optstime") 
    min_players = get_cvar_num("afk_minplayers") 
     
    if(t_opts == 2) { 
        if(!(task_exists(29034,0))) 
            set_task(float(SPEC_CHECK_FREQ),"checkSpec",29034,_,_,"b") 
    } 
     
    get_alive_nums() 
    for(new i = 0; i < playernum; i++) { 
        pl = a_ids 
        if(is_user_connected(pl) && !is_user_bot(pl) && !is_user_hltv(pl) && is_user_alive(pl) && b_spawned[pl]) { 
            get_user_origin(pl, playerview, 3) 
            get_user_origin(pl, playerpos) 
         
            // Has player moved since last check? 
            if((playerview[0] == f_lastangles[pl][0] && playerview[1] == f_lastangles[pl][1] && playerview[2] == f_lastangles[pl][2]) || (playerpos[0] == f_spawnposition[pl][0] && playerpos[1] == f_spawnposition[pl][1] && playerpos[2] == f_spawnposition[pl][2])) { 
                i_afktime[pl] += AFK_CHECK_FREQ 
                if(t_bomb == 1 && i_afktime[pl] >= BOMB_DROP_TIME && pl == bombcarrier) { 
                    client_cmd(pl,"use weapon_c4") 
                    client_cmd(pl,"drop") 
                    client_print(0, print_chat, "[AFK KiSSS] - Bomb Drop") 
                } 
                if(t_opts == 0 || t_opts == 2) { 
                    if(playernum >= min_players) 
                        CheckSwitchSpec(pl, t_opts_time) 
                } 
                if(t_opts == 1 || t_opts == 3) { 
                    if(playernum >= min_players) 
                        checkKick(pl, t_opts, t_opts_time) 
                } 
                if(t_slay == 1) { 
                    if(t_slay_time <= i_afktime[pl]) 
                        checkSlay(pl) 
                } 
            } else { 
                i_afktime[pl] = 0 
            } 
            f_lastangles[pl][0] = playerview[0] 
            f_lastangles[pl][1] = playerview[1] 
            f_lastangles[pl][2] = playerview[2] 
        } 
    } 
    afk_rs_msg() 
    if((numTalive == 0 && AfkT > 0) || (numCTalive == 0 && AfkCT > 0)) { 
        client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_INFO_MSG") 
    } 
    return PLUGIN_HANDLED 
} 


// Handle Situations 

//Check for Slay 
checkSlay(id) { 
    if(!((cs_get_user_team(id) == CS_TEAM_T && numTalive > 0) || (cs_get_user_team(id) == CS_TEAM_CT && numCTalive > 0))) { 
        if(!(get_playersnum() < get_cvar_num("afk_minplayers") || (get_cvar_num("afk_adminsimmunity") == 1 && is_admin[id]))) { 
            client_cmd(id,"kill") 
            b_tobeslayed[id] = true 
        } 
    } 
} 

CheckSwitchSpec(id, opts_time) { 
    if (opts_time-WARNING_TIME <= i_afktime[id] < opts_time) { 
        new timeleft = opts_time - i_afktime[id] 
        client_print(id, print_chat, "[AFK KiSSS] %L", id, "AFK_STIME", timeleft) 
    } else if (i_afktime[id] > opts_time) { 
        SwitchSpec(id) 
    } 
    return PLUGIN_CONTINUE 
} 

public checkKick(id, opt, opts_time) { 
    if(get_cvar_num("afk_adminsimmunity") == 1 && is_admin[id] && opt == 1) { 
        return PLUGIN_HANDLED 
    } else { 
        if(opts_time-WARNING_TIME <= i_afktime[id] < opts_time) { 
            new timeleft = opts_time - i_afktime[id] 
            if(is_admin[id] && opt == 3) { 
                client_print(id, print_chat, "[AFK KiSSS] %L", id, "AFK_STIME", timeleft) 
            } else { 
                client_print(id, print_chat, "[AFK KiSSS] %L", id, "AFK_TIMELEFT", timeleft) 
            } 
        } else if (i_afktime[id] > opts_time) { 
            if(is_admin[id] && opt == 3) { 
                SwitchSpec(id) 
            } else { 
                new name[33] 
                get_user_name(id, name, 32) 
                client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KICKED", name, opts_time) 
                log_amx("%s was kicked for being AFK longer than %i seconds", name, opts_time) 
                server_cmd("kick #%d ^"You were kicked for being AFK longer than %i seconds^"", get_user_userid(id), opts_time) 
            } 
        } 
    } 
    return PLUGIN_CONTINUE 
} 

SwitchSpec(id) { 
    client_cmd(id,"kill") 
    cs_set_user_team(id, CS_TEAM_SPECTATOR) 
    client_print(0, print_chat, "[AFK KiSSS] - Spec Switch") 
    b_tobeslayed[id] = true 
    i_spectime[id] = 0 
    i_afktime[id] = 0 
    return PLUGIN_CONTINUE 
} 


// Control Spec-Players 
public checkSpec() { 
    new playernum, admin_imun, pl, kicktime, j 
    new a_ids[32] 
    admin_imun = get_cvar_num("afk_adminkimmunity") 
    kicktime = get_cvar_num("afk_speckick") 
    get_players(a_ids,playernum,"ce","SPECTATOR") 
    for(j = 0; j < playernum; j++) { 
        pl = a_ids[j] 
        if(!is_user_hltv(pl) && is_user_connected(pl) && !is_user_bot(pl)) {   
           if(!(admin_imun == 1 && is_admin[pl])) { 
               i_spectime[pl] += SPEC_CHECK_FREQ 
               if(i_spectime[pl] > kicktime) { 
                   new name[33] 
                   get_user_name(pl, name, 32) 
                   client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KICKED", name, kicktime) 
                   log_amx("%s was kicked for being AFK longer than %i seconds", name, kicktime) 
                   server_cmd("kick #%d ^"You were kicked for being AFK longer than %i seconds^"", get_user_userid(pl), kicktime) 
               } 
           } 
       } 
    } 
    return PLUGIN_HANDLED 
} 

// Help functions 

// Verifies if players are really dead 
public checkDeath() { 
    new playernum, pl 
    new a_ids[32] 
     
    if(get_cvar_num("afk_disable")) return PLUGIN_HANDLED 
    get_players(a_ids, playernum, "ac") 
     
    for(new i = 0; i < playernum; i++) { 
        pl = a_ids 
        if(b_tobeslayed[pl]) { 
            client_cmd(pl,"kill") 
        } 
    } 
    return PLUGIN_HANDLED 
} 

// Tracks the bombholder 
public bomb_events() { 
        new arg0[64], action[64], name[33], userid, bid 
         
        if(get_cvar_num("afk_disable")) return PLUGIN_HANDLED 

        // Read the log data that we need  
        read_logargv(0,arg0,63)  
        read_logargv(2,action,63)  

        // Find the id of the player that triggered the log  
        parse_loguser(arg0,name,32,userid)  
        bid = find_player("k",userid)  

        // Find out what action it was  
        if (equal(action,"Spawned_With_The_Bomb")) {  
                bombcarrier = bid;  
        } else if (equal(action,"Dropped_The_Bomb")) {  
                bombcarrier = 0;  
        } else if (equal(action,"Got_The_Bomb")) {  
                bombcarrier = bid;  
        } else if (equal(action, "Planted_The_Bomb")) {  
                bombcarrier = 0;  
        }  
        return PLUGIN_HANDLED 
} 

// Collect and displays informations about number and team of afk-players 
public afk_rs_msg() { 
    new playerCount, i, player 
    new Players[32]  
    get_players(Players, playerCount, "ac") 
    AfkT  = 0 
    AfkCT = 0  

    for (i=0; i<playerCount; i++) { 
        player = Players 
        if(i_afktime[player] > BOMB_DROP_TIME) { 
            if(cs_get_user_team(player) == CS_TEAM_T) 
                AfkT++ 
            if(cs_get_user_team(player) == CS_TEAM_CT) 
                AfkCT++ 
        } 
    } 
    if((AfkT > 0 || AfkCT > 0) && get_cvar_num("afk_show_counter") == 1) { 
        lastCounterShow += AFK_CHECK_FREQ 
        if(lastCounterShow >= SHOW_FREQ) { 
            client_print(0, print_chat, "[AFK KiSSS]: %i T AFK - %i CT AFK", AfkT, AfkCT) 
            lastCounterShow = 0 
        } 
    } 
    return PLUGIN_CONTINUE 
} 

// Retrieves the number of non-afk alive players 
get_alive_nums() { 
    new playerCount, i, gplayer 
    new Players[32]  
    get_players(Players, playerCount, "ac") 
    numCTalive = 0 
    numTalive  = 0 

    for (i=0; i<playerCount; i++) { 
        gplayer = Players 
        if(cs_get_user_team(gplayer) == CS_TEAM_T && i_afktime[gplayer] < BOMB_DROP_TIME) 
            numTalive++ 
        if(cs_get_user_team(gplayer) == CS_TEAM_CT && i_afktime[gplayer] < BOMB_DROP_TIME) 
            numCTalive++ 
    } 
    return PLUGIN_CONTINUE 
} 

// On new Round get Spawnpositions 
public playerSpawned(id) { 
    b_spawned[id]    = false 
    b_demorec[id]    = false 
    b_tobeslayed[id] = false 
    new a_id[1] 
    a_id[0] = id 
    set_task(0.75, "getFirstPos",_, a_id, 1) 
    return PLUGIN_HANDLED 
} 

public getFirstPos(a_id[]) { 
    new id = a_id[0] 
    b_spawned[id] = true 
    get_user_origin(id, f_lastangles[id], 3) 
    get_user_origin(id, f_spawnposition[id]) 
    if(get_user_flags(id)&ADMIN_IMMUNITY) { 
        is_admin[id]   = true 
    } 
    return PLUGIN_HANDLED 
} 


// On player connect 

public client_connect(id) { 
    i_afktime[id]    = 0 
    i_spectime[id]   = 0 
    b_spawned[id]    = false 
    b_demorec[id]    = false 
    b_afkname[id]    = false 
    is_admin[id]     = false 
    b_tobeslayed[id] = false 
    get_user_name(id, s_plname[id], 32) 
    return PLUGIN_HANDLED 
} 

public client_putinserver(id) { 
    i_afktime[id]    = 0 
    i_spectime[id]   = 0 
    b_spawned[id]    = false 
    b_demorec[id]    = false 
    b_afkname[id]    = false 
    is_admin[id]     = false 
    b_tobeslayed[id] = false 
    get_user_name(id, s_plname[id], 32) 
    return PLUGIN_HANDLED 
}

Asta sau

Code: Select all

| Ascunde codul
#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(id, pev_origin, player_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(id, name, 32);
               client_print(0, print_chat, "%s was killed for being an AFK.", name);
          }
     }
}
 
public same_origin(id)
{
       new Float:origin[3];
       pev(id, pev_origin, origin);
       for(new i = 0; i < 3; i++)
             if(origin[i] != player_origin[id][i])
                   return 0;
       return 1;
}
sniper94
Membru, skill +1
Membru, skill +1
Posts: 201
Joined: 26 Feb 2011, 10:48
Detinator Steam: Nu
Detinator server CS: Dr.DynamicSpace.Ro
Reputatie: Restrictie mesaje private!
Has thanked: 21 times
Been thanked: 13 times
Contact:

18 Apr 2011, 09:07

| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>

#define AFK_CHECK_FREQ        5 // Check for afk-frequency. This is also the warning message frequency.
#define SPEC_CHECK_FREQ      30 // Check for spec-kick. Has effect in afk_options 2 mode only.
#define MIN_AFK_TIME         30 // I use this incase stupid admins accidentally set afk_optstime to something silly.
#define BOMB_DROP_TIME       25 // Time until bomb gets dropped, it is also afk recognition time.
#define SHOW_FREQ            20 // Frequence of afk-count-messages, only needed if the CVAR afk_show_counter is set to 1
#define SPEC_AFK_CHECK_FREQ 180 // To recheck specplayers if afk or not with a menu ...
#define WARNING_TIME         25 // Time to start warning players before kick or spec-switch

// Do not touch the following items:
#define MENU_SIZE           256



new AfkT
new AfkCT
new numTalive
new numCTalive
new bombcarrier
new lastCounterShow
new i_afktime[33]
new i_spectime[33]
new s_plname[33][33]
new f_lastangles[33][3]
new f_spawnposition[33][3]
new bool:b_spawned[33] = {true, ...}
new bool:b_demorec[33] = {false, ...}
new bool:b_afkname[33] = {false, ...}
new bool:is_admin[33]  = {false, ...}
new bool:b_tobeslayed[33] = {false, ...}
new g_iMenuPosition[33]
new g_coloredMenus 



// On plugin start

public plugin_init() {
    register_plugin("AFK KiSSS","3.0.0 Beta 1","Isobold") 
    register_cvar("afkslay_version", "3.0.0 Beta 1", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
     
    register_cvar("afk_slaytime",      "90") // AFK-Time until slay
    register_cvar("afk_optstime",     "150") // AFK-Time until afk_options will take effect (afk_kicktime in v.2)
    register_cvar("afk_options",        "1") // 0 Spec, 1 Kick, 2 Spec+Kick, 3 Kick normal Players and Switch Admins to Spec, 4 nothing of these
                                                // in case 3 afk_adminkimmunity will have no effect
    register_cvar("afk_speckick",     "120") // time to be spec until kick (afk_options 2 only)
    register_cvar("afk_minplayers",     "8") // Minimum players to kick someone (afk_options 1 and 2 only)

    // 0 deactivate, 1 activate the following functions
    register_cvar("afk_bombdrop",       "1") // 1 Bomb will be dropped after BOMB_DROP_TIME
    register_cvar("afk_slayplayers",    "1") // 1 Slays AFK-Players when last survivor
    register_cvar("afk_adminsimmunity", "0") // 1 Admin immune against slay
    register_cvar("afk_adminkimmunity", "1") // 1 Admin immune against kick (against spec-kick to) (afk_options 1 and 2 only)
    register_cvar("afk_admincimmunity", "1") // 1 Admin immune against switch to specmode (afk_options 0 and 2 only)
    register_cvar("afk_show_counter",   "1") // 1 Displays a message every 20 seconds with the numbers and teams of afk_players ...
                                                // ... if at least 1 AFK detected
    register_cvar("afk_rename",         "1") // 1 Rename afk-players
    register_cvar("afk_disable",        "0") // 1 Disable this plugin (4 example for clanwars)
     
    register_event("ResetHUD", "playerSpawned", "be")
    register_dictionary("afkkicker.txt")
    register_dictionary("common.txt")
    register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb")


     
     
    set_task(float(AFK_CHECK_FREQ),"checkPositions",_,_,_,"b")
    set_task(float(AFK_CHECK_FREQ),"checkDeath",_,_,_,"b")
}

public checkPositions() {
    new playernum, pl, t_slay, t_opts, t_bomb, t_slay_time, t_opts_time, min_players
    new a_ids[32], playerpos[3], playerview[3]
    if(get_cvar_num("afk_disable")) return PLUGIN_HANDLED
    get_players(a_ids, playernum, "ac")
    t_slay = get_cvar_num("afk_slayplayers")
    t_opts = get_cvar_num("afk_options")
    t_bomb = get_cvar_num("afk_bombdrop")
    t_slay_time = get_cvar_num("afk_slaytime")
    t_opts_time = get_cvar_num("afk_optstime")
    min_players = get_cvar_num("afk_minplayers")
     
    if(t_opts == 2) {
        if(!(task_exists(29034,0)))
            set_task(float(SPEC_CHECK_FREQ),"checkSpec",29034,_,_,"b")
    }
     
    get_alive_nums()
    for(new i = 0; i < playernum; i++) {
        pl = a_ids
        if(is_user_connected(pl) && !is_user_bot(pl) && !is_user_hltv(pl) && is_user_alive(pl) && b_spawned[pl]) {
            get_user_origin(pl, playerview, 3)
            get_user_origin(pl, playerpos)
         
            // Has player moved since last check?
            if((playerview[0] == f_lastangles[pl][0] && playerview[1] == f_lastangles[pl][1] && playerview[2] == f_lastangles[pl][2]) || (playerpos[0] == f_spawnposition[pl][0] && playerpos[1] == f_spawnposition[pl][1] && playerpos[2] == f_spawnposition[pl][2])) {
                i_afktime[pl] += AFK_CHECK_FREQ
                if(t_bomb == 1 && i_afktime[pl] >= BOMB_DROP_TIME && pl == bombcarrier) {
                    client_cmd(pl,"use weapon_c4")
                    client_cmd(pl,"drop")
                    client_print(0, print_chat, "[AFK KiSSS] - Bomb Drop")
                }
                if(t_opts == 0 || t_opts == 2) {
                    if(playernum >= min_players)
                        CheckSwitchSpec(pl, t_opts_time)
                }
                if(t_opts == 1 || t_opts == 3) {
                    if(playernum >= min_players)
                        checkKick(pl, t_opts, t_opts_time)
                }
                if(t_slay == 1) {
                    if(t_slay_time <= i_afktime[pl])
                        checkSlay(pl)
                }
            } else {
                i_afktime[pl] = 0
            }
            f_lastangles[pl][0] = playerview[0]
            f_lastangles[pl][1] = playerview[1]
            f_lastangles[pl][2] = playerview[2]
        }
    }
    afk_rs_msg()
    if((numTalive == 0 && AfkT > 0) || (numCTalive == 0 && AfkCT > 0)) {
        client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_INFO_MSG")
    }
    return PLUGIN_HANDLED
}


// Handle Situations

//Check for Slay
checkSlay(id) {
    if(!((cs_get_user_team(id) == CS_TEAM_T && numTalive > 0) || (cs_get_user_team(id) == CS_TEAM_CT && numCTalive > 0))) {
        if(!(get_playersnum() < get_cvar_num("afk_minplayers") || (get_cvar_num("afk_adminsimmunity") == 1 && is_admin[id]))) {
            client_cmd(id,"kill")
            b_tobeslayed[id] = true
        }
    }
}

CheckSwitchSpec(id, opts_time) {
    if (opts_time-WARNING_TIME <= i_afktime[id] < opts_time) {
        new timeleft = opts_time - i_afktime[id]
        client_print(id, print_chat, "[AFK KiSSS] %L", id, "AFK_STIME", timeleft)
    } else if (i_afktime[id] > opts_time) {
        SwitchSpec(id)
    }
    return PLUGIN_CONTINUE
}

public checkKick(id, opt, opts_time) {
    if(get_cvar_num("afk_adminsimmunity") == 1 && is_admin[id] && opt == 1) {
        return PLUGIN_HANDLED
    } else {
        if(opts_time-WARNING_TIME <= i_afktime[id] < opts_time) {
            new timeleft = opts_time - i_afktime[id]
            if(is_admin[id] && opt == 3) {
                client_print(id, print_chat, "[AFK KiSSS] %L", id, "AFK_STIME", timeleft)
            } else {
                client_print(id, print_chat, "[AFK KiSSS] %L", id, "AFK_TIMELEFT", timeleft)
            }
        } else if (i_afktime[id] > opts_time) {
            if(is_admin[id] && opt == 3) {
                SwitchSpec(id)
            } else {
                new name[33]
                get_user_name(id, name, 32)
                client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KICKED", name, opts_time)
                log_amx("%s was kicked for being AFK longer than %i seconds", name, opts_time)
                server_cmd("kick #%d ^"You were kicked for being AFK longer than %i seconds^"", get_user_userid(id), opts_time)
            }
        }
    }
    return PLUGIN_CONTINUE
}

SwitchSpec(id) {
    client_cmd(id,"kill")
    cs_set_user_team(id, CS_TEAM_SPECTATOR)
    client_print(0, print_chat, "[AFK KiSSS] - Spec Switch")
    b_tobeslayed[id] = true
    i_spectime[id] = 0
    i_afktime[id] = 0
    return PLUGIN_CONTINUE
}


// Control Spec-Players
public checkSpec() {
    new playernum, admin_imun, pl, kicktime, j
    new a_ids[32]
    admin_imun = get_cvar_num("afk_adminkimmunity")
    kicktime = get_cvar_num("afk_speckick")
    get_players(a_ids,playernum,"ce","SPECTATOR")
    for(j = 0; j < playernum; j++) {
        pl = a_ids[j]
        if(!is_user_hltv(pl) && is_user_connected(pl) && !is_user_bot(pl)) {   
           if(!(admin_imun == 1 && is_admin[pl])) {
               i_spectime[pl] += SPEC_CHECK_FREQ
               if(i_spectime[pl] > kicktime) {
                   new name[33]
                   get_user_name(pl, name, 32)
                   client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KICKED", name, kicktime)
                   log_amx("%s was kicked for being AFK longer than %i seconds", name, kicktime)
                   server_cmd("kick #%d ^"You were kicked for being AFK longer than %i seconds^"", get_user_userid(pl), kicktime)
               }
           }
       }
    }
    return PLUGIN_HANDLED
}

// Help functions

// Verifies if players are really dead
public checkDeath() {
    new playernum, pl
    new a_ids[32]
     
    if(get_cvar_num("afk_disable")) return PLUGIN_HANDLED
    get_players(a_ids, playernum, "ac")
     
    for(new i = 0; i < playernum; i++) {
        pl = a_ids
        if(b_tobeslayed[pl]) {
            client_cmd(pl,"kill")
        }
    }
    return PLUGIN_HANDLED
}

// Tracks the bombholder
public bomb_events() {
        new arg0[64], action[64], name[33], userid, bid
         
        if(get_cvar_num("afk_disable")) return PLUGIN_HANDLED

        // Read the log data that we need 
        read_logargv(0,arg0,63) 
        read_logargv(2,action,63) 

        // Find the id of the player that triggered the log 
        parse_loguser(arg0,name,32,userid) 
        bid = find_player("k",userid) 

        // Find out what action it was 
        if (equal(action,"Spawned_With_The_Bomb")) { 
                bombcarrier = bid; 
        } else if (equal(action,"Dropped_The_Bomb")) { 
                bombcarrier = 0; 
        } else if (equal(action,"Got_The_Bomb")) { 
                bombcarrier = bid; 
        } else if (equal(action, "Planted_The_Bomb")) { 
                bombcarrier = 0; 
        } 
        return PLUGIN_HANDLED
}

// Collect and displays informations about number and team of afk-players
public afk_rs_msg() {
    new playerCount, i, player
    new Players[32] 
    get_players(Players, playerCount, "ac")
    AfkT  = 0
    AfkCT = 0 

    for (i=0; i<playerCount; i++) {
        player = Players
        if(i_afktime[player] > BOMB_DROP_TIME) {
            if(cs_get_user_team(player) == CS_TEAM_T)
                AfkT++
            if(cs_get_user_team(player) == CS_TEAM_CT)
                AfkCT++
        }
    }
    if((AfkT > 0 || AfkCT > 0) && get_cvar_num("afk_show_counter") == 1) {
        lastCounterShow += AFK_CHECK_FREQ
        if(lastCounterShow >= SHOW_FREQ) {
            client_print(0, print_chat, "[AFK KiSSS]: %i T AFK - %i CT AFK", AfkT, AfkCT)
            lastCounterShow = 0
        }
    }
    return PLUGIN_CONTINUE
}

// Retrieves the number of non-afk alive players
get_alive_nums() {
    new playerCount, i, gplayer
    new Players[32] 
    get_players(Players, playerCount, "ac")
    numCTalive = 0
    numTalive  = 0

    for (i=0; i<playerCount; i++) {
        gplayer = Players
        if(cs_get_user_team(gplayer) == CS_TEAM_T && i_afktime[gplayer] < BOMB_DROP_TIME)
            numTalive++
        if(cs_get_user_team(gplayer) == CS_TEAM_CT && i_afktime[gplayer] < BOMB_DROP_TIME)
            numCTalive++
    }
    return PLUGIN_CONTINUE
}

// On new Round get Spawnpositions
public playerSpawned(id) {
    b_spawned[id]    = false
    b_demorec[id]    = false
    b_tobeslayed[id] = false
    new a_id[1]
    a_id[0] = id
    set_task(0.75, "getFirstPos",_, a_id, 1)
    return PLUGIN_HANDLED
}

public getFirstPos(a_id[]) {
    new id = a_id[0]
    b_spawned[id] = true
    get_user_origin(id, f_lastangles[id], 3)
    get_user_origin(id, f_spawnposition[id])
    if(get_user_flags(id)&ADMIN_IMMUNITY) {
        is_admin[id]   = true
    }
    return PLUGIN_HANDLED
}


// On player connect

public client_connect(id) {
    i_afktime[id]    = 0
    i_spectime[id]   = 0
    b_spawned[id]    = false
    b_demorec[id]    = false
    b_afkname[id]    = false
    is_admin[id]     = false
    b_tobeslayed[id] = false
    get_user_name(id, s_plname[id], 32)
    return PLUGIN_HANDLED
}

public client_putinserver(id) {
    i_afktime[id]    = 0
    i_spectime[id]   = 0
    b_spawned[id]    = false
    b_demorec[id]    = false
    b_afkname[id]    = false
    is_admin[id]     = false
    b_tobeslayed[id] = false
    get_user_name(id, s_plname[id], 32)
    return PLUGIN_HANDLED
}

Merge foarte bine dar Nu am nevoie de asta???
| Afiseaza codul
[en]
AFK_INFO_MSG = "All remaining opponents are afk!"
AFK_KILL_MSG = "%s was killed for being AFK and last surviver."
AFK_TIMELEFT = "You have %i seconds to move or you will be kicked for being AFK."
AFK_STIME    = "You have %i seconds to move or you will be switched spec for being AFK."
AFK_KICKED   = "%s was kicked for being AFK longer than %i seconds."

[de] 
AFK_INFO_MSG = "Alle verbleibenden Gegner sind afk!" 
AFK_KILL_MSG = "%s wurde getoetet, da er AFK war und letzter Ueberlebender." 
AFK_TIMELEFT = "Du hast noch %i Sekunden um dich zu bewegen, bevor du wegen AFK gekickt wirst." 
AFK_STIME    = "Du hast noch %i Sekunden um dich zu bewegen, bevor du wegen AFK zu den Specs geswitcht wirst." 
AFK_KICKED   = "%s wurde gekickt, da er laenger als %i Sekunden AFK war."

[fr]
AFK_INFO_MSG = "Tous vos adversaires sont afk!"
AFK_KILL_MSG = "%s a ete tuer pour etre dernier survivant et afk."
AFK_TIMELEFT = "Il te reste %i secondes pour te mouvoir avant d'etre balancer pour etre afk."
AFK_STIME    = "Il te reste %i secondes pour te mouvoir avant de devenier spec pour etre afk."
AFK_KICKED   = "%s a ete balancer pour avoir ete afk plus de %i secondes."

[sv] 
AFK_INFO_MSG = "Alla kvarvarande spelare 'a'r AFK!" 
AFK_KILL_MSG = "%s blev d'o'dad f'o'r att vara AFK och den sista levande spelaren."
AFK_STIME    = "Du har %i sekunder pa dig att r'o'ra dig innan du blir flyttad till spectators f'o'r att du 'a'r AFK."
AFK_TIMELEFT = "Du har %i sekunder pa dig att r'o'ra dig innan du blir sparkad f'o'r att du 'a'r AFK."
AFK_KICKED   = "%s blev sparkad f'o'r att ha varit AFK l'a'ngre 'a'n %i sekunder."

[nl]
AFK_INFO_MSG = "Al de overblijvende tegenstanders zijn afk!" 
AFK_KILL_MSG = "%s Was gedood omdat hij afk en laaste overlevende was." 
AFK_TIMELEFT = "Je hebt %i seconden om te bewegen of je word gekickt omdat je afk bent."
AFK_STIME    = "Je hebt %i seconden de tijd om te bewegen voordat je in spec. mode wordt gezet omdat je AFK bent."
AFK_KICKED   = "%s was gekickt omdat hij %i seconds afk was."

[es] 
AFK_INFO_MSG = "Todos los enemigos restantes estan AFK!" 
AFK_KILL_MSG = "%s ha muerto por estar AFK y ser el ultimo superviviente." 
AFK_TIMELEFT = "Tienes %i segundos para moverte o seras expulsado por estar AFK."
AFK_STIME    = "Tienes %i segundos para moverte o pasaras a ser un espectador por estar AFK."
AFK_KICKED   = "%s ha sido expulsado por estar AFK mas de %i segundos."

[tr] 
AFK_INFO_MSG = "Geri kalan tum dusmanlar AFK!" 
AFK_KILL_MSG = "%s AFK ve son canli oldugu icin olduruldu." 
AFK_TIMELEFT = "%i Saniye icinde bulundugunuz bolgeden yurumezseniz AFK oldugunuz icin atilacaksiniz." 
AFK_STIME    = "%i Saniye icinde yurumezseniz AFK nedeninden Gorus (spectate) takimina alinacaksiniz." 
AFK_KICKED   = "%i Saniyeden fazla AFK oldugu icin atildi %s." 
	
[da] 
AFK_INFO_MSG = "Alle tilbagevaerende fjender er AFK!" 
AFK_KILL_MSG = "%s Blev draebt grundet AFK og var sidste overlevende." 
AFK_TIMELEFT = "Du har %i sekunder til at bevaege dig eller du vil blive kicked for at vaere AFK." 
AFK_STIME    = "Du har %i sekunder til at bevaege dig eller du vil blive skiftet til team Spec pga AFK." 
AFK_KICKED   = "%s kicked for at vaere AFK længere end %i sekunder."

[pl] 
AFK_INFO_MSG = "Wszyscy pozostali wrogowie sa AFK!" 
AFK_KILL_MSG = "%s jest AFK i zostal zabity jako ostatni gracz swojej druzyny." 
AFK_TIMELEFT = "Za %i sekund zostaniesz wykopany jako AFK." 
AFK_STIME    = "Za %i sekund zostaniesz Spectatorem jako AFK." 
AFK_KICKED   = "%s byl AFK przez %i sekund i zostal wykopany."

[lv]
AFK_INFO_MSG = "Visi atlikusie speletaji ir afk!"
AFK_KILL_MSG = "%s tika nogalinats, jo palika pedejais speletajs komanda, kas bija AFK."
AFK_TIMELEFT = "Jums ir %i sekundes, l-ai saktu kusteties vai ari Jus tiksiet izmests no servera."
AFK_STIME    = "Jums ir %i sekundes, l-ai skatu kusteties vai ari Jus tiksies parmests spektatoros."
AFK_KICKED   = "%s tika izmest no servera par AFK ilgak ka %i sekundes."

[bg]
AFK_INFO_MSG = "Vsichki ostavashti prtoivnici sa AFK!"
AFK_KILL_MSG = "%s beshe ubit ot AFK , posledno predoprejdenie."
AFK_TIMELEFT = "Ti imash %i sekundi ili shte budesh izritan."
AFK_STIME    = "Ti Imash %i sekundi da mrudnesh ili shte budesh premesten spectator."
AFK_KICKED   = "%s toi beshe kicknat zashtoto sedq %i sekundi."

[bp]
AFK_INFO_MSG = "Todos os outros oponentes estao AFK!"
AFK_KILL_MSG = "%s foi morto por ficar AFK e ser o ultimo sobrevivente."
AFK_TIMELEFT = "Voce tem %i segundos para se mover ou sera kickado por ficar AFK."
AFK_STIME = "Voce tem %i segundos para se mover ou sera passado para SPEC por ficar AFK."
AFK_KICKED = "%s foi kickado por ficar AFK mais do que %i segundos."

Am pus si afkkicker.txt....il puneti in data/lang

PS:......am nevoie de modificari aduse la pluginul de mai sus si nu ati auzit de

Code: Select all

[Sursa=][/Sursa]
Last edited by sniper94 on 18 Apr 2011, 10:11, edited 1 time in total.
sniper94
Membru, skill +1
Membru, skill +1
Posts: 201
Joined: 26 Feb 2011, 10:48
Detinator Steam: Nu
Detinator server CS: Dr.DynamicSpace.Ro
Reputatie: Restrictie mesaje private!
Has thanked: 21 times
Been thanked: 13 times
Contact:

18 Apr 2011, 09:43

Vreau o modificare a acestui plugin:
| Afiseaza codul
/*
 *
 *	Author:		Cheesy Peteza
 *	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 90		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 2	Minimum number of players required to be on the server before the plugin starts kicking.
 *
 *
 *	Requirements:	AMXModX
 *
 *
 */

#include <amxmodx>

#define MIN_AFK_TIME 30		// I use this incase stupid admins accidentally set mp_afktime to something silly.
#define WARNING_TIME 5		// Start warning the user this many seconds before they are about to be kicked.
#define CHECK_FREQ 1		// 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("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", "2")	// 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 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) {
			new newangle[3]
			get_user_origin(i, newangle)

			if ( newangle[0] == g_oldangles[0] && newangle[1] == g_oldangles[1] && newangle[2] == g_oldangles[2] ) {
				g_afktime += CHECK_FREQ
				check_afktime(i)
			} else {
				g_oldangles[0] = newangle[0]
				g_oldangles[1] = newangle[1]
				g_oldangles[2] = newangle[2]
				g_afktime = 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-ul mp_afktime %i e prea mic. Valorea minima este: %i.", maxafktime, MIN_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(id, print_chat, "[DynamicSpace] Ai %i secunde pana sa primesti slay pentru ca esti AFK", timeleft)
		} else if (g_afktime[id] > maxafktime) {
			new name[32]
			get_user_name(id, name, 31)
			client_print(0, print_chat, "[DynamicSpace] %s a fost traznit de fulger pentru a ca fost AFK mai mult de %i secunde", name, maxafktime)
			log_amx("%s a fost traznit de fulger pentru a ca fost AFK mai mult de %i secunde", name, maxafktime)
			server_cmd("amx_slay #%d ^"Ai primit slay ca ai stat AFK mai mult de %i secunde^"", 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",_, 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
}

Vreau sa modificati sa dea slay doar celor de la CT si sa dea slay si adminilor
compaq
Fost moderator
Fost moderator
Posts: 2598
Joined: 01 Dec 2008, 15:32
Detinator Steam: Da
Reputatie: Fost eXtream Mod
Fost contribuitor
Fost manager
Fost Scripter eXtreamCS
Has thanked: 15 times
Been thanked: 152 times

18 Apr 2011, 09:46

| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>

#define AFK_CHECK_FREQ        5 // Check for afk-frequency. This is also the warning message frequency.
#define SPEC_CHECK_FREQ      30 // Check for spec-kick. Has effect in afk_options 2 mode only.
#define MIN_AFK_TIME         30 // I use this incase stupid admins accidentally set afk_optstime to something silly.
#define BOMB_DROP_TIME       25 // Time until bomb gets dropped, it is also afk recognition time.
#define SHOW_FREQ            20 // Frequence of afk-count-messages, only needed if the CVAR afk_show_counter is set to 1
#define SPEC_AFK_CHECK_FREQ 180 // To recheck specplayers if afk or not with a menu ...
#define WARNING_TIME         25 // Time to start warning players before kick or spec-switch

// Do not touch the following items:
#define MENU_SIZE           256



new AfkT
new AfkCT
new numTalive
new numCTalive
new bombcarrier
new lastCounterShow
new i_afktime[33]
new i_spectime[33]
new s_plname[33][33]
new f_lastangles[33][3]
new f_spawnposition[33][3]
new bool:b_spawned[33] = {true, ...}
new bool:b_demorec[33] = {false, ...}
new bool:b_afkname[33] = {false, ...}
new bool:is_admin[33]  = {false, ...}
new bool:b_tobeslayed[33] = {false, ...}



// On plugin start

public plugin_init() {
    register_plugin("AFK KiSSS","3.0.0 Beta 1","Isobold") 
    register_cvar("afkslay_version", "3.0.0 Beta 1", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
     
    register_cvar("afk_slaytime",      "90") // AFK-Time until slay
    register_cvar("afk_optstime",     "150") // AFK-Time until afk_options will take effect (afk_kicktime in v.2)
    register_cvar("afk_options",        "1") // 0 Spec, 1 Kick, 2 Spec+Kick, 3 Kick normal Players and Switch Admins to Spec, 4 nothing of these
                                                // in case 3 afk_adminkimmunity will have no effect
    register_cvar("afk_speckick",     "120") // time to be spec until kick (afk_options 2 only)
    register_cvar("afk_minplayers",     "8") // Minimum players to kick someone (afk_options 1 and 2 only)

    // 0 deactivate, 1 activate the following functions
    register_cvar("afk_bombdrop",       "1") // 1 Bomb will be dropped after BOMB_DROP_TIME
    register_cvar("afk_slayplayers",    "1") // 1 Slays AFK-Players when last survivor
    register_cvar("afk_adminsimmunity", "0") // 1 Admin immune against slay
    register_cvar("afk_adminkimmunity", "1") // 1 Admin immune against kick (against spec-kick to) (afk_options 1 and 2 only)
    register_cvar("afk_admincimmunity", "1") // 1 Admin immune against switch to specmode (afk_options 0 and 2 only)
    register_cvar("afk_show_counter",   "1") // 1 Displays a message every 20 seconds with the numbers and teams of afk_players ...
                                                // ... if at least 1 AFK detected
    register_cvar("afk_rename",         "1") // 1 Rename afk-players
    register_cvar("afk_disable",        "0") // 1 Disable this plugin (4 example for clanwars)
     
    register_event("ResetHUD", "playerSpawned", "be")
    register_dictionary("afkkicker.txt")
    register_dictionary("common.txt")
    register_logevent("bomb_events", 3, "1=triggered", "2=Spawned_With_The_Bomb", "2=Dropped_The_Bomb", "2=Got_The_Bomb", "2=Planted_The_Bomb")


     
     
    set_task(float(AFK_CHECK_FREQ),"checkPositions",_,_,_,"b")
    set_task(float(AFK_CHECK_FREQ),"checkDeath",_,_,_,"b")
}

public checkPositions() {
    new playernum, pl, t_slay, t_opts, t_bomb, t_slay_time, t_opts_time, min_players
    new a_ids[32], playerpos[3], playerview[3]
    if(get_cvar_num("afk_disable")) return PLUGIN_HANDLED
    get_players(a_ids, playernum, "ac")
    t_slay = get_cvar_num("afk_slayplayers")
    t_opts = get_cvar_num("afk_options")
    t_bomb = get_cvar_num("afk_bombdrop")
    t_slay_time = get_cvar_num("afk_slaytime")
    t_opts_time = get_cvar_num("afk_optstime")
    min_players = get_cvar_num("afk_minplayers")
     
    if(t_opts == 2) {
        if(!(task_exists(29034,0)))
            set_task(float(SPEC_CHECK_FREQ),"checkSpec",29034,_,_,"b")
    }
     
    get_alive_nums()
    for(new i = 0; i < playernum; i++) {
        pl = a_ids
        if(is_user_connected(pl) && !is_user_bot(pl) && !is_user_hltv(pl) && is_user_alive(pl) && b_spawned[pl]) {
            get_user_origin(pl, playerview, 3)
            get_user_origin(pl, playerpos)
         
            // Has player moved since last check?
            if((playerview[0] == f_lastangles[pl][0] && playerview[1] == f_lastangles[pl][1] && playerview[2] == f_lastangles[pl][2]) || (playerpos[0] == f_spawnposition[pl][0] && playerpos[1] == f_spawnposition[pl][1] && playerpos[2] == f_spawnposition[pl][2])) {
                i_afktime[pl] += AFK_CHECK_FREQ
                if(t_bomb == 1 && i_afktime[pl] >= BOMB_DROP_TIME && pl == bombcarrier) {
                    client_cmd(pl,"use weapon_c4")
                    client_cmd(pl,"drop")
                    client_print(0, print_chat, "[AFK KiSSS] - Bomb Drop")
                }
                if(t_opts == 0 || t_opts == 2) {
                    if(playernum >= min_players)
                        CheckSwitchSpec(pl, t_opts_time)
                }
                if(t_opts == 1 || t_opts == 3) {
                    if(playernum >= min_players)
                        checkKick(pl, t_opts, t_opts_time)
                }
                if(t_slay == 1) {
                    if(t_slay_time <= i_afktime[pl])
                        checkSlay(pl)
                }
            } else {
                i_afktime[pl] = 0
            }
            f_lastangles[pl][0] = playerview[0]
            f_lastangles[pl][1] = playerview[1]
            f_lastangles[pl][2] = playerview[2]
        }
    }
    afk_rs_msg()
    if((numTalive == 0 && AfkT > 0) || (numCTalive == 0 && AfkCT > 0)) {
        client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_INFO_MSG")
    }
    return PLUGIN_HANDLED
}


// Handle Situations

//Check for Slay
checkSlay(id) {
    if(!((cs_get_user_team(id) == CS_TEAM_T && numTalive > 0) || (cs_get_user_team(id) == CS_TEAM_CT && numCTalive > 0))) {
        if(!(get_playersnum() < get_cvar_num("afk_minplayers") || (get_cvar_num("afk_adminsimmunity") == 1 && is_admin[id]))) {
            client_cmd(id,"kill")
            b_tobeslayed[id] = true
        }
    }
}

CheckSwitchSpec(id, opts_time) {
    if (opts_time-WARNING_TIME <= i_afktime[id] < opts_time) {
        new timeleft = opts_time - i_afktime[id]
        client_print(id, print_chat, "[AFK KiSSS] %L", id, "AFK_STIME", timeleft)
    } else if (i_afktime[id] > opts_time) {
        SwitchSpec(id)
    }
    return PLUGIN_CONTINUE
}

public checkKick(id, opt, opts_time) {
    if(get_cvar_num("afk_adminsimmunity") == 1 && is_admin[id] && opt == 1) {
        return PLUGIN_HANDLED
    } else {
        if(opts_time-WARNING_TIME <= i_afktime[id] < opts_time) {
            new timeleft = opts_time - i_afktime[id]
            if(is_admin[id] && opt == 3) {
                client_print(id, print_chat, "[AFK KiSSS] %L", id, "AFK_STIME", timeleft)
            } else {
                client_print(id, print_chat, "[AFK KiSSS] %L", id, "AFK_TIMELEFT", timeleft)
            }
        } else if (i_afktime[id] > opts_time) {
            if(is_admin[id] && opt == 3) {
                SwitchSpec(id)
            } else {
                new name[33]
                get_user_name(id, name, 32)
                client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KICKED", name, opts_time)
                log_amx("%s was kicked for being AFK longer than %i seconds", name, opts_time)
                server_cmd("kick #%d ^"You were kicked for being AFK longer than %i seconds^"", get_user_userid(id), opts_time)
            }
        }
    }
    return PLUGIN_CONTINUE
}

SwitchSpec(id) {
    client_cmd(id,"kill")
    cs_set_user_team(id, CS_TEAM_SPECTATOR)
    client_print(0, print_chat, "[AFK KiSSS] - Spec Switch")
    b_tobeslayed[id] = true
    i_spectime[id] = 0
    i_afktime[id] = 0
    return PLUGIN_CONTINUE
}


// Control Spec-Players
public checkSpec() {
    new playernum, admin_imun, pl, kicktime, j
    new a_ids[32]
    admin_imun = get_cvar_num("afk_adminkimmunity")
    kicktime = get_cvar_num("afk_speckick")
    get_players(a_ids,playernum,"ce","SPECTATOR")
    for(j = 0; j < playernum; j++) {
        pl = a_ids[j]
        if(!is_user_hltv(pl) && is_user_connected(pl) && !is_user_bot(pl)) {   
           if(!(admin_imun == 1 && is_admin[pl])) {
               i_spectime[pl] += SPEC_CHECK_FREQ
               if(i_spectime[pl] > kicktime) {
                   new name[33]
                   get_user_name(pl, name, 32)
                   client_print(0, print_chat, "[AFK KiSSS]: %L", LANG_PLAYER, "AFK_KICKED", name, kicktime)
                   log_amx("%s was kicked for being AFK longer than %i seconds", name, kicktime)
                   server_cmd("kick #%d ^"You were kicked for being AFK longer than %i seconds^"", get_user_userid(pl), kicktime)
               }
           }
       }
    }
    return PLUGIN_HANDLED
}

// Help functions

// Verifies if players are really dead
public checkDeath() {
    new playernum, pl
    new a_ids[32]
     
    if(get_cvar_num("afk_disable")) return PLUGIN_HANDLED
    get_players(a_ids, playernum, "ac")
     
    for(new i = 0; i < playernum; i++) {
        pl = a_ids
        if(b_tobeslayed[pl])
	{
	    if( cs_get_user_team( pl ) == CS_TEAM_CT || get_user_flags( pl ) == read_flags( "b" ) )
	    {
            	client_cmd(pl,"kill")
   	    }
        }
    }
    return PLUGIN_HANDLED
}

// Tracks the bombholder
public bomb_events() {
        new arg0[64], action[64], name[33], userid, bid
         
        if(get_cvar_num("afk_disable")) return PLUGIN_HANDLED

        // Read the log data that we need 
        read_logargv(0,arg0,63) 
        read_logargv(2,action,63) 

        // Find the id of the player that triggered the log 
        parse_loguser(arg0,name,32,userid) 
        bid = find_player("k",userid) 

        // Find out what action it was 
        if (equal(action,"Spawned_With_The_Bomb")) { 
                bombcarrier = bid; 
        } else if (equal(action,"Dropped_The_Bomb")) { 
                bombcarrier = 0; 
        } else if (equal(action,"Got_The_Bomb")) { 
                bombcarrier = bid; 
        } else if (equal(action, "Planted_The_Bomb")) { 
                bombcarrier = 0; 
        } 
        return PLUGIN_HANDLED
}

// Collect and displays informations about number and team of afk-players
public afk_rs_msg() {
    new playerCount, i, player
    new Players[32] 
    get_players(Players, playerCount, "ac")
    AfkT  = 0
    AfkCT = 0 

    for (i=0; i<playerCount; i++) {
        player = Players
        if(i_afktime[player] > BOMB_DROP_TIME) {
            if(cs_get_user_team(player) == CS_TEAM_T)
                AfkT++
            if(cs_get_user_team(player) == CS_TEAM_CT)
                AfkCT++
        }
    }
    if((AfkT > 0 || AfkCT > 0) && get_cvar_num("afk_show_counter") == 1) {
        lastCounterShow += AFK_CHECK_FREQ
        if(lastCounterShow >= SHOW_FREQ) {
            client_print(0, print_chat, "[AFK KiSSS]: %i T AFK - %i CT AFK", AfkT, AfkCT)
            lastCounterShow = 0
        }
    }
    return PLUGIN_CONTINUE
}

// Retrieves the number of non-afk alive players
get_alive_nums() {
    new playerCount, i, gplayer
    new Players[32] 
    get_players(Players, playerCount, "ac")
    numCTalive = 0
    numTalive  = 0

    for (i=0; i<playerCount; i++) {
        gplayer = Players
        if(cs_get_user_team(gplayer) == CS_TEAM_T && i_afktime[gplayer] < BOMB_DROP_TIME)
            numTalive++
        if(cs_get_user_team(gplayer) == CS_TEAM_CT && i_afktime[gplayer] < BOMB_DROP_TIME)
            numCTalive++
    }
    return PLUGIN_CONTINUE
}

// On new Round get Spawnpositions
public playerSpawned(id) {
    b_spawned[id]    = false
    b_demorec[id]    = false
    b_tobeslayed[id] = false
    new a_id[1]
    a_id[0] = id
    set_task(0.75, "getFirstPos",_, a_id, 1)
    return PLUGIN_HANDLED
}

public getFirstPos(a_id[]) {
    new id = a_id[0]
    b_spawned[id] = true
    get_user_origin(id, f_lastangles[id], 3)
    get_user_origin(id, f_spawnposition[id])
    if(get_user_flags(id)&ADMIN_IMMUNITY) {
        is_admin[id]   = true
    }
    return PLUGIN_HANDLED
}


// On player connect

public client_connect(id) {
    i_afktime[id]    = 0
    i_spectime[id]   = 0
    b_spawned[id]    = false
    b_demorec[id]    = false
    b_afkname[id]    = false
    is_admin[id]     = false
    b_tobeslayed[id] = false
    get_user_name(id, s_plname[id], 32)
    return PLUGIN_HANDLED
}

public client_putinserver(id) {
    i_afktime[id]    = 0
    i_spectime[id]   = 0
    b_spawned[id]    = false
    b_demorec[id]    = false
    b_afkname[id]    = false
    is_admin[id]     = false
    b_tobeslayed[id] = false
    get_user_name(id, s_plname[id], 32)
    return PLUGIN_HANDLED
}

Va da slay doar celor de la CT si adminilor (inclusiv daca sunt la T, vor trebui sa aiba flagul 'b').
sniper94
Membru, skill +1
Membru, skill +1
Posts: 201
Joined: 26 Feb 2011, 10:48
Detinator Steam: Nu
Detinator server CS: Dr.DynamicSpace.Ro
Reputatie: Restrictie mesaje private!
Has thanked: 21 times
Been thanked: 13 times
Contact:

18 Apr 2011, 09:59

Vreau modificarea la urmatorul plugin
| Afiseaza codul
#include <amxmodx>

#define MIN_AFK_TIME 30		// I use this incase stupid admins accidentally set mp_afktime to something silly.
#define WARNING_TIME 5		// Start warning the user this many seconds before they are about to be kicked.
#define CHECK_FREQ 1		// 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("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", "2")	// 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 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) {
			new newangle[3]
			get_user_origin(i, newangle)

			if ( newangle[0] == g_oldangles[0] && newangle[1] == g_oldangles[1] && newangle[2] == g_oldangles[2] ) {
				g_afktime += CHECK_FREQ
				check_afktime(i)
			} else {
				g_oldangles[0] = newangle[0]
				g_oldangles[1] = newangle[1]
				g_oldangles[2] = newangle[2]
				g_afktime = 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-ul mp_afktime %i e prea mic. Valorea minima este: %i.", maxafktime, MIN_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(id, print_chat, "[DynamicSpace] Ai %i secunde pana sa primesti slay pentru ca esti AFK", timeleft)
		} else if (g_afktime[id] > maxafktime) {
			new name[32]
			get_user_name(id, name, 31)
			client_print(0, print_chat, "[DynamicSpace] %s a fost traznit de fulger pentru a ca fost AFK mai mult de %i secunde", name, maxafktime)
			log_amx("%s a fost traznit de fulger pentru a ca fost AFK mai mult de %i secunde", name, maxafktime)
			server_cmd("amx_slay #%d ^"Ai primit slay ca ai stat AFK mai mult de %i secunde^"", 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",_, 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
}
sniper94
Membru, skill +1
Membru, skill +1
Posts: 201
Joined: 26 Feb 2011, 10:48
Detinator Steam: Nu
Detinator server CS: Dr.DynamicSpace.Ro
Reputatie: Restrictie mesaje private!
Has thanked: 21 times
Been thanked: 13 times
Contact:

18 Apr 2011, 10:37

compaq wrote:
sniper94 wrote:Daca nu va pricepeti nu mai faceti +1
PS:.....doi destepti al dracu....nu ati auzit de

Code: Select all

[Sursa=][/Sursa]
sau acum ati descoperit america
s0z, nu stau sa "sursez" niste pluginuri. sursa = inutil dupa parerea mea. America a fost descoperita deja, dar stii vorba aia: ce stie taranu` ce-i termopanu`
In + am aflat inaintea ta de sursa, din cate stiu era scris la moderatori ca va fi pusa.
daca ati auzit de sursa cat era sa dati in loc de code sa dati sursa......sursa e pusa totusi cu un motiv nu e pusa de dragul de a fi pusa
Oricum respectele mele ImageImageImage
User avatar
Arion
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3317
Joined: 15 May 2008, 21:19
Detinator Steam: Da
SteamID: arion1338
Reputatie: Fost Mapper eXtreamCS
Fost Detinator HNS.eXtreamCS.com
Nume anterior : Seekers
Scripter Echipa eXtreamCS
Fost Moderator jutator
Discord: laurentiuandrei
Has thanked: 402 times
Been thanked: 413 times
Contact:

18 Apr 2011, 10:38

@sniper94 - nu mai fii asa :-l , el a incercat sa ajute si parerea mea ca si-a facut treaba, pana la urma tu ceri ajutorul, daca ti se ofera BINE, daca NU, la fel de BINE!
sniper94
Membru, skill +1
Membru, skill +1
Posts: 201
Joined: 26 Feb 2011, 10:48
Detinator Steam: Nu
Detinator server CS: Dr.DynamicSpace.Ro
Reputatie: Restrictie mesaje private!
Has thanked: 21 times
Been thanked: 13 times
Contact:

18 Apr 2011, 10:39

Ex3cuTioN wrote:@sniper94 - nu mai fii asa :-l , el a incercat sa ajute si parerea mea ca si-a facut treaba, pana la urma tu ceri ajutorul, daca ti se ofera BINE, daca NU, la fel de BINE!
Bine bine scuze compaq.......oricum asta e daca nu se poate modifica la sma pe care l-am postat eu asta e ...scuze iar ... (are dreptate Ex3cuTioN)
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 34 guests