simple afk manager for teams

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

simple afk manager for teams

Мнение от Buzdrev » 18 Мар 2017, 02:53

Използвам този плъгин за кикване на афк-та http://pastebin.com/3iVriqUU
Можете ли да ми го преправите да киква само даден отбор, а не и двата отбора?
Благодаря предварително!

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

Re: simple afk manager for teams

Мнение от JustInCase » 18 Мар 2017, 10:44

Код за потвърждение: Избери целия код

/*
Plugin: Simple AFK Manager
Version: 2.3
© [gm-project.net] #Staff.

Support on alliedmods.net: http://forums.alliedmods.net/showthread.php?t=110536
Support on gm-project.net: http://gm-community.net/showthread.php?t=581
*/

/*
* It is FIXED version NOT original!
* Changes by Safety1st
*/

#include <amxmodx>
#include <fakemeta>
#include <colorprint>

#define PLUGIN "Simple AFK Manager"
#define VERSION "2.4"
#define AUTHOR "[gm-project.net] #Staff"

#define PREFIX "^1[^4Control-Game^1]"

#define OFFSET_LAST_MOVEMENT 124

new Float:g_spec_time[33]

new g_Reason, g_aTime, g_sTime, g_Report, g_Info,g_iTeam
new g_Immunity, g_showMsg
new g_afkCount[2], bool:gbNoCheckNow

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar("sam_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY)
    register_dictionary("sam.txt")
    
    g_Reason = register_cvar("afk_kick_reason", "AFK")
    g_aTime = register_cvar("afk_time", "150.0")
    g_sTime = register_cvar("afk_spec_time", "300.0")
    g_Report = register_cvar("afk_report", "2")
    g_showMsg = register_cvar("afk_showmsg", "0")
    g_Info = register_cvar("afk_info_time", "20.0")
    g_Immunity = register_cvar("afk_immunity_flag", "а")
    g_iTeam = register_cvar("afk_team", "1")
    
    set_task(10.0, "checkAFK", _, _, _, "b")
    register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" )
}

public client_putinserver(id) {
    g_spec_time[id] = 0.0
}

public Event_NewRound() {
    gbNoCheckNow = true // avoid checking first 10 seconds after new round (formerly dead players should be able to move)
}

public checkAFK() {
    static bAnnounce = false
    new iPlayers[32], iCount, i, iPlayer
    get_players( iPlayers, iCount, "ch" )   // skip bots and HLTV
    
    if ( !iCount )
        return
    
    if (gbNoCheckNow) {
        gbNoCheckNow = false
        if (get_pcvar_num(g_showMsg))
            bAnnounce = true
        return
    }
    
    if (bAnnounce) {
        ColorPrint(0, "%s %L", PREFIX, LANG_SERVER, "AFK_MSG", g_afkCount[1], g_afkCount[0])
        bAnnounce = false
    }
    
    new Float:afk_time = get_pcvar_float(g_aTime)
    new Float:afk_spec_time = get_pcvar_float(g_sTime)
    new Float:afk_info_time = get_pcvar_float(g_Info)
    new Float:cur_time, Float:last_activity
    new iTeam
    g_afkCount[0] = 0
    g_afkCount[1] = 0
    new strFlag[20]
    get_pcvar_string(g_Immunity, strFlag, 19)
    new flag = read_flags(strFlag)
    cur_time = get_gametime()
    if (afk_time)
        afk_time = cur_time - afk_time
    if (afk_spec_time)
        afk_spec_time = cur_time - afk_spec_time
    if (afk_info_time)
        afk_info_time = cur_time - afk_info_time
    
    for ( i = 0; i < iCount; i++ ) {
        iPlayer = iPlayers[i]
        if (get_user_flags(iPlayer) & flag)
            continue
        
        iTeam = is_user_ingame(iPlayer)
        if (iTeam)
        {
            if (!is_user_alive(iPlayer) || !afk_time)
                continue
            g_spec_time[iPlayer] = 0.0
            last_activity = get_pdata_float(iPlayer, OFFSET_LAST_MOVEMENT)
            if (last_activity < afk_time)
                kickAFK(iPlayer)
            else
            {
                if (last_activity < afk_info_time) {
                    ColorPrint(iPlayer, "%s %L", PREFIX, LANG_PLAYER, "AFK_WARN", floatround(last_activity - afk_time))
                    g_afkCount[iTeam - 1]++
                }
            }
        }
        else
        {
            if (!afk_spec_time)
                continue
            if (!g_spec_time[iPlayer])
                g_spec_time[iPlayer] = cur_time
            else {
                new iGetTeam = get_pcvar_num(g_iTeam)
                if (g_spec_time[iPlayer] < afk_spec_time && get_user_team(id) == iGetTeam)
                    kickAFK(iPlayer)
            }
        }
    }
}

