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)