GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi

Temel Bir Payday Sistemi Yapımı

Başlatan Submarine, 18 Aralık 2019, 20:54:41

« önceki - sonraki »

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Submarine

Herkese selam arkadaşlar , görüyoruz ki roleplay sunucuları arttı.Bu artış nedeniyle roleplay sunucularına talep arttı.Dolayısı ile sunucularda oynayan oyuncular meslek kasmaktan sıkılıp afk olanlar ve payday ile para alanlar var.Şimdi sizlere sunucularınızda kullanabileceğiniz temel bir payday sistemi yapmayı anlatacağım.

İlk olarak oyuncu değişkenlerini tanıtıyoruz.

PAWN Kodu: Seç
new ToplamOyuncuPayday[MAX_PLAYERS];
new OyuncuPaydaySure[MAX_PLAYERS];
new OyuncuTimer[MAX_PLAYERS]

Değişkenlerimizi tanıttıktan sonra ilk olarak OnPlayerConnect publicine geliyoruz.Oraya OyuncuPaydaySure değişkenindeki değeri 60 saniyede (1 dkda) bir arttıracak timerımızı ekliyoruz

PAWN Kodu: Seç
public OnPlayerConnect(playerid)
{
OyuncuTimer[playerid] = SetTimerEx("PaydayTimer",60000,true,"d",playerid);
}

Timerımızdaki mantık 60000 mili saniyede bir PaydayTimer publicindeki kodları tekrar etmesi.Tekrar etmesi için true yazdık.Timer'larda SetTimer ve SetTimerEx vardır.SetTimerEx kullanmamızın bir sebebi de parametre içermesi.Parametreleri içerdiği için playerid parametresini hatasız bir şekilde kullanabiliyoruz.OyuncuTimer değişkeni bir oyuncu değişkenidir çünkü playerid parametresini içermektedir.Oyuncuya bu timerı tanımladık.
Hocam şimdi diyeceksiniz timeri ekledik çalışmadı ? Çünkü PaydayTimer'ı kodlamadık.


PAWN Kodu: Seç
forward PaydayTimer(playerid);
public PaydayTimer(playerid)
{
if(OyuncuPaydaySure[playerid] >= 60)
 {
 OyuncuPaydaySure[playerid] = 0;
 ToplamOyuncuPayday[playerid]+= 1;
 GivePlayerMoney(playerid,1000);
 SendClientMessage(playerid,-1,"Saatlik Maaş Alındı !");
 }
else
 {
 OyuncuPaydaySure[playerid]++;
 }

}

Buradaki mantık oyuncunun payday süresinin değeri 60 ve 60 ın üzerindeyse toplam oyuncu payday değişkenine 1 arttırdık , parayı verdirdik ve süreyi 0 layıp baştan başlattık.Eğer 60 ın üzerinde değilse süreyi arttıtmaya devam eder.
Arkadaşlar çok zor bir sistem değil ama geliştirilebilir bir sistem.Ben aslında parayı rastgele verdirip iki kat maaş bonusu özelliği ekleyip gelen parayı 2 ile çarptırıp oyuncuya verdirmek vardı aklımda ama sadece ben temelini kurdum gerisini siz bilgileriniz ile getirin.

Sunucumuz üzerinde oyuncu çıkış yaptığı zaman oyuncuya ait timerın silinmemesi sunucumuzda çökmeler veya laglar yaratabilir.O yüzden sunucumuzun performansı açısından oyuncuya OyuncuTimer[playerid] değişkenine tanımladığımız SetTimerEx'i sileceğiz.Tabi ki bunu da KillTimer kullanarak yapacağız.(Edit - @Ferman Hocam'ın önerisi)

PAWN Kodu: Seç
public OnPlayerDisconnect(playerid)
{
KillTimer(OyuncuTimer[playerid]);
return 1;
}


Arkadaşlar konuyu okuduğunuz için teşekkürler iyi - kötü yorumlarınızı unutmayın ve varsa hatam yardımcı olabilirsiniz.İyi günler herkese.


NOT : Kodlar alıntı değildir, alıntı diyen arkadaşlar boş yapmayıp konuyu tarayıcısının sekmesinden kapatsın backspace veya geri tuşuna fare ile sol tuşla basarak konudan çıkabilir.
Son düzenlenme: 21 Aralık 2019, 20:34:18 Submarine Sebep: @Ferman Hocamın önerisini eklemek için düzenledim.

Pablo

Alıntı




Pawnotürk Üyesi 2017-2020

Submarine


Radless

60000 saniyede bir yazmışsın istersen o saniyeyi mili saniye olarak düzeltebilirsin ve benim bildiğim yeni bir public oluşturup kullanmak için stock yerine forward kullanmalısın ondan sonra publici kullanabilirsin.
Son düzenlenme: 18 Aralık 2019, 22:41:39 Radless
"Life's too short to hold grudges."

Submarine

Alıntı yapılan: Radless - 18 Aralık 2019, 22:03:21
60000 saniyede bir yazmışsın istersen o saniyeyi mili saniye olarak düzeltebilirsin ve benim bildiğim yeni bir public oluşturup kullanmak için stock yerine forward kullanmalısın ondan sonra publici kullanabilirsin.
Bir an dalgınlıkla forward yerine stock yazmışım saniye kısmını mili saniye olarak düzelttim :)


Eamon

Oyuncu oyundan çıktığında timer'ı kapatabilirsin bence onun dışında yeni başlayan kişilere yararlı.

Bugünün güzel zamanları, yarının üzücü düşünceleridir.

Submarine

Alıntı yapılan: Ferman - 18 Aralık 2019, 23:30:22
Oyuncu oyundan çıktığında timer'ı kapatabilirsin bence onun dışında yeni başlayan kişilere yararlı.
@Ferman hocam ekledim konuya öneriniz için teşekkürler.


Rosnex

Payday Sistemi güzel, eline sağlık.


Submarine

Alıntı yapılan: #Norpes - 02 Nisan 2020, 14:29:50
Payday Sistemi güzel, eline sağlık.
Teşekkürler işine yaraması dileği ile.


Vesa

"Yeni bir Müslüm Gürses şarkısı kadar imkansız bazı şeyler..."
a.k.a Vesa

kelly

Paylaşım için teşekkürler, eline sağlık. :helal:

I want everything