|
You last visited: Today at 17:30
Advertisement
Quest fehler, brauche hilfe
Discussion on Quest fehler, brauche hilfe within the Metin2 Private Server forum part of the Metin2 category.
02/08/2015, 11:02
|
#1
|
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
|
Quest fehler, brauche hilfe
hay,
ich hab meine Eigene Quest geschrieben, eine Art Bossrun. Aber ich hab da 2 Fehler. 1. Ich weiß nicht wie ich einstelle das man alle 3 Metinsteine töten muss, bevor es weiter geht. Wenn alle down sind, passiert einfach nichts. Und auserdem klappt bei mir dieser d.new_jump_all befehl nicht, ich werde nur mit d.join geportet. Hat da jemand ne lösung?
quest bossrun begin
state start begin
when 20090.chat."Bossrun" begin
say_title("Bossrun")
say("Dieser Run ist richtig schwer")
say("Traust du dich?")
local s = select("Betreten", "Abbrechen")
if s== 1 then
pc.warp(855000, 1200)
end
end
when 20001.chat."Was willst du?" begin
say_title("Bossrun")
say("Denkst du echt du könntest")
say("unsere besten Bosse erlegen?")
say("")
say("erbärmlich, viel spaß beim Sterben!")
npc.kill(20001)
mob.spawn(8032, 150, 150, 1)
end
when 8032.kill with pc.get_map_index() == 112 begin
d.join(112, 855000, 1200)
d.regen_file("data/dungeon/Bossrun/br1.txt")
end
when 3591.kill begin
notice("Ihr habt den ersten Boss geschafft!")
notice("Aber der zweite wird viel schwerer!")
timer("br2", 6)
end
when br2.timer begin
d.regen_file("data/dungeon/Bossrun/br2.txt")
end
when 2684.kill begin
notice("Woow, du hast einen sehr starken")
notice("Verteidiger von uns umgelegt!! Respekt !!")
timer("br3", 6)
end
when br3.timer begin
d.regen_file("data/dungeon/Bossrun/br3.txt")
end
when 3691.kill begin
notice("Du scheinst stärker zu sein, als ich Gedacht")
notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
timer("metinebene", 6)
end
when metinebene.timer begin
d.regen_file("data/dungeon/Bossrun/metinebene.txt")
q.set_counter("Verbleibend", 4)
end
when 8033.kill begin
local count = pc.getqf("state") + 1
end
when 8034.kill begin
local count = pc.getqf("state") + 1
end
when 8035.kill begin
local count = pc.getqf("state") + 1
if count <= 4 then
pc.setqf("state", count)
q.set_counter("state", count)
end
if count == 0 then
timer("br4", 6)
end
end
when br4.timer begin
d.regen_file("data/dungeon/Bossrun/br4.txt")
end
when 3491.kill begin
notice("Du scheinst stärker zu sein, als ich Gedacht")
notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
end
end
end
|
|
|
02/08/2015, 12:24
|
#2
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Parameter:
d.new_jump_all(index, x, y) -> der Befehl wird gerne mal Missinterpretiert.
In Dungeons - Prinzipiell mit Dungeon-Flags arbeiten -> Streich das ganze "pc.setqf" raus, und mach daraus "d.setf" und "d.getf".
Dann - musst du die Flags nicht Zwangsläufig in 'ner Variable zwischenspeichern, globale Variabeln machen in .quest-files sowieso immer nur tucken.
Wenn du dir was abschauen willst kann ich dir hier als Beispiel meinen Bossrun geben:
Code:
quest the_abyss begin
state start begin
when login with pc.in_dungeon() and mapidproof(304) begin
if party.is_leader() or pc.is_gm() then
d.spawn_mob_dir(40001, 210, 26, 2)
d.set_unique("boss", d.spawn_mob(8054, 126, 148))
d.notice("Macht euch bereit zum Kampf!")
end
d.setf("a_boss", 0)
d.setf("healstone", 0)
d.setf("Defstone", 0)
d.setf("complete", 0)
bosslist = {6005, 6008, 6003, 6002, 2291}
end
when kill with pc.in_dungeon() and mapidproof(304) begin
if d.is_unique_dead("boss") then
if d.getf("a_boss") < 5 then
cleartimer("stone")
d.kill_all()
d.setf("a_boss", d.getf("a_boss") + 1)
d.setf("healstone", 4)
d.setf("Defstone", 2)
d.regen_file("data/dungeon/abyss/abyss_stone_regen.txt")
d.set_unique("boss", d.spawn_mob(bosslist[d.getf("a_boss")], 127, 147))
d.unique_set_maxhp("boss", 100000)
d.unique_set_hp("boss", 100000)
d.unique_set_def_grade("boss", d.getf("Defstone") * 200)
loop_timer("stone", 1)
else
d.kill_all()
d.notice("Instance Dungeon abgeschlossen!")
d.notice("Die Herausforderungen des Abgrunds wurden Überstanden!")
d.notice("Sprecht mit Rezeena um eure Belohnung zu erhalten.")
d.spawn_mob_dir(40001, 129, 152, 1)
d.setf("complete", 1)
end
end
end
when 8010.kill with pc.in_dungeon() and mapidproof(304) begin
d.setf("healstone", d.getf("healstone") - 1)
d.notice("Ein Heilstein wurde zerstört!")
end
when 11510.kill with pc.in_dungeon() and mapidproof(304) begin
d.unique_set_hp("boss", (d.unique_get_hp_perc("boss") * 1000) - 25000)
d.notice("Das Feuer der Lebenskraft ist erloschen!")
d.notice("Das Bossmonster erhält großen Schaden!")
end
when 8008.kill with pc.in_dungeon() and mapidproof(304) begin
d.setf("Defstone", d.getf("Defstone") - 1)
d.unique_set_def_grade("boss", d.getf("Defstone") * 200)
d.notice("Die Verteidigung des Bossmonsters wurde geschwächt!")
end
when stone.timer with pc.in_dungeon() and mapidproof(304) begin
d.unique_set_hp("boss", (d.unique_get_hp_perc("boss") * 1000) + (d.getf("healstone") * 1000))
end
--#desc
when 40001.chat. "Was erwartet mich?" with pc.in_dungeon() and mapidproof(304) and d.getf("complete") == 0 begin
say_title("Rezeena")
say()
say("Dies ist der Abgrund.")
say("Vor dir liegt eine Kampfarena.")
say("In dieser Arena wirst du auf starke")
say("Gegner treffen.")
say("Besiege alle Gegner in einem Stück, um")
say("den Kampf zu gewinnen.")
say("Während des Kampfes spawnen verschiedene")
say("Seelen, welche den Kampf beeinflussen.")
say("Entwerft eine Strategie, um die Instance")
say("erfolgreich zu beenden.")
end
--#endofdesc
--leave--
when 40001.chat. "Den Abgrund verlassen" with pc.in_dungeon() and mapidproof(304) and d.getf("complete") == 1 begin
say_title("Den Abgrund verlassen")
say("")
say("Deine Party hat alle Monster")
say("des Abgrunds vernichtet.")
say_reward("Zur Belohnung erhälst du:")
say_reward("Blablabla")
say_reward("Blablabla")
say_reward("Blablabla")
wait()
--belohnung Einfügen--
d.exit()
end
end
end
Code:
function mapidproof(index)
if index >= pc.get_map_index() * 10000 and pc.get_map_index() < ((index + 1) * 10000) then
return true
else
return false
end
end
Beim Dungeon-Erstellen unbedingt darauf achten:
- Niemals mehr als 1 State verwenden (NUR state start)
- Bedingungen EINDEUTIG setzen, damit - was im Dungeon passiert auch wirklich nur im Dungeon passiert.
|
|
|
02/08/2015, 12:40
|
#3
|
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
|
Hab jetzt alle pc.setqf in d.setf und pc.getqf in d.getf geänder, aber klappt immer noch nicht.
when metinebene.timer begin
d.regen_file("data/dungeon/Bossrun/metinebene.txt")
q.set_counter("Verbleibend", 4)
end
when 8033.kill begin
local count = d.getf("state") + 1
end
when 8033.kill begin
local count = d.getf("state") + 1
end
when 8033.kill begin
local count = d.getf("state") + 1
if count <= 4 then
d.setf("state", count)
q.set_counter("state", count)
end
if count == 4 then
timer("br4", 6)
end
end
when br4.timer begin
d.regen_file("data/dungeon/Bossrun/br4.txt")
end
when 3491.kill begin
notice("Du scheinst stärker zu sein, als ich Gedacht")
notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
end
end
end
|
|
|
02/08/2015, 12:44
|
#4
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Vergiss das Flag-in-Variable-Speichern, genau dafür sind die Questflags ja gut:
"local count = d.getf("state") + 1"
mach daraus:
"d.setf("state", d.getf("state") +1)"
Versuch's mal like this:
Code:
quest bossrun begin
state start begin
when 20090.chat."Bossrun" begin
say_title("Bossrun")
say("Dieser Run ist richtig schwer")
say("Traust du dich?")
local s = select("Betreten", "Abbrechen")
if s== 1 then
pc.warp(855000, 1200)
end
end
when 20001.chat."Was willst du?" begin
say_title("Bossrun")
say("Denkst du echt du könntest")
say("unsere besten Bosse erlegen?")
say("")
say("erbärmlich, viel spaß beim Sterben!")
npc.purge()
mob.spawn(8032, 150, 150, 1)
end
when 8032.kill with pc.get_map_index() == 112 begin
d.join(112)
--d.regen_file("data/dungeon/Bossrun/br1.txt")
end
when login with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
d.regen_file("data/dungeon/Bossrun/br1.txt")
end
when 3591.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
notice("Ihr habt den ersten Boss geschafft!")
notice("Aber der zweite wird viel schwerer!")
timer("br2", 6)
end
when br2.timer begin
d.regen_file("data/dungeon/Bossrun/br2.txt")
end
when 2684.kill pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
notice("Woow, du hast einen sehr starken")
notice("Verteidiger von uns umgelegt!! Respekt !!")
timer("br3", 6)
end
when br3.timer begin
d.regen_file("data/dungeon/Bossrun/br3.txt")
end
when 3691.kill pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
notice("Du scheinst stärker zu sein, als ich Gedacht")
notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
timer("metinebene", 6)
end
when metinebene.timer begin
d.regen_file("data/dungeon/Bossrun/metinebene.txt")
d.setf("remain", 3)
end
when 8033.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
d.setf("remain", d.getf("remain") - 1)
if d.getf("remain") == 0 then
timer("br4", 6)
end
end
when 8034.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
d.setf("remain", d.getf("remain") - 1)
if d.getf("remain") == 0 then
timer("br4", 6)
end
end
when 8035.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin
d.setf("remain", d.getf("remain") - 1)
if d.getf("remain") == 0 then
timer("br4", 6)
end
end
when br4.timer begin
d.regen_file("data/dungeon/Bossrun/br4.txt")
end
when 3491.kill begin
d.notice("Bis hierher klappt der spaß schonmal.")
d.notice("Du scheinst stärker zu sein, als ich Gedacht")
d.notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!")
end
end
end
|
|
|
02/08/2015, 12:54
|
#5
|
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
|
oke ich versuchs mal. hast du skype? Wenn ich mal ne frage habe, geht das schneller.
|
|
|
02/08/2015, 12:58
|
#6
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Beim Dungeon-Scripten-Lernen hat mir auch keiner wirklich explizit geholfen, ich hab' hier im Forum viele viele Fragen gestellt, und die wurden dann für gewöhnlich beantwortet =)
evtl. kannst du mit der Liste hier noch was Anfangen:
Quote:
Zitat von DaisukeBanned Beitrag anzeigen
Hi there, hab n paar Fragen zu Questbefehlen für Dungeons:
Gib es die Bedingung:
-> Wenn ein Spieler innerhalb eines States disconnected,
soll passieren: 1, 2, 3, 4...
when disconnect begin
Mit d.join(index) wird von der Map 'ne neue Instanz nur für den Spieler geöffnet.
Wie lautet der Befehl, wenn das ganze durch den Gruppenführer ausgelöst werden soll, und die komplette Gruppe zum Dungeon teleportiert werden soll?
d.new_jump_party(map_idx,x_kord,y_kord)
Und wie lautet der Befehl, wenn alle Spieler einer Map zum dungeon teleportiert werden sollen?
d.new_jump_all(map_idx,x_kord,y_kord)
Gibt es 'ne Funktion, die die Anzahl Spieler in der Gruppe eines Spielers zählt?
party.get_near_count() (Zählt allerdings nur die, die sich auf der gleichen Map befinden)
Gibt es Quest-Funktionen, mit denen man NPCs/Monster spawnt und wieder purgen kann,
ohne eine regen.txt zu laden?
mob.spawn(vnum,lokale_x_koordinate, lokale_y_koordinate, radius, aggressiv (0|1), anzahl)
oder
d.spawn_mob(vnum,lokale_x_koordinate, lokale_y_koordinate, radius, anzahl)
d.purge() oder npc.purge() bzw. d.purge_area oder purge_area()
|
|
|
|
02/08/2015, 13:24
|
#7
|
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
|
Also ich hab jetzt das bei mir eingefügt und da kommt when dosent have begin end clause (pc)
|
|
|
02/08/2015, 15:10
|
#8
|
elite*gold: 1
Join Date: Apr 2012
Posts: 333
Received Thanks: 74
|
Kommt glaube ich zur
Oder Irre ich mich?
|
|
|
02/08/2015, 17:56
|
#9
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Quote:
Originally Posted by timonick
Also ich hab jetzt das bei mir eingefügt und da kommt when dosent have begin end clause (pc)
|
Dann darfst du jetzt herausfinden, wo ich 'n "end" falsch gesetzt habe =)
|
|
|
02/08/2015, 21:00
|
#10
|
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
|
Alle End sind richtig gesetzt Glaube das der Pc befehl anders beendet werden muss. Ich hab kp, sitze an der Quest seit 10 Stunden :/
|
|
|
02/08/2015, 21:06
|
#11
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
PHP Code:
quest bossrun begin state start begin when 20090.chat."Bossrun" begin say_title("Bossrun") say("Dieser Run ist richtig schwer") say("Traust du dich?") local s = select("Betreten", "Abbrechen") if s== 1 then pc.warp(855000, 1200) end end
when 20001.chat."Was willst du?" begin say_title("Bossrun") say("Denkst du echt du könntest") say("unsere besten Bosse erlegen?") say("") say("erbärmlich, viel spaß beim Sterben!") npc.purge() mob.spawn(8032, 150, 150, 1) end when 8032.kill with pc.get_map_index() == 112 begin d.join(112) --d.regen_file("data/dungeon/Bossrun/br1.txt") end when login with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin d.regen_file("data/dungeon/Bossrun/br1.txt") end when 3591.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin notice("Ihr habt den ersten Boss geschafft!") notice("Aber der zweite wird viel schwerer!") timer("br2", 6) end when br2.timer begin d.regen_file("data/dungeon/Bossrun/br2.txt") end when 2684.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin notice("Woow, du hast einen sehr starken") notice("Verteidiger von uns umgelegt!! Respekt !!") timer("br3", 6) end when br3.timer begin d.regen_file("data/dungeon/Bossrun/br3.txt") end when 3691.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin notice("Du scheinst stärker zu sein, als ich Gedacht") notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!") timer("metinebene", 6) end
when metinebene.timer begin d.regen_file("data/dungeon/Bossrun/metinebene.txt") d.setf("remain", 3) end
when 8033.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin d.setf("remain", d.getf("remain") - 1) if d.getf("remain") == 0 then timer("br4", 6) end end
when 8034.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin d.setf("remain", d.getf("remain") - 1) if d.getf("remain") == 0 then timer("br4", 6) end end
when 8035.kill with pc.in_dungeon() and pc.get_map_index() >= 112*10000 and pc.get_map_index() < 113*10000 begin d.setf("remain", d.getf("remain") - 1) if d.getf("remain") == 0 then timer("br4", 6) end end
when br4.timer begin d.regen_file("data/dungeon/Bossrun/br4.txt") end
when 3491.kill begin d.notice("Bis hierher klappt der spaß schonmal.") d.notice("Du scheinst stärker zu sein, als ich Gedacht") d.notice("habe!! Aber lebend wirst du hier eh nicht rauskommen!") end end end
|
|
|
02/08/2015, 21:30
|
#12
|
elite*gold: 0
Join Date: Feb 2012
Posts: 113
Received Thanks: 6
|
Mmh, jetzt werde ich nicht mehr geportet wenn ich vnum 8023 kille. Oh man ich zerbrech an der quest ..
Kann mir vielleicht jemand über teamviewer helfen? oder skype.
|
|
|
02/09/2015, 10:24
|
#13
|
elite*gold: 906
Join Date: Sep 2009
Posts: 17,295
Received Thanks: 4,399
|
->
#closed
|
|
|
|
Similar Threads
|
[HILFE] Quest fehler :(
04/29/2014 - Metin2 Private Server - 0 Replies
Hallo liebe com!
Ich habe einen fehler bei meiner quest, aber kann ihn nicht finden (das ist meine allererste quest die ich selber schreibe)
Also was ich machen will ist:
Wenn man denn NPC anklickt kommt ein fenster wo "Mino-Run" drin steht...
dann redet der halt ein wenig und dann wenn man auf ja drück, spawn es 5 metins auf der map die alle ein item droppen ... dann muss man wieder zu dem npc gehen und der nimmt dann die 5 items die ich gerade bei denn metins gedroppt habe, und...
|
[HILFE] Quest Fehler
12/23/2013 - Metin2 Private Server - 2 Replies
Hallo Liebe Community,
Ich hab einen kleinen Quest Fehler ...
quest shizuna begin
state start begin
when 20090.chat."Ich möchte den Dungeon betreten"
if game.get_event_flag("dungeon_besetzt") == 1 then -- Überprüft ob der Dungeon besetzt ist.
|
[HILFE!!] Ich brauche beim quest einfügen bitte um hilfe
04/27/2012 - Metin2 Private Server - 6 Replies
Hey ist vllt ein hilfsbereiter Member on ? :D
bräuchte hilfe beim quest einfügen vllt kann derjenige mich dann in skype oder icq adden
DANKE !!!:D:D
*edit* die überschrift ist verkackt :D
ich brauche beim quest einfügen hilfe bitte um schnelle hilfe*
|
[QUEST] Fehler - Brauche Hilfe!
05/24/2010 - Metin2 Private Server - 10 Replies
Nabend,
habe mich mal ebend hingesetzt und habe mal eine Quest geschrieben für unseren Root Server. Habe alles meiner Meinung nach richtig gemacht , unteranderem in die Questfiles reingeladen und in hongkong_list eingetragen, aber die Quest funktioniert nicht...
Eventuell schaut ihr mal drüber, vielleicht findet ihr den Fehler:
quest Waffe des Waffenhändlers begin
state start begin
when login or levelup or enter with pc.get_level() >= 40 begin
setstate( gototeacher )
|
All times are GMT +2. The time now is 17:30.
|
|