Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 17:33

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

Advertisement



Warp Quest item abfrage

Discussion on Warp Quest item abfrage within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Sep 2010
Posts: 1,219
Received Thanks: 278
Warp Quest item abfrage

Hey,

such eine Warp quest :

map XY
ab level XY
ITEM :XY
´Sh4Xx` is offline  
Old 04/07/2013, 11:49   #2
 
elite*gold: 39
Join Date: Jun 2009
Posts: 500
Received Thanks: 212
Hier:
Code:
quest warp_quest_for_Sh4Xx begin
	state start begin
		function teleport_select(...)
			arg.n = nil
			local tp,max = arg,5
			if type(tp[1]) == 'number' then
				max = tp[1]
				if type(tp[2]) == 'table' then
					tp = tp[2]
				else
					table.remove(tp,1)
				end
			elseif type(tp[1]) == 'table' then
				if type(tp[1][1]) == 'number' then
					max = tp[1][1]
					table.remove(tp[1],1)
					tp = tp[1]
				end
				tp = tp[1]
			end
			local str = '{'
			local tablen,act,incit = table.getn(tp),0,0
			table.foreach(tp,function(i,l)
				act = act + 1
				if act == 1 then
					str = str .. '{'..string.format('%q',l)
				elseif act == max+1 and tablen > act+incit then
					if tablen ~= act+incit+1 then
						str = str..'},{'..string.format('%q',l)
					else
						str=str..','..string.format('%q',l)
					end
					incit = incit + max
					act = 1
				else
					str=str..','..string.format('%q',l)
				end
			end)
			local px = loadstring('return '..str ..'}}')()
			local function copy_tab(t) local p= {} for i = 1,table.getn(t) do p[i] = t[i] end return p end
			local pe = {}
			for i = 1,table.getn(px) do pe [i] = copy_tab(px[i]) end
			local function init(i,ip)
				pe[i] = copy_tab(px[i])
				local next,back,exit = 0,0,0
				if table.getn(pe[i]) >= 5 then
					if (i > 1 and i < table.getn(pe)) or table.getn(pe[i]) == 6 then
						say_size(350, 350)
					elseif table.getn(pe[i]) >= 7 then
						say_size(350, 380)
					else
						say_size(350, 320)
					end
				end
				say_title(mob_name(npc.get_race())..":")
				say("Wohin willst du dich teleportieren?")
				say("")
				if i < table.getn(pe) and table.getn(pe) ~=1 then  table.insert(pe[i],table.getn(pe[i])+1,'Weiter'); next = table.getn(pe[i]) end
				if i > 1 then table.insert(pe[i],table.getn(pe[i])+1,'Zurück'); back = table.getn(pe[i]) end
				table.insert(pe[i],table.getn(pe[i])+1,'Abbruch'); exit = table.getn(pe[i])
				local e = select_table(pe[i])
				if e == next then return init(i+1,ip+max)
				elseif e == back then return init(i-1,ip-max)
				elseif e == exit then return -1
				else return e+ip,pe[i][e] end
			end
			return init(1,0) or -1
		end
		when 9012.chat."Teleportieren" begin
			local warps = {
				{"Mapname", 0, 0, 1, 50053, 1}, -- Mapname, X, Y, LevelNeed, ItemNeed, ItemCount ~ kann erweitert werden bis unendlich
			}
			local enabled_warps = {}
			local enabled_warp_names = {}
			for i = 1, table.getn(warps) do
				local warp = warps[i]
				if pc.get_level() >= tonumber(warp[4]) and pc.count_item(warp[5]) >= tonumber(warp[6]) then
					enabled_warps.insert(warp)
					enabled_warp_names.insert(warp[1])
				end
			end
			if table.getn(enabled_warps) < 1 then
				say_title(mob_name(npc.get_race())..":")
				say("Ich kann dich leider im Moment nicht")
				say("teleportieren. Komm später wieder.")
				say("")
				return
			end
			local warp = warp_quest_for_Sh4Xx.teleport_select(enabled_warp_names)
			if warp == -1 then
				return
			end
			say_title(mob_name(npc.get_race())..":")
			say("Möchtest du dich wirklich zu dem Ort")
			say(enabled_warps[warp][1].." teleportieren?")
			say("Du musst mir dafür "..enabled_warps[warp][6].."x "..item_name(enabled_warps[warp][5]))
			say("geben.")
			say("")
			if select("Teleportieren", "Abbrechen") == 2 then
				return
			end
			if pc.count_item(enabled_warps[warp][5]) < tonumber(enabled_warps[warp][6]) then
				say_title(mob_name(npc.get_race())..":")
				say("Du hast nicht genügend Gegenstände.")
				say("Komm wieder, wenn du genug hast.")
				say("")
				return
			end
			pc.remove_item(enabled_warps[warp][5], enabled_warps[warp][6])
			pc.warp(enabled_warps[warp][2], enabled_warps[warp][3])
		end
	end
end
Die "teleport_select"-Funktion ist eine abgeänderte Version der "select2"-Funktion von Mijago.
Deine Maps kannst du bei "local warps = {" einstellen (Erklärung steht dort als Kommentar).

Mfg
.HC'Destrox is offline  
Thanks
1 User
Old 04/07/2013, 11:54   #3
 
elite*gold: 0
Join Date: Sep 2010
Posts: 1,219
Received Thanks: 278
mh...

Die ist ein bissi. Durscheinander...(Aufbau)

Trz. danke
´Sh4Xx` is offline  
Old 04/07/2013, 11:59   #4
 