is_user_ingame(id) {
    new szTeam[2]
    get_user_team(id, szTeam, 1)
    switch( szTeam[0] ) {
        case 'T': return 1
            case 'C': return 2
            default : return 0
    }
    return 0
}

public kickAFK(id) {
    new name[32], reason[128], report
    
    get_user_name(id, name, 31)
    get_pcvar_string(g_Reason, reason, 127)
    report = get_pcvar_num(g_Report)
    
    message_begin( MSG_ONE, SVC_DISCONNECT, _, id )
    write_string( reason )
    message_end( )
    
    switch (report) {
        case 2 : ColorPrint(0, "%s %L", PREFIX, LANG_SERVER, "AFK_KICK", name)
            case 1 : {
            new iPlayers[32], iCount, i, iPlayer
            get_players( iPlayers, iCount, "ch" )   // skip bots and HLTV
            if ( !iCount )
                return
            for ( i = 0; i < iCount; i++ ) {
                iPlayer = iPlayers[i]
                if (get_user_flags(iPlayer) & ADMIN_CHAT)
                    ColorPrint(iPlayer, "%s %L", PREFIX, LANG_PLAYER, "AFK_KICK", name)
            }
        }
    }
}
/* Fedcomp is bot */ 
CVAR:
afk_team "1" - За кой отбор да важи AFK Kicker - а
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

Re: simple afk manager for teams

Мнение от Buzdrev » 18 Мар 2017, 11:00

undefined symbol "id" при опит за компилация


Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

Re: simple afk manager for teams

Мнение от Buzdrev » 18 Мар 2017, 11:09

127

Аватар
Unbr3akable
Извън линия
Потребител
Потребител
Мнения: 178
Регистриран на: 21 Дек 2016, 20:50
Получена благодарност: 6 пъти

Re: simple afk manager for teams

Мнение от Unbr3akable » 18 Мар 2017, 11:13

Код за потвърждение: Избери целия код

/*
Plugin: Simple AFK Manager
Version: 2.3
© [gm-project.net] #Staff.

Support on alliedmods.net: http://forums.alliedmods.net/showthread.php?t=110536
Support on gm-project.net: http://gm-community.net/showthread.php?t=581
*/

/*
* It is FIXED version NOT original!
* Changes by Safety1st
*/

#include <amxmodx>
#include <fakemeta>
#include <colorprint>

#define PLUGIN "Simple AFK Manager"
#define VERSION "2.4"
#define AUTHOR "[gm-project.net] #Staff"

#define PREFIX "^1[^4Control-Game^1]"

#define OFFSET_LAST_MOVEMENT 124

new Float:g_spec_time[33]

new g_Reason, g_aTime, g_sTime, g_Report, g_Info,g_iTeam
new g_Immunity, g_showMsg
new g_afkCount[2], bool:gbNoCheckNow

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar("sam_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY)
    register_dictionary("sam.txt")
    
    g_Reason = register_cvar("afk_kick_reason", "AFK")
    g_aTime = register_cvar("afk_time", "150.0")
    g_sTime = register_cvar("afk_spec_time", "300.0")
    g_Report = register_cvar("afk_report", "2")
    g_showMsg = register_cvar("afk_showmsg", "0")
    g_Info = register_cvar("afk_info_time", "20.0")
    g_Immunity = register_cvar("afk_immunity_flag", "а")
    g_iTeam = register_cvar("afk_team", "1")
    
    set_task(10.0, "checkAFK", _, _, _, "b")
    register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" )
}

public client_putinserver(id) {
    g_spec_time[id] = 0.0
}

public Event_NewRound() {
    gbNoCheckNow = true // avoid checking first 10 seconds after new round (formerly dead players should be able to move)
}

