Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server > Metin2 PServer Guides & Strategies
You last visited: Today at 13:02

  • Please register to post and access all features, it's quick, easy and FREE!

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.

Reply
 
Old   #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:
  • .Xilent
  • Yiv
rollback is offline  
Thanks
26 Users
Old 05/02/2015, 01:49   #2
 
Yiv's Avatar
 
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...
Yiv is offline  
Thanks
2 Users
Old 05/02/2015, 12:36   #3
 
codezz's Avatar
 
elite*gold: 2
Join Date: Jul 2014
Posts: 241
Received Thanks: 81
Quote:
Originally Posted by definitely not Yiv View Post
45 Minuten geopfert und die Funktion ist nicht mal drin, sag mal wofür arbeite ich eigentlich?
Ne, sehe ich nicht ein...
welche funktion
codezz is offline  
Old 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 View Post
welche funktion
Kommt nachher
rollback is offline  
Thanks
1 User
Old 05/02/2015, 13:09   #5
 
.Xilent's Avatar
 
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 ;>
.Xilent is offline  
Thanks
1 User
Old 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 View Post
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
rollback is offline  
Thanks
2 Users
Old 05/02/2015, 14:06   #7

 
DreamT™'s Avatar
 
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
DreamT™ is offline  
Thanks
1 User
Old 05/02/2015, 15:29   #8
 
*Boris's Avatar
 
elite*gold: 105
Join Date: Feb 2014
Posts: 959
Received Thanks: 486
Hübsche Quest die der harte Felix wieder gezaubert hat. Dankeschön :*
*Boris is offline  
Thanks
1 User
Old 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.
KΛIƬӨ is offline  
Thanks
1 User
Old 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
rollback is offline  
Old 05/02/2015, 17:40   #11
 
.NennoX's Avatar
 
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
.NennoX is offline  
Old 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 View Post
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^^
rollback is offline  
Old 05/02/2015, 21:24   #13
 
Kampfzwerg!'s Avatar
 
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

Kampfzwerg! is offline  
Old 05/02/2015, 21:52   #14
 
OoKaMi_'s Avatar
 
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.
OoKaMi_ is offline  
Old 05/03/2015, 01:06   #15
 
HighWave's Avatar
 
elite*gold: 0
Join Date: Feb 2010
Posts: 487
Received Thanks: 76
Quote:
Originally Posted by Kampfzwerg! View Post
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(tblsearchfor)
    
local maps = {} or maps
    local 
function _search_tbl(tbl)
        for 
k,v in pairs(tbl) do
            if 
string.find(ksearchforthen
                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
HighWave is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.