emirhanHCL 1
emirhanHCL
farkmt2official 1
farkmt2official
mannaxxx 1
mannaxxx
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
Hikaye Ekle

Cevaplanmadı 6. ve 7. Efsun ekleme sistemi NPC'den TR gibi

  • Konuyu başlatan Konuyu başlatan Freaky Morex
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 19
  • Görüntüleme Görüntüleme 347

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

Seon-Hae NPC'sinden TR gibi 6. ve 7. efsun ekleme sistemini ekledim ama 24 saat npc'de bekletme muhabbetini çözemedim elinde olan veya bir files'da varsa link atabilir mi
 
Bu “24 saat NPC’de bekletme” olayı çoğu pakette anlatıldığı gibi itemi gerçekten NPC’ye bırakıp bekletme değil. Genelde yaptıkları şey, 6-7 efsun bastıktan sonra aynı işlemi tekrar yapamasın diye 24 saatlik süre kilidi koymak. O yüzden “NPC’de bekledi” diye geçiyor ama teknik olarak cooldown mantığı.

İki yöntem var:

1) En kolay ve sorunsuz olan (cooldown):
6-7 efsun basıldığı anda oyuncuya/sisteme bir zaman yazarsın. Süre dolmadan NPC tekrar işlem yaptırmaz. Ne item kaybolur ne DB işi çıkarır.

Mantık şu:

  • Efsun basınca get_time() + 24*60*60 kaydet
  • NPC’ye tekrar gelince süre dolmadıysa engelle
Bunu quest’e eklemek yeterli oluyor.

2) TR’ye daha yakın olan (emanet):
Itemi NPC’ye verdirirsin, oyuncudan silersin, item bilgilerini DB’ye kaydedersin, 24 saat sonra geri verdirirsin. Bu daha gerçekçi ama işi büyütür. DB tablosu, item restore, kayıp riskleri vs. giriyor.

Sen “bekletme muhabbeti” diyorsun ya, çoğu files’in yaptığı şey birinci yöntem. Emanet sistemi olanlar da var ama hazır link bulsan bile birebir oturmaz çünkü her files’in item/attr yapısı farklı.

En pratik çözüm: 6-7 efsun bastığın quest bloğunun içine şu mantığı koyarsın:

  • işlem başarılı olunca 24 saat sonraya timestamp yaz
  • NPC’ye girişte kontrol edip süre dolmadıysa “kalan süre” yazdırıp çık
Bunu karaktere yazarsan herkes için tek cooldown olur. En doğrusu item bazlı yapmak istiyorsan timestamp’i itemin socket’ine yazmak.
 
tam olarak önerin nedir peki
Kısaca ve net söyleyeyim: itemi NPC’ye emanet etme işine girme. Bunun yerine 6–7 efsun basılan iteme 24 saatlik kilit koy. En temiz, en sorunsuz yol bu.

Benim önerdiğim yöntem şu:
6–7 efsun basıldığı anda, o itemin socket’lerinden birine (boş olan bir socket) “şu anki zaman + 24 saat” bilgisini yaz. Böylece o iteme özel bir bekleme süresi olur. NPC’ye tekrar gelindiğinde de o socket’e bakılır; süre dolmamışsa işlem yaptırılmaz.

Bunun artıları:

  • DB tablosu açmana gerek yok
  • Reboot, ch değişimi, crash gibi durumlarda item kaybolmaz
  • Aynı karakterin başka itemleri etkilenmez
  • TR’deki “24 saat bekle” mantığını birebir karşılar
Uygulama mantığı da basit:
  • Seon-Hae’de 6–7 efsun başarıyla basıldı → item socket’ine 24 saat sonrası yazılır
  • NPC’ye tekrar gelince → socket’teki zaman kontrol edilir
  • Süre dolmadıysa “işlem devam ediyor” mesajı verilir
  • Süre dolduysa tekrar efsun basılmasına izin verilir
Özetle:
Item bazlı, socket üzerinden süre tutma en doğru çözüm. NPC’ye bırakma, DB’ye yazma gibi şeyler bu iş için gereksiz ve risklidir.
 

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

Geri
Üst