Jump to content

Cerere slay CT & TS


haij

Recommended Posts

Nume : Adica numele pluginului care da slay si la ct si la ts  daca stiam cum i spune nu mai faceam topic aici


Versiune : De unde vr sa stiu? scriptere


Descriere detaliata : 


Vreau un plugin care sa dea slay dupa 15 secunde fara mesaje in chat DAR PENTRU AMBELE ECHIPE  !!!!!


 


Nu aveti nici o treaba doar am scris si cu litere mari ce ma interesa dar degeaba nu ma asteptam la altceva


Edited by haij
Link to comment
Share on other sites

@haij?, vezi daca iti este bun asta... dar il pune spec dupa 30 sau 40 secunde

http://rangfort.ro/forum/index.php?/topic/17183-plugin-rf-anti-afkbrb/

Nume : Nu stiu nu am gasit
Versiune : ce model e asta?

 

 

 




 

Nume : Nu stiu nu am gasit

Versiune : De unde vr sa stiu? scriptere

1. Tocmai ai pus la Numele Topicului Cerere Slay CT & TS. E deajuns sa scrii la nume "Slay CT & TS".

2.Ai grija, nu ne lua peste picior.

 

Am revenit cu edit:

 

Vezi daca merge Asta .

 

 *

 *      Extremly configurable AFK-Handler.
 *  Kick/Slay/Spec-Switcher for CS with bombdrop
 *      Version 3 is a complete rewrite from scratch by Isobold (www.clan-nva.de)
 *  AFK-Slay-idea seen on some other servers, hints from my loyal testers and ideas seen on other plugins description.
 *      
 *  Date:                  19 - Jul - 2005
 *  Requirements:   AMXModX (cstrike, engine and amxmisc module)
 * 
 *   
 *
 *
 *  Need help with this?
 *
 *
 *
 */
 
#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",      "15") // 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

}

 

 

Pluginu afkkicker.txt il pui in amxmodx/data/lang si dai paste acolo

Adaugi afkkisss.amxx in addons/amxmodx/configs si la plugin.ini

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...