Çözüldü Kostüm süreleri

  • Konuyu açan Konuyu açan hako26
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 16
  • Gösterim Gösterim 120
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

hako26

Üye
Üye
Mesaj
75
Beğeni
6
Puan
466
Ticaret Puanı
0
Merhaba, gaya magzadaki itemlerin süreleri 0 olarak gözüküyor ayrıyeten süreli itemlerin petlerin vb.. envantere geldiği zaman süreleri gözükmüyor bunun tam olarak sebebi nedir?
 
Çözüm
Teşekkürler düzeldi tam olarak sorun neymiş?
leftSec = max(0, metinSlot[0] - app.GetGlobalTimeStamp())

metinSlot[0] itemin bitiş zamanıdır ve sunucu bunu ancak item oluşturulunca (satın alınınca) yazar. Dükkandaki ya da Gaya mağazasındaki item henüz oluşmadığı için bu değer 0. 0'dan şimdiki zaman çıkınca sonuç eksi oluyor, max(0, ...) de bunu 0'a çeviriyor. Yani satın aldıktan sonra envanterde süre doğru görünür, hata sadece dükkan tooltip’inde.


Yaptığım düzeltme: AppendMallItemLastTime fonksiyonuna bir kontrol ekledim. Bitiş zamanı 0 ise itemin proto’daki LIMIT_REAL_TIME süresini okuyup işlemesini sağlıyor.

Python:
Genişlet Daralt Kopyala
def AppendMallItemLastTime(self, endTime):
    if endTime <= 0 and self.itemVnum...
Kostümünün item_proto satırını bulduktan sonra şu sütunları kontrol edip düzenlemelisin:

  • LIMIT_TYPE_0: LIMIT_REAL_TIME veya LIMIT_REAL_TIME_FIRST_USE olmalıdır.
    • LIMIT_REAL_TIME: Kostüm envantere girdiği andan itibaren süresi geriye doğru saymaya başlar (Giyilsin veya giyilmesin).
    • LIMIT_REAL_TIME_FIRST_USE: Kostüm sağ tıklanıp ilk kez giyildiği andan itibaren süresi saymaya başlar.
    • LIMIT_VALUE_0: Kostümün süresini Saniye (sec) cinsinden yazman gerekir.
    • 2. Süre (Saniye) Hesaplama Tablosu​

      İstediğin süreye göre LIMIT_VALUE_0 kısmına yazman gereken değerler:

      SüreSaniye HesabıLIMIT_VALUE_0 Değeri
      1 Gün$24 \times 60 \times 60$86400
      7 Gün$7 \times 86400$604800
      15 Gün$15 \times 86400$1296000
      30 Gün$30 \times 86400$2592000
 
Geneler olarak bu sorun var item-protoda süreler tanımlı ama oyun içinde gözükmüyor gayada süreleri tanımlı olan itemler 0 olarak gözüküyor envantere düşen itemlerin süreleri gözükmüyor
 
Maalesef o konuda bir bilgim yok. Bende yeni sayılırım o yüzden yanlış yönlendirmiyim. Yardımcı olan dostlar olur size.
 
Aklıma geldi de kullandığın filesin özelliklerini vs de yazman aydınlatıcı olur. marty, owsap, razu falan. en azından açıklayıcılığı da olur
 
/item ile oluşturulan bir kostümün süresi var mı?
 
Süresi görünmeyen her hangi bir itemin, İtem proto kaydını atar mısın. Tooltip kısmında bir hata göremedim ben ya Proto kaynaklı ya da Client source kaynaklı olabilir.
 
1791824786067.webp
item:
Genişlet Daralt Kopyala
56072    ےܧvݒȯ҇    ITEM_UNIQUE    USE_PET    1    ANTI_STACK    LOG    WEAR_CHARM    NONE    120    0    0    0    0    REAL_TIME    604800    LIMIT_NONE    0    APPLY_MAX_HP    2000    APPLY_MELEE_MAGIC_ATTBONUS_PER    25    APPLY_ATTBONUS_MONSTER    25    30237    0    0    0    0    0    0    0    0
 
Teşekkürler düzeldi tam olarak sorun neymiş?
leftSec = max(0, metinSlot[0] - app.GetGlobalTimeStamp())

metinSlot[0] itemin bitiş zamanıdır ve sunucu bunu ancak item oluşturulunca (satın alınınca) yazar. Dükkandaki ya da Gaya mağazasındaki item henüz oluşmadığı için bu değer 0. 0'dan şimdiki zaman çıkınca sonuç eksi oluyor, max(0, ...) de bunu 0'a çeviriyor. Yani satın aldıktan sonra envanterde süre doğru görünür, hata sadece dükkan tooltip’inde.


Yaptığım düzeltme: AppendMallItemLastTime fonksiyonuna bir kontrol ekledim. Bitiş zamanı 0 ise itemin proto’daki LIMIT_REAL_TIME süresini okuyup işlemesini sağlıyor.

Python:
Genişlet Daralt Kopyala
def AppendMallItemLastTime(self, endTime):
    if endTime <= 0 and self.itemVnum:
        item.SelectItem(self.itemVnum)
        for i in xrange(item.LIMIT_MAX_NUM):
            (limitType, limitValue) = item.GetLimit(i)
            if item.LIMIT_REAL_TIME == limitType and limitValue > 0:
                self.AppendSpace(5)
                self.AppendTextLine(localeInfo.LEFT_TIME + " : " + localeInfo.SecondToDHM(limitValue), self.NORMAL_COLOR)
                return
    leftSec = max(0, endTime - app.GetGlobalTimeStamp())
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst