|
You last visited: Today at 16:10
Advertisement
[SERVICE] Die Questkontrolle
Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.
02/05/2016, 11:19
|
#12166
|
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
|
naja im Prinzip hast du das schon,
du musst nur kleiner und größer vertauschen^^
|
|
|
02/05/2016, 16:32
|
#12167
|
elite*gold: 0
Join Date: Jan 2016
Posts: 14
Received Thanks: 0
|
Quote:
Originally Posted by .Delta
naja im Prinzip hast du das schon,
du musst nur kleiner und größer vertauschen^^
|
Hab ich getan, aber ist immernoch nicht richtig.
Wenn der Spieler nicht genug Orkzähne hat erscheint jetzt der text aber wenn er alle Orkzähne hat dann kommt garkein text und man kann nicht abschließen/keine belohnung. Bitte um hilfe.
PHP Code:
quest Sammelquest begin
state start begin
when login or levelup with pc.get_level() >= 30 begin
set_state(start)
end
end
state start begin
when letter begin
local v = find_npc_by_vnum(20381)
if v != 0 then target.vid("__TARGET__", v, "Sammelquest")
end
send_letter("Sammelquest")
end
when button or info begin
say_title("Sammelquest")
say("")
say("Konfuzius sucht dich!")
say("")
say_reward("Sprich mit Konfuzius!")
say("")
end
when __TARGET__.target.click or 20381.chat."Sammelquest" begin
target.delete("__TARGET__")
say("Konfuzius:")
say("")
say("Bringe mir 5x Orkzahn.")
say("")
say_item_vnum(30006)
say("")
say("Belohnung:")
say("5.000.000 Yang")
say("1x Karotte")
say("")
say_reward("Finde 5x Orkzahn.")
say("")
set_state(collect_orcteeth)
pc.setqf("collect_count",0)
end
end
state collect_orcteeth begin
when letter begin
send_letter("Sammelquest")
end
when button or info begin
say_title("Sammelquest")
say("")
say("Finde 5x Orkzahn und bringe")
say("sie zu Konfuzius.")
say("")
say_item_vnum(30006)
say("")
end
when 20381.chat."Sammelquest" with pc.count_item(30006)<5 begin
say("Konfuzius:")
say("")
say("Ich benoetige 5x Orkzahn.")
say("Du hast nicht genug.")
say("")
end
when 20381.chat."Sammelquest" with pc.count_item(30006)>5 begin
say("Konfuzius:")
say("")
say("Gut gemacht.")
say("Du erhaelst deine Belohnung.")
say("")
say("Belohnung:")
say("5.000.000 Yang")
say("1x Karotte")
say("")
pc.remove_item("30006", 5)
pc.change_money(5000000)
pc.give_item2(50055, 1)
clear_letter()
set_state(__COMPLETE__)
end
end
state __COMPLETE__ begin
end
end
|
|
|
02/05/2016, 16:44
|
#12168
|
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
|
so wie du es momentan hast, würde der fall dass du genau 5 Orkzähne im Inventar hast nicht berücksichtigt werden.
Dein Freund ist:
PHP Code:
when 20381.chat."Sammelquest" with pc.count_item(30006) >= 5 begin
PHP Code:
quest Sammelquest begin state start begin when login or levelup with pc.get_level() >= 30 begin set_state(start) end end
state start begin when letter begin local v = find_npc_by_vnum(20381) if v != 0 then target.vid("__TARGET__", v, "Sammelquest") end send_letter("Sammelquest") end
when button or info begin say_title("Sammelquest") say("") say("Konfuzius sucht dich!") say("") say_reward("Sprich mit Konfuzius!") say("") end when __TARGET__.target.click or 20381.chat."Sammelquest" begin target.delete("__TARGET__") say("Konfuzius:") say("") say("Bringe mir 5x Orkzahn.") say("") say_item_vnum(30006) say("") say("Belohnung:") say("5.000.000 Yang") say("1x Karotte") say("") say_reward("Finde 5x Orkzahn.") say("") set_state(collect_orcteeth) pc.setqf("collect_count",0) end end state collect_orcteeth begin when letter begin send_letter("Sammelquest") end when button or info begin say_title("Sammelquest") say("") say("Finde 5x Orkzahn und bringe") say("sie zu Konfuzius.") say("") say_item_vnum(30006) say("") end
when 20381.chat."Sammelquest" begin if pc.count_item(30006) < 5 then say("Konfuzius:") say("") say("Ich benoetige 5x Orkzahn.") say("Du hast nicht genug.") return end say("Konfuzius:") say("") say("Gut gemacht.") say("Du erhaelst deine Belohnung.") say("") say("Belohnung:") say("5.000.000 Yang") say("1x Karotte") say("") pc.remove_item("30006", 5) pc.change_money(5000000) pc.give_item2(50055, 1) clear_letter() set_state(__COMPLETE__) end end
state __COMPLETE__ begin end end
|
|
|
02/06/2016, 01:02
|
#12169
|
elite*gold: 200
Join Date: Jan 2013
Posts: 47
Received Thanks: 6
|
Bekomme immer compile fehler, bräuchte diese für alle Klassen als Start quest die sich sofort öffnet, wie diese Willkommensnachricht.
PHP Code:
quest firstlogin begin state start begin when login with pc.getqf("firstlogin") == 0 begin pc.setqf("firstlogin", 1) timer("firstlogin", 3) end when firstlogin.timer begin say("Ist es vorbei? Bin ich gestorben?") say("Ist das hier das Paradies?") say("Ein Stechen. Dazu das Gefühl von Wärme. Ich kenne") say("diese Wärme. Es ist Blut. Warmes Blut.") say("Doch keine Erlösung. Doch kein Paradies. Vielleicht hat Naomi auch überlebt?") say("Ich muss aufwachen.") say("") wait() say("Das schulde ich ihr. Meine Sinne scheinen wieder zu funktionieren. Wellenrauschen.") say("Die hohen Stimmen der Vögel.") say("Und Sand, ich spüre definitiv Sand. Ich werde wütend. Das war unser Leben, wir haben ihnen nichts getan..") say("Ich darf nicht abschweifen.") say("Ich muss die Augen öffnen. Für Naomi.") say("") wait() say("Strand, anscheinend eine Insel. say("Und Wasser. Viel Wasser.") say("Dort, eine Kiste. Ich sollte sie an mich nehmen.") end end end
|
|
|
02/06/2016, 03:51
|
#12170
|
elite*gold: 0
Join Date: Jun 2012
Posts: 340
Received Thanks: 114
|
Quote:
Originally Posted by Docinfo
Bekomme immer compile fehler, bräuchte diese für alle Klassen als Start quest die sich sofort öffnet, wie diese Willkommensnachricht.
PHP Code:
quest firstlogin begin
state start begin
when login with pc.getqf("firstlogin") == 0 begin
pc.setqf("firstlogin", 1)
timer("firstlogin", 3)
end
when firstlogin.timer begin
say("Ist es vorbei? Bin ich gestorben?")
say("Ist das hier das Paradies?")
say("Ein Stechen. Dazu das Gefühl von Wärme. Ich kenne")
say("diese Wärme. Es ist Blut. Warmes Blut.")
say("Doch keine Erlösung. Doch kein Paradies. Vielleicht hat Naomi auch überlebt?")
say("Ich muss aufwachen.")
say("")
wait()
say("Das schulde ich ihr. Meine Sinne scheinen wieder zu funktionieren. Wellenrauschen.")
say("Die hohen Stimmen der Vögel.")
say("Und Sand, ich spüre definitiv Sand. Ich werde wütend. Das war unser Leben, wir haben ihnen nichts getan..")
say("Ich darf nicht abschweifen.")
say("Ich muss die Augen öffnen. Für Naomi.")
say("")
wait()
say("Strand, anscheinend eine Insel.
say("Und Wasser. Viel Wasser.")
say("Dort, eine Kiste. Ich sollte sie an mich nehmen.")
end
end
end
|
Erster Fix: say("Strand, anscheinend eine Insel")
Du hast vergessen den say zu schließen mit einem ") ^^
|
|
|
02/06/2016, 14:08
|
#12171
|
elite*gold: 200
Join Date: Jan 2013
Posts: 47
Received Thanks: 6
|
Quote:
Originally Posted by Chaosnightx3
Erster Fix: say("Strand, anscheinend eine Insel")
Du hast vergessen den say zu schließen mit einem ") ^^
|
Löst das problem auch nicht :P
|
|
|
02/07/2016, 23:01
|
#12172
|
elite*gold: 0
Join Date: Jan 2010
Posts: 57
Received Thanks: 1
|
Hey folgendes Problem.
Ich versuche gerade in einer Quest ein Punktesystem hinzuzufügen. Bei bestimmten kills von Mobs sollen Punkte in eine spalte in der Player Tabelle addiert werden. Mein Problem ist das in jeder Variation immer nur 1 Punkt dazu addiert wird. Über Questflags will ich es nicht lösen kann aber alternativ darauf ausweichen.
PHP Code:
when kill with npc.get_race() == 3091 or 3191 or 3291 or 3491 or 3591 or 3691 or 3891 and not npc.is_pc() begin local p = 1 local pvm_now = tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1]) mysql_query("UPDATE player.player SET pvmpunkte = '"..pvm_now.."'+'"..p.."' WHERE name = '"..pc.get_name().."';") end
when kill with npc.get_race() == 3391 or 3791 and not npc.is_pc() begin local px = 15 local pvm_now = tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1]) mysql_query("UPDATE player.player SET pvmpunkte='"..pvm_now.pvmpunkte[1]+px.."' WHERE name ='"..pc.get_name().."';") end
when kill with npc.get_race() == 6091 or 6191 and not npc.is_pc() begin local pxy = 25 local pvm_now = mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';") mysql_query("UPDATE player.player SET pvmpunkte = pvmpunkte+25 WHERE name = '"..pc.get_name().."' LIMIT 1") end
Jede der drei Variationen funktioniert aber es wird nur ein Punkt addiert.
|
|
|
02/08/2016, 11:23
|
#12173
|
elite*gold: 200
Join Date: Jan 2013
Posts: 47
Received Thanks: 6
|
Hey, erstmal zur Funktion der Quest.
Kurz und knapp(wie es sein sollte):
Nach Charactererstellung:
Questrolle die zu NPC X führt
NPC X gibt Quest an Spieler
Spieler erledigt 5Metins,1 Eoten (Boss), sucht 5 Schatzkarten
Spieler erhlt Info's in der Questrolle links, wieviele noch fehlen
(Karten,Mobs)
Spieler kehrt zu NPC X zurück
Wird Teleportiert je nach Reich.
Ausführliche Funktion:
Die Quest erscheint direkt am Anfang nach der Charactererstellun, soll dann als Questrolle angezeigt werden, die dann zu dem NPC X führt. Bei diesem Angekommen soll sie nach Text(einführung) dem Spieler eine Quest geben, bei der er 5 dieser Metin's, 1 Eoten(Boss), und 5 Schatzkarten sammeln soll, diese soll dann wiederrum als Questrolle kommen und eben das zeigen, und auch noch wieviele von dem ganzen gesucht/getötet werden soll.
Darin enthalten sind natürlich fehler, die behoben werden sollen.
Das wären dann diese.
Fehler in der Quest:
Die Quest funktioniert bis auf das, wenn ich bei dem NPC X angekommen bin ich keine Questrolle erhalte, und der NPC nochmal anklickbar ist und wieder das gleiche erzählt.
Er sollte nach erledigung dieser Quest in die verschiedenen Reiche die eingetragen sind teleportieren.
Die Quest:
PHP Code:
quest schiff begin
state start begin
when letter begin
send_letter(string.format("Gehe zu %s", mob_name(33003)))
local v = find_npc_by_vnum(33003)
if v != 0 then
target.vid("__TARGET", v, "Target")
end
end
when button or info begin
say(string.format("Gehe zu %s.", mob_name(33003)))
say("Verletzte Menschen. Verwirrte Menschen. Mehr gibt es auf dieser verdammten Insel anscheinend nicht.")
say("Ich höre immer wieder Takuni. Takuni, Takuni und nochmals Takuni. Wer zum Teufel ist das?")
say("Bleibt mir wohl nichts anderes übrig, als diese omniöse Person aufzusuchen.")
say("")
say(string.format("Suche und spreche mit %s.", mob_name(33003)))
end
when __TARGET.target.click or 33003.chat."Mein Name ist Takuni" begin
target.delete("__TARGET")
say("Ich bin Takuni, der auserkorene Wächter der Insel.")
say("Vor unzähligen Jahren erkor mich der")
say("Rat des Drachengottes zu dieser Aufgabe.")
say("Aber Moment mal. Ich mag alt sein und vielleicht")
say("sind meine Haare auch nicht mehr die farbigsten..")
say("Dein Gesicht jedoch habe ich hier noch nie gesehen.")
say("Wer bist du?")
say("")
say("Ich bin "..pc.get_name()..". Da, ein Schiff. Darf ich mitfahren?")
say("")
wait()
say("Ich würde dich zu gerne direkt mitfahren lassen.")
say("Doch das Instandhalten des Schiffes kostet auch mich Zeit und Geld...")
say("Vor Allem aufgrund des derzeitigen")
say("Flüchtlingsstroms, der auf unserer Insel strandet.")
say("")
wait()
say(""..pc.get_name()..":")
say("")
say("Ich habe keinerlei Geld oder Schmuck..")
say("")
wait()
say("Wenn das so ist..Du siehst jung und stark aus.")
say("Du könntest mir behilflich sein.")
say("Vom Rat bekam ich eine Aufgabenliste. Die Zeiten, in denen mein Körper so fit wie mein Geist war, sind")
say("leider Gottes vorbei.")
say("")
wait()
say("Hier die Liste.")
say("")
say(string.format("Aufgabe 1: Sammel bitte %d %s.", 5, item_name(27988)))
say(string.format("Gerüchten zufolge trägt sie der %s bei sich", mob_name(2101)))
say("")
say("Aufgahe 2: Bereinige die Insel, indem du 5 Inselsteine tötest.")
say(mob_name(8023))
say("")
say("Aufgabe 3: Begib dich auf die Suche nach Eoten, dem Inselbaum, und töte ihn.")
say(mob_name(3902))
say("Anschließend suche mich erneut auf und ich werde")
say("dich passieren lassen.")
pc.setqf("tutmetin", 0)
q.set_counter("Zerstöre Inselsteine", 5)
pc.setqf("tutboss", 0)
q.set_counter("Töte Eoten", 1)
set_state(collectmaps)
end
end
state collectmaps begin
when letter begin
send_letter("Takumis Auftrag")
end
when button or info begin
say(string.format("Aufgabe 1: Sammel bitte %d %sn", 5, item_name(27988)))
say(string.format("Gerüchten zufolge erhälst du diese von %sen.", mob_name(2101)))
say("")
say("Aufgahe 2: Bereinige die Insel, indem du 5 Inselsteine tötest.")
say(string.format("Bisher hast du %s Stück getötet.", pc.getqf("tutmetin")))
say(mob_name(8023))
say("")
say("Aufgabe 3: Begebe dich auf die Suche nach Eoten, dem Inselbaum, und töte ihn.")
say(mob_name(3902))
say("Anschließend suche mich erneut auf und ich werde dich passieren lassen.")
end
when kill begin
if npc.get_race() == 2101 then
if number(1, 100) <= 2 then
game.drop_item_with_ownership(27988)
end
elseif npc.get_race() == 8023 then
if pc.getqf("tutmetin") + 1 <= 5 then
pc.setqf("tutmetin", pc.getqf("tutmetin")+1)
end
elseif npc.get_race() == 3902 then
pc.setqf("tutboss", 1)
end
end
when 33003.chat."Hast du es geschafft?" begin
say("Du darfst erst passieren, wenn du die drei Aufgaben erledigt hast.")
say("Du hast also 5 Inselbäume und den Inselbaum Eoten vernichtet?")
say(string.format("Außerdem hast du %d %s gefunden?", 5, item_name(27988)))
say("Versuch nicht, mich auszutricksen.")
local a = select("Ja", "Nein")
if a == 2 then
return
end
if pc.count_item(27988) < 5 then
say("Du hast nicht genügend Schatzkarten gesammelt.")
end
if pc.getqf("tutmetin") < 5 then
say(string.format("Du musst noch %s mal den %s zerstören", 5 - pc.getqf("tutmetin"), mob_name(8023)))
end
if pc.getqf("tutboss") == 0 then
say(string.format("Du musst noch den %s töten", mob_name(3902)))
end
if pc.getqf("tutmetin") < 5 or pc.getqf("tutboss") == 0 or pc.count_item(27988) < 5 then
return
end
pc.remove_item(27988 , 5)
local w = ({
--rot
{468748, 1015726},
--gelb
{17834, 157190},
--blau
{1000116, 284519}
})[pc.get_empire()]
pc.warp(w[1],w[2])
end
end
end
|
|
|
02/08/2016, 12:12
|
#12174
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by youtube9
Hey folgendes Problem.
Ich versuche gerade in einer Quest ein Punktesystem hinzuzufügen. Bei bestimmten kills von Mobs sollen Punkte in eine spalte in der Player Tabelle addiert werden. Mein Problem ist das in jeder Variation immer nur 1 Punkt dazu addiert wird. Über Questflags will ich es nicht lösen kann aber alternativ darauf ausweichen.
PHP Code:
when kill with npc.get_race() == 3091 or 3191 or 3291 or 3491 or 3591 or 3691 or 3891 and not npc.is_pc() begin local p = 1 local pvm_now = tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1]) mysql_query("UPDATE player.player SET pvmpunkte = '"..pvm_now.."'+'"..p.."' WHERE name = '"..pc.get_name().."';") end
when kill with npc.get_race() == 3391 or 3791 and not npc.is_pc() begin local px = 15 local pvm_now = tonumber(mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';")[1][1]) mysql_query("UPDATE player.player SET pvmpunkte='"..pvm_now.pvmpunkte[1]+px.."' WHERE name ='"..pc.get_name().."';") end
when kill with npc.get_race() == 6091 or 6191 and not npc.is_pc() begin local pxy = 25 local pvm_now = mysql_query("SELECT pvmpunkte from player.player WHERE name='"..pc.get_name().."';") mysql_query("UPDATE player.player SET pvmpunkte = pvmpunkte+25 WHERE name = '"..pc.get_name().."' LIMIT 1") end
Jede der drei Variationen funktioniert aber es wird nur ein Punkt addiert.
|
Du musst bei jeder Bedingung auch angeben, mit was du vergleichen möchtest.
Am Beispiel des ersten Triggers erkläre ich dir mal kurz, was für die Quest da steht:
Code:
when kill with npc.get_race() == 3091 or true or true or true or true or true or true and not npc.is_pc() begin
(in Lua ist alles true, was nicht nil oder false ist)
In SQL kann man übrigens auch direkt im Update den aktuellen Wert nutzen, dafür musst du kein Select vorher machen.
Ich hab dir mal alles in einen Trigger gemacht:
Code:
when kill with not npc.is_pc() begin
_G.inList = _G.inList or function(value, list)
for k,v in ipairs(list) do
if v == value then
return true
end
end
return false
end
local mobGroupToPvmPoints = {
--AB HIER BEARBEITEN
[{3091, 3191, 3291, 3491, 3591, 3691, 3891}] = 1,
[{3391, 3791}] = 15,
[{6091, 6191}] = 25,
--AB HIER NICHT MEHR!
}
local killedMob = npc.get_race()
local pvmPoints = 0
for mobGroup, groupPoints in pairs(mobGroupToPvmPoints) do
if inList(killedMob, mobGroup) then
pvmPoints = pvmPoints + groupPoints
end
end
if pvmPoints == 0 then return end
mysql_query(string.format("UPDATE player.player SET pvmpunkte = pvmpunkte + %d WHERE id = %d;", pvmPoints, pc.get_player_id()))
end
Da kannst du beliebig viele Mobgruppen hinzufügen. Aktuell ist es so, wie du es gewollt hast.
|
|
|
02/09/2016, 01:45
|
#12175
|
elite*gold: 0
Join Date: Feb 2016
Posts: 25
Received Thanks: 1
|
kann mir wer helfen paar quest zu machen ? :P
|
|
|
02/10/2016, 00:54
|
#12176
|
elite*gold: 0
Join Date: Jan 2012
Posts: 195
Received Thanks: 19
|
when doesnt have begin-end clause. (()
Error occured on compile
quest truhen_zero begin
state start begin
when login or pc.get_level() >= 1 begin
set_state(truhen)
end
end
state truhen begin
when 50187.use begin
local item_vnum = 19 --Schwert+9
if pc.get_job() == 1 then
item_vnum = 1009 --Dolche+9
elseif pc.get_job() == 2 then
item_vnum = 19 --Schwert+9
elseif pc.get_job() == 3 then
item_vnum = 7009 --Fächer+9
end
pc.give_item2(item_vnum) --lvl 1er waffe je nach rasse
pc.give_item2(12209, 1)
pc.give_item2(12349, 1)
pc.give_item2(12489, 1)
pc.give_item2(12629, 1)
pc.give_item2(13009, 1)
pc.give_item2(17009, 1)
pc.give_item2(14009, 1)
pc.give_item2(15009, 1)
pc.give_item2(16009, 1)
pc.give_item2(11209, 1)
pc.give_item2(11409, 1)
pc.give_item2(11609, 1)
pc.give_item2(11809, 1)
pc.give_item2(50512, 1)
pc.give_item2(72728, 10) --Elixier des Mondes (M)
pc.give_item2(72724, 10) --Elixier der Sonne (M)
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.remove_item(50187, 1) --Lehrlingstruhe I verschwindet
end
when 50188.use with pc.get_level() >= 10 begin
pc.give_item2(72723, 1) --Elixier der Sonne (K)
pc.give_item2(27111, 3) --Grüner Trank(M)
pc.give_item2(27113, 3) --Geschwindigkeits Trank(K)
pc.give_item2(76008, 3) --Medaille des Drachen
pc.give_item2(50189, 1) --Lehrlingstruhe III
pc.remove_item(50188, 1) --Lehrlingstruhe II verschwindet
end
when 50189.use with pc.get_level() >= 20 begin
pc.give_item2(72727, 1) --Elixier des Mondes (K)
pc.give_item2(27111, 3) --Grüner Trank(M)
pc.give_item2(27113, 3) --Geschwindigkeits Trank(K)
pc.give_item2(76006, 1) --Kompass des Metinsteins
pc.give_item2(76024, 3) --Grüner Zauber
pc.give_item2(76025, 3) --Grüne Stärke
pc.give_item2(50190, 1) --Expertentruhe I
pc.remove_item(50189, 1) --Lehrlingstruhe III verschwindet
end
when 50190.use with pc.get_level() >= 30 begin
pc.give_item2(27113, 3) --Geschwindigkeits Trank(K)
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(25040, 5) --Segenschriftrollen
pc.give_item2(70003, 1) --Buch des Anführers
pc.give_item2(50191, 1) --Expertentruhe II
pc.remove_item(50190, 1) --Expertentruhe I verschwindet
end
when 50191.use with pc.get_level() >= 40 begin
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(71153, 1) --Trank der Weisheit
pc.give_item2(70003, 1) --Buch des Anführers
pc.give_item2(50192, 1) --Expertentruhe III
pc.remove_item(50191, 1) --Expertentruhe II verschwindet
end
when 50192.use with pc.get_level() >= 50 begin
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(70038, 20) --Tapferkeitsümhänge
pc.give_item2(71095, 5) --Passierschein
pc.give_item2(70058, 1) --Teleportationsring
pc.give_item2(50193, 1) --Meistertruhe I
pc.remove_item(50192, 1) --Expertentruhe III verschwindet
end
when 50193.use with pc.get_level() >= 60 begin
pc.give_item2(71032, 3) --Schriftrolle des Drachen
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(76000, 5) --Pfirsichblütenwein
pc.give_item2(50194, 1) --Meistertruhe II
pc.remove_item(50193, 1) --Meistertruhe I verschwindet
end
when 50194.use with pc.get_level() >= 70 begin
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(76001, 2) --Status-Neuverteilung
pc.give_item2(71084, 3) --Gegenstand verstärken
pc.give_item2(71085, 3) --Gegenstand verzaubern
pc.give_item2(50195, 1) --Meistertruhe III
pc.remove_item(50194, 1) --Meistertruhe II verschwindet
end
when 50195.use with pc.get_level() >= 80 begin
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(72728, 1) --Elixier des Mondes (M)
pc.give_item2(72728, 3) --Elixier des Forschers
pc.give_item2(50196, 1) --Großmeistertruhe
pc.remove_item(50195, 1) --Meistertruhe III verschwindet
end
when 50196.use with pc.get_level() >= 90 begin
pc.give_item2(39004, 1) --Segenskugel
pc.give_item2(72724, 1) --Elixier der Sonne (M)
pc.give_item2(76010, 3) --Blutstein
pc.give_item2(30319, 3) --Schrumpfkopf
pc.give_item2(50127, 1) --Grüne Zaubertruhe
pc.remove_item(50196, 1) --Großmeistertruhe verschwindet
end
end
end
|
|
|
02/10/2016, 04:00
|
#12177
|
elite*gold: 110
Join Date: Jun 2015
Posts: 85
Received Thanks: 22
|
Hallo Habe Problemm mit dc Labyrinth ebene die portale gehn nicht Könnt ihr mir die Labyrinth ebene überspringen so das ich in der von 3 auf 5 ebene komm wäre echt nice wenn ihr mir soweit helfen könnnt#
PHP Code:
quest devilcatacomb_zone begin
state start begin
function is_closed()
return (game.get_event_flag("dc_closed") > 0) --close dialog
end
function setting()
return
{
["base"]={["x"] = 3072 , ["y"]= 12032 ,},
["floor1_s"] = { ["x"] = 20, ["y"] = 20, },
["floor1_e"] = { ["x"] = 500, ["y"] = 470,},
["floor2_s"] = { ["x"] = 510, ["y"] = 18, },
["floor2_e"] = { ["x"] = 978, ["y"] = 470,},
["floor1_entry"] = {["x"] = 73, ["y"] = 63,},
["floor2_entry"] = {["x"] = 550, ["y"] = 45,},
["floor3_entry"] = {["x"] = 1378, ["y"] = 249,},
["floor4_entry"] = {["x"] = 70, ["y"] = 592,},
["floor5_entry"] = {["x"] = 846, ["y"] = 898},
["floor6_entry"] = {["x"] = 1362, ["y"] = 666},
["floor7_entry"] = {["x"] = 73, ["y"] = 1156},
["map_idx"] = 216,
["rag"] = 30311,
["devil_king"] = 2591,
["reapers_credit1"] = 30319,
["reapers_credit2"] = 30320,
["reapers_credit3"] = 76002,
["floor3_stone"] = 8038,
["floor3_stone_pos"] = {
{1366, 150},
{1366, 351},
{1234, 365},
{1234, 140},
{1150, 135},
{1130, 365},
{1135, 253}
},
["mob_regen_file_path"] = "data/dungeon/devilcatacomb/",
["floor4_regen_file"] = {"devilcatacomb_floor4_regen1.txt",
"devilcatacomb_floor4_regen2.txt",
"devilcatacomb_floor4_regen3.txt",
"devilcatacomb_floor4_regen4.txt",
"devilcatacomb_floor4_regen5.txt"} ,
["credit_stone"] = 30101,
["credit_stone_pos"] = {307,323},
["floor2_stone"] = 30103,
["floor2_stone_pos"] = {741,217},
["floor2_merchant_npc"] = 20368,
["floor2_merchant_npc_pos"] = {734,214},
["floor4_npc"] = 30104,
["floor4_npc_pos"] = {500, 717},
["devil_king_pos"] = {{673,829},{691,638},{848,568},{1026,642},{1008,862}},
["unlock_stone"] = 30312,
["floor5_stone"] = 30102,
["floor5_stone_pos"] = {848, 735},
["devil_great_king"] = 2597 ,
["devil_great_king_pos"] = {1303,704},
["devil_emperor"] = 2598,
["devil_emperor_pos"] = {74,1103},
["dc2_door_set_size"] = {4,2,3,2},
["dc2_door_set1"] = {
{{30111, 566, 117, 5},{30112, 562, 311, 5,},{30118, 663, 434, 7},{30119, 881, 434, 7}},
{{30116, 743, 390, 3},{30119, 612, 251, 1,}},
{{30113, 654, 211, 5},{30111, 707, 338, 7,},{30112, 775, 336, 7}},
{{30117, 733, 294, 3},{30113, 694, 271, 1,}}
},
["dc2_door_set2"] = {
{{30115, 942, 141, 5},{30116, 942, 245, 5},{30117, 942, 321, 5},{30115, 763, 64, 7}},
{{30118, 643, 116, 3},{30114, 900, 167, 1}},
{{30114, 850, 293, 5},{30113, 715, 164, 7},{30114, 817, 162, 7}},
{{30111, 802, 277, 1},{30112, 800, 241, 1}}
},
}
end
when login begin
local setting = devilcatacomb_zone.setting()
local idx = pc.get_map_index()
if idx >= (setting.map_idx * 10000) and idx < ((setting.map_idx + 1) * 10000) then
-- pc.set_warp_location(65, 5914, 992) -----------¾Æ±Íµ¿±¼ ÁÂÇ¥·Î
local level = d.getf("level")
-- warp locationÀÌ 0,0 ÀÌ¸é ½Ã½ºÅÛ »óÀ¸·Î, Á¾·á ½Ã, Á¾·á À§Ä¡¸¦ ½ÃÀÛ À§Ä¡·Î ÀúÀåÇÑ´Ù.
d.set_warp_location (0, 0, 0)
if level == 2 then
say(gameforge.devilcatacomb_zone._10_say)
say(string.format(gameforge.devilcatacomb_zone._20_say, 60))
elseif level == pc.getqf ("level") then
-- say ("³«¿ÀµÇÁö ¾Ê±â À§ÇØ µ¿·áµé°ú ÇÕ·ùÇϽʽÿÀ.")
say(gameforge.devilcatacomb_zone._30_say)
else
say(gameforge.devilcatacomb_zone._40_say)
-- say ("´ç½ÅÀº ³«¿ÀµÇ¾ú½À´Ï´Ù. ¿ë½ÅÀÇ ÈûÀ» ºô¾î Àá½Ã µÚ µ¿±¼ ¹ÛÀ¸·Î À̵¿ÇÕ´Ï´Ù.")
timer ("devilcatacomb_ban_timer", 5)
end
end
if idx == setting.map_idx then
pc.setf("devilcatacomb_zone","last_exit_time", get_global_time())
-- 2ÃþÀÌ»óÀ̸é, ÂѰܳª
if pc.get_x() < setting.floor1_s.x + setting.base.x
or pc.get_y() < setting.floor1_s.y + setting.base.y
or pc.get_x() > setting.floor1_e.x + setting.base.x
or pc.get_y() > setting.floor1_e.y + setting.base.y
then
-- ¾Æ±Íµ¿±¼ ÀÔ±¸·Î
-- if not is_test_server() then
say(gameforge.devilcatacomb_zone._40_say)
timer ("devilcatacomb_ban_timer", 5)
-- end
else
-- ¾Æ±Íµ¿±¼ ÀÔ±¸·Î
-- pc.set_warp_location(65, 5914, 992)
say(gameforge.devilcatacomb_zone._50_say)
end
end
end
when logout begin
local idx = pc.get_map_index()
local setting = devilcatacomb_zone.setting()
if idx == setting.map_idx or idx >= (setting.map_idx * 10000) and idx < ((setting.map_idx + 1) * 10000) then
pc.setf("devilcatacomb_zone","last_exit_time", get_global_time())
end
end
when devilcatacomb_ban_timer.timer begin
pc.warp((5914)*100, (992)*100, 65)
end
when warp_timer.timer begin
local level = d.getf("level")
local level_switch = {
[3] = gameforge.devilcatacomb_zone._60_say,
[4] = gameforge.devilcatacomb_zone._70_say,
[5] = gameforge.devilcatacomb_zone._80_say,
[6] = gameforge.devilcatacomb_zone._90_say,
}
local t = 3600 -(get_global_time() - d.getf("enter_time"))
local t_r = math.mod (t, 60)
local t_m = (t - t_r) / 60
d.notice ( level_switch[level] )
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, t_m))
d.set_warp_location (0, 0, 0)
end
when devilcatacomb_man.chat.gameforge.devilcatacomb_zone._100_npcChat with not devilcatacomb_zone.is_closed() begin
local setting = devilcatacomb_zone.setting()
if pc.get_level() < 75 then
say(gameforge.devilcatacomb_zone._110_say)
--elseif pc.getf("deviltower_zone","9_done") == 0 then
--say(gameforge.devilcatacomb_zone._120_say)
elseif ((get_global_time() - pc.getf("devilcatacomb_zone","last_exit_time")) < 0) then
say(gameforge.devilcatacomb_zone._130_say)
else
say(gameforge.devilcatacomb_zone._140_say)
local s = select(gameforge.devilcatacomb_zone._150_select, gameforge.devilcatacomb_zone._160_select)
if s == 1 then
pc.warp ((setting.floor1_entry.x + setting.base.x )* 100, (setting.floor1_entry.y + setting.base.y) * 100)
end
end
end
-- ¸ó½ºÅͰ¡ Á×À¸¸é ¹ß»ýÇÏ´Â À̺¥Æ®.
when kill begin
local setting = devilcatacomb_zone.setting()
-- ¾Æ±Íµ¿±¼ 1ÃþÀ̸é 1% È®·ü·Î ±Ý½Ã°ÇÀ» µå¶øÇÑ´Ù.
if pc.get_x() > setting.floor1_s.x + setting.base.x
and pc.get_y() > setting.floor1_s.y + setting.base.y
and pc.get_x() < setting.floor1_e.x + setting.base.x
and pc.get_y() < setting.floor1_e.y + setting.base.y then
local j = number(1, 100)
if j == 1 then
game.drop_item (setting.rag, 1)
end
end
end
function spawn_doors ()
local setting = devilcatacomb_zone.setting()
for i = 1, 4 do
local mob_set = setting.dc2_door_set1[i]
local set_size = setting.dc2_door_set_size[i]
for j = 1, set_size do
d.set_unique (i.."_1_"..j, d.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
end
mob_set = setting.dc2_door_set2[i]
for j = 1, set_size do
d.set_unique (i.."_2_"..j, d.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
end
end
end
-- ±Ý½Ã°ÇÀ» ³ªÂûÀÎÁõ¼®¿¡ µå·¡±×Çϸé 2ÃþÀ¸·Î º¸³½´Ù. 2ÃþºÎÅÍ´Â ´øÀüÀÌ´Ù.
when devilcatacomb_credit_stone. take begin
local setting = devilcatacomb_zone.setting()
if item.vnum == setting.rag then
if not party.is_party() then
say(gameforge.devilcatacomb_zone._170_say)
return
elseif party.is_in_dungeon() then
say(gameforge.devilcatacomb_zone._180_say)
return
end
item.remove()
say(gameforge.devilcatacomb_zone._190_say)
wait()
say(gameforge.devilcatacomb_zone._200_say)
wait()
d.new_jump_party (setting.map_idx, setting.floor2_entry.x + setting.base.x , setting.floor2_entry.y + setting.base.y )
d.setqf2("devilcatacomb_zone","level", 2)
d.setf ("level",2)
d.regen_file (setting.mob_regen_file_path.."dc_2f_regen.txt")
d.spawn_mob (setting.floor2_merchant_npc, setting.floor2_merchant_npc_pos[1], setting.floor2_merchant_npc_pos[2])
d.spawn_mob (setting.floor2_stone, setting.floor2_stone_pos[1], setting.floor2_stone_pos[2])
devilcatacomb_zone.spawn_doors ()
server_timer('devilcatacomb_45m_left_timer',60 * 15, d.get_map_index())
d.setf("enter_time", get_global_time())
end
end
when devilcatacomb_45m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 45))
server_timer('devilcatacomb_30m_left_timer', 60 * 15, get_server_timer_arg())
end
end
when devilcatacomb_30m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 30))
server_timer('devilcatacomb_15m_left_timer', 60 * 15, get_server_timer_arg())
end
end
when devilcatacomb_15m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 15))
server_timer('devilcatacomb_5m_left_timer', 60 * 10, get_server_timer_arg())
end
end
when devilcatacomb_5m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 5))
server_timer('devilcatacomb_1m_left_timer', 60 * 4, get_server_timer_arg())
end
end
when devilcatacomb_1m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 1))
server_timer ("devilcatacomb_0m_left_timer", 60 * 1, get_server_timer_arg())
end
end
when devilcatacomb_0m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice (gameforge.devilcatacomb_zone._210_dNotice)
d.set_warp_location (65, 5914, 992)
server_timer('devilcatacomb_exit_timer', 7, get_server_timer_arg())
end
end
function is_dc2_doors_clear ()
local setting = devilcatacomb_zone.setting()
local clear = true
for i = 1, 4 do
local set_clear = true
local mob_set = setting.dc2_door_set1[i]
local set_size = setting.dc2_door_set_size[i]
for j = 1, set_size do
set_clear = set_clear and d.is_unique_dead (i.."_1_"..j)
end
if not set_clear then
set_clear = true
mob_set = setting.dc2_door_set2[i]
for j = 1, set_size do
set_clear = set_clear and d.is_unique_dead (i.."_2_"..j)
end
end
clear = clear and set_clear
end
return clear
end
-- ÇöȲ¼®À» Ŭ¸¯Çϸé 3Ãþ ÁøÀÔ ¿©ºÎ¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ°í
-- ÁøÀԽà »ç½ÅÀÇÁõÇ¥¸¦ °Ë»çÇÑ´Ù.
-- »ç½ÅÀÇ ÁõÇ¥°¡ ¾ø´Ù¸é ¹ÛÀ¸·Î ¿öÇÁµÈ´Ù.
when devilcatacomb_floor2_stone.click begin
local setting = devilcatacomb_zone.setting()
if d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
if not devilcatacomb_zone.is_dc2_doors_clear () then
say(gameforge.devilcatacomb_zone._220_say)
wait ()
return
end
say(gameforge.devilcatacomb_zone._230_say)
wait()
say(gameforge.devilcatacomb_zone._240_say)
wait()
local s = select(gameforge.devilcatacomb_zone._150_select, gameforge.devilcatacomb_zone._160_select)
if s == 1 then
if d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
d.setf("devilcatacomb_floor2_stone_clicked", 1)
d.setqf2("devilcatacomb_zone","last_exit_time", get_global_time())
d.set_item_group ("reapers_credit", 3, setting.reapers_credit3, 1, setting.reapers_credit2, 1, setting.reapers_credit1, 1)
d.say_diff_by_item_group("reapers_credit", gameforge.devilcatacomb_zone._250_say, gameforge.devilcatacomb_zone._260_say)
timer ("devilcatacomb_floor3_enter_timer", 7)
end
end
else
say(gameforge.devilcatacomb_zone._270_say)
end
end
when devilcatacomb_floor3_enter_timer.timer begin
local setting = devilcatacomb_zone.setting()
d.set_warp_location (65, 5914, 992)
d.exit_all_by_item_group ("reapers_credit")
d.delete_item_in_item_group_from_all ("reapers_credit")
d.purge ()
d.jump_all (setting.floor3_entry.x + setting.base.x , setting.floor3_entry.y + setting.base.y)
d.setf("level",3)
d.setqf2("devilcatacomb_zone","level", 3)
d.regen_file (setting.mob_regen_file_path.."dc_3f_regen.txt")
timer("warp_timer",3)
local position = setting.floor3_stone_pos
local n = number(1,7)
for i = 1, 7 do
if (i != n)
then
d.set_unique("fake"..i, d.spawn_mob( setting.floor3_stone, position[i][1], position[i][2]))
end
end
local vid = d.spawn_mob( setting.floor3_stone, position[n][1], position[n][2])
d.set_unique ("real",vid)
if (is_test_server()) then
-- real stone pos
chat (position[n][1],position[n][2])
end
end
when devilcatacomb3_stone.kill begin
local setting = devilcatacomb_zone.setting()
-- µ¹ÀÌ ÆÄ±«µÇ¸é ÁøÂ¥°¡ Á×¾ú´ÂÁö È®ÀÎÇØº»´Ù.
-- ÁøÂ¥°¡ Á×¾úÀ¸¸é 4ÃþÀ¸·Î À̵¿ÇÑ´Ù.
if d.is_unique_dead("real") then
d.notice(gameforge.devilcatacomb_zone._280_dNotice)
d.setf ("level",4)
d.setqf2("devilcatacomb_zone","level", 4)
timer ("devilcatacomb_floor4_enter_timer", 3)
else
d.notice(gameforge.devilcatacomb_zone._290_dNotice)
end
end
when devilcatacomb_floor4_enter_timer.timer begin
local setting = devilcatacomb_zone.setting()
local i = number (1, 5)
timer("warp_timer",3)
d.purge ()
d.jump_all (setting.floor4_entry.x + setting.base.x , setting.floor4_entry.y + setting.base.y)
d.regen_file (setting.mob_regen_file_path.."dc_4f_regen.txt")
d.regen_file (setting.mob_regen_file_path..setting.floor4_regen_file[i])
if (is_test_server()) then
d.notice (setting.floor4_regen_file[i])
end
d.spawn_mob (setting.floor4_npc, setting.floor4_npc_pos[1], setting.floor4_npc_pos[2])
end
-- devilcatacomb_floor4_stone´Â Ŭ¸¯ ½Ã 4Ãþ¿¡¼* 5ÃþÀ¸·Î À̵¿½ÃŰ´Â npcÀÌ´Ù.
when devilcatacomb_floor4_stone.click begin
local setting = devilcatacomb_zone.setting()
local n = number (1,5)
say(gameforge.devilcatacomb_zone._300_say)
wait()
if (is_test_server()) then
-- devil_king pos
chat (setting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
end
d.purge ()
d.jump_all (setting.floor5_entry.x + setting.base.x, setting.floor5_entry.y + setting.base.y )
d.setf ("level",5)
d.setqf2("devilcatacomb_zone","level", 5)
timer("warp_timer",3)
d.regen_file (setting.mob_regen_file_path.."dc_5f_regen.txt")
d.spawn_mob (setting.devil_king, setting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
d.spawn_mob (setting.floor5_stone, setting.floor5_stone_pos[1], setting.floor5_stone_pos[2])
end
-- ¾Æ±Í¿Õ(2591)ÀÌ Á×À¸¸é ºÀÀÎÇØÃ¼¼® µå¶ø
when devilcatacomb_devil_king.kill begin
local setting = devilcatacomb_zone.setting()
game.drop_item (setting.unlock_stone, 1)
end
-- »ç½Å±ÝÁ¦ºñ(30102)¿¡ ±ÝÁ¦ÇØÃ¼¼®ºÀÀ» µå·¡±×ÇÏ¸é ¸ðµç ¸ó½ºÅ͸¦ Á×À̰í
-- 6ÃþÀ¸·Î À̵¿Çϴ ŸÀ̸Ӹ¦ µ¿ÀÛ½ÃŲ´Ù.
when devilcatacomb_floor5_stone.take begin
local setting = devilcatacomb_zone.setting()
if item.vnum == setting.unlock_stone then
item.remove ()
d.notice(gameforge.devilcatacomb_zone._310_dNotice)
-- 6ÃþÀ¸·Î À̵¿
d.clear_regen()
d.purge()
timer("devilcatacomb_floor6_timer",2)
end
end
when devilcatacomb_floor6_timer.timer begin
local setting = devilcatacomb_zone.setting()
d.setf("level",6)
d.setqf2("devilcatacomb_zone","level", 6)
d.jump_all (setting.floor6_entry.x + setting.base.x, setting.floor6_entry.y + setting.base.y )
d.regen_file (setting.mob_regen_file_path.."dc_6f_regen.txt")
d.spawn_mob (setting.devil_great_king, setting.devil_great_king_pos[1], setting.devil_great_king_pos[2])
timer("warp_timer",3)
end
-- ¾Æ°É(2597)ÀÌ Á×À¸¸é, 6ÃþÀÇ Å¸À̸Ó1ÀÌ µ¿ÀÛÇÑ´Ù.
when devilcatacomb_devil_great_king.kill begin
server_timer ("floor6_eli_check_timer_1", 5,d.get_map_index())
end
-- 6ÃþÀÇ Å¸À̸Ó1Àº ´øÀüÀÇ ¸ðµç ¸ó½ºÅÍ ¼ýÀÚ¸¦ º¸°í,
-- 0À̸é 7ÃþÀ¸·Î ¿öÇÁÇϴ ŸÀ̸Ӹ¦ µ¿ÀÛÇÑ´Ù.
-- ¹Ù·Î 7ÃþÀ¸·Î °¡Áö ¾Ê´Â ÀÌÀ¯´Â, À¯Àú¿¡°Ô ÁغñÇÒ ½Ã°£À» ÁÖ±â À§Çؼ*ÀÌ´Ù.
-- 1À̸é ŸÀ̸Ó2¸¦ µ¿ÀÛ½ÃŲ´Ù.
-- ŸÀ̸Ó1À» recursiveÇÏ°Ô µ¿ÀÛ½ÃŰÁö ¾ÊÀº °ÍÀº,
-- ±×·² °æ¿ì resetÇÑ Å¸À̸Ó1ÀÌ µ¿ÀÛÇÏÁö ¾Ê¾Ò±â ¶§¹®ÀÌ´Ù.
when floor6_eli_check_timer_1.server_timer begin
if d.select(get_server_timer_arg()) then
if d.count_monster() == 0 then
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
server_timer ("devilcatacomb_floor7_timer", 3, get_server_timer_arg())
else
server_timer ("floor6_eli_check_timer_2", 5, get_server_timer_arg())
end
end
end
when floor6_eli_check_timer_2.server_timer begin
if d.select(get_server_timer_arg()) then
if d.count_monster() == 0 then
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
server_timer("devilcatacomb_floor7_timer", 3, get_server_timer_arg())
else
server_timer ("floor6_eli_check_timer_1", 5, get_server_timer_arg())
end
end
end
when devilcatacomb_floor7_timer.server_timer begin
if d.select(get_server_timer_arg()) then
local setting = devilcatacomb_zone.setting()
d.setf("level",7)
d.setqf2("devilcatacomb_zone","level", 7)
d.jump_all (setting.floor7_entry.x + setting.base.x, setting.floor7_entry.y + setting.base.y )
d.regen_file (setting.mob_regen_file_path.."dc_7f_regen.txt")
d.spawn_mob (setting.devil_emperor, setting.devil_emperor_pos[1], setting.devil_emperor_pos[2])
server_timer ("devilcatacomb_floor7_say_timer", 2, get_server_timer_arg())
end
end
when devilcatacomb_floor7_say_timer.server_timer begin
if d.select(get_server_timer_arg()) then
local t = 3600 -(get_global_time() - d.getf("enter_time"))
local t_r = math.mod (t, 60)
local t_m = (t - t_r) / 60
d.notice(gameforge.devilcatacomb_zone._330_dNotice)
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, t_m))
d.set_warp_location (0, 0, 0)
end
end
-- 6Ãþ°ú ¸¶Âù°¡Áö·Î »ç¸¶ÈÖ(2598)ÀÌ Á×À¸¸é
-- 7ÃþÀÇ Å¸À̸Ӱ¡ ÀÛµ¿ÇÑ´Ù.
when devilcatacomb_devil_emperor.kill begin
server_timer ("floor7_eli_check_timer_1", 5, d.get_map_index())
end
-- 7ÃþÀÇ Å¸À̸Ӵ 6Ãþ ŸÀÌ¸Ó¿Í ºñ½ÁÇϸç,
-- ¸ó½ºÅÍ ¼ýÀÚ°¡ 0À̸é exit ŸÀ̸Ӹ¦ ¹ß»ý½ÃŲ´Ù.
-- ¹Ù·Î exitÇÏÁö ¾Ê´Â ÀÌÀ¯´Â, À¯Àúµé¿¡°Ô ÁغñÇÒ ½Ã°£À» ÁÖ±â À§Çؼ*ÀÌ´Ù.
when floor7_eli_check_timer_1.server_timer begin
if d.select(get_server_timer_arg()) then
if d.count_monster() == 0 then
d.set_warp_location (65, 5914, 992)
d.setqf2("devilcatacomb_zone","done", 1)
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
clear_server_timer ("devilcatacomb_0m_left_timer", get_server_timer_arg())
server_timer("devilcatacomb_exit_timer", 60, get_server_timer_arg())
else
server_timer ("floor7_eli_check_timer_2", 5, get_server_timer_arg())
end
end
end
when floor7_eli_check_timer_2.server_timer begin
if d.select(get_server_timer_arg()) then
if d.count_monster() == 0 then
d.set_warp_location (65, 5914, 992)
d.setqf2("devilcatacomb_zone","done", 1)
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
clear_server_timer ("devilcatacomb_0m_left_timer", get_server_timer_arg())
server_timer("devilcatacomb_exit_timer", 60, get_server_timer_arg())
else
server_timer ("floor7_eli_check_timer_1", 5, get_server_timer_arg())
end
end
end
when devilcatacomb_exit_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.setqf2("devilcatacomb_zone","level", 0)
d.setqf2("devilcatacomb_zone","last_exit_time", get_global_time())
clear_server_timer("devilcatacomb_5m_left_timer", get_server_timer_arg())
clear_server_timer("devilcatacomb_1m_left_timer", get_server_timer_arg())
clear_server_timer("devilcatacomb_0m_left_timer", get_server_timer_arg())
clear_server_timer("floor6_eli_check_timer_1", get_server_timer_arg())
clear_server_timer("floor6_eli_check_timer_2", get_server_timer_arg())
clear_server_timer("floor7_eli_check_timer_1", get_server_timer_arg())
clear_server_timer("floor7_eli_check_timer_2", get_server_timer_arg())
clear_server_timer("devilcatacomb_floor7_say_timer", get_server_timer_arg())
clear_server_timer("devilcatacomb_floor7_timer", 3, get_server_timer_arg())
d.clear_regen()
d.exit_all()
end
end
end --state
end --quest
|
|
|
02/12/2016, 17:39
|
#12178
|
elite*gold: 0
Join Date: Jun 2012
Posts: 340
Received Thanks: 114
|
Quote:
Originally Posted by Supermgking
when doesnt have begin-end clause. (()
Error occured on compile
quest truhen_zero begin
state start begin
when login or pc.get_level() >= 1 begin
set_state(truhen)
end
end
state truhen begin
when 50187.use begin
local item_vnum = 19 --Schwert+9
if pc.get_job() == 1 then
item_vnum = 1009 --Dolche+9
elseif pc.get_job() == 2 then
item_vnum = 19 --Schwert+9
elseif pc.get_job() == 3 then
item_vnum = 7009 --Fächer+9
end
pc.give_item2(item_vnum) --lvl 1er waffe je nach rasse
pc.give_item2(12209, 1)
pc.give_item2(12349, 1)
pc.give_item2(12489, 1)
pc.give_item2(12629, 1)
pc.give_item2(13009, 1)
pc.give_item2(17009, 1)
pc.give_item2(14009, 1)
pc.give_item2(15009, 1)
pc.give_item2(16009, 1)
pc.give_item2(11209, 1)
pc.give_item2(11409, 1)
pc.give_item2(11609, 1)
pc.give_item2(11809, 1)
pc.give_item2(50512, 1)
pc.give_item2(72728, 10) --Elixier des Mondes (M)
pc.give_item2(72724, 10) --Elixier der Sonne (M)
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.give_item2(70038, 200) --Tapferkeitsümhänge
pc.remove_item(50187, 1) --Lehrlingstruhe I verschwindet
end
when 50188.use with pc.get_level() >= 10 begin
pc.give_item2(72723, 1) --Elixier der Sonne (K)
pc.give_item2(27111, 3) --Grüner Trank(M)
pc.give_item2(27113, 3) --Geschwindigkeits Trank(K)
pc.give_item2(76008, 3) --Medaille des Drachen
pc.give_item2(50189, 1) --Lehrlingstruhe III
pc.remove_item(50188, 1) --Lehrlingstruhe II verschwindet
end
when 50189.use with pc.get_level() >= 20 begin
pc.give_item2(72727, 1) --Elixier des Mondes (K)
pc.give_item2(27111, 3) --Grüner Trank(M)
pc.give_item2(27113, 3) --Geschwindigkeits Trank(K)
pc.give_item2(76006, 1) --Kompass des Metinsteins
pc.give_item2(76024, 3) --Grüner Zauber
pc.give_item2(76025, 3) --Grüne Stärke
pc.give_item2(50190, 1) --Expertentruhe I
pc.remove_item(50189, 1) --Lehrlingstruhe III verschwindet
end
when 50190.use with pc.get_level() >= 30 begin
pc.give_item2(27113, 3) --Geschwindigkeits Trank(K)
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(25040, 5) --Segenschriftrollen
pc.give_item2(70003, 1) --Buch des Anführers
pc.give_item2(50191, 1) --Expertentruhe II
pc.remove_item(50190, 1) --Expertentruhe I verschwindet
end
when 50191.use with pc.get_level() >= 40 begin
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(71153, 1) --Trank der Weisheit
pc.give_item2(70003, 1) --Buch des Anführers
pc.give_item2(50192, 1) --Expertentruhe III
pc.remove_item(50191, 1) --Expertentruhe II verschwindet
end
when 50192.use with pc.get_level() >= 50 begin
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(70038, 20) --Tapferkeitsümhänge
pc.give_item2(71095, 5) --Passierschein
pc.give_item2(70058, 1) --Teleportationsring
pc.give_item2(50193, 1) --Meistertruhe I
pc.remove_item(50192, 1) --Expertentruhe III verschwindet
end
when 50193.use with pc.get_level() >= 60 begin
pc.give_item2(71032, 3) --Schriftrolle des Drachen
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(76000, 5) --Pfirsichblütenwein
pc.give_item2(50194, 1) --Meistertruhe II
pc.remove_item(50193, 1) --Meistertruhe I verschwindet
end
when 50194.use with pc.get_level() >= 70 begin
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(76001, 2) --Status-Neuverteilung
pc.give_item2(71084, 3) --Gegenstand verstärken
pc.give_item2(71085, 3) --Gegenstand verzaubern
pc.give_item2(50195, 1) --Meistertruhe III
pc.remove_item(50194, 1) --Meistertruhe II verschwindet
end
when 50195.use with pc.get_level() >= 80 begin
pc.give_item2(71101, 3) --Trank der Hast
pc.give_item2(27112, 3) --Trank des Angriffs
pc.give_item2(72728, 1) --Elixier des Mondes (M)
pc.give_item2(72728, 3) --Elixier des Forschers
pc.give_item2(50196, 1) --Großmeistertruhe
pc.remove_item(50195, 1) --Meistertruhe III verschwindet
end
when 50196.use with pc.get_level() >= 90 begin
pc.give_item2(39004, 1) --Segenskugel
pc.give_item2(72724, 1) --Elixier der Sonne (M)
pc.give_item2(76010, 3) --Blutstein
pc.give_item2(30319, 3) --Schrumpfkopf
pc.give_item2(50127, 1) --Grüne Zaubertruhe
pc.remove_item(50196, 1) --Großmeistertruhe verschwindet
end
end
end
|
Ändere mal folgenden Abschnitt ab local vnum ab:
PHP Code:
local item_vnum = 19
local item_vnum2 = 11979
local item_vnum3 = 12209
if pc.get_job() == 1 then
item_vnum = 1009
item_vnum2 = 11980
item_vnum3 = 12349
elseif pc.get_job() == 2 then
item_vnum2 = 11981
item_vnum3 = 12489
elseif pc.get_job() == 3 then
item_vnum = 7009
item_vnum2 = 11982
item_vnum3 = 12629
musst es halt anpassen.
|
|
|
02/15/2016, 10:36
|
#12179
|
elite*gold: 0
Join Date: Dec 2015
Posts: 121
Received Thanks: 18
|
Hallo Elitepvpers,
Ich suche jemanden, der mir diese Quest umschreiben kann.
PHP Code:
quest levelupitem begin
state start begin
when 30013.use begin
pc.give_exp2(pc.get_next_exp()-pc.get_exp())
pc.remove_item(30013,1)
end
end
end
Diese Quest soll folgende Funktionen haben
Sollte das Item angeklickt werden, wird der Spieler ein Level hochgestuft, jedoch sollte er immer 50% an Erfahrung haben.
Auch mit Level 105 sollte er 50% Erfahrung haben. ( Für Gilde Spenden )
Wäre sehr froh, wenn es jemand machen könnte.
|
|
|
02/15/2016, 12:29
|
#12180
|
elite*gold: 0
Join Date: Jul 2014
Posts: 547
Received Thanks: 1,048
|
Quote:
Originally Posted by .UNLTD.
Hallo Elitepvpers,
Ich suche jemanden, der mir diese Quest umschreiben kann.
PHP Code:
quest levelupitem begin
state start begin
when 30013.use begin
pc.give_exp2(pc.get_next_exp()-pc.get_exp())
pc.remove_item(30013,1)
end
end
end
|
Bin relativ neu dabei xd
Hab sie lediglich angepasst das man damit bis 105 durchleveln kann via EXP ( damit man Spenden kann ).
Die 123 EXP einfach durch die Anzahl ersetzen die man pro Klick erhalten soll^^
PHP Code:
quest levelupitem begin
state start begin
when 30013.use begin
if pc.get_level() >= 105 then
pc.remove_item(30013)
else
pc.give_exp2(123)
end
end
end
end
|
|
|
All times are GMT +1. The time now is 16:10.
|
|