public checkAFK() {
    static bAnnounce = false
    new iPlayers[32], iCount, i, iPlayer
    get_players( iPlayers, iCount, "ch" )   // skip bots and HLTV
    
    if ( !iCount )
        return
    
    if (gbNoCheckNow) {
        gbNoCheckNow = false
        if (get_pcvar_num(g_showMsg))
            bAnnounce = true
        return
    }
    
    if (bAnnounce) {
        ColorPrint(0, "%s %L", PREFIX, LANG_SERVER, "AFK_MSG", g_afkCount[1], g_afkCount[0])
        bAnnounce = false
    }
    
    new Float:afk_time = get_pcvar_float(g_aTime)
    new Float:afk_spec_time = get_pcvar_float(g_sTime)
    new Float:afk_info_time = get_pcvar_float(g_Info)
    new Float:cur_time, Float:last_activity
    new iTeam
    g_afkCount[0] = 0
    g_afkCount[1] = 0
    new strFlag[20]
    get_pcvar_string(g_Immunity, strFlag, 19)
    new flag = read_flags(strFlag)
    cur_time = get_gametime()
    if (afk_time)
        afk_time = cur_time - afk_time
    if (afk_spec_time)
        afk_spec_time = cur_time - afk_spec_time
    if (afk_info_time)
        afk_info_time = cur_time - afk_info_time
    
    for ( i = 0; i < iCount; i++ ) {
        iPlayer = iPlayers[i]
        if (get_user_flags(iPlayer) & flag)
            continue
        
        iTeam = is_user_ingame(iPlayer)
        if (iTeam)
        {
            if (!is_user_alive(iPlayer) || !afk_time)
                continue
            g_spec_time[iPlayer] = 0.0
            last_activity = get_pdata_float(iPlayer, OFFSET_LAST_MOVEMENT)
            if (last_activity < afk_time)
                kickAFK(iPlayer)
            else
            {
                if (last_activity < afk_info_time) {
                    ColorPrint(iPlayer, "%s %L", PREFIX, LANG_PLAYER, "AFK_WARN", floatround(last_activity - afk_time))
                    g_afkCount[iTeam - 1]++
                }
            }
        }
        else
        {
            if (!afk_spec_time)
                continue
            if (!g_spec_time[iPlayer])
                g_spec_time[iPlayer] = cur_time
            else {
                new iGetTeam = get_pcvar_num(g_iTeam)
                if (g_spec_time[iPlayer] < afk_spec_time && get_user_team(iPlayer) == iGetTeam)
                    kickAFK(iPlayer)
            }
        }
    }
}

is_user_ingame(id) {
    new szTeam[2]
    get_user_team(id, szTeam, 1)
    switch( szTeam[0] ) {
        case 'T': return 1
            case 'C': return 2
            default : return 0
    }
    return 0
}

public kickAFK(id) {
    new name[32], reason[128], report
    
    get_user_name(id, name, 31)
    get_pcvar_string(g_Reason, reason, 127)
    report = get_pcvar_num(g_Report)
    
    message_begin( MSG_ONE, SVC_DISCONNECT, _, id )
    write_string( reason )
    message_end( )
    
    switch (report) {
        case 2 : ColorPrint(0, "%s %L", PREFIX, LANG_SERVER, "AFK_KICK", name)
            case 1 : {
            new iPlayers[32], iCount, i, iPlayer
            get_players( iPlayers, iCount, "ch" )   // skip bots and HLTV
            if ( !iCount )
                return
            for ( i = 0; i < iCount; i++ ) {
                iPlayer = iPlayers[i]
                if (get_user_flags(iPlayer) & ADMIN_CHAT)
                    ColorPrint(iPlayer, "%s %L", PREFIX, LANG_PLAYER, "AFK_KICK", name)
            }
        }
    }
}
/* Fedcomp is bot */  

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

Re: simple afk manager for teams

Мнение от JustInCase » 18 Мар 2017, 11:25

Buzdrev написа:undefined symbol "id" при опит за компилация
Бях сбъркал index-a извинявам се.
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

Re: simple afk manager for teams

Мнение от Buzdrev » 18 Мар 2017, 11:28

То добре, ама промяна няма, сложил съм квара да е 2, тоест да работи само за CT отбора, сега го тествах, но ме киква без значение кой отбор съм.

Аватар
JustInCase
Извън линия
Потребител
Потребител
Мнения: 582
Регистриран на: 14 Окт 2016, 23:31
Се отблагодари: 4 пъти
Получена благодарност: 15 пъти

Re: simple afk manager for teams

Мнение от JustInCase » 18 Мар 2017, 13:58

Код за потвърждение: Избери целия код

/*
Plugin: Simple AFK Manager
Version: 2.3
© [gm-project.net] #Staff.

Support on alliedmods.net: http://forums.alliedmods.net/showthread.php?t=110536
Support on gm-project.net: http://gm-community.net/showthread.php?t=581
*/

/*
* It is FIXED version NOT original!
* Changes by Safety1st
*/

#include <amxmodx>
#include <fakemeta>
#include <colorprint>

#define PLUGIN "Simple AFK Manager"
#define VERSION "2.4"
#define AUTHOR "[gm-project.net] #Staff"

#define PREFIX "^1[^4Control-Game^1]"

#define OFFSET_LAST_MOVEMENT 124

new Float:g_spec_time[33]

new g_Reason, g_aTime, g_sTime, g_Report, g_Info,g_iTeam
new g_Immunity, g_showMsg
new g_afkCount[2], bool:gbNoCheckNow

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar("sam_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY)
    register_dictionary("sam.txt")
    
    g_Reason = register_cvar("afk_kick_reason", "AFK")
    g_aTime = register_cvar("afk_time", "150.0")
    g_sTime = register_cvar("afk_spec_time", "300.0")
    g_Report = register_cvar("afk_report", "2")
    g_showMsg = register_cvar("afk_showmsg", "0")
    g_Info = register_cvar("afk_info_time", "20.0")
    g_Immunity = register_cvar("afk_immunity_flag", "а")
    g_iTeam = register_cvar("afk_team", "1")
    
    set_task(10.0, "checkAFK", _, _, _, "b")
    register_event( "HLTV", "Event_NewRound", "a", "1=0", "2=0" )
}

