kannst ja mal hier rein schauen, vielleicht ist das drin was du brauchst, dass war meine pet system quest, für Ilosia damals.
Code:
quest pet_system begin
state start begin
when letter begin
cmdchat("petguihideshow "..q.getcurrentquestindex())
end
function givebonus(x)
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').."")
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
[53002] = { 34002, "'s Rentier", 1, "rentier"},
[53003] = { 34003, "'s Eisphönix", 1, "icephoenix"},
[53004] = { 34004, "'s Azrael", 1, "azrael"},
[53005] = { 34009, "'s Gold-Azrael", 1, "azrael"},
[53010] = { 34008, "'s Leonidas", 1, "leonidas"},
[53011] = { 34007, "'s Khan", 1, "khan"},
[53012] = { 34005, "'s Porkie", 1, "porky"},
[53013] = { 34006, "'s Rufus", 1, "rufus"},
[53014] = { 34011, "'s Knuud", 1},
[53015] = { 34012, "'s Bao Bao", 1, "baobao"},
[53007] = { 34010, "'s Bambi", 1, "rentier"},
[53017] = { 34016, "'s Jadephönix", 1},
[53018] = { 34013, "'s Henkerchen", 1},
[53019] = { 34014, "'s Gold-Henkerchen", 1},
[53016] = { 34015, "'s Boney", 1},
}
itemVnum = tonumber(itemVnum)
return pet_info_map[itemVnum]
end
function get_spawn_effect_file(idx)
effect_table = {
[0] = nil,
[1] = "d:\\\\ymir work\\\\effect\\\\etc\\\\appear_die\\\\monster_appear.mse",
}
return effect_table [idx]
end
when 53007.use or 53013.use or 53012.use or 53011.use or 53010.use or 53005.use or 53004.use or 53003.use or 53002.use or 53001.use or 53014.use or 53015.use or 53017.use or 53018.use or 53019.use or 53016.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[3])
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'))
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') == 0 then
pc.setqf('petlevel',1)
end
syschat("Dein Haustier wurde gerufen.")
pet_system.givebonus(pc.getqf('petlevel'))
local expprocent1 = {20, 80, 160, 350, 400}
cmdchat("PetProcentExp "..(pc.getqf("exp")/expprocent1[pc.getqf("petlevel")]).."")
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
if pc.getqf("petlevel") == 5 then
return
end
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",pc.getqf("exp")+1)
local exp2up = {2000, 8000, 16000, 35000, 40000}
local expprocent = {20, 80, 160, 350, 400}
cmdchat("PetProcentExp "..(pc.getqf("exp")/expprocent[pc.getqf("petlevel")]).."")
if pc.getqf("exp") == exp2up[pc.getqf("petlevel")] then
if pc.getqf("petlevel") == 4 then
say_title("Herzlichen Glückwunsch")
say("Dein Haustier erreicht Level "..(pc.getqf("petlevel")+1).."")
say_reward("Dies war das letzte Level!")
end
say_title("Herzlichen Glückwunsch")
say("Dein Haustier erreicht Level "..(pc.getqf("petlevel")+1).."")
say("Rufe dein Pet bitte erneut!")
pc.setqf("petlevel",pc.getqf("petlevel")+1)
pc.setqf("exp",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
pet_system.removebonus(pc.getqf('petlevel'))
chat("Dein Haustier ist nicht mitgekommen...")
chat("Rufe es erneut!")
end
when button or info begin
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")/expprocent1[pc.getqf("petlevel")]).."")
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