Çözüldü Saltanatın feyz (ç)aldığı pet sistemi(M2M) level sorunu

  • Konuyu açan Konuyu açan Tengrist
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 109
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

Tengrist

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
865
Çözümler
35
Beğeni
613
Puan
909
Ticaret Puanı
0
arkadaşlar resmi göstereyim:
Linkleri görebilmek için giriş yap veya kayıt ol.


videosu:
Linkleri görebilmek için giriş yap veya kayıt ol.


levelı çektiği bölüm:
Lua (Quest):
Genişlet Daralt Kopyala
quest new_pet_system begin
    state start begin

    when 71035.use begin
        -- mob vnum, exp százalék
        pet.give_exp(21000, 20)
        chat("Exp adás..")
    end

    when 53050.use begin
        ------------- INICIALIZÁCIÓ -------------
        local pet_level = item.get_socket(0) -- pet szintje
        local pet_exp = item.get_socket(1) -- pet expje
        local available_points = item.get_socket(2) -- elérheto pontok
        
        local skill_hp = item.get_attr_value(0) -- Mennyei HP értéke
        local skill_monster = item.get_attr_value(1) -- Mennyei ero értéke
        
        local hp_step = 500 -- 1 pont ennyi hp-t ad (Csak számolásra van, ha ezt átírod nem változik meg a bónusz)
        local monster_step = 1 -- 1 pont ennyi szörnyet ad (Csak számolásra van, ha ezt átírod nem változik meg a bónusz)
        
        local points_on_skill1 = skill_hp * 10 / hp_step -- Ezt ne változtasd, ezzel jön ki hány pont van a képességen
        local points_on_skill2 = skill_monster / monster_step -- Ezt ne változtasd, ezzel jön ki hány pont van a képességen
        
        local mob_vnum = item.get_value(0) -- A Value0 értékben van tárolva a mob vnum
        -----------------------------------------
        
        if pet.count_summoned() < 1 then
            pet.summon(mob_vnum, "PET", false)
            return
        end
        
        say_title("Pet:")
        
        say("Seviye: "..pet_level.." / 100")
        say("Exp: "..pet_exp.."%")
        say("Mevcut puanlar: "..available_points)

        local menu = 0
        
        menu = select("Bilgi", "Yetenekler", "Evcil Hayvan Bilgileri", "Gönder", "Kapat")
        
        if menu == 1 then
            say_title("Bilgi")
            --blablabla
        elseif menu == 2 then
            say_title("Yetenekler")
            say("Mevcut puanlar: "..available_points)
            
            local skill_array = {"Cennet Elesi ("..points_on_skill1.."pont)", "Cehennem Erosu ("..points_on_skill2.."pont)"}
            local skills = select(skill_array[1], skill_array[2])       
        
            say_title(skill_array[skills])
            say("Mevcut Puan: "..available_points)
            say("Puan kullan!")
            
            local modify_type = select("Puan ekle", "Puan eksilt", "Iptal")
            
            if modify_type == 3 then
                return
            end
            
            say_title("Miktar:")
            
            local input_point = tonumber(input())
            
            if input == 0 then
                return
            end
            
            --item.pet_give_exp
            if modify_type == 1 then
                item.pet_set_bonus(skills-1, input_point)
            else
                item.pet_set_bonus(skills-1, -input_point)
            end
            
            --Újrahívás, hogy frissüljön a bónusz
            if true == pet.is_summon(mob_vnum) then
                pet.unsummon(mob_vnum)
                pet.summon(mob_vnum, "PET", false)
            end
            
        elseif menu == 3 then
            say_title("Pet bilgisi ")   
            --blablabla
        elseif menu == 4 then       
            if true == pet.is_summon(mob_vnum) then
                pet.unsummon(mob_vnum)   
            end
        end
        
    end
    

    end
end

item.get_socket(0) ile çekiyor levelı.

questlua_item.cpp:
Genişlet Daralt Kopyala
    int item_get_socket(lua_State* L)
{
    CQuestManager& q = CQuestManager::instance();
    if (q.GetCurrentItem() && lua_isnumber(L, 1))
    {
        int idx = static_cast<int>(lua_tonumber(L, 1));
        if (idx < 0 || idx >= ITEM_SOCKET_MAX_NUM)
            lua_pushnumber(L, 0);
        else
            lua_pushnumber(L, q.GetCurrentItem()->GetSocket(idx));  // Already handles 0 or negative values.
    }
    else
    {
        lua_pushnumber(L, 0);
    }
    return 1;
}

bu fonksiyonu da martyninkini, aeldradakini falan da denedim en son hali şu an hepsinde
item proto:
Python:
Genişlet Daralt Kopyala
53050    ¹°±«(¹«¼Ó¼º)    ITEM_QUEST    0    1    ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP    LOG    NONE    NONE    0    0    0    0    0    LIMIT_NONE    0    LIMIT_NONE    0    APPLY_NONE    0    APPLY_NONE    0    APPLY_NONE    0    34134    0    0    0    0    0    0    0    0
sizce sıkıntı ne olabilir:
 
item tablosunda nasıl gözüküyor item? tooltip'e göre socket değeri ile ekranda yazan değerle eşleşiyor çünkü, yeni item create edince socket 0 değeri nasıl geliyor? eğer gözüken absürt sayı geliyor ise CreateItem fonksiyonuna bakabiliriz
 
sorunu hallettim eski questten kalma bir problemmiş
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst