Ehmm ja hab ich. Hier die quest:
PHP Code:
quest petsystem begin
state start begin
when login begin
local petnamen = {"Feuerphoenix", "Eisphoenix", "MiniAzrael", "Hundejunges", "Loewenjunges", "Schweinejunges", "Tigerjunges",}
pc.setqf("Feuerphoenixlevel", 1)
pc.setqf("Eisphoenixlevel", 1)
pc.setqf("MiniAzraellevel", 1)
pc.setqf("Hundejungeslevel", 1)
pc.setqf("Loewenjungeslevel", 1)
pc.setqf("Schweinejungeslevel", 1)
pc.setqf("Tigerjungeslevel", 1)
set_state( viertuse )
end
end
state zweituse begin
when login begin
pc.setqf("Feuerphoenixlevel", 1)
pc.setqf("Eisphoenixlevel", 1)
pc.setqf("MiniAzraellevel", 1)
pc.setqf("Hundejungeslevel", 1)
pc.setqf("Loewenjungeslevel", 1)
pc.setqf("Schweinejungeslevel", 1)
pc.setqf("Tigerjungeslevel", 1)
set_state( viertuse )
end
end
state drittuse begin
when login begin
chat("Alle Haustiere wurden auf das Level 1 gesetzt, geht zum Stallburschen, um sie zu leveln.")
pc.setqf("Feuerphoenixlevel", 1)
pc.setqf("Eisphoenixlevel", 1)
pc.setqf("MiniAzraellevel", 1)
pc.setqf("Hundejungeslevel", 1)
pc.setqf("Loewenjungeslevel", 1)
pc.setqf("Schweinejungeslevel", 1)
pc.setqf("Tigerjungeslevel", 1)
chat("Haustiere auf 1 gesetzt.")
set_state( viertuse )
end
end
state viertuse begin
when 20132.use or 20133.use or 20134.use or 20135.use or 20136.use or 20137.use or 20138.use or 53002.use begin
local itemid = item.get_vnum() - 20131
if pc.getqf("petgerufen") == 0 then
if pc.is_mount() == true then
chat("Während du reitest, kannst du kein Haustier rufen. Steig zuerst von deinem Reitier ab")
chat("rufe anschließend dein Haustier und steig danach wieder auf dein Reittier.")
return
else
if itemid == 1 then
horse.set_level ("22")
horse.unsummon()
horse.summon()
pc.setqf("petgerufen", 1)
chat("Dein Feuerphoenix wurde gerufen.")
pc.setqf("lvlaktuellespet", pc.getqf("Feuerphoenixlevel"))
erstboni = 5
if pc.getqf("lvlaktuellespet") == 2 then
erstboni = 5
elseif pc.getqf("lvlaktuellespet") == 3 then
erstboni = 5
elseif pc.getqf("lvlaktuellespet") >= 4 then
erstboni = 5
end
zweitboni = 5
if pc.getqf("lvlaktuellespet") == 5 then
zweitboni = 5
elseif pc.getqf("lvlaktuellespet") == 6 then
zweitboni = 5
elseif pc.getqf("lvlaktuellespet") >= 7 then
zweitboni = 5
end
drittboni = 5
if pc.getqf("lvlaktuellespet") == 8 then
drittboni = 5
elseif pc.getqf("lvlaktuellespet") == 9 then
drittboni = 5
elseif pc.getqf("lvlaktuellespet") >= 10 then
drittboni = 5
end
pc.setqf("boniersterwert", erstboni)
pc.setqf("bonizweiterwert", zweitboni)
pc.setqf("bonidritterwert", drittboni)
affect.add_collect(apply.PENETRATE_PCT, erstboni, 60*60*24*365*80)
chat(""..erstboni.."% Chance auf durchbohrenden Treffer dazuerhalten.")
affect.add_collect(apply.ATTBONUS_HUMAN, zweitboni, 60*60*24*365*80)
chat(""..zweitboni.."% stark gegen Halbmenschen dazuerhalten.")
affect.add_collect(apply.CRITICAL_PCT, drittboni, 60*60*24*365*80)
chat(""..erstboni.."% Chance auf kritischen Treffer dazuerhalten.")
elseif itemid == 2 then
horse.set_level ("23")
horse.unsummon()
horse.summon()
pc.setqf("petgerufen", 2)
chat("Dein Eisphoenix wurde gerufen.")
pc.setqf("lvlaktuellespet", pc.getqf("Eisphoenixlevel"))
erstboni = 5
if pc.getqf("lvlaktuellespet") == 2 then
erstboni = 5
elseif pc.getqf("lvlaktuellespet") == 3 then
erstboni = 5
elseif pc.getqf("lvlaktuellespet") >= 4 then
erstboni = 5
end
zweitboni = 5
if pc.getqf("lvlaktuellespet") == 5 then
zweitboni = 5
elseif pc.getqf("lvlaktuellespet") == 6 then
zweitboni = 5
elseif pc.getqf("lvlaktuellespet") >= 7 then
zweitboni = 5
end
drittboni = 10
if pc.getqf("lvlaktuellespet") == 8 then
drittboni = 10
elseif pc.getqf("lvlaktuellespet") == 9 then
drittboni = 10
elseif pc.getqf("lvlaktuellespet") >= 10 then
drittboni = 10
end
pc.setqf("boniersterwert", erstboni)
pc.setqf("bonizweiterwert", zweitboni)
pc.setqf("bonidritterwert", drittboni)
affect.add_collect(apply.CRITICAL_PCT, erstboni, 60*60*24*365*80)
chat(""..erstboni.."% Chance auf kritischen Treffer dazuerhalten.")
affect.add_collect(apply.ATTBONUS_HUMAN, zweitboni, 60*60*24*365*80)
chat(""..zweitboni.."% stark gegen Halbmenschen dazuerhalten.")
affect.add_collect(9, drittboni, 60*60*24*365*80)
chat(""..drittboni.."% Zaubergeschwindigkeit dazuerhalten.")
elseif itemid == 3 then
horse.set_level ("24")
horse.unsummon()
horse.summon()
pc.setqf("petgerufen", 3)
chat("Dein MiniAzrael wurde gerufen.")
pc.setqf("lvlaktuellespet", pc.getqf("MiniAzraellevel"))
erstboni = 2000
if pc.getqf("MiniAzraellevel") == 2 then
erstboni = 2000
elseif pc.getqf("MiniAzraellevel") == 3 then
erstboni = 2000
elseif pc.getqf("MiniAzraellevel") >= 4 then
erstboni = 2000
end
zweitboni = 10
if pc.getqf("lvlaktuellespet") == 8 then
zweitboni = 10
elseif pc.getqf("lvlaktuellespet") == 9 then
zweitboni = 10
elseif pc.getqf("lvlaktuellespet") >= 10 then
zweitboni = 10
end
pc.setqf("boniersterwert", erstboni)
pc.setqf("bonizweiterwert", zweitboni)
affect.add_collect(apply.MAX_HP, erstboni, 60*60*24*365*80)
chat(""..erstboni.." HP dazuerhalten.")
affect.add_collect(apply.ATTBONUS_ANIMAL, drittboni, 60*60*24*365*80)
chat(""..zweitboni.."% Stark gegen Monster dazuerhalten.")
elseif itemid == 4 then
horse.set_level ("25")
horse.unsummon()
horse.summon()
pc.setqf("petgerufen", 4)
chat("Dein Hundejunges wurde gerufen.")
pc.setqf("lvlaktuellespet", pc.getqf("Hundejungeslevel"))
elseif itemid == 5 then
horse.set_level ("26")
horse.unsummon()
horse.summon()
pc.setqf("petgerufen", 5)
chat("Dein Loewenjunges wurde gerufen.")
pc.setqf("lvlaktuellespet", pc.getqf("Loewenjungeslevel"))
elseif itemid == 6 then
horse.set_level ("27")
horse.unsummon()
horse.summon()
pc.setqf("petgerufen", 6)
chat("Dein Schweinejunges wurde gerufen.")
pc.setqf("lvlaktuellespet", pc.getqf("Schweinejunges"))
elseif itemid == 7 then
horse.set_level ("28")
horse.unsummon()
horse.summon()
pc.setqf("petgerufen", 7)
chat("Dein Tigerjunges wurde gerufen.")
pc.setqf("lvlaktuellespet", pc.getqf("Tigerjungeslevel"))
end
end
elseif pc.getqf("petgerufen") == itemid then
if itemid == 1 then
chat("Dein Feuerphoenix wurde weggeschickt.")
affect.remove_collect(apply.PENETRATE_PCT, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_HUMAN, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
affect.remove_collect(73, pc.getqf("bonidritterwert"), 60*60*24*365*80)
elseif itemid == 2 then
chat("Dein Eisphoenix wurde weggeschickt.")
affect.remove_collect(apply.CRITICAL_PCT, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_HUMAN, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
affect.remove_collect(74, pc.getqf("bonidritterwert"), 60*60*24*365*80)
elseif itemid == 3 then
chat("Dein MiniAzrael wurde weggeschickt.")
affect.remove_collect(apply.MAX_HP, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(37, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
affect.remove_collect(73, pc.getqf("bonidritterwert"), 60*60*24*365*80)
elseif itemid == 4 then
chat("Dein Hundejunges wurde weggeschickt.")
affect.remove_collect(54, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_ANIMAL, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
elseif itemid == 5 then
chat("Dein Loewenjunges wurde weggeschickt.")
affect.remove_collect(apply.MAX_HP, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_ANIMAL, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
elseif itemid == 6 then
chat("Dein Schweinejunges wurde weggeschickt.")
affect.remove_collect(53, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_ANIMAL, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
elseif itemid == 7 then
chat("Dein Tiegerjunges wurde weggeschickt.")
affect.remove_collect(apply.HP_REGEN, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_ANIMAL, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
end
horse.unsummon()
horse.set_level ("21")
pc.setqf("petgerufen", 0)
set_quest_state("newmount", "start")
else
chat("Du hast derzeit ein anderes Haustier bei dir, schicke zuerst dieses weg.")
end
end
when logout or shutdown or disconnect begin
if pc.getqf("petgerufen") != 0 then
horse.unsummon()
horse.set_level ("21")
if pc.setqf("petgerufen") == 1 then
affect.remove_collect(apply.PENETRATE_PCT, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_HUMAN, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
affect.remove_collect(73, pc.getqf("bonidritterwert"), 60*60*24*365*80)
elseif pc.setqf("petgerufen") == 2 then
affect.remove_collect(apply.CRITICAL_PCT, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_HUMAN, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
affect.remove_collect(74, pc.getqf("bonidritterwert"), 60*60*24*365*80)
elseif pc.setqf("petgerufen") == 3 then
affect.remove_collect(apply.MAX_HP, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(37, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
affect.remove_collect(73, pc.getqf("bonidritterwert"), 60*60*24*365*80)
elseif pc.setqf("petgerufen") == 4 then
affect.remove_collect(54, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_ANIMAL, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
elseif pc.setqf("petgerufen") == 5 then
affect.remove_collect(apply.MAX_HP, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_ANIMAL, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
elseif pc.setqf("petgerufen") == 6 then
affect.remove_collect(53, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_ANIMAL, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
elseif pc.setqf("petgerufen") == 7 then
affect.remove_collect(apply.HP_REGEN, pc.getqf("boniersterwert"), 60*60*24*365*80)
affect.remove_collect(apply.ATTBONUS_ANIMAL, pc.getqf("bonizweiterwert"), 60*60*24*365*80)
end
pc.setqf("petgerufen", 0)
pc.setqf("lvlaktuellespet", 1)
set_quest_state("newmount", "start")
end
end
when 20359.chat."Haustierlevel" begin
local petnamen = {"Feuerphoenix", "Eisphoenix", "MiniAzrael", "Hundejunges", "Loewenjunges", "Schweinejunges", "Tiegerjunges",}
local exptable = {
{1, 0},
{2, 15000000}, --
{3, 25000000},
{4, 35000000},
{5, 45000000},
{6, 55000000},
{7, 65000000},
{8, 75000000},
{9, 85000000},
{10, 100000000},
}
local maxexp = 0
for maxexpdurch = 1, 10, 1 do
maxexp = maxexp + exptable[maxexpdurch][2]
end
say_title(mob_name(20359)..":")
say("")
say("Guten Tag, bei mir kannst du Exp an dein")
say("Haustier spenden, dass du gerade bei dir hast,")
say("um sein Level und damit auch die Boni, die es")
say("dir gibt zu erhöhen.")
say("")
if pc.getqf("petgerufen") == 0 then
say("Du hast derzeit kein Haustier bei dir, somit")
say("können wir auch keines leveln, rufe eines")
say("deiner Haustiere und komm erneut wieder.")
return
end
if pc.getqf("lvlaktuellespet") == 10 then
say("Dein derzeitiges Haustier ist schon auf dem höchsten")
say("Level, du kannst es nicht weiter trainieren.")
return
end
say("Wie ich sehe ist dein "..petnamen[pc.getqf("petgerufen")].."")
say("bei dir, möchtest du sein Level durch das Spenden")
say("einiger Exp erhöhen?")
local sel = select("Ja, möchte ich", "Nein, danke")
if sel == 2 then
return
end
petlevel = 0
expdonesincelvlup = 0
if pc.getqf("petgerufen") == 1 then
petlevel = pc.getqf("Feuerphoenixlevel")
expdonesincelvlup = pc.getqf("Feuerphoenixexp")
elseif pc.getqf("petgerufen") == 2 then
petlevel = pc.getqf("Eisphoenixlevel")
expdonesincelvlup = pc.getqf("Eisphoenixexp")
elseif pc.getqf("petgerufen") == 3 then
petlevel = pc.getqf("MiniAzraellevel")
expdonesincelvlup = pc.getqf("MiniAzraelexp")
elseif pc.getqf("petgerufen") == 4 then
petlevel = pc.getqf("Hundejungeslevel")
expdonesincelvlup = pc.getqf("Hundejungesexp")
elseif pc.getqf("petgerufen") == 5 then
petlevel = pc.getqf("Loewenjungeslevel")
expdonesincelvlup = pc.getqf("Loewenjungesexp")
elseif pc.getqf("petgerufen") == 6 then
petlevel = pc.getqf("Schweinejungeslevel")
expdonesincelvlup = pc.getqf("Schweinejungesexp")
elseif pc.getqf("petgerufen") == 7 then
petlevel = pc.getqf("Tiegerjungeslevel")
expdonesincelvlup = pc.getqf("Tiegerjungesexp")
end
expdrin = 0
local dsvg = petlevel + 1
local expneedforlvlup = exptable[dsvg][2]
local expleft = expneedforlvlup - expdonesincelvlup
local expsay = num_format(expleft)
local exphat = num_format(pc.get_exp())
say_title(mob_name(20359)..":")
say("")
say("Das Level deines "..petnamen[pc.getqf("petgerufen")].." beträgt")
say("derzeit: "..petlevel.."")
say("")
say("Exp die für das nächste Level benötigt werden:")
say(""..expsay.."")
say("")
say("Wieviel Exp möchtest du investieren?")
say("Wenn du mehr als benötigt spendest, wird es für")
say("das nächste Level gutgeschrieben.")
say("Du hast derzeit "..exphat.." Exp.")
local expspende = tonumber(input())
if (not is_number(expspende)) or (expspende < 0) then
chat("Du hast weniger als 0 oder keine Zahl angegeben.")
return
end
if pc.get_exp() < expspende then
chat("Du hast weniger Exp als du angegeben hast.")
return
end
minusep = maxexp - expdrin
if expspende > minusep then
expspende = minusep
chat("Du hättest mehr gespendet, als du für das höchste Level gebraucht hättest.")
chat("Die Spende wurde auf das maximal benötigte runtergesetzt.")
end
local exp_before = pc.get_exp()
pc.give_exp2(-expspende)
if exp_before == pc.get_exp() then
chat("Es trat ein Fehler beim Spenden der Erfahrung auf.")
return
end
chat(expspende.." Exp gespendet.")
if pc.getqf("petgerufen") == 1 then
pc.setqf("Feuerphoenixexp", pc.getqf("Feuerphoenixexp") + expspende)
elseif pc.getqf("petgerufen") == 2 then
pc.setqf("Eisphoenixexp", pc.getqf("Eisphoenixexp") + expspende)
elseif pc.getqf("petgerufen") == 3 then
pc.setqf("MiniAzraelexp", pc.getqf("MiniAzraelexp") + expspende)
elseif pc.getqf("petgerufen") == 4 then
pc.setqf("Hundejungesexp", pc.getqf("Hundejungesexp") + expspende)
elseif pc.getqf("petgerufen") == 5 then
pc.setqf("Loewenjungesexp", pc.getqf("Loewenjungesexp") + expspende)
elseif pc.getqf("petgerufen") == 6 then
pc.setqf("Schweinejungesexp", pc.getqf("Schweinejungesexp") + expspende)
elseif pc.getqf("petgerufen") == 7 then
pc.setqf("Tiegerjungesexp", pc.getqf("Tiegerjungesexp") + expspende)
end
local levels = 10
petlevel2 = petlevel
if pc.getqf("petgerufen") == 1 then
expdonesincelvlup2 = pc.getqf("Feuerphoenixexp")
pc.setqf("petlevel", pc.getqf("Feuerphoenixlevel"))
elseif pc.getqf("petgerufen") == 2 then
expdonesincelvlup2 = pc.getqf("Eisphoenixexp")
pc.setqf("petlevel", pc.getqf("Eisphoenixlevel"))
elseif pc.getqf("petgerufen") == 3 then
expdonesincelvlup2 = pc.getqf("MiniAzraelexp")
pc.setqf("petlevel", pc.getqf("MiniAzraellevel"))
elseif pc.getqf("petgerufen") == 4 then
expdonesincelvlup2 = pc.getqf("Hundejungesexp")
pc.setqf("petlevel", pc.getqf("Hundejungeslevel"))
elseif pc.getqf("petgerufen") == 5 then
expdonesincelvlup2 = pc.getqf("Loewenjungesexp")
pc.setqf("petlevel", pc.getqf("Loewenjungeslevel"))
elseif pc.getqf("petgerufen") == 6 then
expdonesincelvlup2 = pc.getqf("Schweinejungesexp")
pc.setqf("petlevel", pc.getqf("Schweinejungeslevel"))
elseif pc.getqf("petgerufen") == 7 then
expdonesincelvlup2 = pc.getqf("Tiegerjungesexp")
pc.setqf("petlevel", pc.getqf("Tiegerjungeslevel"))
end
while petlevel2 < levels do
petlevel2 = petlevel2 + 1
if expdonesincelvlup2 >= exptable[petlevel2][2] then
pc.setqf("petlevel", exptable[petlevel2][1])
expdonesincelvlup2 = expdonesincelvlup2 - exptable[petlevel2 - 1][2]
chat("Dein Haustier hat Level "..petlevel2.." erreicht.")
end
end
if pc.getqf("petgerufen") == 1 then
pc.setqf("Feuerphoenixlevel", pc.getqf("petlevel"))
pc.setqf("Feuerphoenixexp", expdonesincelvlup2)
elseif pc.getqf("petgerufen") == 2 then
pc.setqf("Eisphoenixlevel", pc.getqf("petlevel"))
pc.setqf("Eisphoenixexp", expdonesincelvlup2)
elseif pc.getqf("petgerufen") == 3 then
pc.setqf("MiniAzraellevel", pc.getqf("petlevel"))
pc.setqf("MiniAzraelexp", expdonesincelvlup2)
elseif pc.getqf("petgerufen") == 4 then
pc.setqf("Hundejungeslevel", pc.getqf("petlevel"))
pc.setqf("Hundejungesexp", expdonesincelvlup2)
elseif pc.getqf("petgerufen") == 5 then
pc.setqf("Loewenjungeslevel", pc.getqf("petlevel"))
pc.setqf("Loewenjungesexp", expdonesincelvlup2)
elseif pc.getqf("petgerufen") == 6 then
pc.setqf("Schweinejungeslevel", pc.getqf("petlevel"))
pc.setqf("Schweinejungesexp", expdonesincelvlup2)
elseif pc.getqf("petgerufen") == 7 then
pc.setqf("Tiegerjungeslevel", pc.getqf("petlevel"))
pc.setqf("Tiegerjungesexp", expdonesincelvlup2)
end
end
end
end