farkmt2official 1
farkmt2official
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Cancan.1234 1
Cancan.1234
Hikaye Ekle

playtime system renewal

  • Konuyu başlatan Konuyu başlatan banzai2
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 5
  • Görüntüleme Görüntüleme 307

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

Affected files

  • ,

Old: Total playtime accumulation (increasing counter)

New: Remaining playtime countdown (decreasing timer). When the remaining time reaches 0, the player is disconnected.
 

Ekli dosyalar

Son düzenleme:
Do u have an image of the system?
It is a mandatory rule to share image of systems in this forum.

Görsel kanıt eklenebilecek bir konu değil aslında, açıklamayı şöyle yapalım konu ile ilgili :

Yeni Oynama Süresi Sistemi

Kalan süreye dayalı geri sayım, otomatik bağlantı kesme ve süre yükleme sistemi



Sistem Nedir?

Yeni Oynama Süresi Sistemi, oyuncuların oyunda kullanabileceği süreyi kontrol eden bir geri sayım sistemidir.

Eski sistemde oyuncunun toplam oynama süresi sürekli artarken, yeni sistemde oyuncunun kalan oynama süresi dakika dakika azalır.

Oyuncunun kalan süresi 0 dakikaya ulaştığında oyun bağlantısı otomatik olarak kesilir.

Bu sistem aşağıdaki projelerde kullanılabilir:

  • Süreli oyun erişimi
  • Premium veya VIP üyelik sistemi
  • İnternet kafe tarzı kullanım sistemi
  • Yeni oyuncular için deneme süresi
  • Günlük oyun süresi sınırı
  • Etkinliklerden oyun süresi kazanma
  • Mağazadan süre paketi satın alma
  • Görev ve sandık ödülleri



Eski Sistem ile Yeni Sistem Arasındaki Fark

Eski Sistem

Eski sistemde playtime değeri, oyuncunun toplam oynama süresini tutuyordu.

Oyuncu oyunda kaldıkça değer sürekli artıyordu.

Kod:
Başlangıç: 0 dakika
10 dakika sonra: 10
30 dakika sonra: 30
1 saat sonra: 60

Bu sistem yalnızca oyuncunun toplam kaç dakika oynadığını hesaplamak için kullanılıyordu.

Yeni Sistem

Yeni sistemde playtime değeri artık toplam oynanan süreyi değil, oyuncunun kalan oynama süresini tutar.

Sayaç yukarı doğru artmak yerine aşağı doğru azalır.

Kod:
Başlangıç süresi: 60 dakika
10 dakika sonra: 50 dakika
30 dakika sonra: 30 dakika
60 dakika sonra: 0 dakika

Kalan süre sıfıra ulaştığında oyuncunun bağlantısı kesilir.



Sistemin Çalışma Mantığı

Sistem genel olarak aşağıdaki şekilde çalışır:

  1. Oyuncuya belirli miktarda oynama süresi tanımlanır.
  2. Oyuncu giriş yaptığında kalan süresi kontrol edilir.
  3. Kalan süre oyuncuya mesaj olarak gösterilir.
  4. Oyuncu çevrim içi olduğu sürece her dakika süre azalır.
  5. Kalan süre sıfıra ulaştığında oyuncunun bağlantısı kesilir.
  6. Oyuncu eşya, komut veya Lua fonksiyonu üzerinden yeni süre kazanabilir.



Veritabanı Yapısı

Sistem, player tablosundaki playtime sütununu kullanır.

Kod:
player.playtime

Bu sütun artık oyuncunun toplam oynama süresini değil, kalan oynama süresini dakika cinsinden saklar.

Kod:
playtime = 60

Oyuncunun 60 dakika oynama hakkı olduğunu belirtir.

Kod:
playtime = 120

Oyuncunun 120 dakika, yani 2 saat oynama hakkı olduğunu belirtir.

Kod:
playtime = 0

Oyuncunun oynama süresinin bittiğini belirtir.

Yeni Karakterlerin Başlangıç Süresi

Yeni oluşturulan karakterler varsayılan olarak:

Kod:
60 dakika

oynama süresiyle başlar.

Bu nedenle yeni bir karakter ilk oluşturulduğunda yaklaşık 1 saat oyun oynayabilir.



Oyuna Giriş Kontrolü

Oyuna giriş kontrolü input_login.cpp dosyasında gerçekleştirilir.

Oyuncu oyuna giriş yaptığında sistem, karakterin playtime değerini kontrol eder.

Kalan Süre Sıfırdan Büyükse

Oyuncunun kalan süresi varsa giriş işlemi normal şekilde devam eder.

Oyuncuya kalan süresi mesaj olarak gösterilir.

Kod:
Kalan oynama süreniz: 60 dakika.

Kalan Süre Sıfırsa

Oyuncunun playtime değeri sıfırsa:

  1. Oyuncuya oynama süresinin bittiğini belirten mesaj gönderilir.
  2. Oyuncuya bağlantısının kesileceği bildirilir.
  3. 5 saniye beklenir.
  4. Oyuncunun bağlantısı otomatik olarak kesilir.

Örnek mesaj:

Kod:
Oynama süreniz sona ermiştir.
5 saniye içinde bağlantınız kesilecektir.

5 saniyelik bekleme süresi, oyuncunun neden oyundan çıkarıldığını anlayabilmesi için kullanılır.



Oynama Süresinin Azaltılması

Süre azaltma işlemi char.cpp içerisindeki kayıt veya zamanlama olayında gerçekleştirilir.

Oyuncu çevrim içi olduğu sürece kalan oynama süresi her dakika 1 azalır.

Kod:
Her 1 dakikada playtime değeri 1 azalır.

Örnek:

Kod:
Başlangıç: 60 dakika
1 dakika sonra: 59 dakika
2 dakika sonra: 58 dakika
10 dakika sonra: 50 dakika

Oyuncu oyundan çıktığında kalan süre veritabanına kaydedilir.

Oyuncu tekrar giriş yaptığında süre kaldığı yerden devam eder.

Süre Sıfıra Ulaştığında

Kalan süre sıfıra ulaştığında:

  • Oyuncuya süre bitiş mesajı gönderilir.
  • Kalan süre veritabanına kaydedilir.
  • Oyuncunun bağlantısı otomatik olarak kesilir.

Bu sayede oyuncu, oynama hakkı bittikten sonra sunucuda kalamaz.



Oynama Süresi Yükleme Eşyası

Sisteme yeni bir eşya kullanım alt türü eklenmiştir:

Kod:
USE_PLAYTIME_CHARGE

Bu alt türe sahip bir eşya kullanıldığında oyuncuya oynama süresi eklenir.

Eşyanın vereceği süre value[0] alanından belirlenir.

Kod:
value[0] = 60

Oyuncuya 60 dakika ekler.

Kod:
value[0] = 120

Oyuncuya 120 dakika, yani 2 saat ekler.

Kod:
value[0] = 240

Oyuncuya 240 dakika, yani 4 saat ekler.

Örnek Kullanım

Oyuncunun mevcut süresi:

Kod:
20 dakika

Oyuncu, 60 dakika veren bir süre eşyası kullanırsa:

Kod:
20 + 60 = 80 dakika

Oyuncunun yeni kalan oynama süresi 80 dakika olur.



Item Proto Ayarları

Oynama süresi veren eşyalar DB/item_proto içerisinde aşağıdaki değerlerle yapılandırılmalıdır.

Kod:
type     = 1
subtype  = 30
value0   = Verilecek dakika miktarı

Değerlerin açıklaması:

  • type = 1: ITEM_USE
  • subtype = 30: USE_PLAYTIME_CHARGE
  • value0: Oyuncuya eklenecek dakika miktarı

60 Dakikalık Eşya

Kod:
type = 1
subtype = 30
value0 = 60

120 Dakikalık Eşya

Kod:
type = 1
subtype = 30
value0 = 120

240 Dakikalık Eşya

Kod:
type = 1
subtype = 30
value0 = 240

Bu yapı sayesinde farklı miktarlarda oynama süresi veren birçok eşya hazırlanabilir.



/recharge Komutu

Sisteme, oyuncunun kalan oynama süresine manuel olarak dakika eklemek için yeni bir komut eklenmiştir.

Komut kullanımı:

Kod:
/recharge <dakika>

Örnek:

Kod:
/recharge 60

Bu komut, oyuncunun mevcut oynama süresine 60 dakika ekler.

Oyuncunun 30 dakikası varsa:

Kod:
30 + 60 = 90 dakika

olur.

Parametresiz Kullanım

Komut dakika belirtilmeden kullanılırsa kullanım bilgisi gösterilir.

Kod:
/recharge

Örnek çıktı:

Kod:
Kullanım: /recharge <dakika>

