|
You last visited: Today at 21:30
Advertisement
[SERVICE] Die Questkontrolle
Discussion on [SERVICE] Die Questkontrolle within the Metin2 Private Server forum part of the Metin2 category.
12/18/2014, 09:26
|
#10756
|
elite*gold: 83
Join Date: Nov 2013
Posts: 2,891
Received Thanks: 2,764
|
Quote:
Originally Posted by SuperBleifrei90
Geil vielen Dank hat Funktioniert.
Wie mache ich jetzt zb in dem Satz viel spaß wünscht euch...
das ß und das ü werden nicht so angezeigt wie die sollen^^
is aber jetzt überall so.
|
Kodierung auf "ANSI" stellen in Notepad++ und dann nochmal die Umlaute ersetzen und abspeichern
|
|
|
12/18/2014, 09:47
|
#10757
|
elite*gold: 0
Join Date: Jun 2008
Posts: 23
Received Thanks: 3
|
und nochmal vielen Dank =)
|
|
|
12/18/2014, 16:54
|
#10758
|
elite*gold: 0
Join Date: Jul 2011
Posts: 25
Received Thanks: 1
|
Devils Catacomb Run verändern
Devils Catacomb Run verändern
Ich will die 4.te Ebene Labyrinth überspringen oder das die Teleports gehen in der Map (weil sie funktionieren nicht) oder den Runenpfahl gleich so positionieren da wo ich geportet bin
Code:
quest devilscave begin
state start begin
--Konfiguration
when 20351.chat."DC Configuration!" with game.get_event_flag("block_dc_config") == 0 and pc.is_gm begin
game.set_event_flag("dc_is_ok",1)
game.set_event_flag("block_dc_config",1)
game.set_event_flag("dc_versuche",1)
end
--Eintritt fehlgeschlagen
--when 20351.chat."The Devils Catacomb" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 0 and pc.get_level() > 80 begin
--say_title("Wächter der Katakombe")
--say("")
--say_reward("Du darfst noch nicht in die Devils Catacomb!")
--say("")
--say_reward("Bring mir ein Sensenmannrelikt zieh es einfach auf mich!")
--say_reward("und du darfst Passieren!")
--end
--when 20351.chat."Devils Catacomb (lv.80)" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 1 and pc.get_level() < 80 begin
--say_title("Wächter der Katakombe")
--say("")
--say_reward("Du bist noch zu Schwach!")
--say("")
--end
--Sensenmannrelikt Abgabe!
--when 20351.take with item.vnum == 30315 and pc.getqf("can_in_dc") == 0 begin
--if pc.get_level() < 80 then
--say_title("Wächter der Katakombe")
--say("")
--say_reward("Du musst lv.80 sein um ein Sensenmannrelikt abzugeben!")
--say("")
--else
--item.remove()
--say_title("Wächter der Katakombe")
--say("")
--say_reward("Du darfst nun die Devils Catacomb betreten!")
--say("")
--pc.setqf("can_in_dc", 1)
--end
--end
--Eintritt
when 20351.chat."The Devils Catacomb" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 0 begin
if pc.get_level() < 80 then
say_title("Wächter der Katakombe")
say("")
say_reward("Du bist noch zu schwach für die Katakomben!")
say("")
else
say_title("Wächter der Katakombe")
say("")
say("Bisher haben "..game.get_event_flag("dcgamer").." Soldaten es versucht ")
say("und "..game.get_event_flag("dc_geschaft").." haben es tatsächlich geschaft")
say("Azrael zu besiegen!")
wait()
say_title("Wächter der Katakombe")
say("")
say_reward("Willst du es versuchen?")
say_reward("du wärst der "..game.get_event_flag("dc_versuche")..". Kämpfer der es")
say_reward("versucht!")
say("")
pc.setqf("Ebene", 1)
local dc_login = select("Betreten", "Abbrechen")
if dc_login == 1 then
pc.warp(415200, 4209200)
elseif dc_login == 2 then
return
end
end
end
--Ebene 1
when login with pc.get_map_index() == 209 begin
game.set_event_flag(("dcgamer"), game.get_event_flag("dcgamer")+1)
game.set_event_flag(("dc_versuche"), game.get_event_flag("dc_versuche")+1)
if pc.getqf("Ebene") == 1 then
say_title("Devils Catacomb")
say("Um in die 2.Ebene zu kommen, musst du")
say_item("Seelenkristall-Schlüssel", 30311, "")
say("auf die Statue des Kud ziehen!")
say("Du droppst ihn bei den Monstern.")
say("Ihr habt ingesamt 90 Minuten Zeit!")
say("")
say_reward("Viel Glück!")
say("")
timer("dc10", 600)
pc.setqf("sksgedroppt", 0)
else
warp_all_to_village()
end
end
when kill with not npc.is_pc() and pc.get_map_index() == 209 begin
local sks = number(1,15)
if sks==1 and pc.getqf("sksgedroppt")==0 then
pc.setqf("sksgedroppt", 1)
chat("Du hast den Seelenkristall-Schlüssel gedroppt!")
game.drop_item(30311, 1)
else
chat("Dieses Monster hatte keinen Schlüssel.")
end
end
when 30101.take with item.vnum == 30311 begin
chat("Du wirst jetzt in die 2. Ebene gebracht.")
pc.remove_item("30311")
d.new_jump_all(209, 4632, 42082)
d.regen_file("data/dungeon/devilcave/dc_regen_ebene2.txt")
d.regen_file("data/dungeon/devilcave/dc_regen_tore_unten.txt")
d.regen_file("data/dungeon/devilcave/dc_regen_tore_left.txt")
d.spawn_mob(30103, 741, 221)
d.setf("Ebene", 2)
end
when login with pc.in_dungeon() begin
if d.getf("Ebene") == 2 then
chat("Ihr befindet euch jetzt in der 2. Ebene!")
chat("Schlagt euch zum Schildkrötenfels durch!")
chat("Ihr habt nur 10 minuten Zeit!")
timer("dc1", 600)
end
if d.getf("Ebene") == 3 then
chat("Findet und zerstört den richtigen Metin der Vergeltung.")
chat("Ihr habt 20 Minuten Zeit.")
timer("dc2", 1200)
end
if d.getf("Ebene") == 4 then
chat("Findet den Weg aus dem Labyrinth.")
chat("Und findet die Inschrift am Runenpfahl.")
chat("Ihr habt 15 Minuten Zeit.")
timer("dc3", 900)
d.spawn_mob(30104, 500, 800)
d.spawn_mob(10800, 328, 779)
d.spawn_mob(10801, 70, 672)
d.spawn_mob(10802, 142, 865)
d.spawn_mob(10803, 433, 935)
d.spawn_mob(10804, 243, 854)
d.spawn_mob(10805, 182, 667)
end
if d.getf("Ebene") == 5 then
chat("Findet und tötet Tartaros um das Fratzen-Totem zu bekommen!")
chat("Zieht es anschließend auf den Basalt-Obelisk auf dem Berg.")
chat("Ihr habt 15 Minuten Zeit.")
timer("dc4", 900)
d.spawn_mob(30104, 500, 800)
end
if d.getf("Ebene") == 6 then
chat("Tötet Charon um zur letzten Ebene zu kommen!")
chat("Ihr habt 15 Minuten Zeit.")
timer("dc5", 900)
d.spawn_mob(30104, 500, 800)
end
if d.getf("Ebene") == 7 then
chat("Tötet Azrael und setzt dem Unheil ein Ende!")
chat("Ihr habt 15 Minuten Zeit!")
timer("dc6", 900)
d.spawn_mob(30104, 500, 800)
end
end
when dc1.timer begin
chat("Die Zeit ist Abgelaufen!")
warp_all_to_village( pc.get_map_index() , 5 )
end
when dc10.timer begin
chat("Ihr habt noch 80 Minuten Zeit, Azrael zu finden und zu töten!")
timer("dc20", 600)
end
when dc20.timer begin
chat("Ihr habt noch 70 Minuten zeit!")
timer("dc30", 600)
end
when dc30.timer begin
chat("Ihr habt noch 60 Minuten zeit!")
timer("dc40", 600)
end
when dc40.timer begin
chat("Ihr habt noch 50 Minuten zeit!")
timer("dc50", 600)
end
when dc50.timer begin
chat("Ihr habt noch 40 Minuten zeit!")
timer("dc60", 600)
end
when dc60.timer begin
chat("Ihr habt noch 30 Minuten zeit!")
timer("dc70", 600)
end
when dc70.timer begin
chat("Ihr habt noch 20 Minuten zeit!")
timer("dc80", 600)
end
when dc80.timer begin
chat("Ihr habt noch 10 Minuten zeit!")
timer("dc110", 600)
end
when dc110.timer begin
chat("Die Zeit ist Abgelaufen!")
warp_all_to_village( pc.get_map_index() , 5 )
end
--Ebene 2
when 30103.chat."Weiter zur 3. Ebene" begin
npc.purge()
say_reward("Inschrift:")
say("Es ist noch ein weiter weg.")
wait()
d.new_jump_all(209, 5427, 42282)
d.setf("Ebene", 3)
d.regen_file("data/dungeon/devilcave/dc_regen_ebene3.txt")
local metindv = number(1,4)
if metindv==1 then
d.spawn_mob(8029, 1351, 348)
d.spawn_mob(8029, 1148, 350)
d.spawn_mob(8029, 1151, 155)
d.spawn_mob(8032, 1351, 149)
end
if metindv==2 then
d.spawn_mob(8029, 1351, 348)
d.spawn_mob(8029, 1148, 350)
d.spawn_mob(8032, 1151, 155)
d.spawn_mob(8029, 1351, 149)
end
if metindv==3 then
d.spawn_mob(8029, 1351, 348)
d.spawn_mob(8032, 1148, 350)
d.spawn_mob(8029, 1151, 155)
d.spawn_mob(8029, 1351, 149)
end
if metindv==4 then
d.spawn_mob(8032, 1351, 348)
d.spawn_mob(8029, 1148, 350)
d.spawn_mob(8029, 1151, 155)
d.spawn_mob(8029, 1351, 149)
end
end
when 8029.kill with pc.in_dungeon() begin
chat("Ein Falscher Metin wurde zerstört.")
end
when 8032.kill with pc.in_dungeon() begin
chat("Der richtige Metin wurde zerstört.")
chat("Ihr kommt nun in die 4. Ebene.")
timer("devils_catacomb_goto_ebene4", 2)
end
when dc2.timer begin
chat("Die Zeit ist Abgelaufen!")
warp_all_to_village( pc.get_map_index() , 5 )
end
--Ebene 4 (Labyrinth)
when devils_catacomb_goto_ebene4.timer begin
d.new_jump_all(209, 4143, 42657)
d.setf("Ebene", 4)
end
when 30104.chat."Inschrift" with pc.in_dungeon() begin
say_title("Ihr seid schon ziemlich weit gekommen.")
timer("dc3", 6000)
chat("Ihr habt den richtigen Weg gefunden.")
chat("Ihr kommt jetzt in die 5. Ebene.")
timer("devils_catacomb_goto_ebene5", 5)
end
when dc3.timer begin
chat("Die Zeit ist Abgelaufen!")
warp_all_to_village( pc.get_map_index() , 5 )
end
--Ebene 6 (Tartaros)
when devils_catacomb_goto_ebene5.timer begin
d.new_jump_all(209, 4917, 42925)
d.spawn_mob(30102, 848, 739)
d.setf("Ebene", 5)
d.regen_file("data/dungeon/devilcave/dc_regen_ebene5.txt")
local tartaros = number(1,4)
if tartaros==1 then
d.spawn_mob(2593, 991, 848)
end
if tartaros==2 then
d.spawn_mob(2593, 999, 652)
end
if tartaros==3 then
d.spawn_mob(2593, 848, 577)
end
if tartaros==4 then
d.spawn_mob(2593, 703, 644)
end
if tartaros==5 then
d.spawn_mob(2593, 692, 817)
end
end
when 2593.kill with pc.in_dungeon() begin
chat("Tartaros wurde besiegt und das Fratzen-Totem wurde Fallengelassen!")
chat("Begebt euch mit dem Fratzen-Totem auf den Berg in der Mitte.")
game.drop_item(30313, 1)
end
when 30102.take with item.vnum == 30313 begin
timer("dc4", 6000)
item.remove()
npc.purge()
say_reward("...")
chat("Ihr werdet jetzt in die 6. Ebene gebracht.")
timer("devils_catacomb_goto_ebene6", 5)
end
when dc4.timer begin
chat("Die Zeit ist Abgelaufen!")
warp_all_to_village( pc.get_map_index() , 5 )
end
--Ebene 7 (Charon)
when devils_catacomb_goto_ebene6.timer begin
d.new_jump_all(209, 5422, 42782)
d.setf("Ebene", 6)
d.regen_file("data/dungeon/devilcave/dc_regen_ebene6.txt")
end
when 2597.kill with pc.in_dungeon() begin
timer("dc5", 6000)
d.kill_all()
chat("Ihr habt Charon besiegt!")
chat("Bereitet euch auf den Kampf mit Azrael vor!")
timer("devils_catacomb_goto_ebene7", 10)
end
when dc5.timer begin
chat("Die Zeit ist Abgelaufen!")
warp_all_to_village( pc.get_map_index() , 5 )
end
--Ebene 8 (Azrael)
when devils_catacomb_goto_ebene7.timer begin
d.new_jump_all(209, 4147, 43191)
d.setf("Ebene", 7)
d.regen_file("data/dungeon/devilcave/dc_regen_ebene7.txt")
end
when 2598.kill with pc.in_dungeon() begin
game.set_event_flag(("dc_geschaft"), game.get_event_flag("dc_geschaft")+1)
local level = pc.get_level()
chat("Ihr habt ihn Besiegt und das Böse vertrieben.")
chat("Ihr werdet in 2 Minuten herrausteleportiert!")
chat("Sammelt schnell die Schätze ein, bevor es zu spät ist.")
d.kill_all()
d.kill_all()
notice_all("Die Gruppe von "..pc.get_name().." hat Azrael besiegt!")
timer("goout_from_dc", 120)
d.spawn_mob(9012, 74, 1159)
end
when dc6.timer begin
chat("Die Zeit ist Abgelaufen!")
warp_all_to_village( pc.get_map_index() , 5 )
end
when goout_from_dc.timer begin
warp_all_to_village( pc.get_map_index() , 3 )
end
end
end
PS falls ihr ein fehler findet bitte schnell melden
Das mit dem Sensenmannrelikt funktioniert leider auch nicht also abgeben
|
|
|
12/18/2014, 23:02
|
#10759
|
elite*gold: 500
Join Date: Nov 2011
Posts: 173
Received Thanks: 4
|
Habe mal 2 Fragen:
1) Kann man in eine Questflag einen String speichern?
2) Kann man eine Variable anlegen, die nicht "local" ist sondern eine art public/static? D.h. das man überall in der Quest darauf zugreifen kann, egal in welcher state man sich befindet.
|
|
|
12/19/2014, 12:04
|
#10760
|
elite*gold: 0
Join Date: May 2010
Posts: 294
Received Thanks: 157
|
1. ja
setvarchar
getvarchar
2. ja zb
global_setvarchar
global_getvarchar
game.get_event_flag
game.set_event_flag
|
|
|
12/19/2014, 13:44
|
#10761
|
elite*gold: 313
Join Date: Apr 2013
Posts: 585
Received Thanks: 122
|
# selbst gelöst.
|
|
|
12/20/2014, 15:15
|
#10762
|
elite*gold: 0
Join Date: Nov 2011
Posts: 1,448
Received Thanks: 1,257
|
Quote:
Originally Posted by Rextrus
Kennt jemand nen MySQL Befehl, um z.B. die drei Lagerseiten für einen Account zu aktivieren? (:
|
Es ist ein vollständiger Relog von Nöten damit das klappt.
Code:
quest lagertruhe begin
state start begin
when 35003.use begin
local WielangesolldasLagerbleibenZeit = 300 -- In Sekunden ( i.d.f 5 Min)
local ts = os.time() + WielangesolldasLagerbleibenZeit
local str = os.date("%Y-%m-%d %H:%M:%S", ts) -- Timestamp
mysql_query("UPDATE account.account SET safebox_expire = '"..str.."' WHERE id='"..pc.get_account_id().."';")
item.remove()
end
end
end
|
|
|
12/20/2014, 23:28
|
#10763
|
elite*gold: 0
Join Date: Jul 2014
Posts: 201
Received Thanks: 40
|
Sd3 Bruhthöhle QUest funktioniert nicht ganz
hallo,
habe folgendes problem wenn ich den npc (30130) anspreche meint er ich brauche den Arachnidenschlüssel damit ich in die bruhthöhle komme.
habe in der quest geschaut welche vnum das ist habe serverside 2 von den schüsseln habe beide probiert doch immer steht da "um das tor zu öffnen brauchst du den arachnidenschlüssel" obwohl ich einen habe. kann mir da bitte wer helfen?
Arachnidenschlüssel code: 30324
Code:
quest spider_dungeon_3floor_boss begin
state start begin
--2, ´øÀü ³¡ ½Ã°£.
when spider_end_timer.server_timer with game.get_event_flag("spider_dead"..get_channel_id()) == 0 begin --
warp_all_in_area_to_area(82700, 612700, 93700,625700, 69100, 614800, 69100, 614800)
game.set_event_flag("spider_lair_ongoing_"..get_channel_id(),0)
game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
game.set_event_flag("spider_dead"..get_channel_id(),0)
purge_area(82700, 612700, 93700,625700)
end
when spider_dead_timer.server_timer begin
warp_all_in_area_to_area(82700, 612700, 93700,625700, 69100, 614800, 69100, 614800)
game.set_event_flag("spider_lair_ongoing_"..get_channel_id(), 0)
game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
game.set_event_flag("spider_dead"..get_channel_id(),0)
purge_area(82700, 612700, 93700,625700)
end
when login or levelup or enter with pc.get_level() >= 50 begin
set_state( step1 )
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
end
state step1 begin
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --Å×½ºÆ®¿ë
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._50_npcChat begin --°æºñ´ëÀå¿¡°Ô ¸»À» °É¾î Äù½ºÆ®¸¦ ½ÃÀÛÇÑ´Ù.
say_title(mob_name(20355))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._60_say)
set_state( step2 )
pc.give_item2(76019)
end
end
state step2 begin --ºñ¼®¿¡ Źº»À» ¶ß·¯ °¡¾ßÇÑ´Ù.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --Å×½ºÆ®¿ë
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
-----------Äù½ºÆ®ÆíÁö2------------
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._70_sendLetter)
local v = find_npc_by_vnum(30130)
if 0 != v then
target.vid("__TARGET__", v, mob_name(30130))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._70_sendLetter)
say(gameforge.spider_dungeon_3floor_boss._80_say)
say("")
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._70_sendLetter begin
target.delete("__TARGET__")
say_title(pc.getname())
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._90_say)
set_state(step3)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._50_npcChat begin
say_title(mob_name(20355))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._100_say)
end
end
state step3 begin --Źº»À» ¶¹À¸´Ï °æºñ¿¡°Ô µ¹¾Æ°£´Ù.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --Å×½ºÆ®¿ë
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
--°æºñ´ëÀåÀ» °¡¸®Å²´Ù.
local v = find_npc_by_vnum(20355)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20355))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
say(gameforge.spider_dungeon_3floor_boss._120_say)
say("")
end
--À»µÎÁö¸¦ ¼±ÅÃÇϸé ÇØ´ç Äù½ºÆ®¿¡ °ü·ÃµÈ ´ëÈ*¸¦ ³ª´* ¼ö ÀÖ´Ù.
when 20355.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
say_title(mob_name(20355))
say(gameforge.spider_dungeon_3floor_boss._130_say)
set_state(step4)
end
end
state step4 begin --À»µÎÁö¿¡°Ô Źº»À» ¸Ã±âÀÚ.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --Å×½ºÆ®¿ë
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
-----------Äù½ºÆ®ÆíÁö2------------
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
-- À»µÎÁö¸¦ °¡¸®Å²´Ù.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
say(gameforge.spider_dungeon_3floor_boss._140_say)
say("")
end
when 20011.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._150_say)
say("")
set_state(step5)
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
say_title(mob_name(20355))
say(gameforge.spider_dungeon_3floor_boss._130_say)
end
end
state step5 begin --°æºñÇÑÅ× ÆíÁö ¹è´Þ
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --Å×½ºÆ®¿ë
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._110_sendLetter)
-- À»µÎÁö¸¦ °¡¸®Å²´Ù.
local v = find_npc_by_vnum(20355)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20355))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._170_sayTitle)
say(gameforge.spider_dungeon_3floor_boss._180_say)
say("")
end
when 20355.chat.gameforge.spider_dungeon_3floor_boss._190_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20355))
----"12345678901234567890123456789012345678901234567890"|
say(gameforge.spider_dungeon_3floor_boss._200_say)
say("")
set_state(step6) pc.give_item2(76019)
end
when 20011.chat.gameforge.spider_dungeon_3floor_boss._110_sendLetter begin
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._160_say)
say("")
end
end
state step6 begin --°æºñ´Â ³ª¸¸ ÀϽÃŲ´Ù. À»µÎÁö¿Í »óÀÇÇÏÀÚ.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --Å×½ºÆ®¿ë
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
say(gameforge.spider_dungeon_3floor_boss._20_say)
end
when letter begin
send_letter(gameforge.spider_dungeon_3floor_boss._190_npcChat)
-- À»µÎÁö¸¦ °¡¸®Å²´Ù.
local v = find_npc_by_vnum(20011)
if 0 != v then
target.vid("__TARGET__", v, mob_name(20011))
end
end
when button or info begin
say_title(gameforge.spider_dungeon_3floor_boss._190_npcChat)
say(gameforge.spider_dungeon_3floor_boss._200_say)
say("")
end
--À»µÎÁö¸¦ ¼±ÅÃÇϸé ÇØ´ç Äù½ºÆ®¿¡ °ü·ÃµÈ ´ëÈ*¸¦ ³ª´* ¼ö ÀÖ´Ù.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._190_npcChat begin
target.delete("__TARGET__")
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._230_say)
set_state(boss_ok)
end
end
state boss_ok begin -- ¿*¼è¸¦ ¸¸µé¼ö ÀÖ°Ô µÈ ÃÖÁ¾»óÅÂ. ÀÌÁ¦ºÎÅÍ °Å¹Ì±¼ º¸½º·ë¿¡ ÀÔÀåÇÒ ¼ö ÀÖ´Ù.
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --Å×½ºÆ®¿ë
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when 20011.chat.gameforge.spider_dungeon_3floor_boss._210_npcChat begin
if pc.count_item(30025) > 0 and pc.count_item(30056) > 0 and pc.count_item(30057) > 0 and pc.count_item(30058) > 0 and pc.count_item(30059) > 0 and pc.count_item(30326) > 0 then
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._250_say)
pc.remove_item(30025, 1)
pc.remove_item(30056, 1)
pc.remove_item(30057, 1)
pc.remove_item(30058, 1)
pc.remove_item(30059, 1)
pc.remove_item(30326, 1)
if math.random(1,2000) <= 1000 then
say(gameforge.spider_dungeon_3floor_boss._260_say)
pc.give_item2(30324, 1)
else
say(gameforge.spider_dungeon_3floor_boss._270_say)
end
else
say_title(mob_name(20011))
say(gameforge.spider_dungeon_3floor_boss._280_say)
end
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
if game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
local starttime = game.get_event_flag("spider_lair_start_time_"..get_channel_id())
local current_time = get_global_time()
if party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
if starttime + lair_enter_wait_time >= current_time and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) and game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
say(gameforge.spider_dungeon_3floor_boss._300_say) -- Å×½ºÆ®¿ë
local warp = select(locale.confirm,locale.cancel)
if warp == 1 then
pc.setqf("firstIn",1)
pc.setqf("retry_limit_time", starttime + lair_time + access_limit_time )
set_state(inLair)
pc.warp(88100,614800)
return
end
else
say(gameforge.spider_dungeon_3floor_boss._310_say) -- Å×½ºÆ®¿ë
return
end
else
local remain_time = (game.get_event_flag("spider_lair_end_time_"..get_channel_id() ) - get_global_time()) / 60
if remain_time < 0 then
say(gameforge.spider_dungeon_3floor_boss._410_say)
game.set_event_flag("spider_lair_ongoing_"..get_channel_id(),0)
game.set_event_flag("spider_lair_leader_"..get_channel_id(), 0)
game.set_event_flag("spider_dead"..get_channel_id(),0)
return
end
say(gameforge.spider_dungeon_3floor_boss._320_say)
--- here we should change to string.format %s key
say(string.format(gameforge.spider_dungeon_3floor_boss._330_say, math.ceil(remain_time)))
return
end
elseif pc.getqf("retry_limit_time") > get_global_time() then
local access_limit = (pc.getqf("retry_limit_time") - get_global_time()) / 60
say(gameforge.spider_dungeon_3floor_boss._340_say)
-- here we should also change to string.format %s key
say(string.format(gameforge.spider_dungeon_3floor_boss._350_say, math.ceil(access_limit)))
return
elseif party.is_leader() then
if false == pc.can_warp() then
say(gameforge.spider_dungeon_3floor_boss._360_say)
return
end
say(gameforge.spider_dungeon_3floor_boss._370_say)
local warp = select(locale.confirm,locale.cancel)
if warp == 1 then
set_state(inLair)
pc.remove_item(30324, 1)
mob.spawn(2094,369,551,0,0)
--°ª ¼³Á¤.
game.set_event_flag("spider_lair_ongoing_"..get_channel_id() , 1)
game.set_event_flag("spider_lair_start_time_"..get_channel_id() , get_global_time())
game.set_event_flag("spider_lair_end_time_"..get_channel_id() , get_global_time() + lair_time)
game.set_event_flag("spider_lair_leader_"..get_channel_id() , party.get_leader_pid())
pc.setqf("retry_limit_time", get_global_time() + lair_time + access_limit_time )
pc.setqf("firstIn",1)
server_timer("spider_end_timer", lair_time )
pc.warp(88100,614800)
end
return
else
say(gameforge.spider_dungeon_3floor_boss._380_say)
return
end
else --¸®´õ ¾Æ´Ï´Ù.
say(gameforge.spider_dungeon_3floor_boss._390_say)
return
end
end
end
state inLair begin
when 20011.chat.gameforge.spider_dungeon_3floor_boss._30_npcChat with is_test_server() begin --Å×½ºÆ®¿ë
set_state(start)
say(gameforge.spider_dungeon_3floor_boss._40_say)
end
when login begin
-- Á¤»óÀûÀ¸·Î º¸½º·ë¿¡ ÀÔÀå.
--if pc.getqf("firstIn") == 1 and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
if get_global_time() < pc.getqf("retry_limit_time") - access_limit_time and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
pc.setqf("firstIn",0)
elseif pc.getx() >= 827 and pc.getx() <= 937 and pc.gety() >= 6127 and pc.gety() <= 6257 then
pc.warp(95900,571000)
pc.remove_item(30327, 1)
else -- À§¿¡¼* ÆÃ°Ü³½ À¯Àú°¡ ¹Û¿¡¼* ·Î±×ÀÎ ÇÏ°Ô µÇ¸é, Á¢±Ù Á¦ÇÑ ½Ã°£À» ¼ÂÆÃÇØÁÜ.
pc.remove_item(30327, 1)
set_state( boss_ok )
local limit = pc.getqf("retry_limit_time")
if limit > ( get_global_time() + access_limit_time ) then
limit = ( get_global_time() + access_limit_time )
end
pc.setqf("retry_limit_time", limit )
local duration = limit - get_global_time()
end
end
when 30130.chat.gameforge.spider_dungeon_3floor_boss._10_npcChat begin
if game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
local starttime = game.get_event_flag("spider_lair_start_time_"..get_channel_id())
local current_time = get_global_time()
if party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) then
if starttime + lair_enter_wait_time >= current_time and party.get_leader_pid() == game.get_event_flag("spider_lair_leader_"..get_channel_id()) and game.get_event_flag("spider_lair_ongoing_"..get_channel_id()) == 1 then
say(gameforge.spider_dungeon_3floor_boss._300_say) -- Å×½ºÆ®¿ë
local warp = select(locale.confirm,locale.cancel)
if warp == 1 then
pc.warp(88100,614800)
return
end
end
end
end
end
when 2092.kill begin --´ë¿Õ°Å¹Ì Á×ÀÓ
server_timer("spider_dead_timer", king_kill_wait_time)
game.set_event_flag("spider_dead"..get_channel_id(), 1)
notice_multiline(gameforge.spider_dungeon_3floor_boss._400_say,notice_in_map)
end
when 2095.kill begin --°Å¹Ì¾Ë Á×ÀÓ
local kingVid = game.get_event_flag("king_vid")
local remain_egg = game.get_event_flag("remain_egg"..get_channel_id())
notice_multiline(gameforge.spider_dungeon_3floor_boss._420_notice,notice_in_map)
if remain_egg > 0 then
remain_egg = remain_egg - 1
game.set_event_flag("remain_egg"..get_channel_id(), remain_egg)
end
--°Å¹ÌÀÇ °ø°Ý·Â º¸Á¤
npc.set_vid_attack_mul(kingVid, 10/(remain_egg + 1))
--°Å¹Ì°¡ ¹Þ´Â ÇÇÇØ·® º¸Á¤
npc.set_vid_damage_mul(kingVid, 10/(remain_egg + 1))
end
-- 2012.4.5 ÀÌ»óÇö ¸®Á¨À§Ä¡ ¼öÁ¤
when 30327.use with pc.getx() >= 827 and pc.get_map_index() == 217 and pc.getx() <= 937 and pc.gety() >= 6127 and pc.gety() <= 6257 begin
--say("¸Ê¹øÈ£ : "..pc.get_map_index())
pc.remove_item(30327, 1)
i = mob.spawn(2095,400,566,0,0)
mob.spawn(2095,400,594,0,0)
mob.spawn(2095,362,600,0,0)
mob.spawn(2095,337,599,0,0)
mob.spawn(2095,335,581,0,0)
mob.spawn(2095,344,562,0,0)
mob.spawn(2095,364,588,0,0)
mob.spawn(2095,379,562,0,0)
mob.spawn(2095,368,525,0,0)
local kingVid = mob.spawn(2092,367,588,0,0)
game.set_event_flag("king_vid",kingVid)
--game.set_event_flag("remain_egg",9)
game.set_event_flag("remain_egg"..get_channel_id(), 9)
end
end
end
|
|
|
12/21/2014, 11:36
|
#10764
|
elite*gold: 0
Join Date: Sep 2011
Posts: 194
Received Thanks: 5
|
Drop Quest
Hallo,
Wenn ich die Urkunden-Drop quest bei Putty lade kommt folgender Fehler:
Code:
with pc . get_gm_level ( ) == 5
QUEST : event_2
STATE : start
WHEN : 20001.chat ("Urkunden-Drop")
with pc . is_gm ( )
Error occured on compile Events/urkunden.quest
QUEST:
Code:
quest event_2 begin
state start begin
when 20001.chat."Urkunden-Drop" with pc.is_gm() begin
if game.get_event_flag("event_2") != 1 then
say_title("Urkunden-Drop")
say("")
say_reward("Das Urkunden-Drop Event ist Aus")
say_reward("Moechtest du es Starten?")
local a = select("Ja", "Nein")
if a == 1 then
say_title("Urkunden-Drop")
say_reward("Wie lange soll das Event gehen?")
say_reward("Laenge in Stunden eingeben: ")
zeit = input()
if zeit == '' then
return
else
zeit_h = tonumber(zeit)
say_title("Urkunden-Drop")
say("")
say_reward("Moechtest du das Event für "..zeit_h.." Stunden laufen lassen?")
local b = select("Ja", "Nein")
if b == 1 then
server_timer("event_zeit", zeit_h*60*60)
game.set_event_flag("event_2", 1)
notice_all("Das Power Mount Urkunden Event hat gestartet!
notice_all("Ihr Droppt nun von allen Mobs die Urkunden.")
else
return
end
end
else
return
end
else
say_title("Urkunden-Drop")
say("")
say_reward("Das Urkunden-Drop Event ist An")
say_reward("Moechtest du es Anhalten?")
local c = select("Ja", "Nein")
if c == 1 then
game.set_event_flag("event_2", 0)
notice_all("Das Power Mount Urkunden Event wurde beendet!")
else
return
end
end
end
when event_zeit.server_timer with game.get_event_flag("event_2") != 0 begin
game.set_event_flag("event_2", 0)
notice_all("Das Power Mount Urkunden Event wurde beendet!")
end
when kill with game.get_event_flag("event_2") == 1 and not npc.is_pc() begin
local s=number(1, 250)
if 5 == s then
game.drop_item_with_ownership(52701,1)
game.drop_item_with_ownership(52702,1)
game.drop_item_with_ownership(52703,1)
game.drop_item_with_ownership(52704,1)
end
end
end
end
|
|
|
12/21/2014, 11:48
|
#10765
|
elite*gold: 54
Join Date: Jan 2013
Posts: 518
Received Thanks: 354
|
Du hast vergessen, bei einem "say" Text die Klammer zu schließen (:
PHP Code:
quest event_2 begin state start begin when 20001.chat."Urkunden-Drop" with pc.is_gm() begin if game.get_event_flag("event_2") != 1 then say_title("Urkunden-Drop") say("") say_reward("Das Urkunden-Drop Event ist Aus") say_reward("Moechtest du es Starten?") local a = select("Ja", "Nein") if a == 1 then say_title("Urkunden-Drop") say_reward("Wie lange soll das Event gehen?") say_reward("Laenge in Stunden eingeben: ") zeit = input() if zeit == '' then return else zeit_h = tonumber(zeit) say_title("Urkunden-Drop") say("") say_reward("Moechtest du das Event für "..zeit_h.." Stunden laufen lassen?") local b = select("Ja", "Nein") if b == 1 then server_timer("event_zeit", zeit_h*60*60) game.set_event_flag("event_2", 1) notice_all("Das Power Mount Urkunden Event hat gestartet!")--Die Klammer fehlte notice_all("Ihr Droppt nun von allen Mobs die Urkunden.") else return end end else return end else say_title("Urkunden-Drop") say("") say_reward("Das Urkunden-Drop Event ist An") say_reward("Moechtest du es Anhalten?") local c = select("Ja", "Nein") if c == 1 then game.set_event_flag("event_2", 0) notice_all("Das Power Mount Urkunden Event wurde beendet!") else return end end end when event_zeit.server_timer with game.get_event_flag("event_2") != 0 begin game.set_event_flag("event_2", 0) notice_all("Das Power Mount Urkunden Event wurde beendet!") end when kill with game.get_event_flag("event_2") == 1 and not npc.is_pc() begin local s=number(1, 250) if 5 == s then game.drop_item_with_ownership(52701,1) game.drop_item_with_ownership(52702,1) game.drop_item_with_ownership(52703,1) game.drop_item_with_ownership(52704,1) end end end end
|
|
|
12/21/2014, 11:48
|
#10766
|
elite*gold: 26
Join Date: Mar 2010
Posts: 3,765
Received Thanks: 2,661
|
Das offensichtliche zuerst:
Dir haben in einer Zeile ") gefehlt
PHP Code:
quest event_2 begin state start begin when 20001.chat."Urkunden-Drop" with pc.is_gm() begin if game.get_event_flag("event_2") != 1 then say_title("Urkunden-Drop") say("") say_reward("Das Urkunden-Drop Event ist Aus") say_reward("Moechtest du es Starten?") local a = select("Ja", "Nein") if a == 1 then say_title("Urkunden-Drop") say_reward("Wie lange soll das Event gehen?") say_reward("Laenge in Stunden eingeben: ") zeit = input() if zeit == '' then return else zeit_h = tonumber(zeit) say_title("Urkunden-Drop") say("") say_reward("Moechtest du das Event für "..zeit_h.." Stunden laufen lassen?") local b = select("Ja", "Nein") if b == 1 then server_timer("event_zeit", zeit_h*60*60) game.set_event_flag("event_2", 1) notice_all("Das Power Mount Urkunden Event hat gestartet!") notice_all("Ihr Droppt nun von allen Mobs die Urkunden.") else return end end else return end else say_title("Urkunden-Drop") say("") say_reward("Das Urkunden-Drop Event ist An") say_reward("Moechtest du es Anhalten?") local c = select("Ja", "Nein") if c == 1 then game.set_event_flag("event_2", 0) notice_all("Das Power Mount Urkunden Event wurde beendet!") else return end end end when event_zeit.server_timer with game.get_event_flag("event_2") != 0 begin game.set_event_flag("event_2", 0) notice_all("Das Power Mount Urkunden Event wurde beendet!") end when kill with game.get_event_flag("event_2") == 1 and not npc.is_pc() begin local s=number(1, 250) if 5 == s then game.drop_item_with_ownership(52701,1) game.drop_item_with_ownership(52702,1) game.drop_item_with_ownership(52703,1) game.drop_item_with_ownership(52704,1) end end end end
|
|
|
12/21/2014, 22:30
|
#10767
|
elite*gold: 313
Join Date: Apr 2013
Posts: 585
Received Thanks: 122
|
#gelöst
|
|
|
12/22/2014, 05:11
|
#10768
|
elite*gold: 909
Join Date: Jun 2014
Posts: 153
Received Thanks: 38
|
Code:
define BLOCK_DOOR 20387
define DUNGEON_MAN 20385
define DUNGEON_MAN_DIR 0
define DUNGEON_MAP_INDEX 351
define ENTER_LIMIT_TIME 30
define ENTRY_MAN 20394
define ENTRY_MAP_INDEX 62
define FINAL_BOSS 6091
define LEVEL2_KEY 30329
define LEVEL2_STONE 20386
define LEVEL4_TARGET 6051
define LEVEL5_REALKEY 30330
define LEVEL5_STONE 20386
define LEVEL5_GEN_LIMIT 100
define LEVEL6_TARGET 8057
define LEVEL_CUT 100
define MOB_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/"
define IN_DOOR 20388
define NPC_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/npc.txt"
define TICKET_GROUP 10033
define LIMITED_PASS_TICKET 50512
quest flame_dungeon begin
state start begin
when ENTRY_MAN.click with pc.get_level() >= 90 begin
pc.give_item2(LIMITED_PASS_TICKET, 1)
set_state(run)
end
end
state run begin
function setting()
return
{
["bossroom_entry_pos"] = {8109,6867},
["boss_pos"] = {686,637},
["doors_pos"] = {
{320,394},
{293,359},
{333,321},
{378,320},
{400,355},
{394,401}
},
["idoors_pos"] = {
{268,447},
{234,359},
{300,264},
{454,217},
{470,355},
{467,469}
},
["doors_dir"] = {135,90,210,152,90,223},
["idoors_dir"] = {135,90,210,135,90,239},
["dungeon_entry_pos"] = {7762, 6739},-- 던전에 처음 들어오는 곳
["DUNGEON_MAN_bpos"] = {690,722},
["DUNGEON_MAN_pos"] = {354,362},
["LEVEL2_STONE_pos"] = {195,352},
["LEVEL4_TARGET_pos"] = {470,175},
["LEVEL5_STONE_pos"] = {
{486, 345},
{511, 336},
{525, 349},
{521, 365},
{503, 372},
{486, 365},
{500, 354}
},
["LEVEL6_TARGET_pos"] = {511,480},
["outside_entry_pos"] = {6142,7068}, --입장시켜주는애 서있는 곳
["YAK_pos"] = {376, 397} -- 약환 부하
}
end
function is_flamed(idx) -- 적룡성에 있는지 확인
return idx >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000
end
function make_dungeon() -- 던전 만들기
local setting = flame_dungeon.setting()
d.new_jump_party(DUNGEON_MAP_INDEX, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
-- d.spawn_mob_ac_dir(DUNGEON_MAN, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],DUNGEON_MAN_DIR)
-- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
d.regen_file(NPC_REGEN_FILE_PATH)
d.setf("level",0)
for i=1,6 do
d.set_unique("door"..i, d.spawn_mob_ac_dir(BLOCK_DOOR, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
end
for i=1,6 do
d.set_unique("idoor"..i, d.spawn_mob_ac_dir(IN_DOOR, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
end
d.setf("clear_count",0)
d.setf("started",0)
d.setf("dungeon_enter",0) -- 정상적으로 입장했는지? // 비정상 : 0 정상 : 1 // 튕기면 입장제한시간을 기록 안함
end
function go_boss() -- 보스룸 가기
local setting = flame_dungeon.setting()
if pc.get_level() < 104 then --레벨확인
-- syschat(gameforge.flame_dungeon._580_notice)
say(gameforge.flame_dungeon._580_notice)
return
else
if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- 선행퀘스트 확인
-- say_title(gameforge.flame_dungeon._010_say)
say(gameforge.flame_dungeon._010_say)
local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
if warp == 1 then
d.setf("level",17)
d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_fild_boss.txt")
-- d.spawn_mob(DUNGEON_MAN,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
d.spawn_mob(FINAL_BOSS,setting.boss_pos[1],setting.boss_pos[2])
end
else
-- syschat(gameforge.flame_dungeon._040_notice)
say(gameforge.flame_dungeon._040_notice)
return
end
end
end
function level_clear() -- 레벨 깼을때, 리젠클리어, 지역클리어
d.setf("level",0)
d.clear_regen()
d.purge_area(750000,620000,817400,689400) -- 맵전체 -- d.purge() 사용고려
end
function clear_timer(inx) -- 타이머 다지우기
clear_server_timer ("flame_dungeon_0m_left_timer", inx)
clear_server_timer ("flame_dungeon_1m_left_timer", inx)
clear_server_timer ("flame_dungeon_5m_left_timer", inx)
clear_server_timer ("flame_dungeon_10m_left_timer", inx)
clear_server_timer ("flame_dungeon_15m_left_timer", inx)
clear_server_timer ("flame_dungeon_30m_left_timer", inx)
clear_server_timer ("flame_dungeon_45m_left_timer", inx)
clear_server_timer ("killed_A_1", inx)
clear_server_timer ("killed_A_2", inx)
clear_server_timer ("flame_dungeon_ticket_remove", inx)
end
when login begin
local idx = pc.get_map_index()
local setting = flame_dungeon.setting()
if idx == DUNGEON_MAP_INDEX then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
elseif flame_dungeon.is_flamed(idx) then -- 던전 입장, 보스룸 입장 예외
------------------------------------------------------------------------------------------------------------------------------------------------------
--아래의 두줄중 위에줄을 사용하면 던전에서 종료했을경우 다시 원래 위치로 돌아온다. 아래줄을 활성화 하면 던전에서 종료했을 경우 던전 밖으로 나가게 된다.
--던전에서 종료했을 경우 다시 원래 위치로 돌아올 경우, 던전에서 나가는 방법을 만들어줘야 하기 때문에 적룡성비의 나가기란 옵션을 활성화 해줘야 한다.
------------------------------------------------------------------------------------------------------------------------------------------------------
-- pc.set_warp_location(0, 0 , 0) --튕겼을때 다시 돌아오게 만들어 주는 부분
pc.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- 던전 나갔을 때 밖으로 튕기게함
local ticketGroup = {get_special_item_group (TICKET_GROUP)}
if d.getf("dungeon_enter") == 0 then -- 진행중이 아니면
local canPass = false
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
canPass = true
break
end
end
if get_global_time() - pc.getf("flame_dungeon","exit_time") < ENTER_LIMIT_TIME * 60 then -- 입장제한시간이 걸렸으면
notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
say(gameforge.flame_dungeon._060_say)
timer("flame_dungeon_warp_timer", 5)
elseif not canPass then
notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
say(gameforge.flame_dungeon._080_say)
timer("flame_dungeon_warp_timer", 5)
elseif pc.get_level() < 100 then
notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
say(gameforge.flame_dungeon._100_say)
timer("flame_dungeon_warp_timer", 5)
end
elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- 진행중인데 티켓이 안지워졌을경우
for i=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
pc.remove_item(ticketGroup[i], ticketGroup[i+1])
break
end
end
pc.setf("flame_dungeon","ticket_delete",1)
end
else
pc.setf("flame_dungeon","ticket_delete",0)
end
end
when flame_dungeon_warp_timer.timer begin
local setting = flame_dungeon.setting()
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
end
when logout begin
local idx = pc.get_map_index()
if flame_dungeon.is_flamed(idx) then
if d.getf("dungeon_enter") == 1 then -- 정상적인 던전 입장 후 로그아웃
pc.setf("flame_dungeon","exit_time",get_global_time()) -- 인스턴스 안에서의 마지막 시간을 기록, 근데 시간제한 때문에 or 그냥 튕긴거면 안기록
end
end
end
when ENTRY_MAN.chat.gameforge.flame_dungeon._110_npcChat begin
local setting = flame_dungeon.setting()
if party.is_party() then
-- 던전 도중 나갈 경우 재입장 가능하도록
local party_check = 0
if d.find(party.getf("dungeon_index")) then
party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
end
if d.find(party.getf("dungeon_index")) and party_check then
if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- 접종 이후 5분 내?
local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
if dungeon_level == 17 then -- 보스
pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
else
pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
end
else -- 5분 초과하여 재 입장 불가
say_title(mob_name(ENTRY_MAN))
say(gameforge.flame_dungeon._590_say)
end
else
local pids = {party.get_member_pids()}
local noTicketMembers = {}
local notEnoughLevelMembers = {}
local ticketCheck = true
local levelCheck = true
local ticketGroup = {get_special_item_group (TICKET_GROUP)}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
break
end
end
if not canPass then
table.insert(noTicketMembers, pc.get_name())
ticketCheck = false
end
if pc.level < LEVEL_CUT then
table.insert(notEnoughLevelMembers, pc.get_name())
levelCheck = false
end
q.end_other_pc_block()
end
if not ticketCheck then
say_title(mob_name(ENTRY_MAN))
say(gameforge.flame_dungeon._610_say)
for i, name in next, noTicketMembers, nil do
say(color(1,1,0), " "..name)
end
if levelCheck then
return
else
wait()
end
end
if not levelCheck then
say_title(mob_name(ENTRY_MAN))
say(gameforge.flame_dungeon._630_say)
for i, name in next, notEnoughLevelMembers, nil do
say(color(1,1,0), " "..name)
end
return
end
if party.is_leader() then
say(gameforge.flame_dungeon._120_say)
local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
if warp == 1 then
if party.is_map_member_flag_lt("exit_time", get_global_time() - ENTER_LIMIT_TIME * 60 ) then
flame_dungeon.make_dungeon()
else
--say("test : 파티원의 입장 제한시간이 끝나지 않았습니다.")
say(gameforge.flame_dungeon._600_say)
end
end
party.setf("flame_dungeon_boss_kill_count", 0)
else
say(gameforge.flame_dungeon._150_say)
end
end
else
say(gameforge.flame_dungeon._160_say)
end
end
-- when ENTRY_MAN.chat."Test : 리소스확인" with is_test_server() begin -- 테스트용
-- local setting = flame_dungeon.setting()
-- pc.setf("flame_dungeon","fdRtest",1)
-- pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, DUNGEON_MAP_INDEX)
-- end
when ENTRY_MAN.chat."TEST : Init time limit init" with is_test_server() begin -- 테스트용
pc.setf("flame_dungeon","exit_time",get_global_time()-1800)
say("Done")
end
-- when DUNGEON_MAN.chat."Test : 현재 상태" with is_test_server() begin -- 테스트용
-- say("남은 몬스터 : "..d.count_monster())
-- say("level : "..d.getf("level"))
-- say("Dmap index : "..d.get_map_index())
-- say("Pmap index : "..pc.get_map_index())
-- say("access limit : "..pc.getf("flame_dungeon","exit_time"))
-- say("global time : "..get_global_time())
-- if flame_dungeon.is_flamed(d.get_map_index()) then
-- say("in dungeon") -- is_flamed 함수 체크
-- end
-- if d.is_unique_dead("stone1") then
-- say("stone1 is dead")
-- else
-- say("stone1 is not dead")
-- end
-- end
-- when DUNGEON_MAN.chat."처음으로" begin -- 테스트용
-- say("초기화 합니다")
-- flame_dungeon.clear_timer(d.get_map_index())
-- flame_dungeon.make_dungeon()
-- end
when DUNGEON_MAN.chat."Test : Boss Room" with is_test_server() begin -- 테스트용
flame_dungeon.go_boss()
end
-- < 시간 경과 타이머>
-- when DUNGEON_MAN.chat."나가기" begin -- 던전에서 튕기지 않게 할 경우 활성화
-- local setting = flame_dungeon.setting()
-- say("밖으로 나가시겠습니까?")
-- local warp = select("확인","취소")
-- if warp == 1 then
-- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
-- end
-- end
when flame_dungeon_45m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
end
end
when flame_dungeon_30m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
end
end
when flame_dungeon_15m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
end
end
when flame_dungeon_5m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
end
end
when flame_dungeon_1m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
end
end
when flame_dungeon_0m_left_timer.server_timer begin
local setting = flame_dungeon.setting()
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
server_timer("dungeon_end_timer",10,d.get_map_index())
end
end
-- <<<< 던전 진행>>>> --
when DUNGEON_MAN.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'는 x번째 레벨 퀘스트 받을 수 있는 상태 , '1x'는 x번째 레벨 퀘스트 진행중
local setting = flame_dungeon.setting()
if d.getf("started") == 0 then
say(gameforge.flame_dungeon._230_say)
say(gameforge.flame_dungeon._240_say)
wait()
d.setf("started",1)
-- 파티원이 튕겨버렸는데 자기만 남아서 exit timer가 리셋되면 안되니깐 다음레벨을 눌렀을때를 시작할때로 봄
server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
-- 통행증 관련된 처리
-- 입장 후에 티켓을 없앤 사람을 튕겨내기 위해서 타이머를 이용해 티켓을 제거한다.
local pids = {party.get_member_pids()}
local ticketGroup = {get_special_item_group (TICKET_GROUP)}
for i, pid in next, pids, nil do
q.begin_other_pc_block(pid)
local canPass = false
for idx=1, table.getn(ticketGroup),2 do
if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
canPass = true
pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
break
end
end
if not canPass then
pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
end
q.end_other_pc_block()
end
d.setqf2("flame_dungeon","ticket_delete",1)
d.setf("dungeon_enter",1)
-- 던전과 파티에 서로에 대한 정보를 저장한다.
party.setf("dungeon_index", d.get_map_index())
d.setf("party_leader_pid", party.get_leader_pid())
end
if d.getf("level") < 7 then --진행중이 아니면
if d.getf("clear_count") == 6 then -- 방 여섯개 했으면 보스방
d.setf("level",7)
else
local rand = number(1,6)--랜덤에서 방문체크는 따로 배열없이 방의 문의 열려있는지로 체크함
local setlev = 0
d.setf("level",7) -- 혹시 모를 문제가 생겨 레벨이 안잡힐경우를 대비해 보스룸으로 셋팅해둠
for i=1,50 do
setlev = setlev + 1
if setlev > 6 then
setlev = 1
end
if not d.is_unique_dead("door"..setlev) then
rand = rand - 1
if rand == 0 then
d.setf("level",setlev)
d.setf("clear_count",d.getf("clear_count")+1)
break
end
end
end
end
end
if d.getf("level") == 1 then
say(gameforge.flame_dungeon._260_say)
notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
d.kill_unique("door1")
d.kill_unique("idoor1")
d.setf("level",11)
d.regen_file (MOB_REGEN_FILE_PATH.."fd_a.txt")
server_timer ("killed_A_1", 12, d.get_map_index())
elseif d.getf("level") == 11 then
say(gameforge.flame_dungeon._270_say)
say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
elseif d.getf("level") == 2 then
say(gameforge.flame_dungeon._290_say)
say(gameforge.flame_dungeon._300_say)
notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
notice_multiline(gameforge.flame_dungeon._300_say,d.notice)
d.spawn_mob(LEVEL2_STONE, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- 봉인석 소환
d.kill_unique("door2")
d.kill_unique("idoor2")
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_b.txt")
d.setf("level",12)
elseif d.getf("level") == 12 then
say(gameforge.flame_dungeon._310_say)
elseif d.getf("level") == 3 then
say(gameforge.flame_dungeon._260_say)
notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
d.kill_unique("door3")
d.kill_unique("idoor3")
d.setf("level",13)
d.regen_file (MOB_REGEN_FILE_PATH.."fd_c.txt")
server_timer ("killed_A_1", 12, d.get_map_index())
elseif d.getf("level") == 13 then
say(gameforge.flame_dungeon._270_say)
say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
elseif d.getf("level") == 4 then -- 474 178
say(gameforge.flame_dungeon._320_notice)
notice_multiline(gameforge.flame_dungeon._320_notice,d.notice)
d.setf("level",14)
d.kill_unique("door4")
d.kill_unique("idoor4")
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_d.txt")
d.spawn_mob(LEVEL4_TARGET,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- 타겟몬스터 소한
elseif d.getf("level") == 14 then
say(gameforge.flame_dungeon._330_say)
say(gameforge.flame_dungeon._340_say)
elseif d.getf("level") == 5 then -- 510 355
say(gameforge.flame_dungeon._350_say)
say(gameforge.flame_dungeon._360_say)
notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
notice_multiline(gameforge.flame_dungeon._360_say,d.notice)
d.kill_unique("door5")
d.kill_unique("idoor5")
d.setf("level",15)
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
local vis = { 0,0,0,0,0,0,0}
for i=1,7 do
vis[i] = 0
end
for i = 1, 7 do -- 랜덤하게 돌소환
local ran = number(1,7)
local st = 0
for j = 1, 50 do
st = st + 1
if st > 7 then
st = 1
end
if vis[st] == 0 then
ran = ran - 1
if ran == 0 then
vis[st] = 1
d.set_unique("stone5_"..st, d.spawn_mob(LEVEL5_STONE, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
break
end
end
end
end
elseif d.getf("level") == 15 then
say(gameforge.flame_dungeon._370_say)
elseif d.getf("level") == 6 then -- 507 490
say(gameforge.flame_dungeon._380_say)
notice_multiline(gameforge.flame_dungeon._380_say,d.notice)
d.setf("level",16)
d.kill_unique("door6")
d.kill_unique("idoor6")
d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_f.txt")
d.spawn_mob(LEVEL6_TARGET, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- 타겟오브젝트 소환
elseif d.getf("level") == 16 then
say(gameforge.flame_dungeon._390_say)
say(gameforge.flame_dungeon._400_say)
elseif d.getf("level") == 7 then
-- setskin(NOWINDOW)
flame_dungeon.go_boss()
else
say(gameforge.flame_dungeon._410_say)
end
npc.unlock()
end
when dungeon_end_timer.server_timer begin -- 종료 타이머 (끝나고 나가는거)
local setting = flame_dungeon.setting()
if d.select(get_server_timer_arg()) then
flame_dungeon.clear_timer(d.get_map_index())
d.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2])
d.exit_all()
d.setf("party_leader_pid", 0)
end
end
when killed_A_1.server_timer begin -- 타이머 돌리기1 (level1,level3)
if d.select(get_server_timer_arg()) then
if d.count_monster() <= 0 then -- 1레벨 몬스터 전멸시
if d.getf("level") == 11 then
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
else
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
end
d.setf("level",0)
else
server_timer ("killed_A_2", 6, get_server_timer_arg())
end
end
end
when killed_A_2.server_timer begin -- 타이머 돌리기2 (1과 2 번갈아가면서 돌아감)
if d.select(get_server_timer_arg()) then
if d.count_monster() <= 0 then -- 1레벨 몬스터 전멸시
if d.getf("level") == 11 then
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
else
notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
end
d.setf("level",0)
else
server_timer ("killed_A_1", 6, get_server_timer_arg())
end
end
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2레벨 봉인석 열쇠 드랍
local i = number(1, 100) -- 100분의 1 확률로 열쇠드랍
if i == 1 then
game.drop_item (LEVEL2_KEY, 1)
end
end
when LEVEL2_STONE.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == LEVEL2_KEY and d.getf("level") == 12 begin -- 2레벨 열쇠 먹었을때
local i = number(1, 5) -- 5분의 1 확률로 진짜 열쇠
if i == 1 then
npc.purge()
item.remove()
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
else
item.remove()
say(gameforge.flame_dungeon._450_say)
end
end
when LEVEL4_TARGET.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
end
when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5레벨 봉인석 열쇠 드랍
local i = number(1, 30) -- 30분의 1 확률로 열쇠드랍
if i == 1 then
game.drop_item (LEVEL5_REALKEY, 1)
end
end
when LEVEL5_STONE.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == LEVEL5_REALKEY and d.getf("level") == 15 begin -- 5레벨 진짜열쇠 먹었을때
local setting = flame_dungeon.setting()
if npc.get_vid() == d.get_unique_vid("stone5_1") then -- 첫번째 꺼는 선행되어야 할 일이 필요없으니 찾자마자 제거해줌
npc.purge()
item.remove()
say(gameforge.flame_dungeon._470_say)
d.setf("stonekill",2) -- 2번 돌을 죽여라
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_2") then
if d.getf("stonekill") == 2 then -- 2번돌을 죽일 차롄데 2번돌에게 열쇠를 먹였을 때
npc.purge()
item.remove()
say(gameforge.flame_dungeon._480_say)
d.setf("stonekill",3)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("2번")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
if d.getf("stonekill") == 3 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._500_say)
d.setf("stonekill",4)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("3번")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
if d.getf("stonekill") == 4 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._510_say)
d.setf("stonekill",5)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("4번")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
if d.getf("stonekill") == 5 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._520_say)
d.setf("stonekill",6)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("5번")
end
elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
if d.getf("stonekill") == 6 then
npc.purge()
item.remove()
say(gameforge.flame_dungeon._530_say)
d.setf("stonekill",7)
if d.count_monster() < LEVEL5_GEN_LIMIT then
d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
end
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("6번")
end
else
if d.getf("stonekill") == 7 then
npc.purge()
item.remove()
notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
else
item.remove()
say(gameforge.flame_dungeon._490_say)
-- say("7번")
end
end
end
when LEVEL6_TARGET.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- 망마석 파괴했을 때
notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
flame_dungeon.level_clear()
end
when FINAL_BOSS.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- 보스 죽였을때
notice_multiline(gameforge.flame_dungeon._550_notice,d.notice)
notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
server_timer("dungeon_end_timer", 60,d.get_map_index())
flame_dungeon.level_clear()
-- 파티원 중, 야마천 잡는 퀘스트(104렙, 105렙 퀘스트) 진행중인 사람이 있으면 퀘스트 클리어 되도록.
if party.is_party() then
party.setf("flame_dungeon_boss_kill_count", 1)
end
end
end
end
help me pls ich weiß net woran es liegt sobald ich grp hab und auf den wäschter klicke lässt der mich net rein da steht auch nichts die quest funktion verschwindet einfach
|
|
|
12/24/2014, 13:30
|
#10769
|
elite*gold: 0
Join Date: Dec 2014
Posts: 94
Received Thanks: 23
|
PHP Code:
quest metinkill2 begin state start begin when login or levelup with pc.level >= 10 begin set_state(information) end end
state information begin when letter begin send_letter("Metin-Auftrag 2") end
when info or button begin say("Metin-Auftrag") say("Hallo Spieler von Azunia2!") say("Überall spawnen die Metinsteine. Unsere") say("Krieger sind alle beim versuch sie zu") say("töten gefallen. Wir hoffen auf") say("deine Hilfe. Bitte befreie uns von von diesem") say("Unheil, damit wir wieder in Frieden leben können") say("Bitte hilf uns:") say_reward("Töte 10 x Metin der Schlacht.") say_reward("Du findest sie auf Map1.") say_reward("Wenn du es geschafft hast bekommst du eine Belohnung!") say_reward("") say_reward("") say("") pc.setqf("state", 10) q.set_counter("Metin der Schlacht", 10) end
when 8001.kill begin local count = pc.getqf("state") - 1 if count <= 10 then pc.setqf("state", count) q.set_counter("Metin der Schwärze", count) end if count == 0 then say_title("PvM Quest") say("Sehr Gut!") say("Gut du hast es geschafft.") say("Deine nächste Quest wartet auf dich.") say("Hier deine Belohnung") say_reward("Du erhielst 1 Weißer Löwe.") pc.give_item2(71124) clear_letter() set_state(__COMPLETE__)
end end end
state __COMPLETE__ begin end end
Die Steine werden nicht gezählt. Es bleibt immer bei 10.
Dringend Hilfe! Die Steine sollen gezählt werden.
|
|
|
12/25/2014, 22:26
|
#10770
|
elite*gold: 29
Join Date: Aug 2010
Posts: 855
Received Thanks: 522
|
Hab aktuell zwei Probleme.
Vorab die Quest:
Code:
quest sd3_bruthoehle begin
state start begin
when 30130.chat."In die Bruthöhle" with pc.get_level() > 49 begin
say_title(string.format("%s:", mob_name(string.format("%d", npc.get_race()))))
if game.get_event_flag("sd3_frei") == 1 then
say("Die Bruthöhle ist zur Zeit besetzt.")
return
end
say("Möchtet ihr die Bruthöhle betreten?")
if select("Ja","Nein") == 2 then return end
d.join(208) -- Mapindex anpassen
game.set_event_flag("sd3_frei",1)
server_timer("exit",60*20)
end
when login with pc.get_map_index() >= 2080000 and pc.get_map_index() < 2090000 begin -- Index anpassen
d.set_regen_file("data/dungeon/sd3/eier.txt")
d.regen_file("data/dungeon/sd3/boss.txt")
d.notice("Ihr habt 20 Minuten Zeit, um den Spinnenbaron zu töten.")
end
when exit.server_timer begin
if d.select(get_server_timer_arg()) then
d.exit_all()
server_timer("sd3_set_free",60*60)
end
end
when kill with npc.get_race()==2591 and pc.get_level() > 49 begin
local count = tonumber(party.get_near_count()-1)
notice_all(string.format("%s und %d weitere Mitglieder haben den Spinnenbaron besiegt!", pc.get_name(), count))
server_timer("sd3_set_free", 60*60)
server_timer("exit",60*5)
d.notice("In 5 Minuten werdet ihr hinausteleportiert")
end
when sd3_set_free.server_timer begin
game.set_event_flag("sd3_frei",0)
end
end
end
1. Wenn ich mich ins "Dungeon" teleportiere, dann werde ich an den Anfang des SD3's teleportiert und nicht direkt in Bosskammer. Wie änder ich dies? Der Teleport wird ja mit d.join(208) eingeleitet. Wie setze ich jetzt den Spawn in der Bosskammer und mit d.join?
2. Wenn ich Spinnenbaroness getötet habe werde ich nicht heraus teleportiert. Ebenfalls wenn die Zeit abgelaufen ist.
Syserr:
Code:
AddServerTimer: already registered server timer name:exit arg:0
Bedanke mich im Voraus für alle Antworten!
Frohe Weihnachten wünsch ich euch.
|
|
|
All times are GMT +1. The time now is 21:33.
|
|