Jump to content

I bims 1 WLAN

Inactive Member
  • Posts

    36
  • Joined

  • Last visited

  • Feedback

    0%

About I bims 1 WLAN

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

I bims 1 WLAN's Achievements

Enthusiast

Enthusiast (6/16)

  • One Month Later
  • Collaborator
  • Week One Done
  • Dedicated
  • First Post

Recent Badges

4

Reputation

  1. Hi, Teleport Quest, with Categories, Item Need, Yang Need, Max and Min Level. I have this: -- File: teleport.quest -- Creation date: 20 October 2016 -- Author: Marius(Exygo) -- Version: 0.1 quest teleport begin state __FUNC__ begin function translations() return { ["TITLE"] = string.format("%s",item_name(item.vnum)), ["LEVEL_IS_TO_LOW"] = "Your level is too low for %s", ["LEVEL_IS_TO_HIGH"] = "Your level is too high for %s", ["NOT_ENOUGH_YANG"] = "You need %s Yang for %s", ["NO_ITEM"] = "You need this item for %s", ["COOLDOWN_NOT_FINISHED"] = "You need to wait %ss to warp again in %s", } -- ####### HERE YOU CAN TRANSLATE THE ERROR MESSAGE ####### end function settings() return { { "Orc valley", -- map name 2560, -- globalX (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) 6656, -- globalY (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) {1461,83}, -- {localX,localY}, -- Shinsoo {144,743}, -- {localX,localY}, -- Chunjo {653,1424}, -- {localX,localY}, -- Jinno {1,0}, -- {min entry level,max entry level}, 0, -- min yang req {0,0}, -- {item vnum,item count}, -- item req for entry 10, -- entry cooldown for map (seconds) }, { "Test", -- map name 2560, -- globalX (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) 6656, -- globalY (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) {1461,83}, -- {localX,localY}, -- Shinsoo {144,743}, -- {localX,localY}, -- Chunjo {653,1424}, -- {localX,localY}, -- Jinno {1,0}, -- {min entry level,max entry level}, 0, -- min yang req {0,0}, -- {item vnum,item count}, -- item req for entry 10, -- entry cooldown for map (seconds) }, { "Orc 543alley", -- map name 2560, -- globalX (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) 6656, -- globalY (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) {1461,83}, -- {localX,localY}, -- Shinsoo {144,743}, -- {localX,localY}, -- Chunjo {653,1424}, -- {localX,localY}, -- Jinno {1,0}, -- {min entry level,max entry level}, 0, -- min yang req {0,0}, -- {item vnum,item count}, -- item req for entry 10, -- entry cooldown for map (seconds) }, { "T34543t", -- map name 2560, -- globalX (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) 6656, -- globalY (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) {1461,83}, -- {localX,localY}, -- Shinsoo {144,743}, -- {localX,localY}, -- Chunjo {653,1424}, -- {localX,localY}, -- Jinno {1,0}, -- {min entry level,max entry level}, 0, -- min yang req {0,0}, -- {item vnum,item count}, -- item req for entry 10, -- entry cooldown for map (seconds) }, { "3434y", -- map name 2560, -- globalX (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) 6656, -- globalY (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) {1461,83}, -- {localX,localY}, -- Shinsoo {144,743}, -- {localX,localY}, -- Chunjo {653,1424}, -- {localX,localY}, -- Jinno {1,0}, -- {min entry level,max entry level}, 0, -- min yang req {0,0}, -- {item vnum,item count}, -- item req for entry 10, -- entry cooldown for map (seconds) }, { "T234234t", -- map name 2560, -- globalX (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) 6656, -- globalY (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) {1461,83}, -- {localX,localY}, -- Shinsoo {144,743}, -- {localX,localY}, -- Chunjo {653,1424}, -- {localX,localY}, -- Jinno {1,0}, -- {min entry level,max entry level}, 0, -- min yang req {0,0}, -- {item vnum,item count}, -- item req for entry 10, -- entry cooldown for map (seconds) }, { "O5345lley", -- map name 2560, -- globalX (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) 6656, -- globalY (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) {1461,83}, -- {localX,localY}, -- Shinsoo {144,743}, -- {localX,localY}, -- Chunjo {653,1424}, -- {localX,localY}, -- Jinno {1,0}, -- {min entry level,max entry level}, 0, -- min yang req {0,0}, -- {item vnum,item count}, -- item req for entry 10, -- entry cooldown for map (seconds) }, { "Te34534st", -- map name 2560, -- globalX (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) 6656, -- globalY (get this from locale/xx/map/map_n_threeway/settings.txt without 00 at the end) {1461,83}, -- {localX,localY}, -- Shinsoo {144,743}, -- {localX,localY}, -- Chunjo {653,1424}, -- {localX,localY}, -- Jinno {1,0}, -- {min entry level,max entry level}, 0, -- min yang req {0,0}, -- {item vnum,item count}, -- item req for entry 10, -- entry cooldown for map (seconds) }, } -- ####### HERE YOU CAN ADD MORE MAPS ####### end function get_local_pos(l1,l2,l3) local tempE = {} table.insert(tempE,l1) table.insert(tempE,l2) table.insert(tempE,l3) local e = pc.get_empire() return tempE[e] end function hasLevel(lvl) local ret = 0 local level = pc.get_level() local minLvl = lvl[1] local maxLvl = lvl[2] if level > maxLvl and maxLvl != 0 then ret = 2 end if level < minLvl then ret = 1 end return ret end function hasYang(req) local yang = pc.get_money() if yang < req then return false end return true end function hasItem(itm) local i = itm[1] local c = itm[2] if i == 0 then return true end if pc.count_item(i) >= c then return true end return false end function display_go_back() local b = select("Go back","Nope") if b == 2 then return end if b == 1 then local translations = teleport.translations() local settings = teleport.settings() teleport.display_list(settings,translations) end end function display_list(tab,translations) -- indexes local mpN = 1 -- name of the map local glX = 2 -- global x pos local glY = 3 -- global y pos local lc1 = 4 -- local shinsoo pos local lc2 = 5 -- local chunjo pos local lc3 = 6 -- local jinno pos local lvl = 7 -- level req local yng = 8 -- yang req local itm = 9 -- item req local cd = 10 -- cooldown time seconds -- local settings = tab local mapNames = {} for i in settings do table.insert(mapNames,settings[i][mpN]) end -- put the map names in table table.insert(mapNames,"close") -- insert the close button local s = select_table(mapNames) if s == table.getn(mapNames) then return else glX = settings[s][glX] glY = settings[s][glY] lc1 = settings[s][lc1] lc2 = settings[s][lc2] lc3 = settings[s][lc3] lvl = settings[s][lvl] yng = settings[s][yng] itm = settings[s][itm] cd = settings[s][cd] local hasLvl = teleport.hasLevel(lvl) local hasYang = teleport.hasYang(yng) local hasItem = teleport.hasItem(itm) local lPos = teleport.get_local_pos(lc1,lc2,lc3) if hasLvl == 1 then say_title(translations["TITLE"]) say_reward(string.format(translations["LEVEL_IS_TO_LOW"],settings[s][mpN])) teleport.display_go_back() return elseif hasLvl == 2 then say_title(translations["TITLE"]) say_reward(string.format(translations["LEVEL_IS_TO_HIGH"],settings[s][mpN])) teleport.display_go_back() return end if hasYang == false then say_title(translations["TITLE"]) say_reward(string.format(translations["NOT_ENOUGH_YANG"],yng,settings[s][mpN])) teleport.display_go_back() return end if hasItem == false then say_title(translations["TITLE"]) say_reward(string.format(translations["NO_ITEM"],settings[s][mpN])) say_item_vnum(itm[1]) teleport.display_go_back() return end local cooldown = pc.getqf(string.format("teleport_cooldown_%s",s)) if get_time() < cooldown then say_title(translations["TITLE"]) say_reward(string.format(translations["COOLDOWN_NOT_FINISHED"],cooldown-get_time(),settings[s][mpN])) -- function for time format(nicer time) is not included in this quest, it displays just seconds teleport.display_go_back() return end pc.warp((glX + lPos[1] )* 100, (glY + lPos[2]) * 100) if cd != 0 then pc.setqf(string.format("teleport_cooldown_%s",s),get_time()+cd) end end end end state start begin when 70007.use or 20377.click begin local translations = teleport.translations() local settings = teleport.settings() teleport.display_list(settings,translations) end end end and this: --[[ Inizializes: The 'Warp' class. ]] Warp = {}; --[[ Returns: The full warp config. Structure: [section_key] = { ["section"] = "The section name", ["data"] = { {["name"] = "The name of the first map", ["warp"] = {[1] = {x_shinsoo, y_shinsoo}, [2] = {x_chunjo, y_chunjo}, [3] = {x_jinno, y_jinno}}, ["price"] = the warp cost, ["min_level"] = the minimum level to enter the map, ["max_level"] = the maximum level to enter the map}, {["name"] = "The name of the second map", ["warp"] = {[1] = {x_shinsoo, y_shinsoo}, [2] = {x_chunjo, y_chunjo}, [3] = {x_jinno, y_jinno}}, ["price"] = the warp cost, ["min_level"] = the minimum level to enter the map, ["max_level"] = the maximum level to enter the map}, .. } }, ]] Warp.GetConfig = function() local config = { [1] = { ["section"] = "Gelbes Reich", ["data"] = { {["name"] = "Chunjo: Joan (Map 1)", ["warp"] = {[1] = {["x"] = 604, ["y"] = 1700}, [2] = {["x"] = 604, ["y"] = 1700}, [3] = {["x"] = 604, ["y"] = 1700}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Chunjo: Bokjung (Map 2)", ["warp"] = {[1] = {["x"] = 1424, ["y"] = 2399}, [2] = {["x"] = 1424, ["y"] = 2399}, [3] = {["x"] = 1424, ["y"] = 2399}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Chunjo: Waryong (1. Gildenzone)", ["warp"] = {[1] = {["x"] = 2219, ["y"] = 93}, [2] = {["x"] = 2219, ["y"] = 93}, [3] = {["x"] = 2219, ["y"] = 93}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Chunjo: Songpa (2. Gildenzone)", ["warp"] = {[1] = {["x"] = 6144, ["y"] = 3840}, [2] = {["x"] = 6144, ["y"] = 3840}, [3] = {["x"] = 6144, ["y"] = 3840}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Kolonie (Lykaner Startgebiet)", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [1] = { ["section"] = "Baues Reich", ["data"] = { {["name"] = "Jinno: Pyungmoo", ["warp"] = {[1] = {["x"] = 9529, ["y"] = 2687}, [2] = {["x"] = 9529, ["y"] = 2687}, [3] = {["x"] = 9529, ["y"] = 2687}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Jinno: Bakra", ["warp"] = {[1] = {["x"] = 8669, ["y"] = 2447}, [2] = {["x"] = 8669, ["y"] = 2447}, [3] = {["x"] = 8669, ["y"] = 2447}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Jinno: Imha (1. Gildenzone)", ["warp"] = {[1] = {["x"] = 2718, ["y"] = 130}, [2] = {["x"] = 2718, ["y"] = 130}, [3] = {["x"] = 2718, ["y"] = 130}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Jinno: Daeyami (2. Gildenzone)", ["warp"] = {[1] = {["x"] = 2560, ["y"] = 8192}, [2] = {["x"] = 2560, ["y"] = 8192}, [3] = {["x"] = 2560, ["y"] = 8192}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Kolonie (Lykaner Startgebiet)", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [1] = { ["section"] = "Rotes Reich", ["data"] = { {["name"] = "Shinsoo: Yongan", ["warp"] = {[1] = {["x"] = 4771, ["y"] = 9537}, [2] = {["x"] = 4771, ["y"] = 9537}, [3] = {["x"] = 4771, ["y"] = 9537}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Shinsoo: Jayang", ["warp"] = {[1] = {["x"] = 3506, ["y"] = 8806}, [2] = {["x"] = 3506, ["y"] = 8806}, [3] = {["x"] = 3506, ["y"] = 8806}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Shinsoo: Jungrang (1. Gildenzone)", ["warp"] = {[1] = {["x"] = 1356, ["y"] = 43}, [2] = {["x"] = 1356, ["y"] = 43}, [3] = {["x"] = 1356, ["y"] = 43}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Shinsoo: Miryang (2. Gildenzone)", ["warp"] = {[1] = {["x"] = 2048, ["y"] = 2048}, [2] = {["x"] = 2048, ["y"] = 2048}, [3] = {["x"] = 2048, ["y"] = 2048}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Kolonie (Lykaner Startgebiet)", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [1] = { ["section"] = "Neutrale Karten", ["data"] = { {["name"] = "Tal von Seungryong (Orktal)", ["warp"] = {[1] = {["x"] = 4021, ["y"] = 6739}, [2] = {["x"] = 2704, ["y"] = 7399}, [3] = {["x"] = 3213, ["y"] = 8080}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Hwang-Tempel", ["warp"] = {[1] = {["x"] = 5537, ["y"] = 1450}, [2] = {["x"] = 5537, ["y"] = 1450}, [3] = {["x"] = 5537, ["y"] = 1450}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Grotte der Verbannung (Eingang)", ["warp"] = {[1] = {["x"] = 2843, ["y"] = 8103}, [2] = {["x"] = 2843, ["y"] = 8103}, [3] = {["x"] = 2843, ["y"] = 8103}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Yongbi-Wueste (Große Wueste)", ["warp"] = {[1] = {["x"] = 2178, ["y"] = 6272}, [2] = {["x"] = 2219, ["y"] = 5027}, [3] = {["x"] = 3440, ["y"] = 5025}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Yongbi-Wueste (Oase)", ["warp"] = {[1] = {["x"] = 2977, ["y"] = 5470}, [2] = {["x"] = 2977, ["y"] = 5470}, [3] = {["x"] = 2977, ["y"] = 5470}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Berg Sohan (Eisland)", ["warp"] = {[1] = {["x"] = 4342, ["y"] = 2906}, [2] = {["x"] = 3752, ["y"] = 1749}, [3] = {["x"] = 4918, ["y"] = 1736}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Doyyumhwan (Feuerland)", ["warp"] = {[1] = {["x"] = 5994, ["y"] = 7563}, [2] = {["x"] = 5978, ["y"] = 6222}, [3] = {["x"] = 7307, ["y"] = 6898}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Lungsam (Geisterwald)", ["warp"] = {[1] = {["x"] = 2887, ["y"] = 57}, [2] = {["x"] = 2887, ["y"] = 57}, [3] = {["x"] = 2887, ["y"] = 57}}, ["price"] = 12000, ["min_level"] = 60, ["max_level"] = 500}, {["name"] = "Lungsam (Roter Wald)", ["warp"] = {[1] = {["x"] = 11196, ["y"] = 700}, [2] = {["x"] = 11196, ["y"] = 700}, [3] = {["x"] = 11196, ["y"] = 700}}, ["price"] = 12000, ["min_level"] = 60, ["max_level"] = 500}, {["name"] = "Schlangenfeld", ["warp"] = {[1] = {["x"] = 10590, ["y"] = 7267}, [2] = {["x"] = 10590, ["y"] = 7267}, [3] = {["x"] = 10590, ["y"] = 7267}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Land der Riesen", ["warp"] = {[1] = {["x"] = 8283, ["y"] = 7635}, [2] = {["x"] = 8283, ["y"] = 7635}, [3] = {["x"] = 8283, ["y"] = 7635}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Donnerberge", ["warp"] = {[1] = {["x"] = 11345, ["y"] = 16548}, [2] = {["x"] = 11345, ["y"] = 16548}, [3] = {["x"] = 11345, ["y"] = 16548}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Gautamakliff", ["warp"] = {[1] = {["x"] = 12263, ["y"] = 16811}, [2] = {["x"] = 12263, ["y"] = 16811}, [3] = {["x"] = 12263, ["y"] = 16811}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Tempel der Ochao (Eingang)", ["warp"] = {[1] = {["x"] = 13450, ["y"] = 17011}, [2] = {["x"] = 13450, ["y"] = 17011}, [3] = {["x"] = 13450, ["y"] = 17011}}, ["price"] = 10000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Kap des Drachenfeuers", ["warp"] = {[1] = {["x"] = 10849, ["y"] = 17843}, [2] = {["x"] = 10849, ["y"] = 17843}, [3] = {["x"] = 10849, ["y"] = 17843}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Nephritbucht", ["warp"] = {[1] = {["x"] = 10496, ["y"] = 15104}, [2] = {["x"] = 10496, ["y"] = 15104}, [3] = {["x"] = 10496, ["y"] = 15104}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Hafen", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500} } }, [2] = { ["section"] = "Dungeons", ["data"] = { {["name"] = "Affendungeon (Hasun Don) leicht", ["warp"] = {[1] = {["x"] = 4061, ["y"] = 8757}, [2] = {["x"] = 4061, ["y"] = 8757}, [3] = {["x"] = 4061, ["y"] = 8757}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Affendungeon (Jungsun Dong) normal", ["warp"] = {[1] = {["x"] = 3062, ["y"] = 6203}, [2] = {["x"] = 3062, ["y"] = 6203}, [3] = {["x"] = 3062, ["y"] = 6203}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Affendungeon (Sangsun Dong) schwer", ["warp"] = {[1] = {["x"] = 2880, ["y"] = 5407}, [2] = {["x"] = 2880, ["y"] = 5407}, [3] = {["x"] = 2880, ["y"] = 5407}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Spinnendungeon (Eingang)", ["warp"] = {[1] = {["x"] = 3447, ["y"] = 6304}, [2] = {["x"] = 3447, ["y"] = 6304}, [3] = {["x"] = 3447, ["y"] = 6304}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Daemonenturm (Eingang)", ["warp"] = {[1] = {["x"] = 5906, ["y"] = 1110}, [2] = {["x"] = 5906, ["y"] = 1110}, [3] = {["x"] = 5906, ["y"] = 1110}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [2] = { ["section"] = "Gesperrt", ["data"] = { {["name"] = "Spinnendungeon 2", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Spinnendungeon 3", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Rotdrachen-Festung", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 20000, ["min_level"] = 100, ["max_level"] = 500}, {["name"] = "Bruthoehle der Spinnenbaroness", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 10000, ["min_level"] = 50, ["max_level"] = 500}, {["name"] = "Erebos (Bossraum)", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 19000, ["min_level"] = 95, ["max_level"] = 500}, {["name"] = "Zodiak-Tempel", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 4000, ["min_level"] = 20, ["max_level"] = 500}, {["name"] = "Nemeres Warte", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 20000, ["min_level"] = 100, ["max_level"] = 500}, {["name"] = "Verwunschener Wald", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 19000, ["min_level"] = 95, ["max_level"] = 500}, {["name"] = "The Devil's Catacomb", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 15000, ["min_level"] = 75, ["max_level"] = 500}, {["name"] = "Drachenraum", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 15000, ["min_level"] = 75, ["max_level"] = 500}, {["name"] = "Meleys Hort", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Schiffsverteidigung", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Palast des Drachenkoenig", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Anderwelt", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Erloesung", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Nordwindhort", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Nordwind-Abstieg", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Nordwindtiefen", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Mysterioeser Dungeon", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Sung Mahis Hoellenturm", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Schlangentempel", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Gnollhoehlen", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Anderwelt", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Erloesung", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500} } }, [2] = { ["section"] = "Yohara", ["data"] = { {["name"] = "Verlassene Feste", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 24000, ["min_level"] = 120, ["max_level"] = 500}, {["name"] = "Seoganoedland", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Yilad-Pass", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Nordwindschlucht", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Donganebene", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Namgankluft", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Schlangentempel Ebene1", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Seelenklamm", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } } }; return config; end -- function --[[ Returns: An array containing all the existent Warp.GetConfigs' ["section"]. ]] Warp.GetSection = function() local section = {}; local config = Warp.GetConfig(); for _, data in ipairs(config) do table.insert(section, data["section"]); end -- for return section; end -- function --[[ Returns: name, coordinates, price and minimum level of the selected map. Explanation: The selected map is given by the number inserted in the 'section' argument which gets the section_key from the Warp.GetConfig array. (see the Warp.GetConfigs' structure) ]] Warp.GetBuildSection = function(section) local names, warp, price, min_level, max_level = {}, {}, {}, {}, {}; local data = Warp.GetConfig()[section]["data"]; for _, subdata in ipairs(data) do table.insert(names, subdata["name"]); table.insert(warp, subdata["warp"][pc.get_empire()]); table.insert(price, subdata["price"]); table.insert(min_level, subdata["min_level"]); table.insert(max_level, subdata["max_level"]); end -- for return names, warp, price, min_level, max_level; end -- function + quest warp begin state start begin when 70007.use or 20377.click begin if (not pc.can_warp()) then return syschat("Du musst 10 Sekunden warten, da du kuerzlich ein Schaufenster geschlossen haben[ENTER]"); end -- if local section = Warp.GetSection(); table.insert(section, "Schliessen"); say_title("Teleporter:[ENTER]") say("Wo wuerdest du gerne hingehen?[ENTER]") local select_section = select_table(section); if (select_section == table.getn(section)) then return; end -- if local names, warp, price, min_level, max_level = Warp.GetBuildSection(select_section); table.insert(names, "Schliessen"); local selection = select_table(names); if (selection == table.getn(names)) then return; end -- if say_title("Teleporter:[ENTER]") say(string.format("Required Level: Min %d, Max: %d.", min_level[selection], max_level[selection])) say(string.format("Required Gold: %d.[ENTER]", price[selection])) if (pc.get_level() < min_level[selection]) then say_reward("Dein Level ist zu niedrig") say_reward("Du darfst diese Karte nicht betreten[ENTER]") return; elseif (pc.get_level() > max_level[selection]) then say_reward("Dein level ist zu hoch") say_reward("Du darfst diese Karte nicht betreten[ENTER]") return; elseif (pc.get_gold() < price[selection]) then say_reward("Dein Gold reicht nicht aus") say_reward("Du darfst diese Karte nicht betreten[ENTER]") return; end -- if/elseif say("Bist du sicher, dass du dorthin willst?[ENTER]") if (select("Ja, sicher", "Nein, danke") == 1) then pc.change_gold(-price[selection]); pc.warp(warp[selection]["x"]*100, warp[selection]["y"]*100); end -- if end -- when end -- state end -- quest First, no categories, second have a bug... thx
  2. How can i add categories to this quest?
  3. How i can update the pack Folder? I don't see anything that I've changed
  4. All Done, db/game/source compile, no errors But i don't see it the little gear ingame. i think its problem from ymir work folder? I open ETC.epk + eix for this thx
  5. I Have this Error: 0107 20:43:53613 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 24465 0107 20:43:53613 :: CPythonCharacterManager::CreateInstance VID[23145] Race[24465] 0107 20:43:01814 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 24514 0107 20:43:01814 :: CPythonCharacterManager::CreateInstance VID[23147] Race[24514]
  6. Severity Code Description Project File Line Suppression State Error C2039 'GetWarpMapName': is not a member of 'CPythonNetworkStream' UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 223 Error C2653 'CPythonBackground': is not a class or namespace name UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 206 Error C2039 'IsMapOutdoor': is not a member of 'CPythonNetworkStream' UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 206 Error C2653 'CPythonBackground': is not a class or namespace name UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 223 Error C2672 'std::_Hash<std::_Umap_traits<_Kty,_Ty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>>::find': no matching overloaded function found UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 223 Error C3536 'it': cannot be used before it is initialized UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 224 Error C2678 binary '==': no operator found which takes a left-hand operand of type 'std::_List_const_iterator<std::_List_val<std::_List_simple_types<_Ty>>>' (or there is no acceptable conversion) UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 224 Error C2653 'CPythonBackground': is not a class or namespace name UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 230 Error C2039 'GetMapOutdoorRef': is not a member of 'CPythonNetworkStream' UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 230 Error C2672 'std::get': no matching overloaded function found UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 230 Error C2653 'CPythonBackground': is not a class or namespace name UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 232 Error C2039 'GetMapOutdoorRef': is not a member of 'CPythonNetworkStream' UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 232 Error C2672 'std::get': no matching overloaded function found UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 232 This is from Visual Studio and this is the File: #if defined(__BL_WEATHER_INFO__) #include <unordered_map> #include "PythonBackground.h" #endif #include "StdAfx.h" #include "PythonNetworkStream.h" #include "PythonNonPlayer.h" #include "AbstractApplication.h" #include "AbstractPlayer.h" #include "AbstractCharacterManager.h" #include "AbstractChat.h" #include "InstanceBase.h" #define ishan(ch) (((ch) & 0xE0) > 0x90) #define ishanasc(ch) (isascii(ch) || ishan(ch)) #define ishanalp(ch) (isalpha(ch) || ishan(ch)) #define isnhdigit(ch) (!ishan(ch) && isdigit(ch)) #define isnhspace(ch) (!ishan(ch) && isspace(ch)) #define LOWER(c) (((c) >= 'A' && (c) <= 'Z') ? ((c) + ('a' - 'A')) : (c)) #define UPPER(c) (((c) >= 'a' && (c) <= 'z') ? ((c) + ('A' - 'a')) : (c)) void SkipSpaces(char **string) { for (; **string != '\0' && isnhspace((unsigned char) **string); ++(*string)); } char *OneArgument(char *argument, char *first_arg) { char mark = FALSE; if (!argument) { *first_arg = '\0'; return NULL; } SkipSpaces(&argument); while (*argument) { if (*argument == '\"') { mark = !mark; ++argument; continue; } if (!mark && isnhspace((unsigned char) *argument)) break; *(first_arg++) = LOWER(*argument); ++argument; } *first_arg = '\0'; SkipSpaces(&argument); return (argument); } void AppendMonsterList(const CPythonNonPlayer::TMobTableList & c_rMobTableList, const char * c_szHeader, int iType) { DWORD dwMonsterCount = 0; std::string strMonsterList = c_szHeader; CPythonNonPlayer::TMobTableList::const_iterator itor = c_rMobTableList.begin(); for (; itor!=c_rMobTableList.end(); ++itor) { const CPythonNonPlayer::TMobTable * c_pMobTable = *itor; if (iType == c_pMobTable->bRank) { if (dwMonsterCount != 0) strMonsterList += ", "; strMonsterList += c_pMobTable->szLocaleName; if (++dwMonsterCount > 5) break; } } if (dwMonsterCount > 0) { IAbstractChat& rkChat=IAbstractChat::GetSingleton(); rkChat.AppendChat(CHAT_TYPE_INFO, strMonsterList.c_str()); } } bool CPythonNetworkStream::ClientCommand(const char * c_szCommand) { return false; } bool SplitToken(const char * c_szLine, CTokenVector * pstTokenVector, const char * c_szDelimeter = " ") { pstTokenVector->reserve(10); pstTokenVector->clear(); std::string stToken; std::string strLine = c_szLine; DWORD basePos = 0; do { int beginPos = strLine.find_first_not_of(c_szDelimeter, basePos); if (beginPos < 0) return false; int endPos; if (strLine[beginPos] == '"') { ++beginPos; endPos = strLine.find_first_of("\"", beginPos); if (endPos < 0) return false; basePos = endPos + 1; } else { endPos = strLine.find_first_of(c_szDelimeter, beginPos); basePos = endPos; } pstTokenVector->push_back(strLine.substr(beginPos, endPos - beginPos)); // 추가 코드. 맨뒤에 탭이 있는 경우를 체크한다. - [levites] if (int(strLine.find_first_not_of(c_szDelimeter, basePos)) < 0) break; } while (basePos < strLine.length()); return true; } void CPythonNetworkStream::ServerCommand(char * c_szCommand) { // #0000811: [M2EU] 콘솔창 기능 차단 if (strcmpi(c_szCommand, "ConsoleEnable") == 0) return; if (m_apoPhaseWnd[PHASE_WINDOW_GAME]) { bool isTrue; if (PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_ServerCommand_Run", Py_BuildValue("(s)", c_szCommand), &isTrue )) { if (isTrue) return; } } else if (m_poSerCommandParserWnd) { bool isTrue; if (PyCallClassMemberFunc(m_poSerCommandParserWnd, "BINARY_ServerCommand_Run", Py_BuildValue("(s)", c_szCommand), &isTrue )) { if (isTrue) return; } } CTokenVector TokenVector; if (!SplitToken(c_szCommand, &TokenVector)) return; if (TokenVector.empty()) return; const char * szCmd = TokenVector[0].c_str(); if (!strcmpi(szCmd, "quit")) { PostQuitMessage(0); } else if (!strcmpi(szCmd, "BettingMoney")) { if (2 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } //UINT uMoney= atoi(TokenVector[1].c_str()); } // GIFT NOTIFY else if (!strcmpi(szCmd, "gift")) { PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "Gift_Show", Py_BuildValue("()")); } // CUBE #if defined(__BL_WEATHER_INFO__) else if (!strcmpi(szCmd, "SnowTexture")) { if (2 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count", c_szCommand); return; } if (!CPythonBackground::Instance().IsMapOutdoor()) return; static const std::unordered_map<std::string, std::pair<std::string, std::string>> TextureList = { { "metin2_map_a1", { "textureset/metin2_a1.txt", "textureset/snow/snow_metin2_a1.txt" }}, { "map_a2", { "textureset/metin2_a2.txt", "textureset/snow/snow_metin2_a2.txt" }}, { "metin2_map_a3", { "textureset/metin2_a3.txt", "textureset/snow/snow_metin2_a3.txt" }}, { "metin2_map_b1", { "textureset/metin2_b1.txt", "textureset/snow/snow_metin2_b1.txt" }}, { "metin2_map_b3", { "textureset/metin2_b3.txt", "textureset/snow/snow_metin2_b3.txt" }}, { "metin2_map_c1", { "textureset/metin2_c1.txt", "textureset/snow/snow_metin2_c1.txt" }}, { "metin2_map_c3", { "textureset/metin2_c3.txt", "textureset/snow/snow_metin2_c3.txt" }}, { "metin2_map_milgyo", { "textureset/metin2_milgyo.txt", "textureset/snow/snow_metin2_milgyo.txt" }}, { "metin2_map_n_flame_01", { "textureset/metin2_n_flame_01.txt", "textureset/snow/snow_metin2_n_flame_01.txt" }}, { "metin2_map_n_desert_01", { "textureset/metin2_n_desert1.txt", "textureset/snow/snow_metin2_n_desert_01.txt" }}, { "season1/metin2_map_oxevent", { "textureset/metin2_map_oxevent.txt", "textureset/snow/snow_metin2_map_oxevent.txt" }}, }; auto it = TextureList.find(CPythonBackground::Instance().GetWarpMapName()); if (it == TextureList.end()) return; enum { NORMAL, SNOW }; if (!TokenVector.at(1).compare("enable")) CPythonBackground::Instance().GetMapOutdoorRef().ChangeTextureset(std::get<SNOW>(it->second)); else CPythonBackground::Instance().GetMapOutdoorRef().ChangeTextureset(std::get<NORMAL>(it->second)); } #endif else if (!strcmpi(szCmd, "cube")) { if (TokenVector.size() < 2) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } if ("open" == TokenVector[1]) { if (3 > TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } DWORD npcVNUM = (DWORD)atoi(TokenVector[2].c_str()); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cube_Open", Py_BuildValue("(i)", npcVNUM)); } else if ("close" == TokenVector[1]) { PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cube_Close", Py_BuildValue("()")); } else if ("info" == TokenVector[1]) { if (5 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } UINT gold = atoi(TokenVector[2].c_str()); UINT itemVnum = atoi(TokenVector[3].c_str()); UINT count = atoi(TokenVector[4].c_str()); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cube_UpdateInfo", Py_BuildValue("(iii)", gold, itemVnum, count)); } else if ("success" == TokenVector[1]) { if (4 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } UINT itemVnum = atoi(TokenVector[2].c_str()); UINT count = atoi(TokenVector[3].c_str()); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cube_Succeed", Py_BuildValue("(ii)", itemVnum, count)); } else if ("fail" == TokenVector[1]) { PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cube_Failed", Py_BuildValue("()")); } else if ("r_list" == TokenVector[1]) { // result list (/cube r_list npcVNUM resultCount resultText) // 20383 4 72723,1/72725,1/72730.1/50001,5 <- 이런식으로 "/" 문자로 구분된 리스트를 줌 if (5 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %d", c_szCommand, 5); return; } DWORD npcVNUM = (DWORD)atoi(TokenVector[2].c_str()); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cube_ResultList", Py_BuildValue("(is)", npcVNUM, TokenVector[4].c_str())); } else if ("m_info" == TokenVector[1]) { // material list (/cube m_info requestStartIndex resultCount MaterialText) // ex) requestStartIndex: 0, resultCount : 5 - 해당 NPC가 만들수 있는 아이템 중 0~4번째에 해당하는 아이템을 만드는 데 필요한 모든 재료들이 MaterialText에 들어있음 // 위 예시처럼 아이템이 다수인 경우 구분자 "@" 문자를 사용 // 0 5 125,1|126,2|127,2|123,5&555,5&555,4/120000 <- 이런식으로 서버에서 클라로 리스트를 줌 if (5 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %d", c_szCommand, 5); return; } UINT requestStartIndex = (UINT)atoi(TokenVector[2].c_str()); UINT resultCount = (UINT)atoi(TokenVector[3].c_str()); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_Cube_MaterialInfo", Py_BuildValue("(iis)", requestStartIndex, resultCount, TokenVector[4].c_str())); } } // CUEBE_END else if (!strcmpi(szCmd, "ObserverCount")) { if (2 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } UINT uObserverCount= atoi(TokenVector[1].c_str()); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_BettingGuildWar_UpdateObserverCount", Py_BuildValue("(i)", uObserverCount) ); } else if (!strcmpi(szCmd, "ObserverMode")) { if (2 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } UINT uMode= atoi(TokenVector[1].c_str()); IAbstractPlayer& rkPlayer=IAbstractPlayer::GetSingleton(); rkPlayer.SetObserverMode(uMode ? true : false); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "BINARY_BettingGuildWar_SetObserverMode", Py_BuildValue("(i)", uMode) ); } else if (!strcmpi(szCmd, "ObserverTeamInfo")) { } else if (!strcmpi(szCmd, "StoneDetect")) { if (4 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } // vid distance(1-3) angle(0-360) DWORD dwVID = atoi(TokenVector[1].c_str()); BYTE byDistance = atoi(TokenVector[2].c_str()); float fAngle = atof(TokenVector[3].c_str()); fAngle = fmod(540.0f - fAngle, 360.0f); Tracef("StoneDetect [VID:%d] [Distance:%d] [Angle:%d->%f]\n", dwVID, byDistance, atoi(TokenVector[3].c_str()), fAngle); IAbstractCharacterManager& rkChrMgr=IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance = rkChrMgr.GetInstancePtr(dwVID); if (!pInstance) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Not Exist Instance", c_szCommand); return; } TPixelPosition PixelPosition; D3DXVECTOR3 v3Rotation(0.0f, 0.0f, fAngle); pInstance->NEW_GetPixelPosition(&PixelPosition); PixelPosition.y *= -1.0f; switch (byDistance) { case 0: CEffectManager::Instance().RegisterEffect("d:/ymir work/effect/etc/firecracker/find_out.mse"); CEffectManager::Instance().CreateEffect("d:/ymir work/effect/etc/firecracker/find_out.mse", PixelPosition, v3Rotation); break; case 1: CEffectManager::Instance().RegisterEffect("d:/ymir work/effect/etc/compass/appear_small.mse"); CEffectManager::Instance().CreateEffect("d:/ymir work/effect/etc/compass/appear_small.mse", PixelPosition, v3Rotation); break; case 2: CEffectManager::Instance().RegisterEffect("d:/ymir work/effect/etc/compass/appear_middle.mse"); CEffectManager::Instance().CreateEffect("d:/ymir work/effect/etc/compass/appear_middle.mse", PixelPosition, v3Rotation); break; case 3: CEffectManager::Instance().RegisterEffect("d:/ymir work/effect/etc/compass/appear_large.mse"); CEffectManager::Instance().CreateEffect("d:/ymir work/effect/etc/compass/appear_large.mse", PixelPosition, v3Rotation); break; default: TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Distance", c_szCommand); break; } #ifdef _DEBUG IAbstractChat& rkChat=IAbstractChat::GetSingleton(); rkChat.AppendChat(CHAT_TYPE_INFO, c_szCommand); #endif } else if (!strcmpi(szCmd, "StartStaminaConsume")) { if (3 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %s", c_szCommand); return; } DWORD dwConsumePerSec = atoi(TokenVector[1].c_str()); DWORD dwCurrentStamina = atoi(TokenVector[2].c_str()); IAbstractPlayer& rPlayer=IAbstractPlayer::GetSingleton(); rPlayer.StartStaminaConsume(dwConsumePerSec, dwCurrentStamina); } else if (!strcmpi(szCmd, "StopStaminaConsume")) { if (2 != TokenVector.size()) { TraceError("CPythonNetworkStream::ServerCommand(c_szCommand=%s) - Strange Parameter Count : %d", c_szCommand, TokenVector.size()); return; } DWORD dwCurrentStamina = atoi(TokenVector[1].c_str()); IAbstractPlayer& rPlayer=IAbstractPlayer::GetSingleton(); rPlayer.StopStaminaConsume(dwCurrentStamina); } else if (!strcmpi(szCmd, "sms")) { IAbstractPlayer& rPlayer=IAbstractPlayer::GetSingleton(); rPlayer.SetMobileFlag(TRUE); } else if (!strcmpi(szCmd, "nosms")) { IAbstractPlayer& rPlayer=IAbstractPlayer::GetSingleton(); rPlayer.SetMobileFlag(FALSE); } else if (!strcmpi(szCmd, "mobile_auth")) { PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "OnMobileAuthority", Py_BuildValue("()")); } else if (!strcmpi(szCmd, "messenger_auth")) { const std::string & c_rstrName = TokenVector[1].c_str(); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "OnMessengerAddFriendQuestion", Py_BuildValue("(s)", c_rstrName.c_str())); } else if (!strcmpi(szCmd, "combo")) { int iFlag = atoi(TokenVector[1].c_str()); IAbstractPlayer& rPlayer=IAbstractPlayer::GetSingleton(); rPlayer.SetComboSkillFlag(iFlag); m_bComboSkillFlag = iFlag ? true : false; } else if (!strcmpi(szCmd, "setblockmode")) { int iFlag = atoi(TokenVector[1].c_str()); PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "OnBlockMode", Py_BuildValue("(i)", iFlag)); } // Emotion Start else if (!strcmpi(szCmd, "french_kiss")) { int iVID1 = atoi(TokenVector[1].c_str()); int iVID2 = atoi(TokenVector[2].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance1 = rkChrMgr.GetInstancePtr(iVID1); CInstanceBase * pInstance2 = rkChrMgr.GetInstancePtr(iVID2); if (pInstance1 && pInstance2) pInstance1->ActDualEmotion(*pInstance2, CRaceMotionData::NAME_FRENCH_KISS_START, CRaceMotionData::NAME_FRENCH_KISS_START); } else if (!strcmpi(szCmd, "kiss")) { int iVID1 = atoi(TokenVector[1].c_str()); int iVID2 = atoi(TokenVector[2].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance1 = rkChrMgr.GetInstancePtr(iVID1); CInstanceBase * pInstance2 = rkChrMgr.GetInstancePtr(iVID2); if (pInstance1 && pInstance2) pInstance1->ActDualEmotion(*pInstance2, CRaceMotionData::NAME_KISS_START, CRaceMotionData::NAME_KISS_START); } else if (!strcmpi(szCmd, "slap")) { int iVID1 = atoi(TokenVector[1].c_str()); int iVID2 = atoi(TokenVector[2].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance1 = rkChrMgr.GetInstancePtr(iVID1); CInstanceBase * pInstance2 = rkChrMgr.GetInstancePtr(iVID2); if (pInstance1 && pInstance2) pInstance1->ActDualEmotion(*pInstance2, CRaceMotionData::NAME_SLAP_HURT_START, CRaceMotionData::NAME_SLAP_HIT_START); } else if (!strcmpi(szCmd, "clap")) { int iVID = atoi(TokenVector[1].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance = rkChrMgr.GetInstancePtr(iVID); if (pInstance) pInstance->ActEmotion(CRaceMotionData::NAME_CLAP); } else if (!strcmpi(szCmd, "cheer1")) { int iVID = atoi(TokenVector[1].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance = rkChrMgr.GetInstancePtr(iVID); if (pInstance) pInstance->ActEmotion(CRaceMotionData::NAME_CHEERS_1); } else if (!strcmpi(szCmd, "cheer2")) { int iVID = atoi(TokenVector[1].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance = rkChrMgr.GetInstancePtr(iVID); if (pInstance) pInstance->ActEmotion(CRaceMotionData::NAME_CHEERS_2); } else if (!strcmpi(szCmd, "dance1")) { int iVID = atoi(TokenVector[1].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance = rkChrMgr.GetInstancePtr(iVID); if (pInstance) pInstance->ActEmotion(CRaceMotionData::NAME_DANCE_1); } else if (!strcmpi(szCmd, "dance2")) { int iVID = atoi(TokenVector[1].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance = rkChrMgr.GetInstancePtr(iVID); if (pInstance) pInstance->ActEmotion(CRaceMotionData::NAME_DANCE_2); } else if (!strcmpi(szCmd, "dig_motion")) { int iVID = atoi(TokenVector[1].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance = rkChrMgr.GetInstancePtr(iVID); if (pInstance) pInstance->ActEmotion(CRaceMotionData::NAME_DIG); } // Emotion End else { static std::map<std::string, int> s_emotionDict; static bool s_isFirst = true; if (s_isFirst) { s_isFirst = false; s_emotionDict["dance3"] = CRaceMotionData::NAME_DANCE_3; s_emotionDict["dance4"] = CRaceMotionData::NAME_DANCE_4; s_emotionDict["dance5"] = CRaceMotionData::NAME_DANCE_5; s_emotionDict["dance6"] = CRaceMotionData::NAME_DANCE_6; s_emotionDict["congratulation"] = CRaceMotionData::NAME_CONGRATULATION; s_emotionDict["forgive"] = CRaceMotionData::NAME_FORGIVE; s_emotionDict["angry"] = CRaceMotionData::NAME_ANGRY; s_emotionDict["attractive"] = CRaceMotionData::NAME_ATTRACTIVE; s_emotionDict["sad"] = CRaceMotionData::NAME_SAD; s_emotionDict["shy"] = CRaceMotionData::NAME_SHY; s_emotionDict["cheerup"] = CRaceMotionData::NAME_CHEERUP; s_emotionDict["banter"] = CRaceMotionData::NAME_BANTER; s_emotionDict["joy"] = CRaceMotionData::NAME_JOY; } std::map<std::string, int>::iterator f = s_emotionDict.find(szCmd); if (f == s_emotionDict.end()) { TraceError("Unknown Server Command %s | %s", c_szCommand, szCmd); } else { int emotionIndex = f->second; int iVID = atoi(TokenVector[1].c_str()); IAbstractCharacterManager & rkChrMgr = IAbstractCharacterManager::GetSingleton(); CInstanceBase * pInstance = rkChrMgr.GetInstancePtr(iVID); if (pInstance) pInstance->ActEmotion(emotionIndex); } } } What is wrong? xD thx
  7. i have npc.eix npc.epk npc2.eix npc2.epk Now i make npc3.eix npc3.epk for new NPC's I Have now RaceManager.cpp: void __GetRaceResourcePathes(unsigned race, std::vector <std::string>& vec_stPathes) { if (__IsGuildRace(race)) { vec_stPathes.push_back ("d:/ymir work/guild/"); vec_stPathes.push_back ("d:/ymir work/npc/"); vec_stPathes.push_back ("d:/ymir work/npc2/"); vec_stPathes.push_back ("d:/ymir work/monster/"); vec_stPathes.push_back ("d:/ymir work/monster2/"); vec_stPathes.push_back ("d:/ymir work/npc3/"); } else if (__IsNPCRace(race)) { if (race >= 30000) { vec_stPathes.push_back ("d:/ymir work/npc2/"); vec_stPathes.push_back ("d:/ymir work/npc/"); vec_stPathes.push_back ("d:/ymir work/monster/"); vec_stPathes.push_back ("d:/ymir work/monster2/"); vec_stPathes.push_back ("d:/ymir work/guild/"); vec_stPathes.push_back ("d:/ymir work/npc3/"); } else { vec_stPathes.push_back ("d:/ymir work/npc/"); vec_stPathes.push_back ("d:/ymir work/npc2/"); vec_stPathes.push_back ("d:/ymir work/monster/"); vec_stPathes.push_back ("d:/ymir work/monster2/"); vec_stPathes.push_back ("d:/ymir work/guild/"); vec_stPathes.push_back ("d:/ymir work/npc3/"); } } // 만우절 이벤트용 예외 몬스터 else if (8507 == race || 8510 == race) { vec_stPathes.push_back ("d:/ymir work/monster2/"); vec_stPathes.push_back ("d:/ymir work/monster/"); vec_stPathes.push_back ("d:/ymir work/npc/"); vec_stPathes.push_back ("d:/ymir work/npc2/"); vec_stPathes.push_back ("d:/ymir work/guild/"); vec_stPathes.push_back ("d:/ymir work/npc3/"); } else if (race > 8000) { vec_stPathes.push_back ("d:/ymir work/monster/"); vec_stPathes.push_back ("d:/ymir work/monster2/"); vec_stPathes.push_back ("d:/ymir work/npc/"); vec_stPathes.push_back ("d:/ymir work/npc2/"); vec_stPathes.push_back ("d:/ymir work/guild/"); vec_stPathes.push_back ("d:/ymir work/npc3/"); } else if (race > 2000) { vec_stPathes.push_back ("d:/ymir work/monster2/"); vec_stPathes.push_back ("d:/ymir work/monster/"); vec_stPathes.push_back ("d:/ymir work/npc/"); vec_stPathes.push_back ("d:/ymir work/npc2/"); vec_stPathes.push_back ("d:/ymir work/guild/"); vec_stPathes.push_back ("d:/ymir work/npc3/"); } else if (race>=1400 && race<=1700) { vec_stPathes.push_back ("d:/ymir work/monster2/"); vec_stPathes.push_back ("d:/ymir work/monster/"); vec_stPathes.push_back ("d:/ymir work/npc/"); vec_stPathes.push_back ("d:/ymir work/npc2/"); vec_stPathes.push_back ("d:/ymir work/guild/"); vec_stPathes.push_back ("d:/ymir work/npc3/"); } else { vec_stPathes.push_back ("d:/ymir work/monster/"); vec_stPathes.push_back ("d:/ymir work/monster2/"); vec_stPathes.push_back ("d:/ymir work/npc/"); vec_stPathes.push_back ("d:/ymir work/npc2/"); vec_stPathes.push_back ("d:/ymir work/guild/"); vec_stPathes.push_back ("d:/ymir work/npc3/"); Is this ok?
  8. Hey, i created npc3.eix .epk with my new NPC's This is 1: ScriptType RaceDataScript BaseModelFileName "d:\ymir work\npc3\ace_elf5\ace_elf5.gr2" Group ShapeData { PathName "" ShapeDataCount 0 } Group AttachingData { AttachingDataCount 2 Group AttachingData00 { AttachingDataType 1 isAttaching 1 AttachingModelIndex 0 AttachingBoneName "Bip01" CollisionType 1 SphereDataCount 1 Group SphereData00 { Radius 23.000000 Position 0.000000 0.000000 9.000000 } } Group AttachingData01 { AttachingDataType 1 isAttaching 1 AttachingModelIndex 0 AttachingBoneName "Bip01" CollisionType 3 SphereDataCount 1 Group SphereData00 { Radius 50.000000 Position 0.000000 0.000000 0.000000 } } } I get only syser 0107 16:05:01169 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 24465 0107 16:05:01169 :: CPythonCharacterManager::CreateInstance VID[23142] Race[24465] 0107 16:05:08197 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 24514 0107 16:05:08197 :: CPythonCharacterManager::CreateInstance VID[23143] Race[24514] I think problem with path... What exactly do I have to swap from .msm .msa or index? ty
  9. Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand Fehler C2672 "std::_Hash<std::_Umap_traits<_Kty,_Ty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>>::find": keine übereinstimmende überladene Funktion gefunden UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 223 Fehler C2653 "CPythonBackground": Keine Klasse oder Namespace UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 206 Fehler C2039 "IsMapOutdoor" ist kein Member von "CPythonNetworkStream". UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 206 Fehler C2653 "CPythonBackground": Keine Klasse oder Namespace UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 223 Fehler C2039 "GetWarpMapName" ist kein Member von "CPythonNetworkStream". UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 223 Fehler C3536 "it": Kann nicht verwendet werden, bevor es initialisiert wurde. UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 224 Fehler C2678 Binärer Operator "==": Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ "std::_List_const_iterator<std::_List_val<std::_List_simple_types<_Ty>>>" akzeptiert (oder keine geeignete Konvertierung möglich) UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 224 Fehler C2653 "CPythonBackground": Keine Klasse oder Namespace UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 230 Fehler C2039 "GetMapOutdoorRef" ist kein Member von "CPythonNetworkStream". UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 230 Fehler C2672 "std::get": keine übereinstimmende überladene Funktion gefunden UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 230 Fehler C2653 "CPythonBackground": Keine Klasse oder Namespace UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 232 Fehler C2039 "GetMapOutdoorRef" ist kein Member von "CPythonNetworkStream". UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 232 Fehler C2672 "std::get": keine übereinstimmende überladene Funktion gefunden UserInterface C:\Metin 2\Client\ClientVS22\source\UserInterface\PythonNetworkStreamCommand.cpp 232
  10. cmd_general.cpp:1373:18: error: member access into incomplete type 'CMountSystem' if(mountSystem->CountSummoned() == 0) ^ ./char.h:2:7: note: forward declaration of 'CMountSystem' class CMountSystem; ^ cmd_general.cpp:1375:16: error: member access into incomplete type 'CMountSystem' mountSystem->Unmount(mobVnum); ^ ./char.h:2:7: note: forward declaration of 'CMountSystem' class CMountSystem; ^ cmd_general.cpp:2542:18: error: member access into incomplete type 'CMountSystem' if(mountSystem->CountSummoned() == 0) ^ ./char.h:2:7: note: forward declaration of 'CMountSystem' class CMountSystem; ^ cmd_general.cpp:2544:16: error: member access into incomplete type 'CMountSystem' mountSystem->Unmount(mobVnum); ^ ./char.h:2:7: note: forward declaration of 'CMountSystem' class CMountSystem; ^ cmd_general.cpp:2549:18: error: member access into incomplete type 'CMountSystem' if(mountSystem->CountSummoned() == 1) ^ ./char.h:2:7: note: forward declaration of 'CMountSystem' class CMountSystem; ^ cmd_general.cpp:2551:16: error: member access into incomplete type 'CMountSystem' mountSystem->Mount(mobVnum, mount); ^ ./char.h:2:7: note: forward declaration of 'CMountSystem' class CMountSystem; ^ 6 errors generated.
  11. level smallint 11 0 0 0 -1 0 0 1 0 0 0 I have only the Problem with lvl 499+500 [Hidden Content] And i will more then than 4294967295 EXP I change to type bigint lenght 8 but got error
  12. I finished this, i have all config lvl 500 In constants all to 500 I do this: char.h Search: DWORD GetNextExp() const; Replace: long long GetNextExp(); Done here..! char.cpp Search: DWORD CHARACTER::GetNextExp() const DWORD CHARACTER::GetNextExp() const { if (PLAYER_EXP_TABLE_MAX < GetLevel()) return 2500000000U; else return exp_table[GetLevel()]; } Replace: long long CHARACTER::GetNextExp() { if (PLAYER_EXP_TABLE_MAX < GetLevel()) return 420000000000LLU; else return exp_table[GetLevel()]; But after relog is my lvl 255 and EXP is -9 From lvl 499 to 500 i need -EXP And i will maximum value higher than 4294967295
  13. [Hidden Content] This is to small, how can i enlarge this? thx
  14. How? And next i have the Problem, after Relog he go back to lvl 255 and EXP -9
  15. Hi, this is ok, no problems: --[[ Inizializes: The 'Warp' class. ]] Warp = {}; --[[ Returns: The full warp config. Structure: [section_key] = { ["section"] = "The section name", ["data"] = { {["name"] = "The name of the first map", ["warp"] = {[1] = {x_shinsoo, y_shinsoo}, [2] = {x_chunjo, y_chunjo}, [3] = {x_jinno, y_jinno}}, ["price"] = the warp cost, ["min_level"] = the minimum level to enter the map, ["max_level"] = the maximum level to enter the map}, {["name"] = "The name of the second map", ["warp"] = {[1] = {x_shinsoo, y_shinsoo}, [2] = {x_chunjo, y_chunjo}, [3] = {x_jinno, y_jinno}}, ["price"] = the warp cost, ["min_level"] = the minimum level to enter the map, ["max_level"] = the maximum level to enter the map}, .. } }, ]] Warp.GetConfig = function() local config = { [1] = { ["section"] = "Map 1", ["data"] = { {["name"] = "Chunjo: Joan", ["warp"] = {[1] = {["x"] = 604, ["y"] = 1700}, [2] = {["x"] = 604, ["y"] = 1700}, [3] = {["x"] = 604, ["y"] = 1700}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Jinno: Pyungmoo", ["warp"] = {[1] = {["x"] = 9529, ["y"] = 2687}, [2] = {["x"] = 9529, ["y"] = 2687}, [3] = {["x"] = 9529, ["y"] = 2687}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Shinsoo: Yongan", ["warp"] = {[1] = {["x"] = 4771, ["y"] = 9537}, [2] = {["x"] = 4771, ["y"] = 9537}, [3] = {["x"] = 4771, ["y"] = 9537}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [2] = { ["section"] = "Map 2", ["data"] = { {["name"] = "Chunjo: Bokjung", ["warp"] = {[1] = {["x"] = 1424, ["y"] = 2399}, [2] = {["x"] = 1424, ["y"] = 2399}, [3] = {["x"] = 1424, ["y"] = 2399}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Jinno: Bakra", ["warp"] = {[1] = {["x"] = 8669, ["y"] = 2447}, [2] = {["x"] = 8669, ["y"] = 2447}, [3] = {["x"] = 8669, ["y"] = 2447}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Shinsoo: Jayang", ["warp"] = {[1] = {["x"] = 3506, ["y"] = 8806}, [2] = {["x"] = 3506, ["y"] = 8806}, [3] = {["x"] = 3506, ["y"] = 8806}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [3] = { ["section"] = "Neutrale Karten", ["data"] = { {["name"] = "Tal von Seungryong (Orktal)", ["warp"] = {[1] = {["x"] = 4021, ["y"] = 6739}, [2] = {["x"] = 2704, ["y"] = 7399}, [3] = {["x"] = 3213, ["y"] = 8080}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Hwang-Tempel", ["warp"] = {[1] = {["x"] = 5537, ["y"] = 1450}, [2] = {["x"] = 5537, ["y"] = 1450}, [3] = {["x"] = 5537, ["y"] = 1450}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Grotte der Verbannung (Eingang)", ["warp"] = {[1] = {["x"] = 2843, ["y"] = 8103}, [2] = {["x"] = 2843, ["y"] = 8103}, [3] = {["x"] = 2843, ["y"] = 8103}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Yongbi-Wueste (Große Wueste)", ["warp"] = {[1] = {["x"] = 2178, ["y"] = 6272}, [2] = {["x"] = 2219, ["y"] = 5027}, [3] = {["x"] = 3440, ["y"] = 5025}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Yongbi-Wueste (Oase)", ["warp"] = {[1] = {["x"] = 2977, ["y"] = 5470}, [2] = {["x"] = 2977, ["y"] = 5470}, [3] = {["x"] = 2977, ["y"] = 5470}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Berg Sohan (Eisland)", ["warp"] = {[1] = {["x"] = 4342, ["y"] = 2906}, [2] = {["x"] = 3752, ["y"] = 1749}, [3] = {["x"] = 4918, ["y"] = 1736}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Doyyumhwan (Feuerland)", ["warp"] = {[1] = {["x"] = 5994, ["y"] = 7563}, [2] = {["x"] = 5978, ["y"] = 6222}, [3] = {["x"] = 7307, ["y"] = 6898}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Lungsam (Geisterwald)", ["warp"] = {[1] = {["x"] = 2887, ["y"] = 57}, [2] = {["x"] = 2887, ["y"] = 57}, [3] = {["x"] = 2887, ["y"] = 57}}, ["price"] = 12000, ["min_level"] = 60, ["max_level"] = 500}, {["name"] = "Lungsam (Roter Wald)", ["warp"] = {[1] = {["x"] = 11196, ["y"] = 700}, [2] = {["x"] = 11196, ["y"] = 700}, [3] = {["x"] = 11196, ["y"] = 700}}, ["price"] = 12000, ["min_level"] = 60, ["max_level"] = 500}, {["name"] = "Schlangenfeld", ["warp"] = {[1] = {["x"] = 10590, ["y"] = 7267}, [2] = {["x"] = 10590, ["y"] = 7267}, [3] = {["x"] = 10590, ["y"] = 7267}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Land der Riesen", ["warp"] = {[1] = {["x"] = 8283, ["y"] = 7635}, [2] = {["x"] = 8283, ["y"] = 7635}, [3] = {["x"] = 8283, ["y"] = 7635}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Donnerberge", ["warp"] = {[1] = {["x"] = 11345, ["y"] = 16548}, [2] = {["x"] = 11345, ["y"] = 16548}, [3] = {["x"] = 11345, ["y"] = 16548}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Gautamakliff", ["warp"] = {[1] = {["x"] = 12263, ["y"] = 16811}, [2] = {["x"] = 12263, ["y"] = 16811}, [3] = {["x"] = 12263, ["y"] = 16811}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Tempel der Ochao (Eingang)", ["warp"] = {[1] = {["x"] = 13450, ["y"] = 17011}, [2] = {["x"] = 13450, ["y"] = 17011}, [3] = {["x"] = 13450, ["y"] = 17011}}, ["price"] = 10000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Kap des Drachenfeuers", ["warp"] = {[1] = {["x"] = 10849, ["y"] = 17843}, [2] = {["x"] = 10849, ["y"] = 17843}, [3] = {["x"] = 10849, ["y"] = 17843}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Nephritbucht", ["warp"] = {[1] = {["x"] = 10496, ["y"] = 15104}, [2] = {["x"] = 10496, ["y"] = 15104}, [3] = {["x"] = 10496, ["y"] = 15104}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Hafen", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500} } }, [4] = { ["section"] = "Dungeons", ["data"] = { {["name"] = "Affendungeon (Hasun Don) leicht", ["warp"] = {[1] = {["x"] = 4061, ["y"] = 8757}, [2] = {["x"] = 4061, ["y"] = 8757}, [3] = {["x"] = 4061, ["y"] = 8757}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Affendungeon (Jungsun Dong) normal", ["warp"] = {[1] = {["x"] = 3062, ["y"] = 6203}, [2] = {["x"] = 3062, ["y"] = 6203}, [3] = {["x"] = 3062, ["y"] = 6203}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Affendungeon (Sangsun Dong) schwer", ["warp"] = {[1] = {["x"] = 2880, ["y"] = 5407}, [2] = {["x"] = 2880, ["y"] = 5407}, [3] = {["x"] = 2880, ["y"] = 5407}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} {["name"] = "Spinnendungeon (Eingang)", ["warp"] = {[1] = {["x"] = 3447, ["y"] = 6304}, [2] = {["x"] = 3447, ["y"] = 6304}, [3] = {["x"] = 3447, ["y"] = 6304}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Daemonenturm (Eingang)", ["warp"] = {[1] = {["x"] = 5906, ["y"] = 1110}, [2] = {["x"] = 5906, ["y"] = 1110}, [3] = {["x"] = 5906, ["y"] = 1110}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, }; return config; end -- function --[[ Returns: An array containing all the existent Warp.GetConfigs' ["section"]. ]] Warp.GetSection = function() local section = {}; local config = Warp.GetConfig(); for _, data in ipairs(config) do table.insert(section, data["section"]); end -- for return section; end -- function --[[ Returns: name, coordinates, price and minimum level of the selected map. Explanation: The selected map is given by the number inserted in the 'section' argument which gets the section_key from the Warp.GetConfig array. (see the Warp.GetConfigs' structure) ]] Warp.GetBuildSection = function(section) local names, warp, price, min_level, max_level = {}, {}, {}, {}, {}; local data = Warp.GetConfig()[section]["data"]; for _, subdata in ipairs(data) do table.insert(names, subdata["name"]); table.insert(warp, subdata["warp"][pc.get_empire()]); table.insert(price, subdata["price"]); table.insert(min_level, subdata["min_level"]); table.insert(max_level, subdata["max_level"]); end -- for return names, warp, price, min_level, max_level; end -- function And by this, i get Login Error: --[[ Inizializes: The 'Warp' class. ]] Warp = {}; --[[ Returns: The full warp config. Structure: [section_key] = { ["section"] = "The section name", ["data"] = { {["name"] = "The name of the first map", ["warp"] = {[1] = {x_shinsoo, y_shinsoo}, [2] = {x_chunjo, y_chunjo}, [3] = {x_jinno, y_jinno}}, ["price"] = the warp cost, ["min_level"] = the minimum level to enter the map, ["max_level"] = the maximum level to enter the map}, {["name"] = "The name of the second map", ["warp"] = {[1] = {x_shinsoo, y_shinsoo}, [2] = {x_chunjo, y_chunjo}, [3] = {x_jinno, y_jinno}}, ["price"] = the warp cost, ["min_level"] = the minimum level to enter the map, ["max_level"] = the maximum level to enter the map}, .. } }, ]] Warp.GetConfig = function() local config = { [1] = { ["section"] = "Map 1", ["data"] = { {["name"] = "Chunjo: Joan", ["warp"] = {[1] = {["x"] = 604, ["y"] = 1700}, [2] = {["x"] = 604, ["y"] = 1700}, [3] = {["x"] = 604, ["y"] = 1700}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Jinno: Pyungmoo", ["warp"] = {[1] = {["x"] = 9529, ["y"] = 2687}, [2] = {["x"] = 9529, ["y"] = 2687}, [3] = {["x"] = 9529, ["y"] = 2687}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Shinsoo: Yongan", ["warp"] = {[1] = {["x"] = 4771, ["y"] = 9537}, [2] = {["x"] = 4771, ["y"] = 9537}, [3] = {["x"] = 4771, ["y"] = 9537}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [2] = { ["section"] = "Map 2", ["data"] = { {["name"] = "Chunjo: Bokjung", ["warp"] = {[1] = {["x"] = 1424, ["y"] = 2399}, [2] = {["x"] = 1424, ["y"] = 2399}, [3] = {["x"] = 1424, ["y"] = 2399}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Jinno: Bakra", ["warp"] = {[1] = {["x"] = 8669, ["y"] = 2447}, [2] = {["x"] = 8669, ["y"] = 2447}, [3] = {["x"] = 8669, ["y"] = 2447}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Shinsoo: Jayang", ["warp"] = {[1] = {["x"] = 3506, ["y"] = 8806}, [2] = {["x"] = 3506, ["y"] = 8806}, [3] = {["x"] = 3506, ["y"] = 8806}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [3] = { ["section"] = "Neutrale Karten", ["data"] = { {["name"] = "Tal von Seungryong (Orktal)", ["warp"] = {[1] = {["x"] = 4021, ["y"] = 6739}, [2] = {["x"] = 2704, ["y"] = 7399}, [3] = {["x"] = 3213, ["y"] = 8080}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Hwang-Tempel", ["warp"] = {[1] = {["x"] = 5537, ["y"] = 1450}, [2] = {["x"] = 5537, ["y"] = 1450}, [3] = {["x"] = 5537, ["y"] = 1450}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Grotte der Verbannung (Eingang)", ["warp"] = {[1] = {["x"] = 2843, ["y"] = 8103}, [2] = {["x"] = 2843, ["y"] = 8103}, [3] = {["x"] = 2843, ["y"] = 8103}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Yongbi-Wueste (Große Wueste)", ["warp"] = {[1] = {["x"] = 2178, ["y"] = 6272}, [2] = {["x"] = 2219, ["y"] = 5027}, [3] = {["x"] = 3440, ["y"] = 5025}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Yongbi-Wueste (Oase)", ["warp"] = {[1] = {["x"] = 2977, ["y"] = 5470}, [2] = {["x"] = 2977, ["y"] = 5470}, [3] = {["x"] = 2977, ["y"] = 5470}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Berg Sohan (Eisland)", ["warp"] = {[1] = {["x"] = 4342, ["y"] = 2906}, [2] = {["x"] = 3752, ["y"] = 1749}, [3] = {["x"] = 4918, ["y"] = 1736}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Doyyumhwan (Feuerland)", ["warp"] = {[1] = {["x"] = 5994, ["y"] = 7563}, [2] = {["x"] = 5978, ["y"] = 6222}, [3] = {["x"] = 7307, ["y"] = 6898}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Lungsam (Geisterwald)", ["warp"] = {[1] = {["x"] = 2887, ["y"] = 57}, [2] = {["x"] = 2887, ["y"] = 57}, [3] = {["x"] = 2887, ["y"] = 57}}, ["price"] = 12000, ["min_level"] = 60, ["max_level"] = 500}, {["name"] = "Lungsam (Roter Wald)", ["warp"] = {[1] = {["x"] = 11196, ["y"] = 700}, [2] = {["x"] = 11196, ["y"] = 700}, [3] = {["x"] = 11196, ["y"] = 700}}, ["price"] = 12000, ["min_level"] = 60, ["max_level"] = 500}, {["name"] = "Schlangenfeld", ["warp"] = {[1] = {["x"] = 10590, ["y"] = 7267}, [2] = {["x"] = 10590, ["y"] = 7267}, [3] = {["x"] = 10590, ["y"] = 7267}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Land der Riesen", ["warp"] = {[1] = {["x"] = 8283, ["y"] = 7635}, [2] = {["x"] = 8283, ["y"] = 7635}, [3] = {["x"] = 8283, ["y"] = 7635}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Donnerberge", ["warp"] = {[1] = {["x"] = 11345, ["y"] = 16548}, [2] = {["x"] = 11345, ["y"] = 16548}, [3] = {["x"] = 11345, ["y"] = 16548}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Gautamakliff", ["warp"] = {[1] = {["x"] = 12263, ["y"] = 16811}, [2] = {["x"] = 12263, ["y"] = 16811}, [3] = {["x"] = 12263, ["y"] = 16811}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Tempel der Ochao (Eingang)", ["warp"] = {[1] = {["x"] = 13450, ["y"] = 17011}, [2] = {["x"] = 13450, ["y"] = 17011}, [3] = {["x"] = 13450, ["y"] = 17011}}, ["price"] = 10000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Kap des Drachenfeuers", ["warp"] = {[1] = {["x"] = 10849, ["y"] = 17843}, [2] = {["x"] = 10849, ["y"] = 17843}, [3] = {["x"] = 10849, ["y"] = 17843}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Nephritbucht", ["warp"] = {[1] = {["x"] = 10496, ["y"] = 15104}, [2] = {["x"] = 10496, ["y"] = 15104}, [3] = {["x"] = 10496, ["y"] = 15104}}, ["price"] = 18000, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "Hafen", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500} } }, [4] = { ["section"] = "Dungeons", ["data"] = { {["name"] = "Affendungeon (Hasun Don) leicht", ["warp"] = {[1] = {["x"] = 4061, ["y"] = 8757}, [2] = {["x"] = 4061, ["y"] = 8757}, [3] = {["x"] = 4061, ["y"] = 8757}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Affendungeon (Jungsun Dong) normal", ["warp"] = {[1] = {["x"] = 3062, ["y"] = 6203}, [2] = {["x"] = 3062, ["y"] = 6203}, [3] = {["x"] = 3062, ["y"] = 6203}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Affendungeon (Sangsun Dong) schwer", ["warp"] = {[1] = {["x"] = 2880, ["y"] = 5407}, [2] = {["x"] = 2880, ["y"] = 5407}, [3] = {["x"] = 2880, ["y"] = 5407}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} {["name"] = "Spinnendungeon (Eingang)", ["warp"] = {[1] = {["x"] = 3447, ["y"] = 6304}, [2] = {["x"] = 3447, ["y"] = 6304}, [3] = {["x"] = 3447, ["y"] = 6304}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Daemonenturm (Eingang)", ["warp"] = {[1] = {["x"] = 5906, ["y"] = 1110}, [2] = {["x"] = 5906, ["y"] = 1110}, [3] = {["x"] = 5906, ["y"] = 1110}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [5] = { ["section"] = "Gesperrt", ["data"] = { {["name"] = "Rotdrachen-Festung", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Bruthoehle der Spinnenbaroness", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Erebos (Bossraum)", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Zodiak-Tempel", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 10, ["max_level"] = 500}, {["name"] = "Nemeres Warte", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 10, ["max_level"] = 500}, {["name"] = "Verwunschener Wald", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "The Devil's Catacomb", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Drachenraum", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Meleys Hort", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Schiffsverteidigung", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Palast des Drachenkoenig", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Anderwelt", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Erloesung", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 1, ["max_level"] = 500} } }, [6] = { ["section"] = "Gildenzonen", ["data"] = { {["name"] = "Chunjo: Waryong", ["warp"] = {[1] = {["x"] = 2219, ["y"] = 93}, [2] = {["x"] = 2219, ["y"] = 93}, [3] = {["x"] = 2219, ["y"] = 93}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Jinno: Imha", ["warp"] = {[1] = {["x"] = 2718, ["y"] = 130}, [2] = {["x"] = 2718, ["y"] = 130}, [3] = {["x"] = 2718, ["y"] = 130}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Shinsoo: Jungrang", ["warp"] = {[1] = {["x"] = 1356, ["y"] = 43}, [2] = {["x"] = 1356, ["y"] = 43}, [3] = {["x"] = 1356, ["y"] = 43}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Chunjo: Songpa", ["warp"] = {[1] = {["x"] = 6144, ["y"] = 3840}, [2] = {["x"] = 6144, ["y"] = 3840}, [3] = {["x"] = 6144, ["y"] = 3840}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Jinno: Daeyam", ["warp"] = {[1] = {["x"] = 2560, ["y"] = 8192}, [2] = {["x"] = 2560, ["y"] = 8192}, [3] = {["x"] = 2560, ["y"] = 8192}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500}, {["name"] = "Shinsoo: Miryang", ["warp"] = {[1] = {["x"] = 2048, ["y"] = 2048}, [2] = {["x"] = 2048, ["y"] = 2048}, [3] = {["x"] = 2048, ["y"] = 2048}}, ["price"] = 1000, ["min_level"] = 1, ["max_level"] = 500} } }, [7] = { ["section"] = "Yohara", ["data"] = { {["name"] = "-", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "-", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "-", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "-", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "-", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "-", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "-", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 90, ["max_level"] = 500}, {["name"] = "-", ["warp"] = {[1] = {["x"] = 0000, ["y"] = 0000}, [2] = {["x"] = 0000, ["y"] = 0000}, [3] = {["x"] = 0000, ["y"] = 0000}}, ["price"] = 999999999, ["min_level"] = 90, ["max_level"] = 500} } } }; return config; end -- function --[[ Returns: An array containing all the existent Warp.GetConfigs' ["section"]. ]] Warp.GetSection = function() local section = {}; local config = Warp.GetConfig(); for _, data in ipairs(config) do table.insert(section, data["section"]); end -- for return section; end -- function --[[ Returns: name, coordinates, price and minimum level of the selected map. Explanation: The selected map is given by the number inserted in the 'section' argument which gets the section_key from the Warp.GetConfig array. (see the Warp.GetConfigs' structure) ]] Warp.GetBuildSection = function(section) local names, warp, price, min_level, max_level = {}, {}, {}, {}, {}; local data = Warp.GetConfig()[section]["data"]; for _, subdata in ipairs(data) do table.insert(names, subdata["name"]); table.insert(warp, subdata["warp"][pc.get_empire()]); table.insert(price, subdata["price"]); table.insert(min_level, subdata["min_level"]); table.insert(max_level, subdata["max_level"]); end -- for return names, warp, price, min_level, max_level; end -- function First i have Section 1-4 Second 1-7 I don't know, but i think 1-7 is to long for the NPC-Window. Maybe when i have 1-4 on first side and 5-7 on second side
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.