Bu komut aşağıdaki işlemler için kullanılabilir:

  • Sistemi test etmek
  • Oyunculara manuel süre vermek
  • Etkinlik ödülü dağıtmak
  • Hatalı süreleri düzeltmek
  • Game Master işlemleri gerçekleştirmek



Lua API Desteği

Sistemin görevler ve etkinlikler üzerinden yönetilebilmesi için Lua API fonksiyonları eklenmiştir.

pc.get_playtime()

Oyuncunun kalan oynama süresini dakika cinsinden döndürür.

Kod:
local remaining_time = pc.get_playtime()

say("Kalan oynama süren: " .. remaining_time .. " dakika.")

Oyuncunun 45 dakikası varsa fonksiyon:

Kod:
45

değerini döndürür.

Bu fonksiyon aşağıdaki alanlarda kullanılabilir:

  • Görev ekranında kalan süreyi göstermek
  • Süresi azalan oyuncuya uyarı vermek
  • Süresi olmayan oyuncunun göreve girişini engellemek
  • Süreye bağlı etkinlik hazırlamak

pc.add_playtime(minutes)

Oyuncunun kalan oynama süresine belirtilen miktarda dakika ekler.

Kod:
pc.add_playtime(60)

Bu kod oyuncuya 60 dakika oynama süresi ekler.

Görev örneği:

Kod:
say_title("Oynama Süresi Ödülü")
say("Bu görevi tamamladığın için")
say("60 dakika oynama süresi kazandın.")

pc.add_playtime(60)

Bu fonksiyon aşağıdaki sistemlerle birlikte kullanılabilir:

  • Görevler
  • Etkinlikler
  • Günlük giriş ödülleri
  • Boss ödülleri
  • Sandık sistemleri
  • Premium üyelikler
  • Kupon sistemleri
  • Nesne market satın alımları



Örnek Oyuncu Senaryosu

1. Karakter Oluşturma

Yeni karakter oluşturulduğunda:

Kod:
playtime = 60

olarak ayarlanır.

Oyuncunun 60 dakika oynama hakkı bulunur.

2. Oyuna Giriş

Oyuncu giriş yaptığında aşağıdaki mesajı görür:

Kod:
Kalan oynama süreniz: 60 dakika.

3. Oyunda Süre Geçirmesi

Oyuncu 25 dakika oynarsa:

Kod:
60 - 25 = 35 dakika

süresi kalır.

4. Oyundan Çıkış ve Tekrar Giriş

Oyuncu oyundan çıktığında kalan 35 dakika veritabanına kaydedilir.

Tekrar giriş yaptığında:

Kod:
Kalan oynama süreniz: 35 dakika.

mesajını görür.

Sistem tekrar 60 dakikadan başlamaz. Kalan süre üzerinden devam eder.

5. Süre Yükleme

Oyuncu 60 dakika veren bir eşya kullanırsa:

Kod:
35 + 60 = 95 dakika

olur.

6. Sürenin Bitmesi

Oyuncu oynamaya devam ettikçe sayaç azalır.

Kod:
3 dakika
2 dakika
1 dakika
0 dakika

Süre sıfıra ulaştığında oyuncunun bağlantısı kesilir.

Oyuncu tekrar giriş yapmaya çalışırsa süre bitiş mesajı gösterilir ve 5 saniye sonra bağlantısı tekrar kesilir.

Oyuncunun yeniden oynayabilmesi için karakterine yeni süre eklenmesi gerekir.



Bu Sistem Ne İşe Yarar?

Süreli Üyelik Sistemi

Oyunculara satın aldıkları pakete göre oyun süresi verilebilir.

Kod:
1 saatlik paket
5 saatlik paket
24 saatlik paket
100 saatlik paket

İnternet Kafe Sistemi

Oyuncuya satın aldığı veya tanımlanan süre kadar oyun erişimi verilebilir.

Süre bittiğinde oyuncunun bağlantısı otomatik olarak kesilir.

Yeni Oyuncu Deneme Süresi

Yeni oyunculara ücretsiz olarak 60 dakika deneme süresi verilebilir.

Oyuncular daha sonra görevlerden, etkinliklerden, eşyalardan veya mağazadan yeni süre kazanabilir.

Etkinlik Ödülleri

Oyunculara etkinlik ödülü olarak oynama süresi verilebilir.

Kod:
Boss öldürme ödülü: 30 dakika
Günlük görev ödülü: 60 dakika
Haftalık etkinlik ödülü: 240 dakika

