⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
🇹🇷 TR Lokasyon | 🛡️ Gelişmiş DDoS Koruması | ⚡ Düşük Ping | 🎧 Kesintisiz TS3 | Hostlar
Sponsor Görsel 2
SponsorSponsor

Server İçinde Çok Kaynak Tüketen Plugini Nasıl Bulabilirim ?

Konu

#1
Merhaba, sunucu konsolumdan bir kaç satır ektedir:

Kod:
stats
CPU   In    Out   Uptime  Users   FPS    Players
33.00  3.21  5.56      27   261  682.84       1
stats
CPU   In    Out   Uptime  Users   FPS    Players
34.00  3.08  5.13      27   261   43.28       1
stats
CPU   In    Out   Uptime  Users   FPS    Players
37.33  2.84  4.31      27   261   42.35       1
stats
CPU   In    Out   Uptime  Users   FPS    Players
39.25  2.79  3.98      27   262  817.69       1


Fark ettiğiniz üzere CPU hep aynı seyrine keza diğer değerlerde aynı şekilde fakat FPS hariç. 800 FPS lerden anlık 1-2 saniyeliğine 40FPS lere düşmeler görüyorum, oyun içinde hissediliyor. 

Sunucuda 129 adet plugin mevcut hepsini tek tek deneyip bulmak bir hayli imkansız gibi. Bunun daha kısa bir yolu var mı ? Bu anlık kaynak tüketen eklentiyi nasıl tespit edebilirim ?
Kod:
Ah sh*t, here we go again. - DAVASI OLMAYAN ADAM
Cevapla
#2
Eklentilerde pre think, post think, cmd start gibi kısımlar salisede oyuncuya komut gönderdiği için optimize yazılmazsa böyle sorunlar olabilir.
Steam:Tıkla • Discord: lynchk
Cevapla
#3
(29-09-2023, 22:27)Lynchk Adlı Kullanıcıdan Alıntı: Eklentilerde pre think, post think, cmd start gibi kısımlar salisede oyuncuya komut gönderdiği için optimize yazılmazsa böyle sorunlar olabilir.

PostThink ve PreThink komutları 29 adet eklentide mevcut. Bu komutların optimize yazılması demek ne demek, mesela ne olduğunda "FM_PlayerPreThink" tetikleniyor ?

düzeltmek isterim tek tek kontrol edip
Kod:
Ah sh*t, here we go again. - DAVASI OLMAYAN ADAM
Son Düzenleme: 29-09-2023, 22:37, Düzenleyen: Hüseyin [YMK].
Cevapla
#4
Örnek olarak aşağıdaki eklentiyi bırakıyorum;
(https://www.webailesi.com/konu-m4a1-ve-a...leme-27828)
PHP Kod:
#include <amxmodx>
#include <reapi>

new const g_szZoomModel[] = "models/reddot.mdl";
new 
bool:g_iZoom[MAX_CLIENTS+1], szOldModel[MAX_CLIENTS+1][64], bool:iAlive[MAX_CLIENTS+1];

public 
plugin_init()
{
    register_plugin("Weapon Zoom Model""0.1""LyNcH");

    register_event("CurWeapon""CurWeapon""be""1=1");
    RegisterHookChain(RG_CBasePlayer_PreThink"PreThink", .post true);
    RegisterHookChain(RG_CBasePlayer_Spawn"PlayerSpawn", .post true);
    RegisterHookChain(RG_CBasePlayer_Killed"PlayerKilled", .post true);
    RegisterHookChain(RG_CBasePlayerWeapon_DefaultDeploy"DefaultDeploy", .post false);
}

public 
client_putinserver(id)
{
    g_iZoom[id] = false;
    iAlive[id] = false;
    szOldModel[id][0] = EOS;
}

public 
plugin_precache()
{
    precache_model(g_szZoomModel);
}

public 
CurWeapon(id)
{
    if(!is_user_alive(id) || !is_user_connected(id))
    {
        return PLUGIN_HANDLED;
    }
    
    
new iWeaponId get_user_weapon(id);

    if(iWeaponId == CSW_AK47)
    {
        set_entvar(idvar_viewmodelg_iZoom[id] ? g_szZoomModel:szOldModel[id]);
    }
    else
    {
        g_iZoom[id] = false;
    }

    return PLUGIN_CONTINUE;
}

public 
DefaultDeploy(const iEntityszViewModel[], szWeaponModel[], iAnimszAnimExt[], skiplocal
{
    new id get_member(iEntitym_pPlayer);
    new WeaponIdType:iWeapon get_member(iEntitym_iId);

    if(iWeapon == WEAPON_AK47)
    {
        if(!g_iZoom[id])
        {
            formatex(szOldModel[id], charsmax(szOldModel[]), "%s"szViewModel); /* Zoomu kapatinca eski modelini vermek icin sakliyoruz */
        }
    }
}

public 
PreThink(const id)
{
    if(!iAlive[id])
    {
        return;
    }

    static iButtoniButton get_entvar(idvar_button);
    static iOldButtoniOldButton get_entvar(idvar_oldbuttons);

    static iWeapon; static szClip; static szAmmo;
    iWeapon get_user_weapon(idszClipszAmmo);

    if(iWeapon == CSW_AK47)
    {
        if(g_iZoom[id])
        {
            static activeItemactiveItem get_member(idm_pActiveItem);

            if(szClip == || get_member(activeItemm_Weapon_fInReload))
            {
                g_iZoom[id] = false/* Mermi biterse veya reload atarsa zoomu kapatiyoruz */

                CurWeapon(id);
            }
        }

        if((iButton IN_ATTACK2) && !(iOldButton IN_ATTACK2))
        {
            g_iZoom[id] = !g_iZoom[id];

            CurWeapon(id);
        }
    }
}

public 
PlayerSpawn(const id)
{
    if(!is_user_alive(id))
    {
        return;
    }

    iAlive[id] = true;
}

public 
PlayerKilled(const thispevAttacker
{
    if(!is_user_connected(pevAttacker))
    {
        return;
    }

    iAlive[this] = false;

PreThink kullanırken is_user_alive sorgusu yapmak yerine bir değişken oluşturup canlı olup olmadığını kontrol ettirdik.
Böylece sürekli sorgu yapmak yerine daha optimize bir kullanım oldu.Bu sadece bir örnek.Bunun gibi başka durumlarda olabilir.
Steam:Tıkla • Discord: lynchk
Cevapla
#5
@Lynchk PreThink ne yapıldığında tetikleniyor ki ? Saniye içerisinde sürekli gönderilen bir komut mu ?
Kod:
Ah sh*t, here we go again. - DAVASI OLMAYAN ADAM
Cevapla
#6
cpuyu maplerde etkiliyor diyo biliyorum mesela dark cpuyu emiyor.
alphagaming since 2018
Cevapla
#7
(30-09-2023, 09:57)Hüseyin [YMK] Adlı Kullanıcıdan Alıntı: @Lynchk PreThink ne yapıldığında tetikleniyor ki ? Saniye içerisinde sürekli gönderilen bir komut mu ?

Her frame'de oyuncuya komut gönderiyor diyebiliriz.
Steam:Tıkla • Discord: lynchk
Cevapla
#8
Sunucu konsolundaki şu 2 satır neyi ifade ediyor ?

Kod:
SZ_GetSpace: overflow on DAVASI OLMAYAN ADAM
WARNING: datagram overflowed for DAVASI OLMAYAN ADAM

Oyunumda çok donuyor ayrıca.
Kod:
Ah sh*t, here we go again. - DAVASI OLMAYAN ADAM
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task