Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

Lame Connection Punisher 1.2 ( Ping & Loss Kicker ,Ban ) Eklentisi

Counter-Strike 1.6 Eklenti Paylaşımı

Moderatör: Moderatörler

Forum kuralları
DİKKAT !
Konu Başlığı veya içeriği BÜYÜK HARFLERLE olan konular direk silenecektir !
Burası eklenti paylaşım bölümüdür ve yönetici onaylıdır. Alakasız konular hiçbir şekilde onaylanmayacaktır

Eklenti eklerken eklenti kurallarına uyulması gerekir.
En önemlisi paylaşılan eklenti şablonuna uyulması gerekir.
Bu hususlara dikkat edilmeyip paylaşılan eklenti konuları silenecektir.
Kullanıcı avatarı

Konu Sahibi
HCKHN
Mesajlar: 32
Kayıt: Pzr Mar 05, 2017 8:36 pm

Lame Connection Punisher 1.2 ( Ping & Loss Kicker ,Ban ) Eklentisi

Mesaj gönderen HCKHN »

Eklenti Adı: Lame Connection Punisher 1.2
Eklenti Yapımcısı: MeRcyLeZZ
Eklenti Açıklaması;
Bu eklenti, "kötü" bağlantıları olan kişileri otomatik olarak reddederek sunucunuzun oyun deneyimini geliştirir,böylece artık haritada gezinen veya vurulması zor oyuncularla uğraşmak zorunda kalmazsınız.
Ayrıca, çok fazla bant genişliği kullanan P2P programları gibi bağlantılarını etkileyebilecek arka plan uygulamalarını çalıştıran istemcileri de algılayabilir.

  • Nasıl Çalışır


Oyuncunun ping dalgalanmalarını (ms) ve paket kaybı (loss) oranlarını kontrol eder, çünkü bunlar benim deneyimime göre herhangi bir sorun olup olmadığını belirlemede en güvenilir faktörler gibi görünmektedir.

  • Diğer Eklentilere göre farkı

Ping Kickleyiciler gibi diğer çözümler genellikle iyi veya kötü bağlantıları olan oyuncuları doğru bir şekilde ayırt edemez.
Oyuncunun ping'i çok düşükse kötü bir bağlantı tespit etmeyebilirler ve aynı şekilde, ping limiti aşan ancak yine de iyi bir bağlantısı olan bir oyuncuyu kickleyerek potansiyel oyuncuları kaybetmenize neden olabilirler.
  • Kurulum