Premium veya VIP Sistem

Premium oyunculara daha yüksek miktarda oynama süresi tanımlanabilir.

Kod:
Normal oyuncu: 60 dakika
Premium oyuncu: 600 dakika
VIP oyuncu: Düzenli yenilenen süre

Günlük Oyun Süresi Limiti

Oyunculara her gün belirli miktarda oynama süresi verilebilir.

Örneğin, oyuncuya günlük 120 dakika tanımlanırsa iki saatlik kullanım sonunda oyuncu oyundan çıkarılır.



Sistemin Avantajları

  • Oynama süresi veritabanında saklanır.
  • Oyuncu çıkış yaptığında kalan süre kaybolmaz.
  • Süre her dakika otomatik olarak azalır.
  • Süre sıfırlandığında oyuncu otomatik olarak çıkarılır.
  • Eşyalar üzerinden süre eklenebilir.
  • Yönetici komutuyla manuel süre verilebilir.
  • Lua görevleri üzerinden süre yönetilebilir.
  • Mağaza ve ödeme sistemlerine bağlanabilir.
  • Etkinlik ödülü olarak kullanılabilir.
  • Farklı süre paketleri hazırlanabilir.



Dikkat Edilmesi Gereken Noktalar

Süre Dakika Cinsindedir

playtime alanındaki değer dakika olarak değerlendirilir.

Kod:
60 = 60 dakika
120 = 2 saat
1440 = 24 saat

Eski Verilerin Dönüştürülmesi

Eski sistemde playtime toplam oynama süresini tuttuğu için mevcut oyuncuların değerleri çok yüksek olabilir.

Örneğin:

Kod:
playtime = 150000

değerine sahip eski bir karakter yeni sisteme doğrudan geçirilirse, oyuncuya 150.000 dakika oynama hakkı verilmiş olur.

Bu nedenle sistem kurulurken eski değerlerin sıfırlanması veya uygun bir başlangıç süresine dönüştürülmesi gerekir.

Örnek SQL sorgusu:

SQL:
UPDATE player.player
SET playtime = 60;

[WARNING]Bu sorgu bütün karakterlerin oynama süresini 60 dakika olarak değiştirir. Canlı veritabanında işlem yapılmadan önce mutlaka yedek alınmalıdır.[/WARNING]

XenForo kurulumunuzda WARNING etiketi desteklenmiyorsa bu bölümü normal kalın yazı olarak kullanabilirsiniz.

Sürenin Negatife Düşmesi

Süre azaltılırken playtime değerinin sıfırın altına düşmesi engellenmelidir.

C++:
if (playtime > 0)
{
playtime--;
}

Süre sıfıra ulaştığında değer sıfır olarak korunmalı ve oyuncunun bağlantısı kesilmelidir.

Eşya Kullanım Kontrolleri

Süre yükleme eşyası kullanılırken:

  • Eşya alt türü kontrol edilmelidir.
  • value[0] değeri sıfırdan büyük olmalıdır.
  • Süre başarıyla eklendikten sonra eşya tüketilmelidir.
  • Oyuncuya eklenen süre mesaj olarak bildirilmelidir.

Örnek mesaj:

Kod:
Oynama sürenize 60 dakika eklendi.
Toplam kalan süreniz: 125 dakika.

Maksimum Süre Sınırı

Oyuncuların sınırsız miktarda süre biriktirmesini önlemek için maksimum süre sınırı eklenebilir.

Örnek:

Kod:
Maksimum oynama süresi: 43.200 dakika

43.200 dakika yaklaşık 30 güne karşılık gelir.



Özet

Yeni sistemde playtime, oyuncunun toplam oynama süresini değil, kalan oynama hakkını temsil eder.

Oyuncu çevrim içi olduğu sürece sayaç her dakika azalır. Kalan süre sıfıra ulaştığında oyuncunun bağlantısı otomatik olarak kesilir.

Yeni karakterler 60 dakika ile başlar. Oyuncular süre yükleme eşyaları, /recharge komutu veya Lua fonksiyonları aracılığıyla yeni oynama süresi kazanabilir.

Sistem; süreli üyelik, premium erişim, internet kafe modeli, etkinlik ödülleri, günlük limit ve kontrollü oyun erişimi gibi birçok farklı projede kullanılabilir.

İyi forumlar.
 

Şu an konuyu görüntüleyenler (Toplam : 1, Üye: 0, Misafir: 1)

Geri
Üst