emirhanHCL 1
emirhanHCL
farkmt2official 1
farkmt2official
mannaxxx 1
mannaxxx
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle

Yeni Pet exp ve Level Sistemi

  • Konuyu başlatan Konuyu başlatan AsiPly
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 17
  • Görüntüleme Görüntüleme 2K
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Aşağıda ki questi alman bir forumdan aldım, belki işinizi görür.


Kod:
quest pet_system begin
    state start begin
        when letter begin
            cmdchat("petguihideshow "..q.getcurrentquestindex())
        end
        
        function givebonus(x)
            local mobVnum = pc.getqf("mobVnum")
            local y,boni = {10,54,1},pet_system.bonusliste()
            table.foreach(boni[x],function(i,l)  cmdchat("HaustierBonus"..i.." "..l.."") affect.add_collect(y[i],l,60*60*24*365*60) end )
            cmdchat("HaustierLevel "..pc.getqf('petlevel_'..mobVnum).."")
            cmdchat("HaustierName "..pc.get_name().."")
            pc.setqf("petruf",1)
            pc.setqf("petguishow",1)
        end
        
        function bonusliste()
            return {
                [1] = {20,10,500},
                [2] = {30,20,1000},
                [3] = {40,30,1500},
                [4] = {50,45,2000},
                [5] = {65,60,3000},
            }
        end
        
        function removebonus(x)
            local y,boni = {10,54,1},pet_system.bonusliste()
            table.foreach(boni[x],function(i,l) affect.remove_collect(y[i],l,60*60*24*365*60) end )
            pc.setqf("petruf",0)
            --cmdchat("HidePetGui")
            pc.setqf("petguishow",0)
            cleartimer("bugcheck")
        end
        
        function get_pet_info(itemVnum)
            pet_info_map = {
            --  [ITEM VNUM] MOB_VNUM, DEFAULT NAME, buff_idx, spawn_effect_idx
                [53001]     = { 34001, "'s Lv.180 ", 0},
                [53002]     = { 34002, "'s Lv.1 ", 0},
                [53003]     = { 34003, "'s Lv.250 ", 0},
                [53005]     = { 34004, "'s Lv.250 ", 0},
                [53006]     = { 34008, "'s Lv.180 ", 0},
                [53007]     = { 34007, "'s Lv.60 ", 0},
                [53008]     = { 34005, "'s Lv.60 ", 0},
                [53009]     = { 34006, "'s Lv.1 ", 0},
                [53004]     = { 34027, "'s Lv.280 ", 0},
                [53010]     = { 34026, "'s Lv.310 ", 0},
            }

            itemVnum = tonumber(itemVnum)

            return pet_info_map[itemVnum]
        end
        function get_spawn_effect_file(idx)
            effect_table = {
                [0] = nil,
                [1] = "d:ymir workeffectetcappear_diemonster_appear.mse",
            }
            return effect_table [idx]
        end
        when 53001.use or 53002.use or 53003.use or 53004.use or 53005.use or
        53006.use or 53007.use or 53008.use or 53009.use or 53010.use begin
            local pet_info = pet_system.get_pet_info(item.vnum)

            if null != pet_info then

                local mobVnum = pet_info[1]
                local petName = pet_info[2]
                local spawn_effect_file_name = pet_system.get_spawn_effect_file(pet_info[4])
                
                pc.setqf("mobVnum",mobVnum)

                if true == pet.is_summon(mobVnum) then
                    if spawn_effect_file_name != nil then
                        pet.spawn_effect (mobVnum, spawn_effect_file_name)
                    end
                    pet.unsummon(mobVnum)
                    pet_system.removebonus(pc.getqf('petlevel_'..mobVnum))
                    cmdchat("HidePetGui")
                    syschat("Dein Haustier wurde weggeschickt")
                else
                    if pet.count_summoned() < 1 then
                        pet.summon(mobVnum, petName, false)
                        if pet_info[4] ~= nil then
                        cmdchat(pet_info[4])
                        end
                        if pc.getqf('petlevel_'..mobVnum) == 0 then
                        pc.setqf('petlevel_'..mobVnum,1)
                        end
                        syschat("Dein Haustier wurde gerufen.")
                        pet_system.givebonus(pc.getqf('petlevel_'..mobVnum))
                        local expprocent1 = {20, 80, 160, 350, 400}
                        cmdchat("PetProcentExp "..(pc.getqf("exp_"..mobVnum)/expprocent1[pc.getqf("petlevel_"..mobVnum)]).."")                 
                        cmdchat("ShowPetGui")
                        loop_timer("bugcheck", 0.2)
                    else
                        syschat("Du hast bereits ein Haustier gerufen!")
                    end
                    if spawn_effect_file_name != nil then
                        pet.spawn_effect(mobVnum, spawn_effect_file_name)
                    end
                end -- if pet.is_summon
            end  -- if null != pet_info
        end -- when
        when kill with not npc.is_pc() begin
            local mobVnum = pc.getqf("mobVnum")        
            if pc.getqf("petlevel_"..mobVnum) == 5 then
                return
            else
            if pc.getqf("petruf")==1 then
            --intervall = 10
            --if pc.get_level() <= mob.get_level(npc.get_race())+ intervall then -- du darfst nur max 10 lvl über das monster sein
            pc.setqf("exp_"..mobVnum,pc.getqf("exp_"..mobVnum)+1)
                    local exp2up = {2000, 8000, 16000, 35000, 40000}
                    local expprocent = {20, 80, 160, 350, 400}
                    cmdchat("PetProcentExp "..(pc.getqf("exp_"..mobVnum)/expprocent[pc.getqf("petlevel_"..mobVnum)]).."")
                    if pc.getqf("exp_"..mobVnum) == exp2up[pc.getqf("petlevel_"..mobVnum)] then
                        if pc.getqf("petlevel_"..mobVnum) == 4 then
                            say_title("Herzlichen Glückwunsch")
                            say("Dein Haustier erreicht Level "..(pc.getqf("petlevel_"..mobVnum)+1).."")
                            say_reward("Dies war das letzte Level!")
                        end
                        say_title("Herzlichen Glückwunsch")
                        say("Dein Haustier erreicht Level "..(pc.getqf("petlevel_"..mobVnum)+1).."")
                        say("Rufe dein Pet bitte erneut!")
                        pc.setqf("petlevel_"..mobVnum,pc.getqf("petlevel_"..mobVnum)+1)
                        pc.setqf("exp_"..mobVnum,0)
                        pet_system.removebonus(pc.getqf('petlevel'))
                    end
                end -- if not...
            end -- if pc.get...
        end -- when
        
                -- Bugschutz
        
        when bugcheck.timer begin
            if pc.is_dead() then
                pet_system.removebonus(pc.getqf('petlevel'))
            end
        end
        
        when login or logout or disconnect with pc.getqf("petruf") == 1 begin
            local mobVnum = pc.getqf("mobVnum")
            pet_system.removebonus(pc.getqf('petlevel_'..mobVnum))
            cmdchat("HidePetGui")
            chat("Dein Haustier ist nicht mitgekommen...")
            chat("Rufe es erneut!")
        end
        when button or info begin
            local mobVnum = pc.getqf("mobVnum")
            if pc.getqf("petruf") == 1 and pc.getqf("petguishow") == 1 then
                cmdchat("HidePetGui")
                pc.setqf("petguishow",0)
                syschat("Dein Haustierfenster wurde geschlossen, du kannst es über den Button im Inventar erneut öffnen!")
            elseif pc.getqf("petruf") == 1 and pc.getqf("petguishow") == 0 then
                cmdchat("ShowPetGui")
                local expprocent1 = {20, 80, 160, 350, 400}
                cmdchat("PetProcentExp "..(pc.getqf("exp_"..mobVnum)/expprocent1[pc.getqf("petlevel_"..mobVnum)]).."")  
                pc.setqf("petguishow",1)
                syschat("Dein Haustierfenster wurde geöffnet, du kannst es über den Button im Inventar wieder schließen!")
            elseif pc.getqf("petruf") == 0 then
                syschat("Du hast kein Haustier gerufen!")
            end
        end
            
    end -- state
end -- quest
 
Son düzenleme:
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst