- 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?
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()...
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.GetHorseHealth
Bunu farklı bir fileste aratarak karşılaştırma yapabilirsin.
Üzerinde çalıştığım files de test serverini açtığımda(oldschool bir serverdi) oyunculardan şöyle olumlu bir feedback almıştı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.
İ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.Ü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.
// 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);
}
}
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)
HEALTH_LIST=[
HORSE_HEALTH0,
HORSE_HEALTH1,
HORSE_HEALTH2,
HORSE_HEALTH3,
]
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.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