SA:MP Destek Blogu
Samp Destek Sitesi

Anti Teleport Hack

SA-MP Anti Teleport Hack yani ışınlanma hilesini engelleme bugün birçok sunucunun oyuncu huzuru açısından önemlidir. Siz de sunucunuzda ışınlanarak oyun akışına zarar veren oyuncuları sunucunuzdan uzaklaştırmak istiyorsanız aşağıdaki adımları takip edebilirsiniz.

Modun başında şu tanımlamaları yapın:
new yerdegis[MAX_PLAYERS];
new Float:oyuncukoor[MAX_PLAYERS][3];
new Float:oyuncukoor2[MAX_PLAYERS][3];

OnGameModeInit'te çalışan genel bir zamanlayıcınız varsa bu adımı yapmanıza gerek yok ama kullanmayanların aşağıdaki kodları OnGameModeInit'e eklemesi gerekiyor.
 
SetTimer("TeleportKontrol", 1000, true);

Modun sonuna aşağıdaki kodları ekleyin.
 
forward TeleportKontrol();
public TeleportKontrol()
{
for(new i=0; i <= MAX_PLAYERS; ++i)
{
if(IsPlayerConnected(i))
{
if(yerdegis[i] == 0)
{
GetPlayerPos(i, oyuncukoor[i][0], oyuncukoor[i][1], oyuncukoor[i][2]);
}
}
}
return 1;
}
stock Float:GetDistanceBetweenPoints(Float:rx1,Float:ry1,Float:rz1,Float:rx2,Float:ry2,Float:rz2)
{
return floatadd(floatadd(floatsqroot(floatpower(floatsub(rx1,rx2),2)), floatsqroot(floatpower(floatsub(ry1,ry2),2))), floatsqroot(floatpower(floatsub(rz1,rz2),2)));
}
stock isinlama(playerid, Float:xe, Float:ye, Float:ze)
{
yerdegis[playerid] = 1;
oyuncukoor[i][0] = xe;
oyuncukoor[i][1] = ye;
oyuncukoor[i][2] = ze;
oyuncukoor2[i][0] = xe;
oyuncukoor2[i][1] = ye;
oyuncukoor2[i][2] = ze;
SetPlayerPos(playerid, xe, ye, ze);
yerdegis[playerid] = 0;
return 1;
}

OnPlayerConnect'e şu kodları yerleştirin:
yerdegis[playerid] = 1;
 
OnPlayerSpawn'a şu kodları yerleştirin:
 
yerdegis[playerid] = 0;
OnPlayerUpdate'e şu kodları ekleyin:
 
if(yerdegis[playerid] == 0)
{
GetPlayerPos(i, oyuncukoor2[[playerid]][0], oyuncukoor2[[playerid]][1], oyuncukoor2[[playerid]][2]);
if((GetDistanceBetweenPoints(oyuncukoor2[[playerid]][0], oyuncukoor2[[playerid]][1], oyuncukoor2[[playerid]][2], oyuncukoor[[playerid]][0], oyuncukoor[[playerid]][1], oyuncukoor[[playerid]][2]) > 40)
{
Kick(playerid);
}
}
Bu kodları ekledikten sonra modunuzun kaynak kodlarına geçin ve CTRL + H tuşlarını kullanarak ara ve değiştir aracını açın. SetPlayerPos'u isinlama olarak değiştirin ve o andan itibaren SetPlayerPos'u kullanmayı bırakın. Oyuncuyu ışınlamak istediğinizde SetPlayerPos'u değil "isinlama" kodunu kullanın. Örnek kullanım biçimi aşağıdadır.

isinlama(playerid, 0.0, 0.0, 0.0);
Uyarı: Bir filterscriptte SetPlayerPos kullanıyorsanız bu sistemin yanlış tespitte bulunmasına yol açabilir. Filterscriptteki kodları modunuza geçirirseniz ve SetPlayerPos'u isinlama olarak değiştirirseniz bu sorun ortadan kalkacaktır.
Mesaj At
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol