⭐🚀 TkyNET | Blacklist ve Profesyonel DDoS Korumalı TeamSpeak 3 Sunucuları 🚀⭐
Sponsor Görsel
🌐 www.furiazm.com ⏰ 7/24 aktif Yönetim 💬 Discord.gg/furiaclancs 💰Ücretsiz Adminlik/Vip alımı 🌟 Türkiye’nin yeni en gelişmiş Zombie Plague sunucusu
Sponsor Görsel 2
SponsorSponsor

Yüksek Ping Işınlayıcı

Yüksek Ping Işınlayıcı
Merhaba,
Bu eklentiyi neden istiyorum ?
Surf & Bhop & Kz sunucularında yüksek ping ile zamanlayıcının geç başlaması açığı kullanılıyor. Bu açık, ani ping artışlarından kaynaklanıyor. Ani ping artışı olduğu zaman, zamanlayıcı geç başlıyor ve kolay yoldan rekor kırıyorlar. Bunun için araştırma yaptım ancak istediğim gibi bir eklenti bulamadım. 
İsteğe Gelirsek;
Belli bir ping'in üstüne çıkan oyuncu pingi çıkmadan önceki konumu baz alınıp oraya ışınlanmasını (teleport) istiyorum. Örneğin bir futbol sahası düşünün, orta sahayı geçince zamanlayıcı başlıyor. Oyuncu orta sahadan kaleye doğru koşmaya başladı ve ani pingi çıkmasıyla zamanlayıcı geç başladı istemeden bug yaptı, eklenti bu ping loss choke artışını anlayıp tekrardan eski konumu olan orta sahaya ışınlanmasını istiyorum. (Eklenti oyuncunun eski konumunu 3-5 saniyede bir kontrol ederse daha iyi bir sonuç alabiliriz.)
Destekleriniz için şimdiden teşekkürler,
İyi Forumlar,
RE: Yüksek Ping Işınlayıcı
PHP Kod:
#pragma semicolon 1

#define DEBUG

#define PLUGIN_AUTHOR ""
#define PLUGIN_VERSION "0.00"

#include < sourcemod >
#include < sdktools >
#include < smlib >
#include < surftimer >

#pragma newdecls required

ConVar ping_time, ping_difference;
float g_vec[ MAXPLAYERS + 1 ][ 3 ], g_angle[ MAXPLAYERS + 1 ][ 3 ];
Handle ping_timer[ MAXPLAYERS + 1 ];
int client_ping[ MAXPLAYERS + 1 ];
public 
Plugin myinfo = 
{
    
name = "",
    
author = PLUGIN_AUTHOR,
    
description = "",
    
version = PLUGIN_VERSION,
    
url = ""
};

public 
void OnPluginStart( )
{
    
HookEvent( "player_spawn", EventPlayerSpawn );
    
ping_time = CreateConVar( "ping_time", "5", "Kaç saniyede 1 pingin kontrol edilceğini ayarlar" );
    
ping_difference = CreateConVar( "ping_difference", "10", "Maksimum ping farkini ayarlar" );
}
public 
void OnClientDisconnect( int client )
{
    if( 
ping_timer[ client ] != null ) delete ping_timer[ client ];
}
public 
Action EventPlayerSpawn( Event event, const char[ ] name, bool dontbroadcast )
{
    
int client = GetClientOfUserId( event.GetInt( "userid" ) );
    if( 
ping_timer[ client ] != null ) delete ping_timer[ client ];
    if( 
IsClientInGame( client ) )
    {
        
GetClientAbsOrigin( client, g_vec[ client ] );
        
GetClientEyeAngles( client, g_angle[ client ] );
        
client_ping[ client ] = Client_GetFakePing( client );
        
ping_timer[ client ] = CreateTimer( GetConVarFloat( ping_time ), CheckPing, GetClientUserId( client ), TIMER_REPEAT );
    }
}
public 
Action CheckPing( Handle timer, int userid )
{
    
int client = GetClientOfUserId( userid );
    if( !
IsValidClient( client ) ) return Plugin_Stop;
    if( 
IsClientInGame( client ) && IsPlayerAlive( client ) )
    {
        if( 
Math_Abs( Client_GetFakePing( client ) - client_ping[ client ] ) >=  GetConVarInt( ping_difference ) )
        {
            
surftimer_SafeTeleport( client, g_vec[ client ], g_angle[ client ], NULL_VECTOR );
            
client_ping[ client ] = Client_GetFakePing( client );
        }
        else
        {
            
GetClientAbsOrigin( client, g_vec[ client ] );
            
GetClientEyeAngles( client, g_angle[ client ] );
            
client_ping[ client ] = Client_GetFakePing( client );
        }
    }
    return 
Plugin_Continue;
}
stock bool IsValidClient( int client )
{
    if( 
1 <= client <= MaxClients )
    {
        return 
true;
    }
    else
    {
        return 
false;
    }
} 
Denemedim hatası varsa söylersin.
.smxping.smx(Dosya Boyutu: 7,06 KB | İndirme Sayısı: 0)
Son Düzenleme: 05-08-2020, 22:21, Düzenleyen: Anıl Can

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Konuyu Okuyanlar: 1 Ziyaretçi