Bugsuz karakter değiştirme yüzüğü

flusya23

MT Üye
MT Üye
Mesaj
203
Çözümler
22
Beğeni
84
Puan
479
Ticaret Puanı
0
Questi :
Linkleri görebilmek için giriş yap veya kayıt ol.

Lua (Quest):
quest karakter_yuzugu begin
    state start begin
        when 40002.use begin
            if pc . count_item ( 40002 ) < 1 then
                        say_title ( " Bug Kontrol " )
                        say_title( " Envanterindeki nesne kaybolmuş. " )
                        return
                        end
            say_title("Karakter Değiştirme Yüzüğü ")
            say_title("Lütfen karakter değişimi yapmadan önce")
            say_title("tüm itemlerinizi çıkarınız.")
            say_title("NOT: Yüzük kullanıldıktan sonra silinir.")
            local s = select("Savaşçı ","Ninja ","Sura ","Şaman ","Kapat ")

            if pc . count_item ( 40002 ) < 1 then
            say_title ( "Bug Kontrol" )
            say_title( "Bug denediniz." )
            return
            end

            if pc.is_engaged() then
                say_title("Değişim Tılsımı ")
                say_reward("Sadece bekar karakterler karakter")
                say_reward("değiştirebilirler.")

                ----"12345678901234567890123456789012345678901234567890"|
                say("Eğer evliysen, karakter değiştirmeden önce")
                say("boşanmak zorundasın.")
                say("")
                return;
            end

            if pc.is_married() then
                say_title("Değişim Tılsımı ")
                say_reward("Sadece bekar karakterler karakter")
                say_reward("değiştirebilirler.")

                ----"12345678901234567890123456789012345678901234567890"|
                say("Eğer evliysen, karakter değiştirmeden önce")
                say("boşanmak zorundasın.")
                return;
            end

            if pc.is_polymorphed() then
                say_title("Değişim Tılsımı ")
                say_reward("Dönüşmüş haldeyken tılsımı kullanamazsın.")
                say("")

                say("Dönüşmüş karakterler karakter değiştiremezler.")
                say("")
                return
            end
            
            local WEAR_BODY_INDEX = 0
            local WEAR_HEAD_INDEX = 1
            local WEAR_WEAPON_INDEX = 4
            local WEAR_COSTUME_BODY_INDEX = 19
            local WEAR_COSTUME_HAIR_INDEX = 20
            local WEAR_COSTUME_WEAPON_INDEX = 21
            local WEAR_COSTUME_MOUNT_INDEX = 22
            if pc.get_wear(WEAR_BODY_INDEX) != nil then
                say_title("Değişim Tılsımı ")
                say_reward("Zırh giyili iken tılsımı kullanamazsın.")
                say("")
                
                say("Zırh giyen karakterler karakter değiştiremezler.")
                say("")
                return
            end
            
            if pc.get_wear(WEAR_HEAD_INDEX) != nil then
                say_title("Değişim Tılsımı ")
                say_reward("Kask giyili iken tılsımı kullanamazsın.")
                say("")
                
                say("Kask giyen karakterler karakter değiştiremezler.")
                say("")
                return
            end
            
            if pc.get_wear(WEAR_WEAPON_INDEX) != nil then
                say_title("Değişim Tılsımı ")
                say_reward("Silah giyili iken tılsımı kullanamazsın.")
                say("")
                
                say("Silah giyen karakterler karakter değiştiremezler.")
                say("")
                return
            end
            
            if pc.get_wear(WEAR_COSTUME_BODY_INDEX) != nil then
                say_title("Değişim Tılsımı ")
                say_reward("Kostüm giyili iken tılsımı kullanamazsın.")
                say("")
                
                say("Kostüm giyen karakterler karakter değiştiremezler.")
                say("")
                return
            end
            
            if pc.get_wear(WEAR_COSTUME_HAIR_INDEX) != nil then
                say_title("Değişim Tılsımı ")
                say_reward("Saç stili giyili iken tılsımı kullanamazsın.")
                say("")
                
                say("Saç stili giyen karakterler karakter değiştiremezler.")
                say("")
                return
            end

            if pc.get_wear(WEAR_COSTUME_WEAPON_INDEX) != nil then
                say_title("Değişim Tılsımı ")
                say_reward("Silah kostümü giyili iken tılsımı kullanamazsın.")
                say("")
                
                say("Silah kostümü giyen karakterler karakter değiştiremezler.")
                say("")
                return
            end

            if pc.get_wear(WEAR_COSTUME_MOUNT_INDEX) != nil then
                say_title("Değişim Tılsımı ")
                say_reward("Binek giyili iken tılsımı kullanamazsın.")
                say("")
                
                say("Binek giyen karakterler karakter değiştiremezler.")
                say("")
                return
            end

            if s == 1 then ---------------- Savasci karakter
            say_title("Karakter Değiştirme Yüzüğü ")
            say_reward ( "Savaşçı karakterini mi tercih ediyorsun? ")
            say_title("Seçim senin elinde sadece bir kez seçebilirsin...")
            local b = select("Evet","Hayır ")
            if b == 1 then
            pc.polymorph (4 , 36000000000)
            setskin ( NOWINDOW )
            pc . change_sex ( )
            pc . polymorph ( "20032" )
            pc.remove_item ( 40002 )
            pc.clear_skill()
            pc.set_skill_group(0)
            set_quest_state("skill_group","run")
            warp_to_village()
            syschat("|cff00ff00[SİSTEM] |cffffffffLütfen karakter atmayı unutmayınız..")
            end
            end

            if s == 2 then ---------------- Ninja karakter
            say_title("Karakter Değiştirme Yüzüğü ")
            say_reward ( "Ninja karakterimi tercih ediyorsun? ")
            say_title("Seçim senin elinde sadece bir kez seçebilirsin...")
            local b = select("Evet","Hayır ")
            if b == 1 then
            pc.polymorph (5 , 36000000000)
            setskin ( NOWINDOW )
            pc . change_sex ( )
            pc . polymorph ( "20032" )
            pc.remove_item ( 40002 )
            pc.clear_skill()
            pc.set_skill_group(0)
            set_quest_state("skill_group","run")
            warp_to_village()
            end
            end

            if s == 3 then ---------------- Sura karakter
            say_title("Karakter Değiştirme Yüzüğü ")
            say_reward ( "Sura karakterimi tercih ediyorsun? ")
            say_title("Seçim senin elinde sadece bir kez seçebilirsin...")
            local b = select("Evet","Hayır ")
            if b == 1 then
            pc.polymorph (6 , 36000000000)
            setskin ( NOWINDOW )
            pc . change_sex ( )
            pc . polymorph ( "20032" )
            pc.remove_item ( 40002 )
            pc.clear_skill()
            pc.set_skill_group(0)
            set_quest_state("skill_group","run")
            warp_to_village()
            end
            end

            if s == 4 then ---------------- Saman karakter
            say_title("Karakter Değiştirme Yüzüğü ")
            say_reward ( "Şaman karakterimi tercih ediyorsun? ")
            say_title("Seçim senin elinde sadece bir kez seçebilirsin...")
            local b = select("Evet","Hayır ")
            if b == 1 then
            pc.polymorph (7 , 36000000000)
            setskin ( NOWINDOW )
            pc . change_sex ( )
            pc . polymorph ( "20032" )
            pc.remove_item ( 40002 )
            pc.clear_skill()
            pc.set_skill_group(0)
            set_quest_state("skill_group","run")
            warp_to_village()
            end
        end
    end