public client_putinserver(id) {
    g_spec_time[id] = 0.0
}

public Event_NewRound() {
    gbNoCheckNow = true // avoid checking first 10 seconds after new round (formerly dead players should be able to move)
}

public checkAFK() {
    static bAnnounce = false
    new iPlayers[32], iCount, i, iPlayer
    get_players( iPlayers, iCount, "ch" )   // skip bots and HLTV
    
    if ( !iCount )
        return
    
    if (gbNoCheckNow) {
        gbNoCheckNow = false
        if (get_pcvar_num(g_showMsg))
            bAnnounce = true
        return
    }
    
    if (bAnnounce) {
        ColorPrint(0, "%s %L", PREFIX, LANG_SERVER, "AFK_MSG", g_afkCount[1], g_afkCount[0])
        bAnnounce = false
    }
    
    new Float:afk_time = get_pcvar_float(g_aTime)
    new Float:afk_spec_time = get_pcvar_float(g_sTime)
    new Float:afk_info_time = get_pcvar_float(g_Info)
    new Float:cur_time, Float:last_activity
    new iTeam
    g_afkCount[0] = 0
    g_afkCount[1] = 0
    new strFlag[20]
    get_pcvar_string(g_Immunity, strFlag, 19)
    new flag = read_flags(strFlag)
    cur_time = get_gametime()
    if (afk_time)
        afk_time = cur_time - afk_time
    if (afk_spec_time)
        afk_spec_time = cur_time - afk_spec_time
    if (afk_info_time)
        afk_info_time = cur_time - afk_info_time
    
    for ( i = 0; i < iCount; i++ ) {
        iPlayer = iPlayers[i]
        if (get_user_flags(iPlayer) & flag)
            continue
        
        iTeam = is_user_ingame(iPlayer)
        if (iTeam)
        {
            if (!is_user_alive(iPlayer) || !afk_time)
                continue
            g_spec_time[iPlayer] = 0.0
            last_activity = get_pdata_float(iPlayer, OFFSET_LAST_MOVEMENT)
            if (last_activity < afk_time)
                kickAFK(iPlayer)
            else
            {
                if (last_activity < afk_info_time) {
                    ColorPrint(iPlayer, "%s %L", PREFIX, LANG_PLAYER, "AFK_WARN", floatround(last_activity - afk_time))
                    g_afkCount[iTeam - 1]++
                }
            }
        }
        else
        {
            if (!afk_spec_time)
                continue
            if (!g_spec_time[iPlayer])
                g_spec_time[iPlayer] = cur_time
            else {
                if (g_spec_time[iPlayer] < afk_spec_time )
                    kickAFK(iPlayer)
            }
        }
    }
}

is_user_ingame(id) {
    new szTeam[2]
    get_user_team(id, szTeam, 1)
    switch( szTeam[0] ) {
        case 'T': return 1
            case 'C': return 2
            default : return 0
    }
    return 0
}

public kickAFK(id) {
    new name[32], reason[128], report
    new iGetTeam = get_pcvar_num(g_iTeam)
    if(!get_user_team(id) == iGetTeam)
    return
    get_user_name(id, name, 31)
    get_pcvar_string(g_Reason, reason, 127)
    report = get_pcvar_num(g_Report)
    
    message_begin( MSG_ONE, SVC_DISCONNECT, _, id )
    write_string( reason )
    message_end( )
    
    switch (report) {
        case 2 : ColorPrint(0, "%s %L", PREFIX, LANG_SERVER, "AFK_KICK", name)
            case 1 : {
            new iPlayers[32], iCount, i, iPlayer
            get_players( iPlayers, iCount, "ch" )   // skip bots and HLTV
            if ( !iCount )
                return
            for ( i = 0; i < iCount; i++ ) {
                iPlayer = iPlayers[i]
                if (get_user_flags(iPlayer) & ADMIN_CHAT)
                    ColorPrint(iPlayer, "%s %L", PREFIX, LANG_PLAYER, "AFK_KICK", name)
            }
        }
    }
}
/* Fedcomp is bot */   
MANSION - HNS : 45.144.155.99:27026
ONLINE

Аватар
Buzdrev
Извън линия
Потребител
Потребител
Мнения: 247
Регистриран на: 12 Окт 2016, 16:45
Се отблагодари: 5 пъти
Получена благодарност: 1 път
Обратна връзка:

Re: simple afk manager for teams

Мнение от Buzdrev » 18 Мар 2017, 14:28

Пак работи и за двата отбора.

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 20 госта