Yardım At Yürüyüşü Skili - Cooldown Problemi

  • Konuyu açan Konuyu açan Kaiser
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 7
  • Gösterim Gösterim 157
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

Kaiser

Admin
Admin
Geliştirici
Yardımsever Üye
Mesaj
4.042
Çözümler
392
Beğeni
4.166
Puan
1.849
Ticaret Puanı
0


Merhabalar, pythondan çok iyi anlamıyorum ve sorunun sebebiyle alakalı olabilecek her yere bakmama rağmen sebebini bulamadım.
Sorundan kısaca bahsedeyim; at yürüyüşü skilini kullandığımda character ekranında cooldown efekti çalışmıyor. yaklaşık 15 saniye bekleme süresi olmasına rağmen 1 saniyede efekt bitiyor ancak skill hala 15 saniye boyunca kullanılamıyor. Sadece bu skillde bu sorun var. At yürüyüşü skili bir çok farklı konuda da bana sıkıntı yaşattı ama bunu çözemedim. Ve daha garip olan şey; videoda taskbarda F2 slotunda at yürüyüşü skili var ve sorunsuz olarak çalışıyor. Nedense sadece character ekranında böyle bir mevzu var.
Daha önce benzer sorunu yaşayan oldu mu acaba?

- Skill index 138 olarak doğru çağrılıyor.
- Syserr ve syslog yok.
Ve cooldown efektini tetikleyen kısım ise şurası: ancak hiçbir değişiklik yapmadım.
Python:
Genişlet Daralt Kopyala
    def OnUseSkill(self, slotIndex, coolTime):

        skillIndex = player.GetSkillIndex(slotIndex)
        skillType = skill.GetSkillType(skillIndex)

        ## ACTIVE
        if skill.SKILL_TYPE_ACTIVE == skillType:
            skillGrade = player.GetSkillGrade(slotIndex)
            slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
        ## ETC
        else:
            slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)

        for slotWindow in self.skillPageDict.values(): ## BURASI
            if slotWindow.HasSlot(slotIndex):
                slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                return

Koddaki SetSlotCoolTime fonksiyonu aracılığı ile coolTime'ı syserr'a yazdırdım. 15 saniye sayım yapıyor, yani süreyle alakalı bir problem yok.
Fakat görsel olarak cooldown olması gerektiği gibi çalışmıyor.
 
Selam, 1 adet sorum 1 adet çözüm önerim olacak:

Soru:
1- Belirttiğin beceriyi alttaki slotlara koyunca da aynı şekilde dolum yapıyor mu yoksa orada farklı karakter penceresinde farklı mı animasyon oynatıyor? Diğer beceriyi denediğin için bunu göremedim

Çözüm Önerisi:
2- Eğer 1. sorumun cevabı iki tarafta da aynı animasyon ise skill protodaki yeniden kullanım ve cd arasındaki süre uyuşmazlığından kaynaklı olabilir böylece bu eşitlenip yeniden denenebilir.
 
Selam, 1 adet sorum 1 adet çözüm önerim olacak:

Soru:
1- Belirttiğin beceriyi alttaki slotlara koyunca da aynı şekilde dolum yapıyor mu yoksa orada farklı karakter penceresinde farklı mı animasyon oynatıyor? Diğer beceriyi denediğin için bunu göremedim

Çözüm Önerisi:
2- Eğer 1. sorumun cevabı iki tarafta da aynı animasyon ise skill protodaki yeniden kullanım ve cd arasındaki süre uyuşmazlığından kaynaklı olabilir böylece bu eşitlenip yeniden denenebilir.
İlk başta farklı beceriyi gösterme sebebim diğerlerinde sorun olmadığını göstermekti.

Videoda zaten belirttiğim skill alt kısımda da ekli (F2), orada sorunsuz çalışıyor ve dolum efekti gösteriliyor. Ama aynı skill karakter ekranında sorunlu görünüyor maalesef.

Ek olarak: veritabanında ve pack tarafında cooldown süreleri 15 saniye. Yani eşit..
 
Ek Bilgi:
Sanırım bu sorun herkeste veya birçok kişide mevcut. Şimdi elimdeki marty filesına giriş yapıp denedim ve onda da aynı sorun mevcut.

@MEKA

En azından sorunun benden kaynaklı olmamasına sevindim :D
 
@Kaiser benim dosyalarımda gördüğüm kadarıyla skill hedef ile temas anına kadar normal bir şekilde cooldown yapıyor ama temas ettiği anda sıfırlanmaya giriyor. Bu olaya örnek vermek gerekirse savaşçı/bedensel hamle becerisi de aynı şekilde olmaktadır.

root/uicharacter.py:
Genişlet Daralt Kopyala
    def OnUseSkill(self, slotIndex, coolTime):
        skillIndex = player.GetSkillIndex(slotIndex)
        skillType = skill.GetSkillType(skillIndex)

        ## ACTIVE
        if skill.SKILL_TYPE_ACTIVE == skillType:
            skillGrade = player.GetSkillGrade(slotIndex)
            slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
        ## ETC
        else:
            slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)

        for slotWindow in self.skillPageDict.values():
            if slotWindow.HasSlot(slotIndex):
                slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                return

