PHP Code:
quest warpring begin
state start begin
when 70007.use or 9012.chat.gameforge.map_warp._10_npcChat or 20009.chat.gameforge.neutral_warp._10_npcChat begin
local warp = {--koord Pflicht, rest optional!
{--Map1
name = "Map 1",
{--Rotes Reich
name = "Rotes Reich",
koord = {474100, 955000},
},
{--Gelbes Reich
name = "Gelbes Reich",
koord = {63525, 166543},
},
{--Blaues Reich
name = "Blaues Reich",
koord = {960100, 268800},
},
},
{--Map2
name = "Map 2",
{--Rotes Reich
name = "Rotes Reich",
koord = {352200, 882200},
},
{--Gelbes Reich
name = "Gelbes Reich",
koord = {145900, 239800},
},
{--Blaues Reich
name = "Blaues Reich",
koord = {863700, 246300},
},
},
{--Handels Map
name = "Handelsmap",
{--Handelsmap
name = "Handelsmap",
koord = {912384594, 91246594},
},
},
{--Standart Maps
name = "Standart Maps",
{--Orktal Mitte
name = "Orktal",
koord = {333074, 747167},
},
{--Hwang-Tempel
name = "Tempel",
koord = {553600, 144100},
},
{--Wüste Mitte
name = "Wüste",
koord = {297300, 547900},
},
{--Eisland Mitte
name = "Eisland",
koord = {436900, 216100},
},
{--Feuerland Mitte
name = "Feuerland",
koord = {601300, 687900},
},
{--Dämonenturm
name = "Dämonenturm",
koord = {590406, 110717},
},
{--Schlangenfeld
name = "Schlangenfeld",
koord = {1059000, 726200},
},
{--Land der Riesen
name = "Land der Riesen",
koord = {828300, 763500},
},
{--Geisterwald
name = "Geisterwald",
koord = {288700, 5700},
},
{--Roter Wald
name = "Roter Wald",
koord = {1119323, 7952},
},
},
{--Spinnendungeons
name = "Spinnendungeons",
{--Spinnendungeons 1
if pc.get_level() >= 55 then
name = "SD1",
koord = {60000, 497000},
end
},
{--Spinnendungeons 2
if pc.get_level() >= 75 then
name = "SD2",
koord = {703800, 462500},
end
},
{--Spinnendungeons 3
if pc.get_level() >= 85 then
name = "SD3",
koord = {97649, 571124},
end
},
{--Spinnendungeons 3
if pc.get_level() >= 105 then
name = "SD3 Boss",
koord = {69018, 609960},
end
},
},
{--Grotte der Verbannung
name = "Grotte der Verbannung",
{--Grotte 1
if pc.get_level() >= 75 then
name = "Grotte 1",
koord = {10000, 1207800},
end
},
{--Grotte 2
if pc.get_level() >= 85 then
name = "Grotte 2",
koord = {241800, 1275000},
end
},
{--Drachenraum
if pc.get_level() >= 105 then
name = "Drachenraum",
koord = {181473, 1220674},
end
},
},
{--Farmmaps
name = "Farmmaps",
{--Tempel der Ochao
if pc.get_level() >= 105 then
name = "Tempel der Ochao",
koord = {884800, 1447000},
end
},
{--Donnerberge
if pc.get_level() >= 125 then
name = "Donnerberge",
koord = {1134500, 1654600},
end
},
{--Nephritbucht
if pc.get_level() >= 150 then
name = "Nephritbucht",
koord = {1086900, 1655800},
end
},
},
{--Level Maps
name = "Level Maps",
{--Verwunschener Wald
if pc.get_level() >= 105 then
name = "Verwunschener Wald",
koord = {801800, 1499000},
end
},
{--Gautamakliff
if pc.get_level() >= 125 then
name = "Gautamakliff",
koord = {1226300, 1681100},
end
},
{--Rotdrachen-Festung
if pc.get_level() >= 125 then
name = "Rotdrachen-Festung",
koord = {614265, 706964},
end
},
{--Nemeres Warte
if pc.get_level() >= 125 then
name = "Nemeres Warte",
koord = {433025, 167605},
end
},
},
}
warpring.showwarps(warp)
end
function warp(tbl)
local level = pc.get_level()
if tbl.minlevel and level < tbl.minlevel then
say("Dein Level ist zu niedrig, um diese Map zu betreten.")
say("Minimal Level: "..tbl.minlevel)
select("Abbrechen")
return
elseif tbl.maxlevel and level > tbl.maxlevel then
say("Dein Level ist zu hoch, um diese Map zu betreten.")
say("Maximal Level: "..tbl.maxlevel)
select("Abbrechen")
return
end
while not pc.can_warp() do
say("Du kannst dich noch nicht teleportieren, da du in")
say("den letzten 10 Sekunden gehandelt hast.")
if select("Erneut versuchen", "Abbrechen") == 2 then return end
end
local warpneedstrings = warpring.get_warpneedstrings(tbl)
if table.getn(warpneedstrings) > 0 then
say("Um diese Map zu betreten benötigst du folgende")
say("Dinge:")
for _,v in ipairs(warpneedstrings) do
say(v)
end
say("")
say("Möchtest du trotzdem fortfahren?")
if select("Teleportieren", "Abbrechen") == 2 then return end
end
if not warpring.check_and_remove_warpneeds(tbl) then
say("Dir fehlt mindestens eins der benötigten Dinge.")
select("Abbrechen")
return
end
pc.warp(tbl.koord[1], tbl.koord[2])
end
function get_warpneedstrings(tbl)
local warpneeds = {}
if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
for _,v in ipairs(tbl.itemneed) do
table.insert(warpneeds, "- "..v[2].."x "..item_name(v[1]))
end
end
if tbl.goldneed and tbl.goldneed > 0 then
table.insert(warpneeds, "- "..tbl.goldneed.." Yang")
end
return warpneeds
end
function check_warpneeds(tbl)
if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
for _,v in ipairs(tbl.itemneed) do
if pc.count_item(v[1]) < v[2] then
return false
end
end
end
if tbl.goldneed and tbl.goldneed > 0 then
if pc.get_gold() < tbl.goldneed then
return false
end
end
return true
end
function remove_warpneeds(tbl)
if tbl.itemneed and table.getn(tbl.itemneed) > 0 then
for _,v in ipairs(tbl.itemneed) do
pc.remove_item(v[1], v[2])
end
end
if tbl.goldneed and tbl.goldneed > 0 then
pc.change_gold(-tbl.goldneed)
end
end
function check_and_remove_warpneeds(tbl)
if not warpring.check_warpneeds(tbl) then
return false
end
warpring.remove_warpneeds(tbl)
return true
end
function get_warpnames(tbl)
local level = pc.get_level()
local names = {}
for _,v in ipairs(tbl) do
if v.minlevel and level < v.minlevel then
v.name = v.name.." (ab Lv. "..v.minlevel..")"
elseif v.maxlevel and level > v.maxlevel then
v.name = v.name.." (bis Lv. "..v.maxlevel..")"
end
table.insert(names, v.name)
end
return names
end
function showwarps(tbl)
local warpnames = warpring.get_warpnames(tbl)
local s = tbl[select3(warpnames)] or false
if not s then return end
if s.koord then
warpring.warp(s)
return
end
warpring.showwarps(s)
end
end
end