CS Sunucuları için eklentiler(güvenlik vs,vs)[Güncelleme : 22.07.2010] | | Çoğu serverda sxe olduğu için engellemeleri o yapsada + güvenlik ve sxe olmayan serverlar için aşağıdaki eklentileri kullanabilirsiniz.
Açıkcası çoğu eski kodlardır kimisi benim kendi yazımım olup kimisi düzenlemelerle yapılmıştır. Kimi de alliedmodsda bulduğum ve kendi sunucularımızın bazılarında kullandığımız eklentilerdir.
1) WWCL Emulator Config Düzenlemesi.
Bazı serverlarda denk gelmişsinizdir. Özelliklede 1.5 serverlarında.
Oyuna girdikden bir süre sonra konsolda bazı komutları düzelterek oyun içinde
[xxxsunucu.com] Konfig taraması başarılı şeklinde mesaj veren eklentidir.Kısacası config dosyası içinde varolan komutları kullanıcının cliente yollayarak default değerine çevirir. Bu işlemi oyuna girişte 1 kere yapmaktadır.
enforcecfg fonksiyonu tarafımca düzenlenmiştir(ufak bir düzenleme).
Aliaslar kaldırılmıştır PHP- Kodu: #include <amxmodx>
#define MAXCVARS 64
new g_checkCvar[MAXCVARS][24]
new g_checkValue[MAXCVARS][8]
new g_checkNum
#define MAXMSG 24
new g_consoleMsg[MAXMSG][64]
new g_consoleNum
new g_ackCode[33]
new g_clientPos[33]
/* Initialization point */
public plugin_init()
{
register_plugin("WWCL Emulator","0.1","default")
register_cvar( "wwclconfig_version","unknown" ,FCVAR_SERVER|FCVAR_UNLOGGED|FCVAR_SPONLY)
register_cvar("wwclconfig","1")
register_cvar("wwclconfig_delay","10")
register_cvar("wwclconfig_break","7200")
register_cvar("wwclconfig_frequency","0.25")
register_cvar("wwclconfig_loadcfg","1")
register_cvar("wwclconfig_logfile","wwclconfig.log")
register_cvar("wwclconfig_action","disconnect")
register_cvar("wwclconfig_success","say ^"[CsTurkey] : Konfig Taramasi Basarili^"")
register_srvcmd("wwclconfig_check","cmdCheck")
register_srvcmd("wwclconfig_msg","cmdMsg")
register_clcmd("wwclack","cmdAck")
if ( get_cvar_num( "wwclconfig_loadcfg" ) )
server_cmd("exec wwclconfig.cfg") //düzeltme dosyamiz
}
public cmdCheck( )
{
if ( g_checkNum >= MAXCVARS ){
console_print( 0 , "WWCL: Cvars enforce limit reached!" )
return PLUGIN_HANDLED
}
if ( read_argv( 1 , g_checkCvar[g_checkNum], 23 )
&& read_argv( 2, g_checkValue[g_checkNum] , 7 ) )
++g_checkNum
else
console_print( 0 , "Usage: wwclconfig_check <cvar> <value>" )
return PLUGIN_HANDLED
}
public cmdMsg( )
{
if ( g_consoleNum >= MAXMSG ){
console_print( 0 , "WWCL: Console message limit reached!" )
return PLUGIN_HANDLED
}
if ( read_argv( 1 , g_consoleMsg[g_consoleNum], 127 ) )
++g_consoleNum
else
console_print( 0 , "Usage: wwclconfig_msg <message>" )
return PLUGIN_HANDLED
}
public client_connect( id )
{
if ( get_cvar_num( "wwclconfig" ) )
for(new i = 0 ; i < g_consoleNum; ++i )
client_cmd( id , "echo ^"%s^"", g_consoleMsg[ i ] )
}
public client_putinserver( id )
{
if ( get_cvar_num( "wwclconfig" ) ) {
new param[1]
param[0] = id
g_clientPos[ id ] = 0
g_ackCode[ id ] = 0
set_task( get_cvar_float( "wwclconfig_delay" ) , "enforceCfg" , 100+id , param , 1 )
}
}
public client_disconnect( id )
{
remove_task( 100 + id )
remove_task( 200 + id )
}
public blockAction( param[] )
{
new id = param[0]
new action[256]
get_cvar_string( "wwclconfig_action", action , 255 )
client_cmd( id , action , "wwclack", "wwclack" )
}
public cmdAck( id )
{
new arg[8]
if ( read_argv( 1 , arg , 7 ) && g_ackCode[ id ] && str_to_num( arg ) == g_ackCode[ id ] )
{
g_ackCode[ id ] = 0
remove_task( 200 + id )
if ( ++g_clientPos[ id ] < g_checkNum ) {
new param[1]
param[0] = id
set_task( get_cvar_float( "wwclconfig_frequency" ) , "enforceCfg" , 100+id , param , 1 )
}
else {
new action[256]
get_cvar_string( "wwclconfig_success", action , 255 )
client_cmd( id , action )
}
}
else {
new param[1]
param[0] = id
blockAction( param )
}
return PLUGIN_HANDLED
}
public enforceCfg( param[] )
{
new id = param[0]
g_ackCode[ id ] = random_num( 1 , 99999 )
client_cmd( id , "%s %s ; wwclack %d; echo [ CsTurkey ] %s ( %s ) olarak duzeltildi." ,
g_checkCvar[ g_clientPos[ id ] ], g_checkValue[ g_clientPos[ id ] ], g_ackCode[ id ],
g_checkCvar[ g_clientPos[ id ] ], g_checkValue[ g_clientPos[ id ] ] )
//consoldaki düzeltme yazimiz
set_task( 0.75 , "blockAction", 200 + id, param , 1 )
}
Aşağıdaki komutları wwclconfig.cfg olarak kaydedin cstrike dizinine atın. PHP- Kodu: wwclconfig_check "c_maxdistance" "200"
wwclconfig_check "c_maxpitch" "90"
wwclconfig_check "c_maxyaw" "135"
wwclconfig_check "c_minpitch" "0"
wwclconfig_check "c_minyaw" "-135"
wwclconfig_check "cl_gaitestimation" "1"
wwclconfig_check "cl_lc" "1"
wwclconfig_check "cl_lw" "1"
wwclconfig_check "cl_bob" "0.01"
wwclconfig_check "cl_bobcycle" "0.8"
wwclconfig_check "cl_bobup" "0.5"
wwclconfig_check "cl_movespeedkey" "0.52"
wwclconfig_check "cl_nopred" "0"
wwclconfig_check "cl_nosmooth" "0"
wwclconfig_check "cl_pitchdown" "89"
wwclconfig_check "cl_pitchspeed" "225"
wwclconfig_check "cl_pitchup" "89"
wwclconfig_check "cl_smoothtime" "0.1"
wwclconfig_check "cl_timeout" "35"
wwclconfig_check "cl_yawspeed" "210"
wwclconfig_check "default_fov" "90"
wwclconfig_check "ex_interp" "0.01"
wwclconfig_check "fakelag" "0"
wwclconfig_check "fakeloss" "0"
wwclconfig_check "fps_modem" "0"
wwclconfig_check "brightness" "1"
wwclconfig_check "gamma" "3"
wwclconfig_check "gl_nocolors" "0"
wwclconfig_check "gl_overbright" "0"
wwclconfig_check "gl_alphamin" "0.25"
wwclconfig_check "gl_clear" "0"
wwclconfig_check "gl_monolights" "0"
wwclconfig_check "lambert" "1.5"
wwclconfig_check "lightgamma" "2.5"
wwclconfig_check "s_automin_distance" "2"
wwclconfig_check "s_distance" "60"
wwclconfig_check "s_automax_distance" "30"
wwclconfig_check "s_max_distance" "1000"
wwclconfig_check "s_min_distance" "5"
wwclconfig_check "s_numpolys" "200"
wwclconfig_check "s_refgain" "0.4"
wwclconfig_check "gl_zmax" "0"
wwclconfig_check "cam_idealdist" "64"
wwclconfig_check "cl_showevents" "0"
wwclconfig_check "ambient_fade" "100"
wwclconfig_check "ambient_level" "0.300"
wwclconfig_check "s_occfactor" "0.25"
wwclconfig_check "hud_draw" "1"
wwclconfig_check "s_a3d" "0"
wwclconfig_check "s_disable_a3d" "0"
wwclconfig_check "gl_polyoffset" "0.1"
wwclconfig_check "max_smokepuffs" "120"
wwclconfig_check "cl_forwardspeed" "400"
wwclconfig_check "cl_sidespeed" "400"
wwclconfig_check "texgamma" "2"
wwclconfig_check "r_wadtextures" "0"
wwclconfig_check "sv_aim" "0"
wwclconfig_check "gl_spriteblend" "9"
2) Komut Engelleme
Belirlediğiniz süre zarfında kullanıcının konsoluna yine belirlediğiniz komutları girdirmenize yarıyor. Kısacası sürekli gönderim yaparak değerleri sabit tutmaya yarıyor. PHP- Kodu: #include <amxmodx>
#define PLUGIN "R10-Cvar Block"
#define VERSION "1.0"
#define AUTHOR "Genki"
new koruma[33]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("genki_komutlar","gl_spriteblend 9;ex_interp 0.1") //komutları burada belirleyebilirsiniz
}
public client_connect(id)
{
koruma[id] = 1; //client bağlanınca koruma aktif olsun
set_task(0.75, "komut_duzelt", id, _, _, "b") //0.75 saniyede sürekli gönderme olacak,düsürüp arttirabilirsiniz.
}
public client_disconnect(id)
{
koruma[id] = 0; //client bağlantısı kopunca korumayı kapat
remove_task(id) //taskleri temizle
}
public komut_duzelt(id)
{
if(!koruma[id] && !is_user_alive(id)) // olu veya aktif degil ise islemi durdur
{
return PLUGIN_HANDLED
}
static komutlar[128]
get_cvar_string("genki_komutlar",komutlar,127) //komutlari cvardan al
client_cmd(id,"%s",komutlar) //komutlari cliente yolla
return PLUGIN_CONTINUE
}
3) CFG Engelleyicisi
Aslında sözde cfg engelleyicisidir. Piyasada kullanılan bazı cfglerde yanlış setinfo bildirimleri olduğu için onları yakalayarak kullanıcının servera girişini engellemektedir. PHP- Kodu: #include <amxmodx>
#define PLUGIN "Cfg Engelleyici"
#define VERSION "1.0"
#define AUTHOR "Genki"
new s4[33],fris[33],thirdperson[33],left_hand[33],vgui_menus[33],lefthand[33],dm[33],ah[33],ghosts[33],friends[33],nick[33]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
}
engel_mesaj(id)
{
client_cmd(id,"echo [CFG Koruyucusu] Lutfen cfg kullanmayiniz.;disconnect")
client_cmd(id,"echo [CFG Koruyucusu] Config.cfg dosyasini silip oyuna bastan girin")
client_print(0,print_chat,"%s cfg kullanmaya calistigindan dolayi oyundan atildi.",nick)
}
public client_putinserver(id)
{
set_task(1.0, "cfg_kontrol", id)
}
public client_infochanged(id)
{
set_task(1.0, "cfg_kontrol", id)
}
public client_disconnect(id)
{
remove_task(id)
}
public cfg_kontrol(id)
{
get_user_name(id,nick, 31)
//[+]s4 kontrol
get_user_info(id,"s4",s4,31)
if (equal(s4, "pige0n"))
{
engel_mesaj(id)
}
//[-]s4 kontrol
//[+]fris kontrol
get_user_info(id,"fris",fris,31)
if (equal(fris, "0"))
{
engel_mesaj(id)
}
//[-]fris kontrol
//[+]thirdperson kontrol
get_user_info(id,"thirdperson",thirdperson,31)
if (equal(thirdperson, "1"))
{
engel_mesaj(id)
}
//[-]thirdperson kontrol
//[+]left_hand kontrol
get_user_info(id,"left_hand",left_hand,31)
if (equal(left_hand, "1"))
{
engel_mesaj(id)
}
//[-]left_hand kontrol
//[+]vgui_menus kontrol
get_user_info(id,"vgui_menus",vgui_menus,31)
if (equal(vgui_menus, "0"))
{
engel_mesaj(id)
}
//[-]vgui_menus kontrol
//[+]lefthand kontrol
get_user_info(id,"lefthand",lefthand,31)
if (equal(lefthand, "0"))
{
engel_mesaj(id)
}
//[-]lefthand kontrol
//[+]dm kontrol
get_user_info(id,"dm",dm,31)
if (equal(dm, "1"))
{
engel_mesaj(id)
}
//[-]dm kontrol
//[+]ah kontrol
get_user_info(id,"ah",ah,31)
if (equal(ah, "1"))
{
engel_mesaj(id)
}
//[-]ah kontrol
//[+]ghosts kontrol
get_user_info(id,"ghosts",ghosts,31)
if (equal(ghosts, "0"))
{
engel_mesaj(id)
}
//[-]ghosts kontrol
//[+]friends kontrol
get_user_info(id,"friends",friends,31)
if (equal(friends, "0"))
{
engel_mesaj(id)
}
//[-]friends kontrol
}
4) Say atan hileleri engelleme.
Bazı hileler otomatik olarak oyundan için say atmaktadır. Oyunda admin olduğunda direk müdahale olabiliyor ancak admin yok ise bu eklentiyi derleyip kullanabilirsiniz. amxmodx logs klasörü içindede wallhack.log dosyasına bakıp kimlerin hile açtığını görebilirsiniz. -=[HOOK Bilmem ne falan fistik]=-
yazan yeri hilenin attığı mesaj ile değiştiriniz. PHP- Kodu: #include <amxmodx>
#define PLUGIN "Hile Kontrol"
#define VERSION "1.0"
#define AUTHOR "Genki"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say","saykontrol")
register_clcmd("say_team","saykontrol")
}
public saykontrol(id)
{
new cumle[192]
read_args(cumle,191)
if( ( containi(cumle, "-=[HOOK Bilmem ne falan fistik]=-") != -1 || containi(cumle, "-=[test hook]=-") != -1 ) )
set_task(0.1,"serverdan_at",id)
return PLUGIN_CONTINUE
}
public serverdan_at(id)
{
new player[25],playerip[25],msj[128]
get_user_name(id, player, 24)
get_user_ip(id, playerip, 24)
server_cmd("amx_kick %s ^"[Guard] Hile kullanmayiniz !^"",player)
console_print(id,"[ Guard ] Nick : %s",player)
console_print(id,"[ Guard ] Ip Adresi : %s",playerip)
console_print(id,"[ Guard ] Hile kullandiginiz icin sunucudan atildiniz.")
console_print(id,"[ Guard ] Lutfen hileyi kapatiniz yada say atarken kullandiginiz kelimelere dikkat ediniz.")
client_print(0,print_chat,"[ Guard ] %s isimli player hile actigi icin serverdan atilmistir.",player)
format(msj,127,"[ Guard ] : %s adli player hile acmaya calismis.Ip : %s",player,playerip)
static const logdosyasi[] = "wallhack.log"
log_to_file(logdosyasi, msj)
}
5) Server durumunu gösteren php kod parçası.
Server ismini , oyuncu sayısını, server slotunu ve haritayı ekrana basar.Geliştirip resim üzerine çıktı alabilirsiniz PHP- Kodu: <?php
$ip = '88.255.155.50'; //server ip
$port = 27015; // server port
@$fp = fsockopen("udp://$ip",$port,$errno,$errstr,30);
if(!$fp)
{
echo 'server offline,veya ip yanlış';
exit;
}
fwrite($fp,"\xFF\xFF\xFF\xFF\x54Source Engine Query\x00");
$buffer = fread($fp,1024);
if (!trim($buffer)) { return FALSE; }
$tmp = explode("\x00", $buffer);
$place = strlen($tmp[0].$tmp[1].$tmp[2].$tmp[3].$tmp[4]) + 5;
$bas['hostname'] = $tmp[1];
$bas['mapname'] = $tmp[2];
$bas['players'] = ord($buffer[$place]);
$bas['maxplayers'] = ord($buffer[$place + 1]);
fclose($fp);
echo $bas['hostname'].'<br />'; // Server ismi
echo $bas['mapname'].'<br />'; // Harita ismi
echo $bas['players'].'<br />'; // oyuncu sayısı
echo $bas['maxplayers'].'<br />'; //server slotu
?> 6)Block Wallhack
Hakkını veren bir eklentidir.
Piyasada bazı cs firmaları biz geliştirdik,biz yaptık diye çoluk çombalağı kaldırıp helal abi dedirtsede aslı aşağıdaki linktedir. http://forums.alliedmods.net/showthread.php?t=100886
ufak tefek hatalar çıkabilir.
Devamı gelecektir.
__________________ sxe r10 ve tbt dışında bu nicki kullandığım başka platform yoktur.
Konu Genki tarafından (27-07-2010 Saat 19:18:00 ) değiştirilmiştir..
|