Çözüldü At yorulmuyor ve acıkmıyor?

  • Konuyu açan Konuyu açan melihalbayrak
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 6
  • Gösterim Gösterim 831
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ı.

melihalbayrak

Geliştirici
Geliştirici
Yardımsever Üye
Usta Üye
Mesaj
1.241
Çözümler
81
Beğeni
677
Puan
1.109
Ticaret Puanı
0
Oyunda at ne kadar kullanılırsa kullanılsın yorulmuyor acıkmıyor bunun orijinal haline nasıl getirebiliriz?
 
Çözüm
Nokta atışı yaparak bunun sebebini bulmak biraz uğraştırıcı olabilir fakat bağlantılı olan her şeyi ele almak gerekiyor maalesef.
horse_rider.cpp dosyasında şu kısımlar mevcut. Senin dosyalarla karşılaştır istersen.

C++:
Genişlet Daralt Kopyala
// Health
void CHorseRider::ResetHorseHealthDropTime()
{
    m_Horse.dwHorseHealthDropTime = get_global_time() + HORSE_HEALTH_DROP_INTERVAL;
}

void CHorseRider::CheckHorseHealthDropTime(bool bSend)
{
    DWORD now = get_global_time();

    while (m_Horse.dwHorseHealthDropTime < now)
    {
        m_Horse.dwHorseHealthDropTime += HORSE_HEALTH_DROP_INTERVAL;
        UpdateHorseHealth(-1, bSend);
    }
}

void CHorseRider::UpdateHorseHealth(int iHealth, bool bSend)
{
    int level = GetHorseLevel()...
GetHorseHealth

Bunu farklı bir fileste aratarak karşılaştırma yapabilirsin.
Baktım ama aynı yani farklı bir şey bulamadım. Bu başka neyden kaynaklı olabilir bilgin var mı? Quest olarak düşünmüştüm ilk başta ama questlerde official questler yani %100 kalması gerektiren bir durum yok. Source taraflıda bu tarz bir düzenleme yapmadım.
 
Baktım ama aynı yani farklı bir şey bulamadım. Bu başka neyden kaynaklı olabilir bilgin var mı? Quest olarak düşünmüştüm ilk başta ama questlerde official questler yani %100 kalması gerektiren bir durum yok. Source taraflıda bu tarz bir düzenleme yapmadım.
Üzerinde çalıştığım files de test serverini açtığımda(oldschool bir serverdi) oyunculardan şöyle olumlu bir feedback almıştım;
At acıkıyor ve acıkınca otomotik olarak karakter yere iniyor. Işınlandığında ise tekrar açlık yüzdesi fulleniyor ve aktif kullanıma devam ediliyordu. Test etmeye çalıştığın süreçte bir yere teleport olmadan dene testi. Çünkü ışınlanma at açlığını bir çok files de fullüyor. Ben ekseriyette bir müdahale yapmadım ama ilgili doyalar hangisi ise onlara bakmak istersen atabilirim.
Bende şöyle bir güncelleme vardı, 1 seviye atın üzerinde vurmayı açmıştım. Game src de pvp.cpp , client srcde instantebase.cpp olması lazım bu ikisine müdahale etmiştim. 1 Seviye at üzerinde bir yere teleport olmadan oldukları mepte metin kesenlerin yarım saat içinde atları acıkıyordu.
 
Üzerinde çalıştığım files de test serverini açtığımda(oldschool bir serverdi) oyunculardan şöyle olumlu bir feedback almıştım;
At acıkıyor ve acıkınca otomotik olarak karakter yere iniyor. Işınlandığında ise tekrar açlık yüzdesi fulleniyor ve aktif kullanıma devam ediliyordu. Test etmeye çalıştığın süreçte bir yere teleport olmadan dene testi. Çünkü ışınlanma at açlığını bir çok files de fullüyor. Ben ekseriyette bir müdahale yapmadım ama ilgili doyalar hangisi ise onlara bakmak istersen atabilirim.
Bende şöyle bir güncelleme vardı, 1 seviye atın üzerinde vurmayı açmıştım. Game src de pvp.cpp , client srcde instantebase.cpp olması lazım bu ikisine müdahale etmiştim. 1 Seviye at üzerinde bir yere teleport olmadan oldukları mepte metin kesenlerin yarım saat içinde atları acıkıyordu.
İlginç böyle bir şeyi ilk defa senden duyuyorum. Teleportlarda at neden can fullesin ki bu bahsettiğin bir sistem eklenti vs falan mı? Çünkü benim geliştirmeye sıfır mainline ve orijinal pack vs ile başlamıştım ne eklediğimi çıkardığımı biliyorum ama bu tarz bir şey eklemedim.
 
Nokta atışı yaparak bunun sebebini bulmak biraz uğraştırıcı olabilir fakat bağlantılı olan her şeyi ele almak gerekiyor maalesef.
horse_rider.cpp dosyasında şu kısımlar mevcut. Senin dosyalarla karşılaştır istersen.

C++:
Genişlet Daralt Kopyala
// Health
void CHorseRider::ResetHorseHealthDropTime()
{
    m_Horse.dwHorseHealthDropTime = get_global_time() + HORSE_HEALTH_DROP_INTERVAL;
}

void CHorseRider::CheckHorseHealthDropTime(bool bSend)
{
    DWORD now = get_global_time();

    while (m_Horse.dwHorseHealthDropTime < now)
    {
        m_Horse.dwHorseHealthDropTime += HORSE_HEALTH_DROP_INTERVAL;
        UpdateHorseHealth(-1, bSend);
    }
}

void CHorseRider::UpdateHorseHealth(int iHealth, bool bSend)
{
    int level = GetHorseLevel();

    m_Horse.sHealth = MINMAX(0, m_Horse.sHealth + iHealth, c_aHorseStat[level].iMaxHealth);

    if (level && m_Horse.sHealth == 0)
        HorseDie();

    if (bSend)
        SendHorseInfo();

void CHorseRider::HorseDie()
{
    sys_log(0, "HORSE DIE %p %p", get_pointer(m_eventStaminaRegen), get_pointer(m_eventStaminaConsume));
    UpdateHorseStamina(-m_Horse.sStamina);
    event_cancel(&m_eventStaminaRegen);
    event_cancel(&m_eventStaminaConsume);
}
}

Ayrıca sorun belki py taraflı da olabilir. Server tarafında at acıkıyordur fakat py tarafında bunu görüntüleyen kodlarda değişiklik yapılmış olabilir.

uiaffectshower.py:
Python:
Genişlet Daralt Kopyala
    def SetState(self, level, health, battery):
        #self.textLineList=[]
        self.toolTip.ClearToolTip()

        if level>0:

            try:
                grade = self.__GetHorseGrade(level)
                self.__AppendText(localeInfo.LEVEL_LIST[grade])
            except IndexError:
                print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery)
                return

            try:
                healthName=localeInfo.HEALTH_LIST[health]
                if len(healthName)>0:
                    self.__AppendText(healthName)
            except IndexError:
                print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery)
                return

            if health>0:
                if battery==0:
                    self.__AppendText(localeInfo.NEEFD_REST)

            try:
                fileName=self.FILE_DICT[health*10+battery]
            except KeyError:
                print "HorseImage.SetState(level=%d, health=%d, battery=%d) - KeyError" % (level, health, battery)

            try:
                self.LoadImage(fileName)
            except:
                print "HorseImage.SetState(level=%d, health=%d, battery=%d) - LoadError %s" % (level, health, battery, fileName)

        self.SetScale(0.7, 0.7)

localeInfo.py:
Python:
Genişlet Daralt Kopyala
HEALTH_LIST=[
    HORSE_HEALTH0,
    HORSE_HEALTH1,
    HORSE_HEALTH2,
    HORSE_HEALTH3,
]

locale_game.txt:
Kod:
Genişlet Daralt Kopyala
HORSE_HEALTH0    Ölü
HORSE_HEALTH1    Aç kalmış halde
HORSE_HEALTH2    Acıkmış halde
HORSE_HEALTH3    Tok
 
Nokta atışı yaparak bunun sebebini bulmak biraz uğraştırıcı olabilir fakat bağlantılı olan her şeyi ele almak gerekiyor maalesef.
horse_rider.cpp dosyasında şu kısımlar mevcut. Senin dosyalarla karşılaştır istersen.

C++:
Genişlet Daralt Kopyala
// Health
void CHorseRider::ResetHorseHealthDropTime()
{
    m_Horse.dwHorseHealthDropTime = get_global_time() + HORSE_HEALTH_DROP_INTERVAL;
}

void CHorseRider::CheckHorseHealthDropTime(bool bSend)
{
    DWORD now = get_global_time();

    while (m_Horse.dwHorseHealthDropTime < now)
    {
        m_Horse.dwHorseHealthDropTime += HORSE_HEALTH_DROP_INTERVAL;
        UpdateHorseHealth(-1, bSend);
    }
}

void CHorseRider::UpdateHorseHealth(int iHealth, bool bSend)
{
    int level = GetHorseLevel();

    m_Horse.sHealth = MINMAX(0, m_Horse.sHealth + iHealth, c_aHorseStat[level].iMaxHealth);

    if (level && m_Horse.sHealth == 0)
        HorseDie();

    if (bSend)
        SendHorseInfo();

void CHorseRider::HorseDie()
{
    sys_log(0, "HORSE DIE %p %p", get_pointer(m_eventStaminaRegen), get_pointer(m_eventStaminaConsume));
    UpdateHorseStamina(-m_Horse.sStamina);
    event_cancel(&m_eventStaminaRegen);
    event_cancel(&m_eventStaminaConsume);
}
}

Ayrıca sorun belki py taraflı da olabilir. Server tarafında at acıkıyordur fakat py tarafında bunu görüntüleyen kodlarda değişiklik yapılmış olabilir.

uiaffectshower.py:
Python:
Genişlet Daralt Kopyala
    def SetState(self, level, health, battery):
        #self.textLineList=[]
        self.toolTip.ClearToolTip()

        if level>0:

            try:
                grade = self.__GetHorseGrade(level)
                self.__AppendText(localeInfo.LEVEL_LIST[grade])
            except IndexError:
                print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery)
                return

            try:
                healthName=localeInfo.HEALTH_LIST[health]
                if len(healthName)>0:
                    self.__AppendText(healthName)
            except IndexError:
                print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery)
                return

            if health>0:
                if battery==0:
                    self.__AppendText(localeInfo.NEEFD_REST)

            try:
                fileName=self.FILE_DICT[health*10+battery]
            except KeyError:
                print "HorseImage.SetState(level=%d, health=%d, battery=%d) - KeyError" % (level, health, battery)

            try:
                self.LoadImage(fileName)
            except:
                print "HorseImage.SetState(level=%d, health=%d, battery=%d) - LoadError %s" % (level, health, battery, fileName)

        self.SetScale(0.7, 0.7)

localeInfo.py:
Python:
Genişlet Daralt Kopyala
HEALTH_LIST=[
    HORSE_HEALTH0,
    HORSE_HEALTH1,
    HORSE_HEALTH2,
    HORSE_HEALTH3,
]

locale_game.txt:
Kod:
Genişlet Daralt Kopyala
HORSE_HEALTH0    Ölü
HORSE_HEALTH1    Aç kalmış halde
HORSE_HEALTH2    Acıkmış halde
HORSE_HEALTH3    Tok
Yardımların için teşekkür ederim ama sorun yokmuş aslında :) GM karakterde at dayanıklılığı vs düşmüyor hiç ondan dolayı ben düşmüyor sanmışım sorun yok yani.
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst