Yardım At dayanıklılık fix arıyorum?

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

texas1343

Üye
Üye
Mesaj
265
Çözümler
15
Beğeni
65
Puan
89
Ticaret Puanı
0
iyi aksamlar acemi asker atı ile metin keserken at yem istiyor bununu fixini arıyorum normal ,zırhlı ve askeri olucak şekilde
 

Dosya Eklentileri

  • 1.webp
    1.webp
    5 KB · Gösterim: 25
Şimdi asker at ile metin keserken tam ne oluyor kanka anlatır mısın? Ona göre yardımcı olayım.
 
Ç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.
Game 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
 

Dosya Eklentileri

  • horse_rider2.webp
    horse_rider2.webp
    17 KB · Gösterim: 14
Game 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
Yorum satırına alsak sorun olur mu
 
AT HP STAMİNA FALAN KALDIRMA:
Genişlet Daralt Kopyala
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
 
AT HP STAMİNA FALAN KALDIRMA:
Genişlet Daralt Kopyala
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
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ı?
 
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ı?
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 da
 
@SakinAdam ile @Tengrist paylaştığının arasındaki fark ne hangi daha uyun olur birde packet hatası yemeyelim
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
 
@hasanmacit spam algılanmasın


AT HP STAMİNA FALAN KALDIRMA:
Genişlet Daralt Kopyala
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
Şimdi githubdan baktım telefonla

bool CHARACTER::StartRiding()

Çalıştı hemen altında HorseRider.cpp de StartRiding eğer false döndürürse (false durumuna göre oyuncuya mesaj iletiyor 1.ci koşulun false vs. ) bu CHARACTER sınıfının StartRideri çalışmaz true döndü diyelim oraya geçelim.

HorseRider.cpp de StartRiding de

StartStaminaConsumeEvent();

Çalışıyor

C++:
Genişlet Daralt Kopyala
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));
}

Tengrist arkadaşımız buradaki event oluşumunu devredışı bırakmış tamam mantıken çalışmaz ama her StartRiding çalıştığında bu fonksiyon çalışacak ve sürekli gereksiz yere zaten null olan bir event değişkeni için event_cancel çalıştırılıyor ve ekstrası. Benim anlatmak istediğim eğer bunu devredışı bırakmak istiyorsanız StartRiding de

StartStaminaConsumeEvent();

Bu fonksiyonu çalıştırmayı devredışı bırakın.
 
Son düzenleme:
Geri
Üst