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

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.246
Çözümler
81
Beğeni
675
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++:
// 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.
 
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++:
// 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:
    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:
HEALTH_LIST=[
    HORSE_HEALTH0,
    HORSE_HEALTH1,
    HORSE_HEALTH2,
    HORSE_HEALTH3,
]

locale_game.txt:
Kod:
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++:
// 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:
    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:
HEALTH_LIST=[
    HORSE_HEALTH0,
    HORSE_HEALTH1,
    HORSE_HEALTH2,
    HORSE_HEALTH3,
]

locale_game.txt:
Kod:
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ı.
Geri
Üst