GTAMulti - GTA Türkiye

San Andreas Multiplayer => PAWN Kodlama => Anlatımlar => Konuyu başlatan: Submarine - 18 Aralık 2019, 20:54:41

Başlık: Temel Bir Payday Sistemi Yapımı
Gönderen: Submarine - 18 Aralık 2019, 20:54:41
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.
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: Pablo - 18 Aralık 2019, 21:00:04
Tşk :pc:
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: Submarine - 18 Aralık 2019, 21:20:53
Alıntı yapılan: ByGold - 18 Aralık 2019, 21:00:04
Tşk :pc:
Önemli değil , işinize yaraması dileği ile.
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: 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.
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: Submarine - 18 Aralık 2019, 22:49:53
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 :)
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: Eamon - 18 Aralık 2019, 23:30:22
Oyuncu oyundan çıktığında timer'ı kapatabilirsin bence onun dışında yeni başlayan kişilere yararlı.
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: Submarine - 20 Aralık 2019, 00:02:02
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.
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: Rosnex - 02 Nisan 2020, 14:29:50
Payday Sistemi güzel, eline sağlık.
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: Submarine - 03 Nisan 2020, 14:14:59
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.
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: Vesa - 03 Nisan 2020, 16:01:54
Yararlı
Başlık: Ynt: Temel Bir Payday Sistemi Yapımı
Gönderen: kelly - 07 Nisan 2020, 19:58:36
Paylaşım için teşekkürler, eline sağlık. :helal: