[C++] CHARACTER::Sync Renewal (Cannot Find Tree FIX)

MT2Dev

Cplusplus
Premium Üye
Yardımsever Üye
Usta Üye
Mesaj
495
Çözümler
37
Beğeni
1.156
Puan
1.149
Ticaret Puanı
0
GİRİŞ & PROBLEM

Merhaba, server src içerisindeki "CHARACTER::Sync" fonksiyonundaki meşhur "Cannot Find Tree" probleminin ve aynı fonksiyon içerisinde bulunan PC olmayan her şey için kullanılan "Dead();" bölümünün sebep olabileceği hataları çözeceğiz.

NEDEN ?

Şu yorumdan da okuyabileceğiniz üzere mevcut olarak paylaşılan fix adı altındaki düzenlemelerin aslında hepsi eksik, bu sorunu kökünden çözmek için yeni bir düzenleme yaptım, bu sayede sorunu tamamen fixlemiş olacağız.

GÜNCELLEME - 18/10/2024

@Mitachi 'nin büyük katkısıyla "RewardlessDead" fonksiyonunu daha işlevsel ve güvenli bir şekilde yeniden yazdım.

SON GÜNCELLEME - 23/10/2024

Fonksiyonun (!new_tree) kısmının her şartta false dönmesine sebep olan bir yazım hatasını düzenledim (@Denizeri24 'e teşekkürler), ayrıca gerekli yerlere tüm nullptr kontrollerini ve ekstra sys_err mesajlarını ekledim, mevcut sys_err mesajlarının içeriğini genişlettim, bu değişiklikler performans olarak hiçbir dezavantaj yaratmayacak ayrıca artık herhangi bir şekilde kötü kullanılma ihtimali de yok, lütfen son halini tekrar ekleyin.

ÇÖZÜM

Mevcut dead fonksiyonunun ödül mekanizmasını düzenlemek gibi detaylara girmeden basitçe yeni bir ölüm fonksiyonu yaratıp Sync içerisinde onu kullanacağız, sadece mob ve metinler için kullanılabilecek olan bu fonksiyonun temel amacı ölüm işleminden sonra drop vermemesi, başlayalım.


Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Sevgiler, MT2Dev.
 
Son düzenleme:
Şu kod içi açıklamalarına hastayım. Ben de senin gibi kod içi notlar almaya başlayacağım.🫡
 
#Güncelleme

"CHARACTER::Sync" fonksiyonunu yeniden düzenledim, fonksiyon içinde farklı yerlerde sürekli "GetSectree()" çağırmanın anlamsız olması ve fonksiyon başında Sectree için nullptr kontrolü koyabilmek sebebiyle bu düzenlemeyi yaptım, tabii performans kaygısı da bir etken. Belki çok büyük farklar olmayacak ama biz yine de doğrusunu yapalım, sevgiler.
 
Paylaşım için teşekkür ederim sorunsuz build aldım :)

Benim fileste böyle bir fix koymuşlar char.cpp de

Kod:
Genişlet Daralt Kopyala
    if (!new_tree)
    {
        if (GetDesc())
        {
            sys_err("cannot find tree at %d %d (name: %s)", x, y, GetName());
#ifdef BINEGE_BININCE_OYUNDAN_ATMA_FIX
            GetDesc()->SetPhase(PHASE_CLOSE);
#else
            GetDesc()->SetPhase(PHASE_CLOSE);
#endif
        }
        else
        {
            sys_err("no tree: %s %d %d %d", GetName(), x, y, GetMapIndex());
            Dead();
        }

        return false;
    }

komple değiştirdim şimdi
 
Paylaşım için teşekkür ederim sorunsuz build aldım :)

Benim fileste böyle bir fix koymuşlar char.cpp de

Kod:
Genişlet Daralt Kopyala
    if (!new_tree)
    {
        if (GetDesc())
        {
            sys_err("cannot find tree at %d %d (name: %s)", x, y, GetName());
#ifdef BINEGE_BININCE_OYUNDAN_ATMA_FIX
            GetDesc()->SetPhase(PHASE_CLOSE);
#else
            GetDesc()->SetPhase(PHASE_CLOSE);
#endif
        }
        else
        {
            sys_err("no tree: %s %d %d %d", GetName(), x, y, GetMapIndex());
            Dead();
        }

        return false;
    }

