|
You last visited: Today at 13:02
Advertisement
[Release] Warpring-Quest (mit endlos vielen Kategorien, Itemabgabe, Levelbegrenzung)
Discussion on [Release] Warpring-Quest (mit endlos vielen Kategorien, Itemabgabe, Levelbegrenzung) within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.
05/02/2015, 01:48
|
#1
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
[Release] Warpring-Quest (mit endlos vielen Kategorien, Itemabgabe, Levelbegrenzung)
Ja, wieder ich. Und wieder mit einer Warpring-Quest ...
Ja, ich weiss, dass Mijago bereits eine umfangreichere Quest geschrieben hat, werden die meisten Optionen die seine Quest bietet nicht genutzt, weshalb ich hier noch eine ähnliche Releasen möchte.
Die Quest:
Maps hinzufügen:
Map direkt im Warpring (ohne eine Kategorie anzuklicken):
Code:
{--Gelbes Reich
name = "Gelbes Reich",
koord = {965784, 275242}
},
diese Map hat keinerlei Eingrenzungen was das Level oder ein benötigtes Item angeht.
Map direkt im Warpring mit Level und Itembegrenzung:
Code:
{--Gelbes Reich
name = "Gelbes Reich",
koord = {965784, 275242},
minlevel = 40,
maxlevel = 105,
itemneed = {
{189, 1}
},
goldneed = 10000
},
diese Map hat eine Levelbegrenzung (Minimallevel 40, Maximallevel 105) und es wird ein Item benötigt, um die Map zu betreten (Vnum 189, 1x). Ausserdem werden 10000 Yang benötigt.
Alle Optionen (ausser koord) sind Optional, man kann also z.b. nur minlevel, nur maxlevel oder nur goldneed angeben.
Erstellen von Kategorien:
Code:
{
name = "Reiche",
{--Gelbes Reich
name = "Gelbes Reich",
koord = {965784, 275242},
minlevel = 40,
maxlevel = 105,
itemneed = {
{189, 1}
},
goldneed = 10000
},
}
Jetzt ist die Map in der Kategorie "Reiche".
Das kann man beliebig weit verschachteln:
Code:
{
name = "Reiche",
{
name = "Ja, wirklich Reiche",
{--Gelbes Reich
name = "Gelbes Reich",
koord = {965784, 275242},
minlevel = 40,
maxlevel = 105,
itemneed = {
{189, 1}
},
goldneed = 10000
},
}
}
Code:
quest warpring begin
state start begin
when 30006.use begin
local warp = {--koord Pflicht, rest optional!
{--Map1
name = "Map 1",
{--Rotes Reich
name = "Rotes Reich",
koord = {965784, 275242},
minlevel = 50,
maxlevel = 80,
itemneed = {
{189, 1}
},
goldneed = 10000
},
{--Gelbes Reich
name = "Gelbes Reich",
koord = {965784, 275242},
minlevel = 10,
maxlevel = 105,
itemneed = {
{189, 1}
},
goldneed = 10000
},
{--Blaues Reich
name = "Blaues Reich",
koord = {965784, 275242},
minlevel = 1,
maxlevel = 105,
itemneed = {
{189, 1}
},
goldneed = 10000
},
},
{--Map2
name = "Map 2",
{--Rotes Reich
name = "Rotes Reich",
koord = {965784, 275242},
minlevel = 1,
maxlevel = 30,
itemneed = {
{189, 1}
},
goldneed = 10000
},
{--Gelbes Reich
name = "Gelbes Reich",
koord = {965784, 275242},
minlevel = 1,
maxlevel = 105,
itemneed = {
{189, 1}
},
goldneed = 10000
},
{--Blaues Reich
name = "Blaues Reich",
koord = {965784, 275242},
minlevel = 1,
maxlevel = 105,
itemneed = {
{189, 1}
},
goldneed = 10000
},
},
}
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
Special Thanks:
|
|
|
05/02/2015, 01:49
|
#2
|
elite*gold: 47
Join Date: Feb 2012
Posts: 2,282
Received Thanks: 2,579
|
45 Minuten geopfert und die Funktion ist nicht mal drin, sag mal wofür arbeite ich eigentlich?
Ne, sehe ich nicht ein...
|
|
|
05/02/2015, 12:36
|
#3
|
elite*gold: 2
Join Date: Jul 2014
Posts: 241
Received Thanks: 81
|
Quote:
Originally Posted by definitely not Yiv
45 Minuten geopfert und die Funktion ist nicht mal drin, sag mal wofür arbeite ich eigentlich?
Ne, sehe ich nicht ein...
|
welche funktion
|
|
|
05/02/2015, 12:40
|
#4
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by codezz
welche funktion
|
Kommt nachher
|
|
|
05/02/2015, 13:09
|
#5
|
elite*gold: 12
Join Date: Jun 2012
Posts: 978
Received Thanks: 860
|
Sehr gut gemacht, Felix & Sorry nochmals, falls ich dich mit dem Return verwirrt habe ;>
|
|
|
05/02/2015, 13:25
|
#6
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by .Xilent
Sehr gut gemacht, Felix & Sorry nochmals, falls ich dich mit dem Return verwirrt habe ;>
|
Ahh passt schon
Hier einmal die Funktion, von der Yiv gesprochen hat:
Code:
function search_tbl(tbl, searchfor)
local maps = {} or maps
local function _search_tbl(tbl)
for k,v in pairs(tbl) do
if string.find(k, searchfor) then
maps[k] = v
elseif type(v) == "table" then
_search_tbl(v)
end
end
end
_search_tbl(tbl)
return maps
end
für die, die sich aus dem Code nichts reimen können: Das ist eine Suchfunktion die den kompletten Table nach einem Keyword durchsucht und wenn es was findet den kompletten Baum ab der Position zurückgibt.
Ich werde noch schauen wie ich das so schön wie möglich einbaue
|
|
|
05/02/2015, 14:06
|
#7
|
elite*gold: 26
Join Date: Sep 2014
Posts: 895
Received Thanks: 388
|
Nicht übel ist zwar nichts bahnbrechend neues, aber trotzdem gut zu gebrauchen.
Danke fürs teilen.
lg DreamT
|
|
|
05/02/2015, 15:29
|
#8
|
elite*gold: 105
Join Date: Feb 2014
Posts: 959
Received Thanks: 486
|
Hübsche Quest die der harte Felix wieder gezaubert hat. Dankeschön :*
|
|
|
05/02/2015, 16:56
|
#9
|
elite*gold: 5
Join Date: Mar 2015
Posts: 499
Received Thanks: 376
|
Schöne Quest aber warp in noch einer Variable zu packen ist unnötig.
|
|
|
05/02/2015, 17:38
|
#10
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quest mit Suchfunktion hinzugefügt ... geht noch schöner aber fürs erste so
|
|
|
05/02/2015, 17:40
|
#11
|
elite*gold: 0
Join Date: Oct 2014
Posts: 795
Received Thanks: 693
|
Schöne Quest
Was ist, wenn man keine Items benötigen soll für eine bestimmte Map, kann man die Item-Spalte einfach weglassen? o: bin neugierig
|
|
|
05/02/2015, 18:11
|
#12
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by .NennoX
Schöne Quest
Was ist, wenn man keine Items benötigen soll für eine bestimmte Map, kann man die Item-Spalte einfach weglassen? o: bin neugierig
|
Einfach weglassen^^
|
|
|
05/02/2015, 21:24
|
#13
|
elite*gold: 0
Join Date: Feb 2015
Posts: 306
Received Thanks: 171
|
bekomme immer diesen fehler
PHP Code:
WHEN : 70007.use FUNCTION menu() Calls undeclared function! : pairs warpring.check_item Error occured on compile warpring.quest Quest wurden neu kompiliert!
|
|
|
05/02/2015, 21:52
|
#14
|
elite*gold: 0
Join Date: Jun 2014
Posts: 269
Received Thanks: 96
|
Quest gefällt mir Aber die such Funktion, finde ich nicht so sinnvoll.
|
|
|
05/03/2015, 01:06
|
#15
|
elite*gold: 0
Join Date: Feb 2010
Posts: 487
Received Thanks: 76
|
Quote:
Originally Posted by Kampfzwerg!
bekomme immer diesen fehler
PHP Code:
WHEN : 70007.use FUNCTION menu() Calls undeclared function! : pairs warpring.check_item Error occured on compile warpring.quest Quest wurden neu kompiliert!
|
Hatte genau das gleiche, habe dann die 3 undeclared functions in die quest-fuctions eingetragen und die funktion
PHP Code:
function search_tbl(tbl, searchfor) local maps = {} or maps local function _search_tbl(tbl) for k,v in pairs(tbl) do if string.find(k, searchfor) then maps[k] = v elseif type(v) == "table" then _search_tbl(v) end end end _search_tbl(tbl) return maps end
in die questing.lua...
So läuft es bei mir und sollte somit auch bei dir :P
|
|
|
|
|
Similar Threads
|
[Release] kleine Warpring-Quest | leicht zu verwalten
03/22/2015 - Metin2 PServer Guides & Strategies - 17 Replies
Ich mal wieder, heute mal was sehr kleines - eine Warpring-Quest.
Ich weiss, dass es schon lange die Warpkarte gibt, allerdings finde ich die nicht so toll ... ist halt Geschmackssache. Ausserdem waren alle Warpring-Quests die ich so gefunden habe nicht so toll geschrieben um nicht #?@??<# zu sagen. Also, hier mal eine Warpring-Quest von mir - leicht zu verwalten und übersichtlich.
video: https://www.youtube.com/watch?v=xmSATCT-jjc
quest warpring begin
state start begin
when...
|
[Release] Warpring Quest
01/12/2015 - Metin2 PServer Guides & Strategies - 6 Replies
eine kleine vorlage
quest warpring begin
state start begin
when 70007.use begin
local data {
{"Map1 Rot", x, y},
{"Map2 Rot", x, y},
{"Map1 Gelb", x, y},
{"Map2 Gelb", x, y},
|
PvP-Quest mit Levelbegrenzung
08/31/2011 - Metin2 Private Server - 1 Replies
Hier diese Quest:
http://www.elitepvpers.com/forum/metin2-pserver-g uides-strategies/832727-release-funktionierende-pv p-quest.html
Kann man diese Quest auch mit Levelbegrenzung schreiben? . So , dass man nur Spieler 5 level unter und über dir dazu zählen?
€dit: Und kann man es so machen , dass die Kills nur in einer bestimmten Map zählen?
|
[Quest Release]Warpring *redesigned*
08/21/2010 - Metin2 PServer Guides & Strategies - 3 Replies
this quest is the normal warpring, but redesigned so that's easier to add maps and change maps.
if you like it, thank it =)
Features:
-enables players to warp to maps with an item.
Things that can be better:
|
All times are GMT +2. The time now is 13:02.
|
|