Src dosyaları mevcut mu ?iyi aksamlar acemi asker atı ile metin keserken at yem istiyor bununu fixini arıyorum normal ,zırhlı ve askeri olucak şekilde
Çağırdığı at seviye farketmeksizin belirli bir süre sonra yoruluyor ve beslemeden ata biniyor. Arkadaş at dayanıklılığı mevzusunu kaldırmak istiyor tamamen. Bende arıyorum bu mevzuyu.Şimdi asker at ile metin keserken tam ne oluyor kanka anlatır mısın? Ona göre yardımcı olayım.
Game src kısmında horse_rider.cpp dosyası var ona gir resimde ki gibi kod satırı en başta olurÇağırdığı at seviye farketmeksizin belirli bir süre sonra yoruluyor ve beslemeden ata biniyor. Arkadaş at dayanıklılığı mevzusunu kaldırmak istiyor tamamen. Bende arıyorum bu mevzuyu.
Yorum satırına alsak sorun olur muGame src kısmında horse_rider.cpp dosyası var ona gir resimde ki gibi kod satırı en başta olur
HORSE_HEALTH_DROP_INTERVAL - Atın sağlığı ne kadar sürede ne kadar düşeceğidir
HORSE_STAMINA_CONSUME_INTERVAL - Atın dayanıklılığı ne kadar sıklıkla azalacağıdır
HORSE_STAMINA_REGEN_INTERVAL - Atın dayanıklılığı ne sıklıkla yenileneceğidir (12*60) 12 dakika da bir dayanıklılık geri kazanılıyor
EVENTFUNC(horse_stamina_consume_event)
{
horserider_info* info = dynamic_cast<horserider_info*>(event->info);
if (info == NULL)
{
sys_err("horse_stamina_consume_event> <Factor> Null pointer");
return 0;
}
CHorseRider* hr = info->hr;
if (hr->GetHorseHealth() <= 0)
{
hr->m_eventStaminaConsume = NULL;
return 0;
}
// Stamina tüketimini kaldırdık.
// hr->UpdateHorseStamina(-1);
hr->UpdateRideTime(HORSE_STAMINA_CONSUME_INTERVAL);
int delta = PASSES_PER_SEC(HORSE_STAMINA_CONSUME_INTERVAL);
if (hr->GetHorseStamina() == 0)
{
hr->m_eventStaminaConsume = NULL;
delta = 0;
}
hr->CheckHorseHealthDropTime();
sys_log(0, "HORSE STAMINA - %p", get_pointer(event));
return delta;
}
void CHorseRider::CheckHorseHealthDropTime(bool bSend)
{
DWORD now = get_global_time();
while (m_Horse.dwHorseHealthDropTime < now)
{
m_Horse.dwHorseHealthDropTime += HORSE_HEALTH_DROP_INTERVAL;
// Sağlık kaybını kaldırdık.
// UpdateHorseHealth(-1, bSend);
}
}
void CHorseRider::StartStaminaConsumeEvent()
{
if (GetHorseLevel() <= 0)
return;
if (GetHorseHealth() <= 0)
return;
sys_log(0, "HORSE STAMINA REGEN EVENT CANCEL %p", get_pointer(m_eventStaminaRegen));
event_cancel(&m_eventStaminaRegen);
if (m_eventStaminaConsume)
return;
// Dayanıklılık tüketim etkinliğini devre dışı bırakıyoruz.
// horserider_info* info = AllocEventInfo<horserider_info>();
// info->hr = this;
// m_eventStaminaConsume = event_create(horse_stamina_consume_event, info, PASSES_PER_SEC(HORSE_STAMINA_CONSUME_INTERVAL));
// sys_log(0, "HORSE STAMINA CONSUME EVENT CREATE %p", get_pointer(m_eventStaminaConsume));
}
void CHorseRider::StartStaminaRegenEvent()
{
if (GetHorseLevel() <= 0)
return;
if (GetHorseHealth() <= 0)
return;
sys_log(0, "HORSE STAMINA CONSUME EVENT CANCEL %p", get_pointer(m_eventStaminaConsume));
event_cancel(&m_eventStaminaConsume);
if (m_eventStaminaRegen)
return;
// Dayanıklılık yenileme etkinliğini devre dışı bırakıyoruz.
// horserider_info* info = AllocEventInfo<horserider_info>();
// info->hr = this;
// m_eventStaminaRegen = event_create(horse_stamina_regen_event, info, PASSES_PER_SEC(HORSE_STAMINA_REGEN_INTERVAL));
// sys_log(0, "HORSE STAMINA REGEN EVENT CREATE %p", get_pointer(m_eventStaminaRegen));
}
Fonksiyonların içinden event oluşturmayı devredışı bırakmak yerine o ana fonksiyonun çağrıldığı yerde devredışı bıraksak daha mantıklı olmaz mı?AT HP STAMİNA FALAN KALDIRMA:EVENTFUNC(horse_stamina_consume_event) { horserider_info* info = dynamic_cast<horserider_info*>(event->info); if (info == NULL) { sys_err("horse_stamina_consume_event> <Factor> Null pointer"); return 0; } CHorseRider* hr = info->hr; if (hr->GetHorseHealth() <= 0) { hr->m_eventStaminaConsume = NULL; return 0; } // Stamina tüketimini kaldırdık. // hr->UpdateHorseStamina(-1); hr->UpdateRideTime(HORSE_STAMINA_CONSUME_INTERVAL); int delta = PASSES_PER_SEC(HORSE_STAMINA_CONSUME_INTERVAL); if (hr->GetHorseStamina() == 0) { hr->m_eventStaminaConsume = NULL; delta = 0; } hr->CheckHorseHealthDropTime(); sys_log(0, "HORSE STAMINA - %p", get_pointer(event)); return delta; } void CHorseRider::CheckHorseHealthDropTime(bool bSend) { DWORD now = get_global_time(); while (m_Horse.dwHorseHealthDropTime < now) { m_Horse.dwHorseHealthDropTime += HORSE_HEALTH_DROP_INTERVAL; // Sağlık kaybını kaldırdık. // UpdateHorseHealth(-1, bSend); } } void CHorseRider::StartStaminaConsumeEvent() { if (GetHorseLevel() <= 0) return; if (GetHorseHealth() <= 0) return; sys_log(0, "HORSE STAMINA REGEN EVENT CANCEL %p", get_pointer(m_eventStaminaRegen)); event_cancel(&m_eventStaminaRegen); if (m_eventStaminaConsume) return; // Dayanıklılık tüketim etkinliğini devre dışı bırakıyoruz. // horserider_info* info = AllocEventInfo<horserider_info>(); // info->hr = this; // m_eventStaminaConsume = event_create(horse_stamina_consume_event, info, PASSES_PER_SEC(HORSE_STAMINA_CONSUME_INTERVAL)); // sys_log(0, "HORSE STAMINA CONSUME EVENT CREATE %p", get_pointer(m_eventStaminaConsume)); } void CHorseRider::StartStaminaRegenEvent() { if (GetHorseLevel() <= 0) return; if (GetHorseHealth() <= 0) return; sys_log(0, "HORSE STAMINA CONSUME EVENT CANCEL %p", get_pointer(m_eventStaminaConsume)); event_cancel(&m_eventStaminaConsume); if (m_eventStaminaRegen) return; // Dayanıklılık yenileme etkinliğini devre dışı bırakıyoruz. // horserider_info* info = AllocEventInfo<horserider_info>(); // info->hr = this; // m_eventStaminaRegen = event_create(horse_stamina_regen_event, info, PASSES_PER_SEC(HORSE_STAMINA_REGEN_INTERVAL)); // sys_log(0, "HORSE STAMINA REGEN EVENT CREATE %p", get_pointer(m_eventStaminaRegen)); }
horse rider cpp dosyası ilgili dosya
@SakinAdam ile @Tengrist paylaştığının arasındaki fark ne hangi daha uyun olur birde packet hatası yemeyelimFonksiyonların içinden event oluşturmayı devredışı bırakmak yerine o ana fonksiyonun çağrıldığı yerde devredışı bıraksak daha mantıklı olmaz mı?
olur hocam o da ama at binek olaylarını kendi sunucumda kullanmadığım için varsa etkilediği/etkilendiği sistemleri bilmiyorum ama grepwinle falan aratıp kapatılabilir tabi oralardan daFonksiyonların içinden event oluşturmayı devredışı bırakmak yerine o ana fonksiyonun çağrıldığı yerde devredışı bıraksak daha mantıklı olmaz mı?
Kanka işteyim yüzeysel okudum hatta event_create ile oluşturulan evente bakmadan extra bi yazi daha yazdım sonra sildim. Demek istediğim şu sen ata bindiğinde StartConsumeEvent fonsiyonu çalışıyorsa oradan silmek@SakinAdam ile @Tengrist paylaştığının arasındaki fark ne hangi daha uyun olur birde packet hatası yemeyelim
Şimdi githubdan baktım telefonlaAT HP STAMİNA FALAN KALDIRMA:EVENTFUNC(horse_stamina_consume_event) { horserider_info* info = dynamic_cast<horserider_info*>(event->info); if (info == NULL) { sys_err("horse_stamina_consume_event> <Factor> Null pointer"); return 0; } CHorseRider* hr = info->hr; if (hr->GetHorseHealth() <= 0) { hr->m_eventStaminaConsume = NULL; return 0; } // Stamina tüketimini kaldırdık. // hr->UpdateHorseStamina(-1); hr->UpdateRideTime(HORSE_STAMINA_CONSUME_INTERVAL); int delta = PASSES_PER_SEC(HORSE_STAMINA_CONSUME_INTERVAL); if (hr->GetHorseStamina() == 0) { hr->m_eventStaminaConsume = NULL; delta = 0; } hr->CheckHorseHealthDropTime(); sys_log(0, "HORSE STAMINA - %p", get_pointer(event)); return delta; } void CHorseRider::CheckHorseHealthDropTime(bool bSend) { DWORD now = get_global_time(); while (m_Horse.dwHorseHealthDropTime < now) { m_Horse.dwHorseHealthDropTime += HORSE_HEALTH_DROP_INTERVAL; // Sağlık kaybını kaldırdık. // UpdateHorseHealth(-1, bSend); } } void CHorseRider::StartStaminaConsumeEvent() { if (GetHorseLevel() <= 0) return; if (GetHorseHealth() <= 0) return; sys_log(0, "HORSE STAMINA REGEN EVENT CANCEL %p", get_pointer(m_eventStaminaRegen)); event_cancel(&m_eventStaminaRegen); if (m_eventStaminaConsume) return; // Dayanıklılık tüketim etkinliğini devre dışı bırakıyoruz. // horserider_info* info = AllocEventInfo<horserider_info>(); // info->hr = this; // m_eventStaminaConsume = event_create(horse_stamina_consume_event, info, PASSES_PER_SEC(HORSE_STAMINA_CONSUME_INTERVAL)); // sys_log(0, "HORSE STAMINA CONSUME EVENT CREATE %p", get_pointer(m_eventStaminaConsume)); } void CHorseRider::StartStaminaRegenEvent() { if (GetHorseLevel() <= 0) return; if (GetHorseHealth() <= 0) return; sys_log(0, "HORSE STAMINA CONSUME EVENT CANCEL %p", get_pointer(m_eventStaminaConsume)); event_cancel(&m_eventStaminaConsume); if (m_eventStaminaRegen) return; // Dayanıklılık yenileme etkinliğini devre dışı bırakıyoruz. // horserider_info* info = AllocEventInfo<horserider_info>(); // info->hr = this; // m_eventStaminaRegen = event_create(horse_stamina_regen_event, info, PASSES_PER_SEC(HORSE_STAMINA_REGEN_INTERVAL)); // sys_log(0, "HORSE STAMINA REGEN EVENT CREATE %p", get_pointer(m_eventStaminaRegen)); }
horse rider cpp dosyası ilgili dosya
void CHorseRider::StartStaminaConsumeEvent()
{
if (GetHorseLevel() <= 0)
return;
if (GetHorseHealth() <= 0)
return;
sys_log(0,"HORSE STAMINA REGEN EVENT CANCEL %p", get_pointer(m_eventStaminaRegen));
event_cancel(&m_eventStaminaRegen);
if (m_eventStaminaConsume)
return;
horserider_info* info = AllocEventInfo<horserider_info>();
info->hr = this;
m_eventStaminaConsume = event_create(horse_stamina_consume_event, info, PASSES_PER_SEC(HORSE_STAMINA_CONSUME_INTERVAL));
sys_log(0,"HORSE STAMINA CONSUME EVENT CREATE %p", get_pointer(m_eventStaminaConsume));
}