elite*gold: 39
Join Date: Jun 2009
Posts: 500
Received Thanks: 212
Eigtl. nicht durcheinander, wenn du sie dir mal im Npp anschaust
Das Problem ist, ich brauchte die teleport_select-Funktion, daher oben bisschen.. naja.
Aber sonst ziemlich normal O:

Mfg
.HC'Destrox is offline  
Thanks
1 User
Old 04/07/2013, 12:01   #5
 
elite*gold: 0
Join Date: Sep 2010
Posts: 1,219
Received Thanks: 278
kann mich halt nicht mit quest´s anfreunden^^
´Sh4Xx` is offline  
Old 04/07/2013, 12:01   #6
 
elite*gold: 39
Join Date: Jun 2009
Posts: 500
Received Thanks: 212
O_O großer Fehler, warte eine Sekunde und sie wird viel übersichtlicher sein!
Dann kannste dich vllt bissl mehr damit anfreunden, mom !

Mfg
.HC'Destrox is offline  
Thanks
1 User
Old 04/07/2013, 12:03   #7
 
elite*gold: 0
Join Date: Sep 2010
Posts: 1,219
Received Thanks: 278
Okay

Danke
´Sh4Xx` is offline  
Old 04/07/2013, 12:08   #8
 
elite*gold: 39
Join Date: Jun 2009
Posts: 500
Received Thanks: 212
map_warp.quest:

map_warp.lua:

Füg nun in der locale_list (oder halt quest_list) die map_warp.quest ein und schreib oben in deine questlib.lua rein:
€dit: Noch in der quest_functions eintragen "teleport_select".

So, das ist nun ordentlich!

Mfg,
Destroyer446
.HC'Destrox is offline  
Thanks
2 Users
Reply


Similar Threads Similar Threads
Quest mit MySQL-Abfrage
01/14/2013 - Metin2 Private Server - 2 Replies
Wie man aus der Überschrift schon entnehmen kann, hab ich eine Frage zu Quests und zwar: Wenn ich mit os.execute arbeite, lässt sich damit etwas aus der Datenbank abfragen, weil updaten kann man ja die db, aber eben das abfragen. Ich würde mich über konstruktive Antworten freuen.
Quest q.set_clock abfrage
11/25/2012 - Metin2 Private Server - 5 Replies
Hallo wollte mal fragen wenn ich in einer Quest es so schreibe bzw setze: q.set_clock(get_time() + 60*30) wollte ich gerne wissen wie ich abfragen kann ob die Zeit abgelaufen ist oda ob der Spieler noch Zeit hat.
[RLS]Spieler Online Abfrage-Quest
10/27/2012 - Metin2 PServer Guides & Strategies - 28 Replies
Kurz und knapp will nichts großartiges ausspucken, ist ne simple quest und fertig. Mit der Quest könnt ihr vereinzelnt spieler abrufen ob diese Online sind, allerdings funktioniert das nur in ein und demselben Channel mit dieser Quest ^^ gäbe auch noch eine andere möglichkeit wo es in allen Channeln funktioniert ^^ aber keine lust euch was in den popo zu schieben :) schlaue wissen ja vllt wie ^^ *hust* flags *hust* quest find_online_player begin state start begin
Zeit abfrage in Quest
09/25/2012 - Metin2 Private Server - 8 Replies
hallo ich habe ein problem mit meiner DC quest undzwar wenn ich denn run 1 mal absolviert habe und er die Zeit bis ich das nächstemal den Run machen kann mit dem Befehl: local nextTime=get_time()+time_min_to_sec(30) d.setqf("__NEXT_TIME__", nextTime) auf 30 Minuten setzt und ich danach den Typen da bequatsche sagt er mir immer das normal aber die abfrage wie lange ich warte muss ist nicht da: die sieht so aus: say("Du musst noch "..next_time_minutes().." warten ...") unten ist noch ein...
Quest abfrage
05/02/2012 - Flyff Private Server - 2 Replies
'Heyho EPvpers, Ich denke diese Frage könnte für mehrere interessant sein. Ich brauche für einen neuen Npc den ich erstellt habe einen Questverlauf, dass heißt, er soll erst 'Quest1' dann 'Quest2' und so weiter machen. Nun meine Frage, kann man in der Quest.txt das so einprogrammieren, dass er abfragt, wurde der Quest1 beendet? Ja, dann kann er Quest2 anbieten, Nein, dann wird der Quest2 gar nicht erst angezeigt, quasi wie den Quests, die mit Levelunterschreitung auch nicht angezeigt...



All times are GMT +1. The time now is 17:35.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.