beyler biliyorum anlatımda şekilleme kötü çok önceden bir platforumda yayınlamıştım şimdi burada yayınlıyorum. Anlatımı alır "Pawno" da kopyala yapıştır yaparsanız daha yararlı olur.
Alıntı yapılan: Rouge. - 29 Eylül 2019, 18:50:42beyler biliyorum anlatımda şekilleme kötü çok önceden bir platforumda yayınlamıştım şimdi burada yayınlıyorum. Anlatımı alır "Pawno" da kopyala yapıştır yaparsanız daha yararlı olur.
Konuyu düzenleyin şu şekilde düzenleyin daha acık ve net bir anlatım yapın!
static stock ANLATIM : deişkenlerimizi oluşturduk.
Float:AC_Position[3],
pLastPosTick[MAX_PLAYERS],
BitArray:AC_SafeTP<MAX_PLAYERS>
;Public'in altına ekleyiniz.
public OnPlayerUpdate
if(gettime() - pLastPosTick[playerid] > 2) //updates the player location every 2 seconds.
{
//on-foot
if( !IsPlayerInRangeOfPoint(playerid, 70.0, AC_Position
[list][li], AC_Position[1], AC_Position[2]) && !Bit_Get(AC_SafeTP, playerid) && !IsPlayerNPC(playerid)[/li][/list]
&& GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
CallLocalFunction("Teleport", "if", playerid, GetPlayerDistanceFromPoint(playerid, AC_Position[ 0 ], AC_Position[ 1 ], AC_Position[ 2 ]));
}
// on-vehicle
else if( !IsPlayerInRangeOfPoint(playerid, 900.0, AC_Position
[list][li], AC_Position[1], AC_Position[2]) && !Bit_Get(AC_SafeTP, playerid) && !IsPlayerNPC(playerid)[/li][/list]
&& GetVehicleSpeed( GetPlayerVehicleID(playerid) ) <= 9999 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER || GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
{
new vehicleid;
Bit_Set(AC_SafeTP, vehicleid, true);
CallLocalFunction("Teleport", "if", playerid, GetPlayerDistanceFromPoint(playerid, AC_Position
[list][li], AC_Position[1], AC_Position[2]));[/li][/list]
}
GetPlayerPos(playerid, AC_Position[ 0 ], AC_Position[ 1 ], AC_Position[ 2 ]);
Bit_Set(AC_SafeTP, playerid, false);
pLastPosTick[ playerid ] = gettime( ) + 2;
}Teleportu fixleyecegiz.
public OnPlayerInRangeOfPoint
stock pds_SetPlayerPos(playerid, Float:PosX, Float:PosY, Float:PosZ)
{
GetPlayerPos(playerid, AC_Position
[list][li], AC_Position[1], AC_Position[2]);[/li][/list]
Bit_Set(AC_SafeTP, playerid, true);
return SetPlayerPos(playerid, PosX, PosY, PosZ);
}
stock pds_SetPlayerPosFindZ(playerid, Float:PosX, Float:PosY, Float:PosZ)
{
GetPlayerPos(playerid, AC_Position
[list][li], AC_Position[1], AC_Position[2]);[/li][/list]
Bit_Set(AC_SafeTP, playerid, true);
return SetPlayerPosFindZ(playerid, PosX, PosY, PosZ);
}
stock pds_PutPlayerInVehicle(playerid, vehicleid, seatid)
{
GetPlayerPos(playerid, AC_Position
[list][li], AC_Position[1], AC_Position[2]);[/li][/list]
Bit_Set(AC_SafeTP, playerid, true);
return PutPlayerInVehicle(playerid, vehicleid, seatid);
}Modun boş bir yerine
forward ac_OnPlayerExitVehicle(playerid, vehicleid);
public ac_OnPlayerExitVehicle(playerid, vehicleid)
{
Bit_Set(AC_SafeTP, playerid, true);
return ac_OnPlayerExitVehicle(playerid, vehicleid);
}
stock pds_SetPlayerInterior(playerid, interiorid)
{
GetPlayerPos(playerid, AC_Position
[list][li], AC_Position[1], AC_Position[2]);[/li][/list]
Bit_Set(AC_SafeTP, playerid, true);
return SetPlayerInterior(playerid, interiorid);
}
static stock GetVehicleSpeed( vehicleid ) //records in KMH.
{
new Float:VehiclePos[3],
VehicleVelocity;
Bit_Set(AC_SafeTP, vehicleid, true);
GetVehicleVelocity( vehicleid, VehiclePos
[list][li], VehiclePos[1], VehiclePos[2] );[/li][/list]
VehicleVelocity = floatround( floatsqroot( VehiclePos
[list][li]*VehiclePos[/li]
[li]+ VehiclePos[1]*VehiclePos[1] + VehiclePos[2]*VehiclePos[2] ) * 1 );[/li][/list]
return VehicleVelocity;
}
ANLATIM : Gerekli Public ve Stock larımıza ekledik. Şimdi ise
forward Teleport(playerid);
public Teleport(playerid)
{
Kick(playerid);
return 1;
}ANLATIM : Kick için gerekli fonksionlarımızıda ekledik. Laakin herşey sorunsuz compile oldu teste geçtiniz Spawn olunca atılıcaksınız.
Bunu engellemek için 'OnPlayerSpawn' ve 'OnPlayerConnect' Publicine şart eklemeliyiz.
Publicinin altına ekleyin.
public OnPlayerSpawn
Bit_Set(AC_SafeTP, playerid, true);
Publicinin altına ekleyin.
public OnPlayerConnect
Bit_Set(AC_SafeTP, playerid, true);
----------------------------------------
ANLATIM : Bu Şekilde sunucuya girdiğimizde Teleport'dan Kick yemeyiz. Sisteme belirttik giriş yapıyorum teleport değilim beni Kickleme demiş gibi olduk :)
BILGI NOT: Eklediğimiz şartlardan örnek vererek anlatıyım bir komut kullandınız örnek veriyim /evegit eve gitti veya evin kapısının yanına sizi teleporttan atar
eve gittiğiniz komutun altına OnPlayerConnect'e eklediğimiz şartı ekleyiniz. Bu Sadece eve git deil Bir yere ışınlanan komutların altınada ekleyiniz. örneğin
cmd:dm(playerid,params[])
{
SetPlayerPos(playerid, x,y,z);
Bit_Set(AC_SafeTP, playerid, true);
return 1;
} NOT DEVAM : Biryere giden ışınlanan komutların altına ekleyiniz '/git' '/cek' gibi.
Umarım Yardımcı Olmuşumdur, Anlattığım şeyden faydalanarak örnek alarak mantık
yaratabilirsiniz.
Bir Hilenin Fixi Sadece Fixlediğiniz Hilenin Fixi Deildir.
Anlatım : PiloT