Merhabalar,zamanında aktörlü soygun includesi geliştirmiştim tabi ben yapmadım ama çok emeğim oldu bu aktörlü soygun sisteminde türkçeleştirme vs. neredeyse ve bir çok şeyide düzenlemiştim zamanında türkçeleştirme yaptım, açıkları kapatma, buglar fixleme derken böyle bir şey çıktı ortaya kendini geliştirmek isteyenler için lazım olacaktır diye paylaşma gereği duydum. :)[Resimler]
(https://i.hizliresim.com/AOp8Vq.png)
(https://i.hizliresim.com/JVv89n.png)
İndirme Linki
https://www.mediafire.com/file/tv5btacep14d28i/Soygun_Aktor.inc/file
Virüs Total https://www.virustotal.com/gui/file/34391f2d609d5e01de4b23191b145070925b17cfa8fa82906015314ad5afd4e1/detection
Kaynak Kodu(Source Code)
/*
[TAKTAK26]
[SOYGUN_AKTOR KITAPLIGI]
<!> Pawno'da compile etmeyiniz yoksa bozulabilir.
*/
#if !defined _samp_included
#error Lütfen include a_samp önce includesini pawn dosyaniza ekleyiniz ondan sonra Soygun_Aktor includesini ekleyiniz. // #include <a_samp> olmazsa bu hatayý verir.
#endif
#if !defined KEY_AIM
#define KEY_AIM 128
#endif
#if !defined PreloadAnimLib
#define PreloadAnimLib(%1,%2) ApplyAnimation(%1,%2,"null",0.0,0,0,0,0,0)
#endif
#define MAX_SOYGUN_AKTOR (50) // Dükkan sayisina göre yapilmistir kendinize göre ayarlarsiniz.
#define BASARILI_SOYGUN (0)
#define BASARISIZ_SOYGUN (1)
#define SOYGUN_BITIRILMEDI (2)
#define MIN_PARA 1000
#define MAX_PARA 20000
#define SOYGUN_GERI_SAYIM (5)
enum AKTOR_SOYGUN
{
actor_skin,
Float:actor_x,
Float:actor_y,
Float:actor_z,
Float:actor_ang,
actor_vw,
money_min,
money_max,
bool:actor_created,
actor_robbedRecently
}
static
soygun_data[MAX_SOYGUN_AKTOR][AKTOR_SOYGUN],
i_actor = 0; // i degeri
forward AktorAnimasyon(playerid, actorid, animation_pattern);
forward SoygunBaslangic(playerid, actorid, robbed_recently);
forward SoygunBitis(playerid, actorid, robbedmoney, type);
/*
Function:
AktorOlustur
Bilgi:
Belirlenen konuma göre aktörünüzü olusturur.
Daha Fazlasi:
* skinid -> Aktör Skinidir kendinize göre degistirebilirsiniz.
* Float:x -> Soygun Aktörünün (X) Koordinatı.
* Float:y -> " " (Y) Koordinatı
* Float:z -> " " (Z) Koordinatı
* Float:ang -> Soygun Aktörünün bakis açisi.
* actor_vwid -> Soygun aktörünün sanal idsi yani interior gibi düsünebilirsiniz interior'dan çikarsaniz soygun iptal olur gibi.
* r_moneymin -> Minimum Soygun.
* r_moneymax -> Maksimun Soygun.
*/
stock AktorOlustur(skinid, Float:x, Float:y, Float:z, Float:ang, actor_vwid = 0, r_moneymin = MIN_PARA, r_moneymax = MAX_PARA)
{
new actorid = SoygunAktorID();
if(actorid == -1)
{
print("ERROR: MAX_SOYGUN_AKTOR reached, increase the limit size.");
return -1;
}
CreateActor(skinid, x, y, z, ang);
SetActorVirtualWorld(actorid, actor_vwid);
soygun_data[actorid][actor_created] = true;
soygun_data[actorid][actor_skin] = skinid;
soygun_data[actorid][actor_x] = x;
soygun_data[actorid][actor_y] = y;
soygun_data[actorid][actor_z] = z;
soygun_data[actorid][actor_ang] = ang;
soygun_data[actorid][actor_vw] = actor_vwid;
soygun_data[actorid][money_min] = r_moneymin;
soygun_data[actorid][money_max] = r_moneymax;
return (++ i_actor - 1);
}
/*
Function:
AktorSoygunVeri
Bilgi:
Aktörün soygun verilerini alir, olusturur.
Daha Fazlasi:
* actorid -> Aktörün ID'sidir.
* &skinid -> Aktör Skin ID'sidir.
* &Float:x -> (X) Koordinatı.
* &Float:y -> (Y) Koordinatı.
* &Float:z -> (Z) Koordinatı.
* &Float:ang -> Soygun Aktörünün bakis açisi.
* &actor_vwid -> Sanal idsi yani interiordan çiktiginizda iptal olmasi gibi.
* &r_moneymin -> Minimun soygun ayarları.
* &r_moneymax -> Maksimun soygun ayarları.
*/
stock AktorSoygunVeri(actorid, &skinid, &Float:x, &Float:y, &Float:z, &Float:ang, &actor_vwid, &r_moneymin, &r_moneymax)
{
if(actorid == INVALID_ACTOR_ID)
return 1;
skinid = soygun_data[actorid][actor_skin];
x = soygun_data[actorid][actor_x];
y = soygun_data[actorid][actor_y];
z = soygun_data[actorid][actor_z] ;
ang = soygun_data[actorid][actor_ang] ;
actor_vwid = soygun_data[actorid][actor_vw];
r_moneymin = soygun_data[actorid][money_min];
r_moneymax = soygun_data[actorid][money_max];
return 1;
}
/*
Function:
SoygunAktorID
Bilgi:
Bir Aktörün Soygun(ID)'sidir.
Daha Fazlasi:
Fazla Söze Gerek yok çünkü "()" içine bir sey eklenmediginden :D
*/
static SoygunAktorID()
{
for(new i = 0; i < MAX_SOYGUN_AKTOR; i++)
{
if(!soygun_data[i][actor_created]) return i;
}
return -1; // buraya kesinlikle ellemeyin textdrawli yapacaksaniz "-1" ama textdrawsiz ise "+1" seklinde yapiniz.
}
/*
Soygun Animasyon.
*/
public AktorAnimasyon(playerid, actorid, animation_pattern)
{
switch(animation_pattern)
{
case 0:
{
ClearActorAnimations(actorid);
ApplyActorAnimation(actorid, "SHOP", "SHP_Rob_HandsUp", 4.1, 0, 1, 1, 1, 0);
SetTimerEx("AktorAnimasyon", 1000 * SOYGUN_GERI_SAYIM, false, "iii", playerid, actorid, 1);
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(!IsPlayerConnected(i)) { continue; }
PlayerPlaySound(i, 3401, x, y, z);
}
}
case 1:
{
if(!IsPlayerInRangeOfPoint(playerid, 10.0, soygun_data[actorid][actor_x], soygun_data[actorid][actor_y], soygun_data[actorid][actor_z]))
{
SoygunBitis(playerid, actorid, 0, SOYGUN_BITIRILMEDI);
}
else
{
ClearActorAnimations(actorid);
ApplyActorAnimation(actorid, "SHOP", "SHP_Rob_GiveCash", 4.1, 0, 1, 1, 1, 0);
SetTimerEx("AktorAnimasyon", 1000 * SOYGUN_GERI_SAYIM, false, "iii", playerid, actorid, 2);
}
}
case 2:
{
ClearActorAnimations(actorid);
ApplyActorAnimation(actorid, "PED", "DUCK_cower", 4.1, 1, 1, 1, 1, 1);
SetTimerEx("AktorAnimasyon", 1000 * 60 * SOYGUN_GERI_SAYIM, false, "iii", playerid, actorid, 3);
new
robberyChance = random(100);
if(robberyChance > 40)
{
SoygunBitis(playerid, actorid, (random(soygun_data[actorid][money_max] - soygun_data[actorid][money_min]) + soygun_data[actorid][money_min]), BASARILI_SOYGUN);
}
else SoygunBitis(playerid, actorid, 0, BASARISIZ_SOYGUN);
}
case 3:
{
ClearActorAnimations(actorid);
PlayerPlaySound(playerid, 0, 0.0, 0.0, 0.0);
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
EnablePlayerCameraTarget(playerid, 1);
PreloadAnimLib(playerid, "PED");
PreloadAnimLib(playerid, "SHOP");
#if defined actorrob_OnPlayerConnect
actorrob_OnPlayerConnect(playerid);
#endif
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if((newkeys & KEY_AIM) == KEY_AIM && GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
switch(GetPlayerWeapon(playerid))
{
case 22 .. 33:
{
new actorid = GetPlayerCameraTargetActor(playerid);
if(actorid == INVALID_ACTOR_ID)
return 1;
if(gettime() - soygun_data[actorid][actor_robbedRecently] < 60 * SOYGUN_GERI_SAYIM)
return SoygunBaslangic(playerid, actorid, 1);
soygun_data[actorid][actor_robbedRecently] = gettime();
AktorAnimasyon(playerid, actorid, 0);
}
}
}
#if defined actorrob_OnPlayerKeyStateChange
actorrob_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
#else
return 1;
#endif
}
//OnPlayerKeyStateChange hook şeklinde yapınız.
#if defined _ALS_OnPlayerKeyStateChange
#undef OnPlayerKeyStateChange
#else
#define _ALS_OnPlayerKeyState
#endif
#define OnPlayerKeyStateChange actorrob_OnPlayerKeyStateChange
#if defined actorrob_OnPlayerKeyStateChange
forward actorrob_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
#endif
//OnPlayerConnect Bölümü
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect actorrob_OnPlayerConnect
#if defined actorrob_OnPlayerConnect
forward actorrob_OnPlayerConnect(playerid);
#endifYakında source codeleri paylaşılacaktır aktörlü soygun sisteminin.
Güncellendi. :)
şu source kodunu paylaşmayı öğrenin artık aw
Alıntı yapılan: Bölüm KurallarıPaylaştığınız içerikte dosyaya ait hastebin veya pastebin linki ya da konu içinde PAWN bbcode'u ile kodların koyulması zorunludur.
24 saat içerisinde konuyu düzenleyin.
Alıntı yapılan: Excision - 21 Aralık 2019, 16:38:33şu source kodunu paylaşmayı öğrenin artık aw
Alıntı yapılan: Vengeance - 21 Aralık 2019, 16:40:28Alıntı yapılan: Bölüm KurallarıPaylaştığınız içerikte dosyaya ait hastebin veya pastebin linki ya da konu içinde PAWN bbcode'u ile kodların koyulması zorunludur.
24 saat içerisinde konuyu düzenleyin.
Unutmuşum, çok pardon hemen ekliyorum bekleyiniz.
Konu güncellendi.
yaptığın geliştirmeleri, fixleri söyler misin ?
https://www.diffchecker.com/KKI1I4vX
ekledim fakat hata alıyorum nasıl olucak bu
Mükemmel olmuş, uzun süredir arıyordum.
Paylaşım için teşekkürler.
.
Aktorlu soygunu çoğu adam istiyor ama yapa bilmeyenler'de var onun için Filterscripts yapıp paylaşsaydın iyi olurdu.
Moda görede uyarlasınmı. :kahkaha: :kahkaha: