Neler yeni

YARDIM JOB CHANGE UİF

CMDK

Admin
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
Coder
Yardımsever
Bağımlı Üye
KY Editörü
KAYIT
3 Mar 2021
Mesajlar
642
Çözümler
104
Tepki puanı
2,615
Konum
Adana
Adsız.jpg


JobChange karakteri seçtikten sonra arkadaki uif'in kapanması için nereyi kontrol etmem lazım ?
Job değiştikten sonra uif'i kendim kapatıyorum seçtiğim anda kapanmıyor.
 

Aakinci

Co-Admin
Premium Üye
KY Saygın Üye
Coder
Yardımsever
KY Kod Editörü
KAYIT
5 Tem 2021
Mesajlar
769
Çözümler
119
Tepki puanı
447
Yaş
33
Hooktaki jobchange ye ait cpp icerisindeki Recivemessage fonksiyonunda job seçimi sonrasında her buton için Close() fonksiyonunu çağırabilirsiniz hocam.
 

CMDK

Admin
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
Coder
Yardımsever
Bağımlı Üye
KY Editörü
KAYIT
3 Mar 2021
Mesajlar
642
Çözümler
104
Tepki puanı
2,615
Konum
Adana
Hooktaki jobchange ye ait cpp icerisindeki Recivemessage fonksiyonunda job seçimi sonrasında her buton için Close() fonksiyonunu çağırabilirsiniz hocam.
Hocam Close() fonksiyonu ekli ama işlevi yerine getirmiyor.
 

Aakinci

Co-Admin
Premium Üye
KY Saygın Üye
Coder
Yardımsever
KY Kod Editörü
KAYIT
5 Tem 2021
Mesajlar
769
Çözümler
119
Tepki puanı
447
Yaş
33
Recivemessage fonksiyonunu buradan atabilir misiniz hocan
 

CMDK

Admin
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
Coder
Yardımsever
Bağımlı Üye
KY Editörü
KAYIT
3 Mar 2021
Mesajlar
642
Çözümler
104
Tepki puanı
2,615
Konum
Adana
C++:
bool CJobChange::ReceiveMessage(CN3UIBase* pSender, uint32_t dwMsg)
{
#define MIN_LEVEL 10
#define MAX_LEVEL 83
    enum class Class {
        Warrior = 1,
        Rogue = 2,
        Priest = 3,
        Mage = 4
    };

    if (dwMsg == UIMSG_BUTTON_CLICK) {

        if (Engine->m_PlayerBase == NULL)
            return false;

        if (Engine->m_PlayerBase->GetLevel() < MIN_LEVEL
            || Engine->m_PlayerBase->GetLevel() > MAX_LEVEL) {
            Close();

            if (Engine->m_PlayerBase->GetLevel() < MIN_LEVEL)
                Engine->m_UiMgr->ShowMessageBox(xorstr("Job Change Failed"), xorstr("You do not have enough level. You must be a least 10 level."), Ok);
            else if (Engine->m_PlayerBase->GetLevel() > MAX_LEVEL)
                Engine->m_UiMgr->ShowMessageBox(xorstr("Job Change Failed"), xorstr("You cannot use this feature.You must be level 83 maximum."), Ok);

            return false;
        }

        if (pSender == btn_warrior) {
            if (!Engine->m_PlayerBase->isRogue()
                && !Engine->m_PlayerBase->isMage()
                && !Engine->m_PlayerBase->isPriest()) {
                Close();
                Engine->m_UiMgr->ShowMessageBox(xorstr("Failed"), xorstr("You cannot select the same job again. Please choose a different job."), Ok);
                return false;
            }

            Packet test(WIZ_GUARD_HOOK, uint8(GGACSOpCodes::WIZ_JOBCHANGE));
            test << uint8(Class::Warrior) << Engine->m_PlayerBase->GetClass();
            Engine->Send(&test);
        }
        else if (pSender == btn_rogue) {
            if (!Engine->m_PlayerBase->isWarrior()
                && !Engine->m_PlayerBase->isMage()
                && !Engine->m_PlayerBase->isPriest()) {
                Close();
                Engine->m_UiMgr->ShowMessageBox(xorstr("Failed"), xorstr("You cannot select the same job again. Please choose a different job."), Ok);
                return false;
            }

            Packet test(WIZ_GUARD_HOOK, uint8(GGACSOpCodes::WIZ_JOBCHANGE));
            test << uint8(Class::Rogue) << Engine->m_PlayerBase->GetClass();
            Engine->Send(&test);
        }
        else if (pSender == btn_priest) {
            if (!Engine->m_PlayerBase->isWarrior()
                && !Engine->m_PlayerBase->isMage()
                && !Engine->m_PlayerBase->isRogue()) {
                Close();
                Engine->m_UiMgr->ShowMessageBox(xorstr("Failed"), xorstr("You cannot select the same job again. Please choose a different job."), Ok);
                return false;
            }

            Packet test(WIZ_GUARD_HOOK, uint8(GGACSOpCodes::WIZ_JOBCHANGE));
            test << uint8(Class::Priest) << Engine->m_PlayerBase->GetClass();
            Engine->Send(&test);
        }
        else if (pSender == btn_mage) {
            if (!Engine->m_PlayerBase->isWarrior()
                && !Engine->m_PlayerBase->isPriest()
                && !Engine->m_PlayerBase->isRogue()) {
                Close();
                Engine->m_UiMgr->ShowMessageBox(xorstr("Failed"), xorstr("You cannot select the same job again. Please choose a different job."), Ok);
                return false;
            }

            Packet test(WIZ_GUARD_HOOK, uint8(GGACSOpCodes::WIZ_JOBCHANGE));
            test << uint8(Class::Mage) << Engine->m_PlayerBase->GetClass();
            Engine->Send(&test);
        }
        else if (pSender == btn_close) {
            Close();
        }
    }

    return true;
}

Close fonksiyonunu N3Base'den çağırıyor sanırım ondan kaynaklı sorun diğer türlü ayarladığımda offsetler'de sıkıntı oluyor çalıştırmıyor.
 

Aakinci

Co-Admin
Premium Üye
KY Saygın Üye
Coder
Yardımsever
KY Kod Editörü
KAYIT
5 Tem 2021
Mesajlar
769
Çözümler
119
Tepki puanı
447
Yaş
33
Engine->Send(&test)
Bu kodlarin altina ekleyin hocam close yi.
 

CMDK

Admin
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
Coder
Yardımsever
Bağımlı Üye
KY Editörü
KAYIT
3 Mar 2021
Mesajlar
642
Çözümler
104
Tepki puanı
2,615
Konum
Adana
Hocam o şekilde denedim evet gidiyor ama hemen geri açılıyor uif
 

Aakinci

Co-Admin
Premium Üye
KY Saygın Üye
Coder
Yardımsever
KY Kod Editörü
KAYIT
5 Tem 2021
Mesajlar
769
Çözümler
119
Tepki puanı
447
Yaş
33
Jobchange paketinin sunucudan geri gelişinde demekki açtırma işlemi yapılıyor. Sunucu taraflı WIZ_JOBCHANGE ile gönderilen paketlere bir bakın hocam.
 

CMDK

Admin
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
Coder
Yardımsever
Bağımlı Üye
KY Editörü
KAYIT
3 Mar 2021
Mesajlar
642
Çözümler
104
Tepki puanı
2,615
Konum
Adana
Tamam hocam teşekkürler kontrol ediyorum.
 
Reklam
Reklam
Üst Alt