|
You last visited: Today at 22:09
Advertisement
[Quest] Finde den Fehler =)
Discussion on [Quest] Finde den Fehler =) within the Metin2 Private Server forum part of the Metin2 category.
11/26/2014, 17:45
|
#1
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
[Quest] Finde den Fehler =)
Hello there, bin grade malwieder am verzweifeln.
Habe folgende 2 theoretisch voneinander unabhängige Quest-Dateien:
Comission 1:
PHP Code:
quest cq1oger begin state cq1start begin when 20352.chat. "Commission Lv.1 - Oger der Prärie" with pc.get_level() >= 8 begin say_title("Oger der Prärie") say("") say("'Die Oger auf unserer Prärie versammeln sich") say("immerzu vor unserem Tor.") say("Sie stellen keine allzugroße Bedrohung dar,") say("aber dennoch wäre es mir Recht, wenn einige") say("von ihnen verschwinden würden.") say("Bitte kümmere dich um das Problem!'") wait() say_title("Informationen zum Auftrag:") say_reward("Auftragsgeber: Marrec") say("") say_red("Mission:") say_red("Schlachte 10 Oger ab.") say("") say_reward("Belohnung:") say_reward("- 2 Skillpunkte") say_reward("- 700 Erfahrungspunkte") say_reward("- 800 Gold") say_reward("- Aquirai Tauschitem Niveau 1") say("") say("Möchtest du den Auftrag annehmen?") local s = select("Auf geht's!", "Lass mich überlegen..") if s == 1 then pc.setqf("Ogerkill", 0) pc.setqf("qOgerkill", 0) set_state(CQ1_kill) end end end state CQ1_kill begin when 20352.chat. "Oger der Prärie - Abgeschlossen!" with pc.getqf("qOgerkill") == 1 begin say_title("Oger der Prärie") say("") say("In ihrer Zahl eingeschränkt wirken") say("sie garnichtmehr so bedrohlich..") say("") say_reward("Belohnung:") say_reward("- 500 Gold") say_reward("- 'Aquirai Band' x1") say_reward("- 300 Erfahrungspunkte") say_reward("- 2 Skill Punkte") pc.give_item2("30001", 1) pc.give_item2("30201", 2) pc.change_money(500) pc.give_exp2(300) pc.setqf("qOgerkill", 0) set_state(cq1start) end when letter begin send_letter("Oger der Prärie") end when button or info begin if pc.getqf("qOgerkill") == 1 then say_title("Abgeschlossen") say("") say("Du hast den Auftrag abgeschlossen.") say("Kehre zum Commission Center zurück.") elseif pc.getqf("qOgerkill") == 0 then say_title("Oger der Prärie") say("") say("Vertreibe die Oger von der Stadt-Mauer!") say("") say_reward("Du hast bereits (".. pc.getqf("Ogerkill") .."/10) Oger getötet!") end end when 1601.kill begin local vid = pc.get_vid() if party.is_party() then local pids = {party.get_member_pids()} for i = 1, table.getn(pids) do pc.select_pid(pids[i]) pc.setqf("Ogerkill", pc.getqf("Ogerkill") + 1) if pc.getqf("Ogerkill") >= 10 and pc.getqf("qOgerkill") == 0 then chat("Oger der Prärie - Abgeschlossen...") chat("Kehre zum Commission Center zurück!") pc.setqf("qOgerkill", 1) end end pc.select(vid) end if not party.is_party() then pc.setqf("Ogerkill", pc.getqf("Ogerkill") + 1) if pc.getqf("Ogerkill") >= 10 and pc.getqf("qOgerkill") == 0 then cmdchat("Musik enter_the_east.mp3") say_title("Auftrag Abgeschlossen!") say("") say("Einige von ihnen sind geflohen.") say("Sieht aus als wäre mein Teil erledigt.") say("") say_reward("Kehre zum Commission Center zurück!") pc.setqf("qOgerkill", 1) end end end end end
Comission2:
PHP Code:
quest cq2wepoger begin state cq2start begin when 20352.chat. "Commission Lv.8 - Bewaffnete Oger" with pc.get_level() >= 8 begin say_title("Bewaffnete Oger") say("") say("'Die Oger auf unserer Prärie haben sich") say("bewaffnet. Es treten vereinzelt Fälle auf,") say("in denen Händler auf ihrem Weg über die Prärie") say("überfallen werden, weswegen sich immer weniger") say("Händler in unsere Stadt wagen.") say("Bitte kümmere dich um das Problem!'") wait() say_title("Informationen zum Auftrag:") say_reward("Auftragsgeber: Marrec") say("") say_red("Mission:") say_red("Schlachte 15 Bewaffnete Oger ab.") say("") say_reward("Belohnung:") say_reward("- 2 Skillpunkte") say_reward("- 700 Erfahrungspunkte") say_reward("- 800 Gold") say_reward("- Aquirai Tauschitem Niveau 2") say("") say("Möchtest du den Auftrag annehmen?") local s = select("Auf geht's!", "Lass mich überlegen..") if s == 1 then pc.setqf("Wepoger", 0) pc.setqf("qWepoger", 0) set_state(CQ2_kill) end end end state CQ2_kill begin when 20352.chat. "Bewaffnete Oger - Abgeschlossen!" with pc.getqf("qWepoger") == 1 begin say_title("Bewaffnete Oger") say("") say("In ihrer Zahl eingeschränkt wirken") say("sie garnichtmehr so bedrohlich..") say("") say_reward("Belohnung:") say_reward("- 500 Gold") say_reward("- 'Aquirai Brosche' x1") say_reward("- 300 Erfahrungspunkte") say_reward("- 2 Skill Punkte") pc.give_item2("30001", 1) pc.give_item2("30201", 2) pc.change_money(500) pc.give_exp2(300) pc.setqf("qWepoger", 0) set_state(cq2start) end when letter begin send_letter("Bewaffnete Oger") end when button or info begin if pc.getqf("qWepoger") == 1 then say_title("Abgeschlossen") say("") say("Du hast den Auftrag abgeschlossen.") say("Kehre zum Commission Center zurück.") elseif pc.getqf("qWepoger") == 0 then say_title("Bewaffnete Oger") say("") say("Erteile den bewaffneten Ogern der") say("Prärie eine Lektion!") say("") say_reward("Du hast bereits (".. pc.getqf("Wepoger") .."/15) Oger getötet!") end end when 1602.kill begin local vid = pc.get_vid() if party.is_party() then local pids = {party.get_member_pids()} for i = 1, table.getn(pids) do pc.select_pid(pids[i]) pc.setqf("Wepoger", pc.getqf("Wepoger") + 1) if pc.getqf("Wepoger") >= 15 and pc.getqf("qWepoger") == 0 then chat("Bewaffnete Oger - Abgeschlossen...") chat("Kehre zum Commission Center zurück!") pc.setqf("qWepoger", 1) end end pc.select(vid) end if not party.is_party() then pc.setqf("Wepoger", pc.getqf("Wepoger") + 1) if pc.getqf("Wepoger") >= 15 and pc.getqf("qWepoger") == 0 then cmdchat("Musik enter_the_east.mp3") say_title("Auftrag Abgeschlossen!") say("") say("Sie haben ihre Waffen fallen gelassen.") say("Das sollte als Lektion ausreichen.") say("") say_reward("Kehre zum Commission Center zurück!") pc.setqf("qWepoger", 1) end end end end end
Problem: Die Quests scheinen sich an irgendeiner Stelle zu überschneiden, beziehungsweise - wenn beide Quests Parallel laufen, und beide Quests abgeschlossen sind - ist es nicht möglich, beide Quests abzugeben, nach folgendem Muster:
Wurde Quest 2 zuletzt erledigt - kann nur Quest 2 abgegeben werden, bis das Quest1-Killevent trotz fertiggestellter Quest (questflag = 1) auftritt.
Wurde Quest 1 zuletzt erledigt - kann nur Quest 1 abgegeben werden, bis das Quest2-Killevent trotz fertiggestellter Quest (questflag = 1) auftritt.
Aus dem ganzen soll eine Quest-Reihe werden, daher wäre es sehr unvorteilhaft, wenn diese solche Bugs aufweist, aber ich hab' mehrfach drübergeschaut, und nichts an der einen Quest gefunden, was die andere behindern könnte. Alle Questflags haben eigene Namen, alle States haben eigene Namen, separates Kill-Event, das einzige was gemeinsam verwendet wird ist der NPC.
Ein Dritter State zum beenden der Quest ist keine Option, da sich beim setzen des States eines anderen Spielers (pc.select_pid() -> pc.set_state()) nur nochmehr bugs bilden. (Alles nach dem Statewechsel wird nichtmehr ausgeführt, blabla)
|
|
|
11/26/2014, 20:25
|
#2
|
elite*gold: 964
Join Date: Mar 2008
Posts: 2,629
Received Thanks: 1,636
|
benutz folgenden Syntax:
PHP Code:
when kill with npc.get_race() == VNUM begin
Ymir hat da irgendwie mist gebaut ^^ d.h. wie du schon sagtest blockiert ein Trigger den anderen Kill Trigger.
Außerdem würde ich nachdem der Kill Counter auf 0 gegangen ist ebenfalls einen neuen State setzen anstatt das du einfach eine questflag (pc.setqf) setzt. Ist wesentlich effizienter und übersichtlicher später
Grüße
|
|
|
11/26/2014, 21:09
|
#3
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Quote:
Originally Posted by Benhero
benutz folgenden Syntax:
PHP Code:
when kill with npc.get_race() == VNUM begin
Ymir hat da irgendwie mist gebaut ^^ d.h. wie du schon sagtest blockiert ein Trigger den anderen Kill Trigger.
Außerdem würde ich nachdem der Kill Counter auf 0 gegangen ist ebenfalls einen neuen State setzen anstatt das du einfach eine questflag (pc.setqf) setzt. Ist wesentlich effizienter und übersichtlicher später
Grüße
|
Das ist.. interessant ne das Problem mit dem State-Setzen war - wenn ich mit pc.select() 'nen Spieler auswähle, und für diesen dann 'n neuen State setze - wird alles was nach dem Statewechsel passiert nichtmehr ausgeführt, d.h. ich kann nichtmehr den Ursprünglichen Spieler auswählen, geschweige denn dass die Schleife das macht, und das war mein erster Gedanke dazu ^.^
|
|
|
11/26/2014, 21:25
|
#4
|
elite*gold: 964
Join Date: Mar 2008
Posts: 2,629
Received Thanks: 1,636
|
Dann würde ich den Spieler ggf. zwischen Speichern Vlt. in einer globalen Variabele? Oder ebenso über pc.setqf()
Grüße
|
|
|
11/26/2014, 21:40
|
#5
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Well, das ergibt zwar alles Sinn, aber das Problem tritt immernoch auf,
Hab' jetzt auch versucht, das questflag-setzen innerhalb des kill-events mittels einem timer zu umgehen, aber - Problem tritt immernoch auf v_v. Merkwürdigerweise - nach abgabe der ersten quest - bei "when button or info begin"-event der 2. quest - funktioniert wiederrum das abgeben der 2. quest ohne das kill-event erneut auszulösen. Dieses Spiel fickt mich immer wieder auf's neue
|
|
|
11/26/2014, 22:14
|
#6
|
Trade Restricted
elite*gold: 9
Join Date: Jul 2014
Posts: 818
Received Thanks: 677
|
Quote:
Ymir hat da irgendwie mist gebaut ^^ d.h. wie du schon sagtest blockiert ein Trigger den anderen Kill Trigger.
|
Ymir hat ausnahmsweise in diesem Fall keinen Mist gebaut, die Schuld liegt hauptsächlich bei den Questern die diese Funktion schon immer falsch rein interpretiert haben. Das nächste mal weniger Scheiße babbeln, die Funktion npc.get_race() regelt in diesem Falle.
|
|
|
11/26/2014, 22:33
|
#7
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Quote:
Originally Posted by .ʛᶉɑҹғох™
Ymir hat ausnahmsweise in diesem Fall keinen Mist gebaut, die Schuld liegt hauptsächlich bei den Questern die diese Funktion schon immer falsch rein interpretiert haben. Das nächste mal weniger Scheiße babbeln, die Funktion npc.get_race() regelt in diesem Falle.
|
Sure? :P
kill-event angepasst:
Beide Quests abgeschlossen ->
Nur 1 der Quest abgebbar:
Nach abgeben - nur der abgegebene Quest wieder annehmbar:
erst nach "when button or info begin" - andere quest abgeb/annehmbar:
|
|
|
11/26/2014, 22:39
|
#8
|
Trade Restricted
elite*gold: 9
Join Date: Jul 2014
Posts: 818
Received Thanks: 677
|
Quote:
Originally Posted by DaisukeBanned
Sure? :P
kill-event angepasst:
Beide Quests abgeschlossen ->
Nur 1 der Quest abgebbar:
Nach abgeben - nur der abgegebene Quest wieder annehmbar:
erst nach "when button or info begin" - andere quest abgeb/annehmbar:
|
Ich will dir ja ungern zu nahe treten aber YMIR kann am wenigsten dafür das du nicht in der Lage bist zu questen. Solltest du dennoch nicht in der Lage sein den Scheiß bis morgen zu fixen mach' ich es dir
|
|
|
11/26/2014, 22:41
|
#9
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Der Vorwurf an ymir kam nicht von mir :P
|
|
|
11/27/2014, 02:55
|
#10
|
elite*gold: 964
Join Date: Mar 2008
Posts: 2,629
Received Thanks: 1,636
|
Richtig, das kommt von mir. Und ich bin beim besten willen kein schlechter quester. Auch versuche ich hier nur zu helfen. Und wie du so schön geschrieben hast "when kill with npc.get_race() begin" habe ich oben bereits genannt. Dennoch ist es nicht im sinne einer Funktion das sie andere Funktionen der gleichen art. (in diesem fall der Kill trigger) blockiert. Welchen sinn soll es den haben, das eine Quest andere blockiert? dafür gibt es andere möglichkeiten. Und ich denke auch nicht, das es so ausglegt wurde.
Ledeglich wurde vermutlich!!! der fehler gemacht nur nach dem ersten ***.kill trigger zu suchen und dann zu returnen. Anstatt weiter zu suchen.
Und richtig. Wenn man keine Ahnung von der Materie hat sollte man keinen mist labern
bzw. wie du so schön gesagt hast "Keine scheiße babbeln"
#edit: quests bzw. bugs sind also scheiße? Das entnehme ich zumindest deiner aussage. Wieso interresierst du dich dann überhaupt für dieses Thema? Das macht wie auch deine aussagen einfach keinen sinn und wenn du ihm das machst, lernt er es nicht und wird bald wieder fragen. Deswegen gebe ich auch nur denk anstöße Aber anscheinend liebst du es ja die scheiße von anderen auszubaden. Naja ich bin draußen ^^
Grüße
|
|
|
11/27/2014, 09:44
|
#11
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Die Diskussion, wer der krasseste Quester im Land ist, ist ja echt interessant und ich würde das ganze auch in "Bitchfight-Runden" unterteilen, wenn ich keinen Respekt vor Hilfsbereitschaft hätte, aber - als noch-Schüler eines Informationstechnischen Gymnasiums, wo die bei C# 2 Schuljahre brauchen, bis man zur Objektorientierung kommt, was die bei 'nem Studium in 'ne Woche Vorlesungen verpacken - hab' ich keine Ahnung von der Programmierung, welche hinter Quest-Triggern, Funktionen und sonstiges steckt, daher habt Verständniss dafür, dass ich verwirrt bin, wenn der von koreanischer Firma "ymir" entworfene Kill-Trigger nicht das Eindeutige Ergebniss liefert, wie erwartet.
In 2-3 Jahren bin ich sicher auch soweit, dass ich das alles selbst überschauen und handhaben kann, wie's die überkrassen Informatiker und Superquester und Götter der Programmierung, von Gott selbst dazu auserwählt, den kranksten Privat-Server der Metin2-Szene zu basteln, machen.
Aber bis es soweit ist - wäre 'ne Simple Erklärung cool, warum sich die 2 genannten Quests überschneiden.
vielen dank =)
|
|
|
11/27/2014, 10:07
|
#12
|
Trade Restricted
elite*gold: 9
Join Date: Jul 2014
Posts: 818
Received Thanks: 677
|
Quote:
Originally Posted by Benhero
Richtig, das kommt von mir. Und ich bin beim besten willen kein schlechter quester. Auch versuche ich hier nur zu helfen. Und wie du so schön geschrieben hast "when kill with npc.get_race() begin" habe ich oben bereits genannt. Dennoch ist es nicht im sinne einer Funktion das sie andere Funktionen der gleichen art. (in diesem fall der Kill trigger) blockiert. Welchen sinn soll es den haben, das eine Quest andere blockiert? dafür gibt es andere möglichkeiten. Und ich denke auch nicht, das es so ausglegt wurde.
Ledeglich wurde vermutlich!!! der fehler gemacht nur nach dem ersten xxx.kill trigger zu suchen und dann zu returnen. Anstatt weiter zu suchen.
Und richtig. Wenn man keine Ahnung von der Materie hat sollte man keinen mist labern
bzw. wie du so schön gesagt hast "Keine scheiße babbeln"
#edit: quests bzw. bugs sind also scheiße? Das entnehme ich zumindest deiner aussage. Wieso interresierst du dich dann überhaupt für dieses Thema? Das macht wie auch deine aussagen einfach keinen sinn und wenn du ihm das machst, lernt er es nicht und wird bald wieder fragen. Deswegen gebe ich auch nur denk anstöße Aber anscheinend liebst du es ja die scheiße von anderen auszubaden. Naja ich bin draußen ^^
Grüße
|
Wer hat denn bitte jemals davon gesprochen das ich ihm lediglich die diversen Fehler beheben werde? Natürlich hätte ich ihn auch mit der Fehler Thematik auseinander setzen lassen, was glaubst du wieso ich schrieb "bis morgen". Nach deiner Logik bestehen also Sprachen wie C#, dem Javakiller 2000 von Microsoft, lediglich aus Dünnschiss seitens Microsoft aufgrund der Tatsache das sich gewisse Funktionen überschneiden könnten? Ziemlicher Unfug, genau derartiges demonstriert einem eigentlich das man viel mehr Freiraum hat als beispielsweise in diversen anderen Scriptlanguages (Nein C# ist keine Scriptsprache das ist mir bewusst ich merke dies nur für Idioten nebenbei an). Nein, "ich liebe es nicht die Scheiße anderer auszubaden", ich erfülle lediglich einige Kriterien die jeder Teilhaber einer Community erfüllen sollte, dazu zählt beispielsweise die Hilfsbereitschaft.
Quote:
Originally Posted by DaisukeBanned
Die Diskussion, wer der krasseste Quester im Land ist, ist ja echt interessant und ich würde das ganze auch in "Bitchfight-Runden" unterteilen, wenn ich keinen Respekt vor Hilfsbereitschaft hätte, aber - als noch-Schüler eines Informationstechnischen Gymnasiums, wo die bei C# 2 Schuljahre brauchen, bis man zur Objektorientierung kommt, was die bei 'nem Studium in 'ne Woche Vorlesungen verpacken - hab' ich keine Ahnung von der Programmierung, welche hinter Quest-Triggern, Funktionen und sonstiges steckt, daher habt Verständniss dafür, dass ich verwirrt bin, wenn der von koreanischer Firma "ymir" entworfene Kill-Trigger nicht das Eindeutige Ergebniss liefert, wie erwartet.
In 2-3 Jahren bin ich sicher auch soweit, dass ich das alles selbst überschauen und handhaben kann, wie's die überkrassen Informatiker und Superquester und Götter der Programmierung, von Gott selbst dazu auserwählt, den kranksten Privat-Server der Metin2-Szene zu basteln, machen.
Aber bis es soweit ist - wäre 'ne Simple Erklärung cool, warum sich die 2 genannten Quests überschneiden.
vielen dank =)
|
Zu aller erst ist LUA eine Scriptsprache und keine Programmiersprache. Mein Angebot steht übrigens immer noch, kannst mich dahingehend anschreiben. Ich weiß ja nicht woher deine Informationsquelle stammt allerdings habe ich einen guten Freund welcher im 3 Semester ist und gerade dabei ist zu verstehen wie eine for Schleife in Java funktioniert.
|
|
|
11/27/2014, 10:19
|
#13
|
elite*gold: 0
Join Date: Sep 2009
Posts: 665
Received Thanks: 444
|
Quote:
Originally Posted by .ʛᶉɑҹғох™
Zu aller erst ist LUA eine Scriptsprache und keine Programmiersprache.
Ich weiß ja nicht woher deine Informationsquelle stammt allerdings habe ich einen guten Freund welcher im 3 Semester ist und gerade dabei ist zu verstehen wie eine for Schleife in Java funktioniert.
|
Hyperbel, die hatten das nicht wirklich in 'ner Woche, aber ->
Mein Bruder macht 'n Duales Studium, Abwechselnd Betrieb/Hochschule, die lernen da auch Java, und der hatte meinen Wissensstand der kompletten 11. Klasse nach einer Woche (waren glaube ich bei Schleifen und Arrays).
ich schicke dir die Questfiles, wenn du's hinbekommst, und mir den Fehler prägnant erklären kannst schenk' ich dir die 20e*gold, die mir mal irgendwer geschenkt hat =)
|
|
|
11/27/2014, 10:20
|
#14
|
Trade Restricted
elite*gold: 9
Join Date: Jul 2014
Posts: 818
Received Thanks: 677
|
Brauchst du nicht, ich bin ein Vertreter der Verkaufstaktiken des Heroin Gewerbes, das erste mal ist immer kostenlos
|
|
|
|
Similar Threads
|
Finde den Fehler in der Quest nicht :/
02/27/2014 - Metin2 Private Server - 5 Replies
quest muschel_drop begin
state start begin
when 8001.kill begin
pc.give_item2(27987, 1)
end
when 8002.kill begin
pc.give_item2(27987, 1)
when 8003.kill begin
pc.give_item2(27987, 2)
end
|
Finde Quest Fehler nicht suche einen der Qusten drauf hatt :)
01/09/2013 - Metin2 Private Server - 5 Replies
Bei der Quest kommt kein Error aber die Quest öffnet sich nicht bei anklicken des Npc's. Hilfe wäre nett :)
quest farm begin
state start begin
when 90020.chat."Teleporter" begin
say_title("Teleporter:")
say("")
say("Auf welche Map möchtest du teleportiert werden?")
say("")
if pc.get_level() >= 10 then
local maps = select("Farm Map","PvP Map","Event Map", "Tal des Todes", "Abbrechen")
|
[QUEST/LUA] Finde den Fehler :D
12/06/2009 - Metin2 Private Server - 4 Replies
Hallo E*PvP,
ich habe wieder einen Fehler nachdem der __TARGET__.target.click Fehler behoben wurde.
nämlich kommt jetzt ein Syntax Fehler
http://img5.imagebanana.com/img/nemajg1/blabal.jp g
quest equip begin
state run begin
|
[QUEST/LUA] Finde den Fehler :D
12/06/2009 - Metin2 Private Server - 9 Replies
Hallo E*PvP melde mich wieder mit nem Fehler^^
Also es geht um meine Quest,
also ich fang mal an :D
Wenn ich den Quest code eingebe cd -usr-rain-channel-... chmod sh make.sh usw...
Patcht es nur bis zum ersten
http://img5.imagebanana.com/img/eed6xucn/asdfasdf .jpg
|
All times are GMT +2. The time now is 22:09.
|
|