Sistemin açıklaması aşağıdaki kod satırlarında, keyifli kullanmalar.
//Bu anlatımda sadece pet sisteminin iskeletini anlatıyorum, iskeleti siz geliştirebilirsiniz. :=)
//CreateActor SAMP'ın fonksiyonu olduğundan MAX_ACTORS(1000) adet aktör oluşturabilirsiniz.
//Bunu streamer eklentisini kullanarak arttırabilirsiniz. Bknz: https://github.com/samp-incognito/samp-streamer-plugin/wiki
//Ek olarak aktörün/petin Z kordinatını bulmamız lazım bunun için MapAndreas veya ColAndreas eklentilerini kullanabilirsiniz.
//https://github.com/Southclaws/samp-plugin-mapandreas / https://github.com/Pottus/ColAndreas/wiki
//örnek olarak bir tane pet modeli veriyorum isterseniz indirip kullanabilirsiniz.
//models klasörünün içindeki artconfig.txt ye AddCharModel(305, 29989, "blackpitbull.dff", "blackpitbull.txd"); ekleyin.
// https://download.erenumutozdemir.com/blackpitbull.dff
// https://download.erenumutozdemir.com/blackpitbull.txd
// 2018 yılında yaptığım sistemin videosunu aşağıya ekledim, bakabilirsiniz.
// konunun altına düşüncelerenizi belirtirseniz sevinirim.
new PET[MAX_PLAYERS], PET_Timer[MAX_PLAYERS]; // pet değişkenleri
PET[playerid] = CreateActor(29989, ...); // aktörü/peti oluşturuyorsunuz fonksiyonun tamamı için wikiye bakın.
DestroyActor(PET[playerid]); // aktörü kaldırabilirsiniz.
PET_Timer[playerid] = SetTimerEx("ChangeActorPos", 10, true, "ii", playerid, PET[playerid]); // aktörü/peti haraket ettirmek için timer oluşturabilirsiniz. parametreler için wikiye bakın.
KillTimer(PET_Timer[playerid]); //aktörü/peti durdurmak için kullanabilirsiniz.
forward ChangeActorPos(playerid, actorid);
public ChangeActorPos(playerid, actorid)
{
if(IsValidActor(actorid))
{
new Float:aPos[5], Float:pPos[3];
GetPlayerPos(playerid, pPos[0], pPos[1], pPos[3]);
GetActorPos(actorid, aPos[0], aPos[1], aPos[2]);
if((pPos[0] >= aPos[0] -1.8 && pPos[0] <= aPos[0] + 1.8) && (pPos[1] >= aPos[1] - 1.8 && pPos[1] <= aPos[1] + 1.8)) {
ClearActorAnimations(PET[playerid]); // aktörün/petin oyuncuya yakın olup olmadığını kontrol ediyorsunuz yakınsa haraket etmeyi bırakıyor.
ApplyActorAnimation(PET[playerid], "OTB", "wtchrace_win", 4.0, 1, 0, 0, 0, 0);
continue;
}
else {
// aktör/pet haraket ediyor.
GetActorFacingAngle(actorid, aPos[3]);
ApplyActorAnimation(PET[playerid], "ped", "run_player", 4.1, 1, 1, 1, 0, 0);
aPos[0] += 0.062 * floatsin(-aPos[3], degrees);
aPos[1] += 0.062 * floatcos(-aPos[3], degrees);
MapAndreas_FindZ_For2DCoord(aPos[0], aPos[1], aPos[4]); //MapAndreas eklentisininin fonksiyonu
//CA_FindZ_For2DCoord(aPos[0], aPos[1], aPos[4]); //ColAndreas eklentisininin fonksiyonu
ChangeActorLookAt(actorid, pPos[0], pPos[1], aPos[0], aPos[1], aPos[3]);
SetActorPos(actorid, aPos[0], aPos[1], aPos[4] + 1);
}
}
return 1;
}
stock ChangeActorLookAt(actorid, Float:X, Float:Y, Float:Ax, Float:Ay, Float:Aa)
{
Aa = floatabs(atan((Y - Ay) / (X - Ax)));
if (X <= Ax && Y >= Ay) Aa = floatsub(180, Aa);
else if (X < Ax && Y < Ay) Aa = floatadd(Aa, 180);
else if (X >= Ax && Y <= Ay) Aa = floatsub(360.0, Aa);
Aa = floatsub(Aa, 90.0);
if (Aa >= 360.0) Aa = floatsub(Aa, 360.0);
SetActorFacingAngle(actorid, Aa);
return 1;
}
Bknz: [Anlatım] Gelişmiş Anti Hile Eklentisi & Dahası - Trafik Polisi Pawn.RakNet (https://www.gtamulti.com/forum/anlatimlar/(anlatim)-gelismis-anti-hile-eklentisi-dahasi-trafik-polisi-pawn-raknet/)
Maverick ;) (https://erenumutozdemir.com/)
Gayet güzel gözüküyor, başarılar elinize sağlık.
Alıntı yapılan: merddz - 25 Mart 2021, 20:35:01Gayet güzel gözüküyor, başarılar elinize sağlık.
Teşekkürler.
elinize sağlık baya iyi
Bu yöntemle muhtemelen köprü altı gibi yerlerde problem çıkacaktır. Aktörler köprü altından üstüne ışınlanır veya yeni eklenen objeleri algılayamaz.
Çözüm: ColAndreas kullanarak RayCastLine fonksiyonu yardımıyla oyuncunun altını gerçek zamanlı taratarak bulmanız.
Alıntı yapılan: Amper - 25 Mart 2021, 21:38:58Bu yöntemle muhtemelen köprü altı gibi yerlerde problem çıkacaktır. Aktörler köprü altından üstüne ışınlanır veya yeni eklenen objeleri algılayamaz.
Çözüm: ColAndreas kullanarak RayCastLine fonksiyonu yardımıyla oyuncunun altını gerçek zamanlı taratarak bulmanız.
Açıklama satırına zaten ColAndreas wiki bıraktım gerisi geliştiriciye kaldı, yorum için teşekkürler.
@Amper
Eline sağlık kolay gelsin :)
eline sağlık
Eline sağlık, gayet başarılı bir sistem.
Anlatım için teşekkürler.
Anlatım için teşekkürler.
Gayet güzel anlatım teşekkürler