.amxx dosyasını eklentiler klasörünüze çıkarın ve adını plugins.ini dosyasına ekleyin
.txt dosyasını sunucunuzdaki "data/lang" klasörüne çıkarın

  • CVARS

  • Eklentinin kontrol etmek için 2 ana cvar vardır, ancak varsayılan değerler önerilir.

  • En iyi bağlantılarda bile küçük ping dalgalanmalarının ve paket kaybının meydana geldiğini lütfen unutmayın, bu nedenle bazı kötü sonuçlar için açık olmadığınız sürece bunları çok düşük ayarlamayın!
  • lcp_flux_lımıt <50 > - Ping dalgalanma sınırı (MS cinsinden)
  • lcp_loss_lımıt < 5> - Kayıp Paket (Loss paketlerin % ' si)
  • Ek olarak, aşağıdaki ayarları değiştirerek eklentinin bu oyuncuları kicklemesi veya banlaması gerekip gerekmediğini belirleyebilirsiniz.
  • lcp_punishment <0/1/2> - 0 = Kick / 1 = SteamID ile yasaklama / 2 = IP ile yasaklama
  • lcp_ban_time < 5 > - Dakika cinsinden yasaklama süresi (kalıcı olarak yasaklamak için 0 kullanın)
  • Son olarak, dokunulmazlık bayrakları olan oyuncular hiç kontrol edilmeyecektir.
  • lcp_ımmunıty <"a"> - Etki Etmeyeceği Dokunulmazlık Harfi

Kod: Tümünü seç

/*================================================================================
    
    ------------------------------------
    -*- Lame Connection Punisher 1.2 -*-
    ------------------------------------
    
    ~~~~~~~~~~~~~~~
    - Description -
    ~~~~~~~~~~~~~~~
    
    This plugin improves your server's gameplay experience by automatically
    rejecting clients with "bad" conections, so that you'll never have to
    deal with players skipping around the map or being hard to hit anymore.
    
    It can also detect clients running any background applications that may
    be affecting their connection, such as P2P programs using up too many
    bandwidth.
    
    ~~~~~~~~~~~~~~~~~~~~
    - How Does It Work -
    ~~~~~~~~~~~~~~~~~~~~
    
    It checks for player's ping fluctuations and packet loss rates, since
    these seem to be the most trustable factors in determining if there are
    any issues, in my experience.
    
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    - What Makes It Different -
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Other solutions, such as Hing Ping Kickers, usually can't tell apart
    players with good or bad connections accurately. They may not detect
    a bad connection if the player's ping is too low, and likewise, they
    may end up kicking a player who's ping exceeds the limit but has a
    nice connection nonetheless, thus making you loose potential players.
    
    ~~~~~~~~~
    - CVARS -
    ~~~~~~~~~
    
    There are 2 main cvars to control the plugin's behavior (tolerance),
    though the default values are recommended.
    
    Please note that small ping fluctuations and packet loss occur even
    on the best connections, so DO NOT set these too low, unless you are
    in for some nasty results!
    
    * lcp_flux_limit [50] - Ping fluctuation limit (in ms.)
    * lcp_loss_limit [5] - Loss limit (% of packets)
    
    Additionally, you can specify whether the plugin should kick or ban
    these players by changing the following settings.
    
    * lcp_punishment [0/1/2] - 0 = Kick / 1 = Ban by SteamID / 2 = Ban by IP
    * lcp_ban_time [5] - Ban time in minutes (use 0 to permanently ban)
    
    Lastly, players with the immunity flags will not be checked at all.
    
    * lcp_immunity ["a"] - Immunity flags
    
    ~~~~~~~~~~~~~
    - Changelog -
    ~~~~~~~~~~~~~
    
    * v1.0: (Jan 05, 2009)
       - Public release
       - Added ban support
       - Added immunity feature
    
    * v1.1: (Feb 08, 2009)
       - Code optimized
    
    * v1.1a: (Feb 24, 2009)
       - Fixed IP ban code retrieving unneeded port number
    
    * v1.2: (Jun 06, 2011)
       - Fixed plugin so that it works on all HL mods
    
=================================================================================*/

#include <amxmodx>

const TASK_JOINMSG = 100
const TASK_DOCHECKS = 200
#define ID_JOINMSG (taskid-TASK_JOINMSG)

new cvar_flux, cvar_loss, cvar_punishment, cvar_bantime, cvar_immunity
new g_maxplayers, g_connected[33]
new g_lastping[33], g_fluxcounter[33], g_losscounter[33], g_immune[33]

// I wouldn't recommend lowering these unless
// you wanna pick up a lot of false positives
const Float:CHECK_FREQ = 5.0
const FLUX_TESTS = 12
const LOSS_TESTS = 12

public plugin_init()
{
    register_plugin("Lame Connection Punisher", "1.2", "MeRcyLeZZ")
    register_dictionary("lame_connection_punisher.txt")
    
    cvar_flux = register_cvar("lcp_flux_limit", "50")
    cvar_loss = register_cvar("lcp_loss_limit", "5")
    cvar_punishment = register_cvar("lcp_punishment", "0")
    cvar_bantime = register_cvar("lcp_ban_time", "5")
    cvar_immunity = register_cvar("lcp_immunity", "a")
    g_maxplayers = get_maxplayers()
}

public plugin_cfg()
{
    // Start checking players
    set_task(CHECK_FREQ, "do_checks", TASK_DOCHECKS, _, _, "b")
}

public client_putinserver(id)
{
    set_task(16.0, "join_message", id+TASK_JOINMSG)
    g_connected[id] = true
    check_flags(id)
}

public client_authorized(id)
{
    check_flags(id)
}

public client_infochanged(id)
{
    check_flags(id)
}

public client_disconnect(id)
{
    remove_task(id+TASK_JOINMSG)
    g_fluxcounter[id] = 0
    g_losscounter[id] = 0
    g_lastping[id] = 0
    g_immune[id] = 0
    g_connected[id] = false
}

public do_checks()
{
    static id, ping, loss, name[32], auth[32], userid, minutes
    
    for (id = 1; id <= g_maxplayers; id++)
    {
        if (!g_connected[id] || g_immune[id])
            continue;
        
        get_user_ping(id, ping, loss)
        
        if (loss > get_pcvar_num(cvar_loss))
            g_losscounter[id]++
        else if (g_losscounter[id] > 0)
            g_losscounter[id]--
        
        if (g_losscounter[id] >= LOSS_TESTS)
        {
            get_user_name(id, name , sizeof name - 1)
            userid = get_user_userid(id)
            
            switch (get_pcvar_num(cvar_punishment))
            {
                case 1:
                {
                    get_user_authid(id, auth, sizeof auth - 1)
                    minutes = get_pcvar_num(cvar_bantime)
                    
                    if (minutes > 0)
                    {
                        client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_BAN", name, minutes)
                        log_amx("%L", LANG_SERVER, "MSG_ALL_BAN", name, minutes)
                        server_cmd("kick #%d ^"%L^";wait;banid %d ^"%s^";wait;writeid", userid, id, "MSG_TARGET_LOSS", minutes, auth)
                    }
                    else
                    {
                        client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_PBAN", name)
                        log_amx("%L", LANG_SERVER, "MSG_ALL_PBAN", name)
                        server_cmd("kick #%d ^"%L^";wait;banid 0 ^"%s^";wait;writeid", userid, id, "MSG_TARGET_LOSS", auth)
                    }
                }
                case 2:
                {
                    get_user_ip(id, auth, sizeof auth - 1, 1)
                    minutes = get_pcvar_num(cvar_bantime)
                    
                    if (minutes > 0)
                    {
                        client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_BAN", name, minutes)
                        log_amx("%L", LANG_SERVER, "MSG_ALL_BAN", name, minutes)
                        server_cmd("kick #%d ^"%L^";wait;addip %d ^"%s^";wait;writeip", userid, id, "MSG_TARGET_LOSS", minutes, auth)
                    }
                    else
                    {
                        client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_PBAN", name)
                        log_amx("%L", LANG_SERVER, "MSG_ALL_PBAN", name)
                        server_cmd("kick #%d ^"%L^";wait;addip 0 ^"%s^";wait;writeip", userid, id, "MSG_TARGET_LOSS", auth)
                    }
                }
                default:
                {
                    client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_KICK", name)
                    log_amx("%L", LANG_SERVER, "MSG_ALL_KICK", name)
                    server_cmd("kick #%d ^"%L^"", userid, id, "MSG_TARGET_LOSS")
                }
            }
            continue;
        }
        
        if (abs(ping - g_lastping[id]) > get_pcvar_num(cvar_flux))
            g_fluxcounter[id]++
        else if (g_fluxcounter[id] > 0)
            g_fluxcounter[id]--
        
        if (g_fluxcounter[id] >= FLUX_TESTS)
        {
            get_user_name(id, name , sizeof name - 1)
            userid = get_user_userid(id)
            
            switch (get_pcvar_num(cvar_punishment))
            {
                case 1:
                {
                    get_user_authid(id, auth, sizeof auth - 1)
                    minutes = get_pcvar_num(cvar_bantime)
                    
                    if (minutes > 0)
                    {
                        client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_BAN", name, minutes)
                        log_amx("%L", LANG_SERVER, "MSG_ALL_BAN", name, minutes)
                        server_cmd("kick #%d ^"%L^";wait;banid %d ^"%s^";wait;writeid", userid, id, "MSG_TARGET_FLUX", minutes, auth)
                    }
                    else
                    {
                        client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_PBAN", name)
                        log_amx("%L", LANG_SERVER, "MSG_ALL_PBAN", name)
                        server_cmd("kick #%d ^"%L^";wait;banid 0 ^"%s^";wait;writeid", userid, id, "MSG_TARGET_FLUX", auth)
                    }
                }
                case 2:
                {
                    get_user_ip(id, auth, sizeof auth - 1, 1)
                    minutes = get_pcvar_num(cvar_bantime)
                    
                    if (minutes > 0)
                    {
                        client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_BAN", name, minutes)
                        log_amx("%L", LANG_SERVER, "MSG_ALL_BAN", name, minutes)
                        server_cmd("kick #%d ^"%L^";wait;addip %d ^"%s^";wait;writeip", userid, id, "MSG_TARGET_FLUX", minutes, auth)
                    }
                    else
                    {
                        client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_PBAN", name)
                        log_amx("%L", LANG_SERVER, "MSG_ALL_PBAN", name)
                        server_cmd("kick #%d ^"%L^";wait;addip 0 ^"%s^";wait;writeip", userid, id, "MSG_TARGET_FLUX", auth)
                    }
                }
                default:
                {
                    client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG_ALL_KICK", name)
                    log_amx("%L", LANG_SERVER, "MSG_ALL_KICK", name)
                    server_cmd("kick #%d ^"%L^"", userid, id, "MSG_TARGET_FLUX")
                }
            }
            continue;
        }
        
        g_lastping[id] = ping
    }
}

public join_message(taskid)
{
    client_print(ID_JOINMSG, print_chat, "[AMXX] %L", ID_JOINMSG, "JOIN_MSG", get_pcvar_num(cvar_flux), get_pcvar_num(cvar_loss))
}

check_flags(id)
{
    new flags[6]
    get_pcvar_string(cvar_immunity, flags, charsmax(flags))
    g_immune[id] = get_user_flags(id) & read_flags(flags)
}
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Etiketler:
Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Taha Demirbaş
Mesajlar: 10423
Kayıt: Cum Tem 08, 2016 10:05 pm
Konum: Türkiye
İletişim:

Lame Connection Punisher 1.2 ( Ping & Loss Kicker ,Ban ) Eklentisi

Mesaj gönderen Taha Demirbaş »

Eklenti onaylanmıştır.

Link:
Linklerini gizle
Linki Kopyala
Cevapla