end
end


Bakınız :

OUVAO8.jpg


Buradaki sayılar sizin length.h nizdeki sayılar :

OUVdUj.jpg


Hangisi takılı iken değiştirmesini istemiyorsanız onları ekleyin. Ancak benim eklediğim türde yeterlidir. Değiştirme yaptıktan sonra her karakteri bayrağına ışınlama ekledim karakter değiştirme yerine.

Onuda : warp_to_village() bu kısmı silerek iptal edebilirsiniz.

Peki neden c++ bölümüne açtım konuyu?
Quest aşılırsa falan diye gerçi bu quest aşılsa ne olur ne gibi bir bugu olur bilmiyorum ama :
Srcdende engelini atalım :
Linkleri görebilmek için giriş yap veya kayıt ol.

C++:
    int pc_change_sex(lua_State* L)
    {
//@fixme246 BEGIN
        LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
        if (CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(WEAR_COSTUME_BODY) || (CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(WEAR_COSTUME_HAIR)) || (CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(WEAR_COSTUME_MOUNT)) || (CQuestManager::instance().GetCurrentCharacterPtr()->GetWear(WEAR_COSTUME_WEAPON)))
        {
            ch->ChatPacket(CHAT_TYPE_INFO, "Cinsiyet değiştirebilmek için kostümlerini çıkartmalısın.");
            lua_pushboolean(L, false);
            return 1;
        }
//@fixme246 END
        lua_pushnumber(L, CQuestManager::instance().GetCurrentCharacterPtr()->ChangeSex());
        return 1;
    }

YONETİCİLER İSTERSE QUEST BÖLÜMÜNEDE TAŞIYABİLİR.

Şöylede bir kanıt bırakayım:
OUn91Q.jpg
 
Son düzenleme:
Geri
Üst