YARDIM JOB CHANGE UİF

CMDK

Admin
Premium Üye
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
KY YardımSever
Bağımlı Üye
Coder
KY Paylaşım Editörü
Katılım
3 Mar 2021
Mesajlar
483
Çözümler
76
Tepkime puanı
1,430
Puanları
153
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

Süper Moderatör
Premium Üye
KY Saygın Üye
KY YardımSever
KY Kod Editörü
Katılım
5 Tem 2021
Mesajlar
509
Çözümler
82
Tepkime puanı
242
Puanları
73
Yaş
32
Hooktaki jobchange ye ait cpp icerisindeki Recivemessage fonksiyonunda job seçimi sonrasında her buton için Close() fonksiyonunu çağırabilirsiniz hocam.
 

CMDK

Admin
Premium Üye
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
KY YardımSever
Bağımlı Üye
Coder
KY Paylaşım Editörü
Katılım
3 Mar 2021
Mesajlar
483
Çözümler
76
Tepkime puanı
1,430
Puanları
153
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

Süper Moderatör
Premium Üye
KY Saygın Üye
KY YardımSever
KY Kod Editörü
Katılım
5 Tem 2021
Mesajlar
509
Çözümler
82
Tepkime puanı
242
Puanları
73
Yaş
32
Recivemessage fonksiyonunu buradan atabilir misiniz hocan
 

CMDK

Admin
Premium Üye
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
KY YardımSever
Bağımlı Üye
Coder
KY Paylaşım Editörü
Katılım
3 Mar 2021
Mesajlar
483
Çözümler
76
Tepkime puanı
1,430
Puanları
153
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

Süper Moderatör
Premium Üye
KY Saygın Üye
KY YardımSever
KY Kod Editörü
Katılım
5 Tem 2021
Mesajlar
509
Çözümler
82
Tepkime puanı
242
Puanları
73
Yaş
32
Engine->Send(&test)
Bu kodlarin altina ekleyin hocam close yi.
 

CMDK

Admin
Premium Üye
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
KY YardımSever
Bağımlı Üye
Coder
KY Paylaşım Editörü
Katılım
3 Mar 2021
Mesajlar
483
Çözümler
76
Tepkime puanı
1,430
Puanları
153
Hocam o şekilde denedim evet gidiyor ama hemen geri açılıyor uif
 

Aakinci

Süper Moderatör
Premium Üye
KY Saygın Üye
KY YardımSever
KY Kod Editörü
Katılım
5 Tem 2021
Mesajlar
509
Çözümler
82
Tepkime puanı
242
Puanları
73
Yaş
32
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
Premium Üye
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
KY YardımSever
Bağımlı Üye
Coder
KY Paylaşım Editörü
Katılım
3 Mar 2021
Mesajlar
483
Çözümler
76
Tepkime puanı
1,430
Puanları
153
Tamam hocam teşekkürler kontrol ediyorum.
 
Reklam