komple değiştirdim şimdi
O filesle boşuna zaman harcamasan daha iyi sanki, fixe bak 😂🤣
 
Paylaşım için teşekkür ederim sorunsuz build aldım :)

Benim fileste böyle bir fix koymuşlar char.cpp de

Kod:
Genişlet Daralt Kopyala
    if (!new_tree)
    {
        if (GetDesc())
        {
            sys_err("cannot find tree at %d %d (name: %s)", x, y, GetName());
#ifdef BINEGE_BININCE_OYUNDAN_ATMA_FIX
            GetDesc()->SetPhase(PHASE_CLOSE);
#else
            GetDesc()->SetPhase(PHASE_CLOSE);
#endif
        }
        else
        {
            sys_err("no tree: %s %d %d %d", GetName(), x, y, GetMapIndex());
            Dead();
        }

        return false;
    }

komple değiştirdim şimdi
Fix şahaneymiş, Süreyya hanımın muhteşem değişimi tadında bir çalışma olmuş. :ROFLMAO:
 
Paylaşım için teşekkür ederim sorunsuz build aldım :)

Benim fileste böyle bir fix koymuşlar char.cpp de

Kod:
Genişlet Daralt Kopyala
    if (!new_tree)
    {
        if (GetDesc())
        {
            sys_err("cannot find tree at %d %d (name: %s)", x, y, GetName());
#ifdef BINEGE_BININCE_OYUNDAN_ATMA_FIX
            GetDesc()->SetPhase(PHASE_CLOSE);
#else
            GetDesc()->SetPhase(PHASE_CLOSE);
#endif
        }
        else
        {
            sys_err("no tree: %s %d %d %d", GetName(), x, y, GetMapIndex());
            Dead();
        }

        return false;
    }

komple değiştirdim şimdi
odatv_image_102__a2626529d6a847.webp
 
GİRİŞ & PROBLEM

Merhaba, server src içerisindeki "CHARACTER::Sync" fonksiyonundaki meşhur "Cannot Find Tree" probleminin ve aynı fonksiyon içerisinde bulunan PC olmayan her şey için kullanılan "Dead();" bölümünün sebep olabileceği hataları çözeceğiz.

NEDEN ?

Şu yorumdan da okuyabileceğiniz üzere mevcut olarak paylaşılan fix adı altındaki düzenlemelerin aslında hepsi eksik, bu sorunu kökünden çözmek için yeni bir düzenleme yaptım, bu sayede sorunu tamamen fixlemiş olacağız.


GÜNCELLEME - 18/10/2024

@Mitachi 'nin büyük katkısıyla "RewardlessDead" fonksiyonunu daha işlevsel ve güvenli bir şekilde yeniden yazdım.

ÇÖZÜM

Mevcut dead fonksiyonunun ödül mekanizmasını düzenlemek gibi detaylara girmeden basitçe yeni bir ölüm fonksiyonu yaratıp Sync içerisinde onu kullanacağız, sadece mob ve metinler için kullanılabilecek olan bu fonksiyonun temel amacı ölüm işleminden sonra drop vermemesi, başlayalım.


Alıntılarda özel içerikler gözükmez.



Sevgiler, MT2Dev




söz de fix yeni farkettim ben de :D
 
Dead fonksiyonu içinde gezinirken set olarak NO_REWARD gibi bi set görmüştüm ona hiç baktın mı? @MT2Dev
 
Son düzenleme:
!new_tree bloğuna girdikten sonra return çekiyorsunuz haberiniz olsun

Çok büyük hata, hiçte farkında değilim seninle birlikte devdeki WeedHex'de söylemiş, sağolun hemen düzenliyorum.

Dead fonksiyonu içinde gezinirken set olarak NO_REWARD gibi bi set görmüştüm ona hiç baktın mı? @MT2Dev

Onunla ilgili bir flag var direkt olarak onu kullanıp altında Dead de çağrılabilirdi ama ben yeni bir fonksiyonun daha kullanışlı olduğunu düşündüm, farklı yerlerde ihtiyacım olabilir.


#SON GÜNCELLEME

"Sync" fonksiyonu kodun işleyişini etkileyen önemli bir hata düzeltilerek yeniden yazıldı, lütfen güncelleyin!
 
Son düzenleme:
Geri
Üst