root/uitaskbar.py:
Genişlet Daralt Kopyala
    def OnUseSkill(self, usedSlotIndex, coolTime):
        QUICK_SLOT_SLOT_COUNT = 4
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Activate(coolTime)

        ## Quick Slot
        for slotWindow in self.quickslot:
            for i in xrange(QUICK_SLOT_SLOT_COUNT):
                (Type, Position) = player.GetLocalQuickSlot(slotIndex)
                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                        return
                slotIndex += 1
 
@Kaiser benim dosyalarımda gördüğüm kadarıyla skill hedef ile temas anına kadar normal bir şekilde cooldown yapıyor ama temas ettiği anda sıfırlanmaya giriyor. Bu olaya örnek vermek gerekirse savaşçı/bedensel hamle becerisi de aynı şekilde olmaktadır.

root/uicharacter.py:
Genişlet Daralt Kopyala
    def OnUseSkill(self, slotIndex, coolTime):
        skillIndex = player.GetSkillIndex(slotIndex)
        skillType = skill.GetSkillType(skillIndex)

        ## ACTIVE
        if skill.SKILL_TYPE_ACTIVE == skillType:
            skillGrade = player.GetSkillGrade(slotIndex)
            slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
        ## ETC
        else:
            slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)

        for slotWindow in self.skillPageDict.values():
            if slotWindow.HasSlot(slotIndex):
                slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                return

root/uitaskbar.py:
Genişlet Daralt Kopyala
    def OnUseSkill(self, usedSlotIndex, coolTime):
        QUICK_SLOT_SLOT_COUNT = 4
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Activate(coolTime)

        ## Quick Slot
        for slotWindow in self.quickslot:
            for i in xrange(QUICK_SLOT_SLOT_COUNT):
                (Type, Position) = player.GetLocalQuickSlot(slotIndex)
                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                        return
                slotIndex += 1
Şimdi anladım, çok saçma bir durummuş... Teşekkür ederim bilgilendirme için.
Bunu tesadüfen fark ettiğim için ve sage skill vb. ekli olduğundan sorunun benden kaynaklı olabileceğini düşünmüştüm. Çok saçma bir bugmuş..
Konuyu açık bırakacağım, belki birileri çözer. Çünkü python beni gerçekten sinir ediyor :D
 
Şimdi anladım, çok saçma bir durummuş... Teşekkür ederim bilgilendirme için.
Bunu tesadüfen fark ettiğim için ve sage skill vb. ekli olduğundan sorunun benden kaynaklı olabileceğini düşünmüştüm. Çok saçma bir bugmuş..
Konuyu açık bırakacağım, belki birileri çözer. Çünkü python beni gerçekten sinir ediyor :D
Benim de python bilgim yetmiyor bunu düzeltmeye. C++ taraflı olsa 2 yerde de aynı olay ile karşılaşırdık. Bunun tek sebebi 2 py nin cooldown olayını farklı ele almasından kaynaklanıyor.
 
@Kaiser benim dosyalarımda gördüğüm kadarıyla skill hedef ile temas anına kadar normal bir şekilde cooldown yapıyor ama temas ettiği anda sıfırlanmaya giriyor. Bu olaya örnek vermek gerekirse savaşçı/bedensel hamle becerisi de aynı şekilde olmaktadır.

root/uicharacter.py:
Genişlet Daralt Kopyala
    def OnUseSkill(self, slotIndex, coolTime):
        skillIndex = player.GetSkillIndex(slotIndex)
        skillType = skill.GetSkillType(skillIndex)

        ## ACTIVE
        if skill.SKILL_TYPE_ACTIVE == skillType:
            skillGrade = player.GetSkillGrade(slotIndex)
            slotIndex = self.__GetRealSkillSlot(skillGrade, slotIndex)
        ## ETC
        else:
            slotIndex = self.__GetETCSkillRealSlotIndex(slotIndex)

        for slotWindow in self.skillPageDict.values():
            if slotWindow.HasSlot(slotIndex):
                slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                return

root/uitaskbar.py:
Genişlet Daralt Kopyala
    def OnUseSkill(self, usedSlotIndex, coolTime):
        QUICK_SLOT_SLOT_COUNT = 4
        slotIndex = 0

        ## Current Skill Button
        if usedSlotIndex == self.curSkillButton.GetSlotIndex():
            self.curSkillButton.Activate(coolTime)

        ## Quick Slot
        for slotWindow in self.quickslot:
            for i in xrange(QUICK_SLOT_SLOT_COUNT):
                (Type, Position) = player.GetLocalQuickSlot(slotIndex)
                if Type == player.SLOT_TYPE_SKILL:
                    if usedSlotIndex == Position:
                        slotWindow.SetSlotCoolTime(slotIndex, coolTime)
                        return
                slotIndex += 1
uyarlayıp dönüş yapacağım inşallah
 
Geri
Üst