|
You last visited: Today at 07:10
Advertisement
Probleme mit dem DT-Run (Quest)
Discussion on Probleme mit dem DT-Run (Quest) within the Metin2 Private Server forum part of the Metin2 category.
10/28/2023, 17:30
|
#1
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Probleme mit dem DT-Run (Quest)
Schönen guten Abend zusammen
Ich habe leider meien SF zurücksetzen müssen, weil ich mehrere Probleme hatte mit der FreeBSD machine.. wie auch immer, ich hab einige standard Quests noch drin behalten, welche ich nicht umgeschrieben oder verändert habe.
Aktuell habe ich das Problem mit dem Dämonenturm (standard Run).
Alles funktioniert bis zur 5 Etage, an der ich diese Schlüssel einsammeln sollte um die Siegel da zu öffnen. Allerdings werden ab der 5 Etage des DT Runs keine Schlüssel ausgespuckt und ich bekomme diese syserr Meldung im CH1 Core..
Code:
SYSERR: Oct 28 17:15:37 :: GetUniqueHpPerc: Unknown Key : fake1
SYSERR: Oct 28 17:15:37 :: PurgeUnique: Unknown Key or Dead: fake1
SYSERR: Oct 28 17:15:57 :: GetUniqueHpPerc: Unknown Key : fake3
SYSERR: Oct 28 17:15:57 :: PurgeUnique: Unknown Key or Dead: fake3
SYSERR: Oct 28 17:16:17 :: GetUniqueHpPerc: Unknown Key : fake2
SYSERR: Oct 28 17:16:17 :: PurgeUnique: Unknown Key or Dead: fake2
SYSERR: Oct 28 17:17:07 :: GetUniqueHpPerc: Unknown Key : fake4
SYSERR: Oct 28 17:17:07 :: PurgeUnique: Unknown Key or Dead: fake4
SYSERR: Oct 28 17:17:27 :: IsUniqueDead: Unknown Key or Dead : real
SYSERR: Oct 28 17:22:32 :: dungeon_get_flag: no dungeon !!!
Ich habe jetzt 2 verschiedene DT-Run QUESTS ausprobiert, sowohl des orginale (welches in den Fliege Files drin ist) als auch die von 2089 Files.
Und bei allen beiden komm ich ab der 5. Etage nicht mehr weiter und diese Fehlermeldung erscheint.
Ich habe jetzt grad viel im Internet rumgesucht aber nicht mehr als diese Quests zum ausprobieren gefunden.
Ich hoffe jemand von euch wäre so nett und könnte mir da weiterhelfen.
Was muss ich tun, damit ich diesen Run wieder normal absolvieren kann und keine Meldung mehr bekomme. Ich wäre euch sehr dankbar!
€:
Hier noch die Quest welche ich aktuell benutze:
Code:
quest deviltower_zone begin
state start begin
when login begin
if pc.get_map_index() == 66 then
if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
pc.warp((5376+532)*100, (512+596+4)*100, 65)
end
pc.set_warp_location(65, 5376+532, 512+596+4)
elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
pc.set_warp_location(65, 5376+532, 512+596+4)
end
end
when logout begin
pc.remove_item(30300, pc.count_item(30300))
pc.remove_item(30301, pc.count_item(30301))
pc.remove_item(30302, pc.count_item(30302))
end
when deviltower_man.chat.locale.deviltower_man_chat begin
say_title("Wächter des Dämonturmes")
if pc.get_level () < 40 then
say("Du hast noch nicht genügend Erfahrung gesammelt.")
say("Komme wieder, wenn du Level 40 bist!")
return
end
say("Möchtest du den Daemonenturm betreten?")
local s = select ("Betreten","Abbrechen")
if s == 1 then
pc.warp(216500, 727000)
end
end
when devil_stone1.kill begin
timer("devil_stone1_1",6)
end
when devil_stone1_1.timer begin
d.new_jump_all(66,special.devil_tower[1][1],special.devil_tower[1][2])
d.regen_file("data/dungeon/deviltower2_regen.txt")
d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1],special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
end
when devil_stone3.kill begin
d.set_warp_at_eliminate(4,d.get_map_index(), special.devil_tower[3][1],special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
d.check_eliminated()
end
function get_4floor_stone_pos()
local positions={{368, 629}, {419, 630}, {428, 653}, {422, 679},{395, 689}, {369, 679}, {361, 658}}
for i = 1, 6 do
local j = number(i, 7)
if i != j then
local t = positions[i];
positions[i] = positions[j];
positions[j] = t;
end
end
return positions
end
when 8016.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.setf("level", 4)
local positions = deviltower_zone.get_4floor_stone_pos()
for i = 1, 6 do
chat(positions[i][1], positions[i][2])
d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
end
chat(positions[7][1], positions[7][2])
local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
chat(vid)
d.set_unique("real", vid)
server_loop_timer('devil_stone4_update',10,pc.get_map_index())
server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())
d.notice("Findet den richtigen Metinstein und zerstört ihn.")
d.notice("Die falschen Metinsteine werden verschwinden!")
d.notice("Ihr habt 15 Minuten zeit!")
end
when devil_stone4_fail1.server_timer with d.getf("level") == 4 begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 10 Minuten")
server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail2.server_timer with d.getf("level") == 4 begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 5 Minuten")
server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail.server_timer with d.getf("level") == 4 begin
if d.select(get_server_timer_arg()) then
d.notice("Die Zeit ist abgelaufen")
d.notice("Ihr werdet nun nach draußen teleportiert")
d.exit_all()
clear_server_timer('devil_stone4_update', get_server_timer_arg())
end
end
when devil_stone4_update.server_timer begin
if d.select(get_server_timer_arg()) then
if not d.is_unique_dead("real") then
for i = 1,6 do
if d.getf("fakedead" .. i) == 0 then
if d.unique_get_hp_perc("fake"..i) < 50 then
d.purge_unique("fake"..i)
d.setf("fakedead"..i,1)
d.notice("Die falschen Metinsteine verschwinden..");
end
end
end
else
server_timer("devil_stone4_end", 5, get_server_timer_arg())
d.notice("Ihr habt den richtigen Metinstein zerstört.")
d.notice("Ihr werdet nun in die nächste Etage teleportiert")
clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
clear_server_timer('devil_stone4_fail', get_server_timer_arg())
end
else
server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
end
end
when devil_stone4_stop_timer.server_timer begin
clear_server_timer('devil_stone4_update', get_server_timer_arg())
end
when devil_stone4_end.server_timer begin
if d.select(get_server_timer_arg()) then
clear_server_timer('devil_stone4_update', get_server_timer_arg())
clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
clear_server_timer('devil_stone4_fail', get_server_timer_arg())
d.setf("level", 5)
d.setf("stone_count", 5)
d.notice("Du bist nun in der 5. Ebene")
d.notice("Öffne alle Alten Siegel um in die nächste Ebene zu gelangen.")
d.notice("Du hast 20 Minuten Zeit um alle Siegel zu öffnen.")
d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
clear_server_timer('devil_stone4_update', get_server_timer_arg())
d.set_regen_file("data/dungeon/deviltower5_regen.txt")
d.spawn_mob(20073, 421, 452)
d.spawn_mob(20073, 380, 460)
d.spawn_mob(20073, 428, 414)
d.spawn_mob(20073, 398, 392)
d.spawn_mob(20073, 359, 426)
end
end
when devil_stone5_fail1.server_timer with d.getf("level") == 5 begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 15 Minuten")
server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail2.server_timer with d.getf("level") == 5 begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 10 Minuten")
server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail3.server_timer with d.getf("level") == 5 begin
if d.select(get_server_timer_arg()) then
d.notice("Verbleibende Zeit: 5 Minuten")
server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail.server_timer with d.getf("level") == 5 begin
if d.select(get_server_timer_arg()) then
d.notice("Die Zeit ist abgelaufen")
d.notice("Ihr werdet nun nach draußen teleportiert")
d.exit_all()
end
end
when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
local KILL_COUNT_FOR_DROP_KEY = 50
local n =d.getf("count")+1
d.setf("count",n)
if n == KILL_COUNT_FOR_DROP_KEY then
game.drop_item(50084,1)
d.setf("count",0)
end
end
when devil_stone5.take with item.vnum == 50084 begin
npc.purge()
item.remove()
d.setf("stone_count", d.getf("stone_count") - 1)
if d.getf("stone_count") <= 0 then
d.setf("level", 6)
d.clear_regen()
d.regen_file("data/dungeon/deviltower6_regen.txt")
d.notice("Ihr habt alle alten Siegel geöffnet. Ihr werdet nun")
d.notice("in die 6. Ebene teleportiert.")
d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
clear_server_timer('devil_stone5_fail1', get_server_timer_arg())
clear_server_timer('devil_stone5_fail2', get_server_timer_arg())
clear_server_timer('devil_stone5_fail3', get_server_timer_arg())
clear_server_timer('devil_stone5_fail', get_server_timer_arg())
else
d.notice("Es verbleibt eine Anzahl von "..d.getf("stone_count").." Siegeln")
end
end
when devil_stone6.kill begin
d.kill_all()
d.check_eliminated()
local reward_alchemist = {20074, 20075, 20076}
d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
d.setqf("can_refine", 1)
end
when 20074.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(mob_name(20074))
say("Ihr möchtet in die 7.Etage?")
say("Ihr haben Glück! Heute erlaube ich es ihnen vielleicht!")
say("Aber voher muss ich euch noch prüfen..")
say("Mal sehen..")
wait()
say_title(mob_name(20074))
if pc.level >=75 then
say(""..mob_name(20074)..":")
say("Ich erlaube euch weiterzugehen!")
say("Viel Glück und passt auf euch auf da oben!")
npc.unlock()
d.purge()
wait()
d.clear_regen()
d.spawn_mob(8018, 639, 658)
d.spawn_mob(8018, 611, 637)
d.spawn_mob(8018, 596, 674)
d.spawn_mob(8018, 629, 670)
d.setf("level", 7)
d.jump_all(2048+590, 6656+638)
return
end
say_reward("Betreten der 7.Etage nicht erlaubt!")
say("Ihr seid nicht qualifiziert genug!")
say("Erreicht Level 75 oder höher,")
say("damit ihr eure Fertigkeiten steigern könnt")
say("und kommt dann wieder!")
wait()
pc.warp(590500, 110500)
return
end
when 20075.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(mob_name(20075))
say("Ihr möchtet in die 7.Etage?")
say("Ihr haben Glück! Heute erlaube ich es ihnen vielleicht!")
say("Aber voher muss ich euch noch prüfen..")
say("Mal sehen..")
wait()
say_title(mob_name(20075))
if pc.level >=75 then
say("Ich erlaube euch weiterzugehen!")
say("Viel Glück und passt auf euch auf da oben!")
npc.unlock()
d.purge()
wait()
d.clear_regen()
d.spawn_mob(8018, 639, 658)
d.spawn_mob(8018, 611, 637)
d.spawn_mob(8018, 596, 674)
d.spawn_mob(8018, 629, 670)
d.setf("level", 7)
d.jump_all(2048+590, 6656+638)
return
end
say_reward("Betreten der 7.Etage nicht erlaubt!")
say("Ihr seid nicht qualifiziert genug!")
say("Erreicht Level 75 oder höher,")
say("damit ihr eure Fertigkeiten steigern könnt")
say("und kommt dann wieder!")
wait()
pc.warp(590500, 110500)
return
end
when 20076.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(mob_name(20076))
say("Ihr möchtet in die 7.Etage?")
say("Ihr haben Glück! Heute erlaube ich es ihnen vielleicht!")
say("Aber voher muss ich euch noch prüfen..")
say("Mal sehen..")
wait()
say_title(mob_name(20076))
if pc.level >=75 then
say("Ich erlaube euch weiterzugehen!")
say("Viel Glück und passt auf euch auf da oben!")
npc.unlock()
d.purge()
wait()
d.clear_regen()
d.spawn_mob(8018, 639, 658)
d.spawn_mob(8018, 611, 637)
d.spawn_mob(8018, 596, 674)
d.spawn_mob(8018, 629, 670)
d.setf("level", 7)
d.jump_all(2048+590, 6656+638)
return
end
say_reward("Betreten der 7.Etage nicht erlaubt!")
say("Ihr seid nicht qualifiziert genug!")
say("Erreicht LvL 75 oder höher,")
say("damit ihr eure Fertigkeiten steigern könnt")
say("und kommt dann wieder!")
wait()
pc.warp(590500,110500)
return
end
when devil_jump_7.timer begin
end
when 8018.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
local cont = d.getf("7_stone_kill") + 1
d.setf("7_stone_kill", cont)
if cont >= 4 then
d.setf("7_stone_kill", 0)
d.set_regen_file("data/dungeon/deviltower7_regen.txt")
end
end
when 8019.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
game.drop_item(30300, 1)
end
when 30300.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
pc.remove_item("30300", 1)
local pct = number(1,10)
if pct == 1 then
game.drop_item(30302, 1)
d.clear_regen()
else
game.drop_item(30301, 1)
end
end
when 30302.use with pc.in_dungeon() and d.getf( "level" ) == 7 and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
if d.getf( "level" ) != 7 then
pc.remove_item( "30302", 1)
return
end
say_title("Karte")
say("Die Karte wird euch alle in die nächste Ebene")
say("des Dämonenturms bringen.")
pc.remove_item("30302", 1)
timer("devil_jump_8", 6)
d.setf("level", 8)
d.clear_regen()
end
when devil_jump_8.timer begin
d.jump_all(2048+590, 6656+403)
d.set_regen_file("data/dungeon/deviltower8_regen.txt")
d.spawn_mob(20366, 640, 460)
local _count= pc.count_item(30302)
pc.remove_item(30302,_count)
end
when 1040.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
local pct1 = number(1, 5)
if pct1 == 1 and d.getf("level") == 8 then
local pct2 = number(1, 10)
if pct2 == 1 then
game.drop_item(30304, 1)
else
game.drop_item(30303, 1)
end
else
return
end
end
when 20366.take with item.vnum == 30304 begin
npc.purge()
item.remove()
timer("devil_jump_9", 6)
end
when devil_jump_9.timer begin
d.setf("level", 9)
d.jump_all(2048+590, 6656+155)
d.regen_file("data/dungeon/deviltower9_regen.txt")
end
when 1093.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.kill_all()
timer("devil_end_jump", 60)
end
when devil_end_jump.timer begin
d.exit_all()
end
end
end
Mit freundlichen Grüßen, Endless
|
|
|
10/28/2023, 20:26
|
#2
|
elite*gold: 193
Join Date: Oct 2014
Posts: 130
Received Thanks: 53
|
SYSERR: Oct 28 17:15:37 :: GetUniqueHpPerc: Unknown Key : fake1
Diese Meldung weist darauf hin, dass ein unbekannter Schlüssel (Key) namens "fake1" in Zusammenhang mit GetUniqueHpPerc aufgetreten ist. Das bedeutet, dass das System versucht hat, auf Informationen zuzugreifen, die mit "fake1" verknüpft sind, aber dieser Schlüssel ist nicht im System bekannt.
SYSERR: Oct 28 17:15:37 :: PurgeUnique: Unknown Key or Dead: fake1
Ähnlich wie die vorherige Meldung weist diese darauf hin, dass der Schlüssel "fake1" unbekannt ist oder als "tot" markiert wurde. Das System versucht möglicherweise, Ressourcen oder Informationen im Zusammenhang mit "fake1" zu löschen oder freizugeben.
SYSERR: Oct 28 17:15:57 :: GetUniqueHpPerc: Unknown Key : fake3
Dies ist eine weitere Instanz des ersten Fehlers, diesmal mit "fake3" anstelle von "fake1".
SYSERR: Oct 28 17:15:57 :: PurgeUnique: Unknown Key or Dead: fake3
Dies ist die entsprechende Meldung zur vorherigen, die das Löschen von "fake3" betrifft.
SYSERR: Oct 28 17:16:17 :: GetUniqueHpPerc: Unknown Key : fake2
Wiederum ein ähnlicher Fehler, jedoch mit "fake2".
SYSERR: Oct 28 17:16:17 :: PurgeUnique: Unknown Key or Dead: fake2
Entsprechende Meldung zur Löschung von "fake2".
SYSERR: Oct 28 17:17:07 :: GetUniqueHpPerc: Unknown Key : fake4
Ein weiterer unbekannter Schlüssel, diesmal "fake4".
SYSERR: Oct 28 17:17:07 :: PurgeUnique: Unknown Key or Dead: fake4
Entsprechende Meldung zur Löschung von "fake4".
SYSERR: Oct 28 17:17:27 :: IsUniqueDead: Unknown Key or Dead : real
Hier gibt es auch einen Fehler, aber dieser bezieht sich auf einen Schlüssel namens "real". Es wird gemeldet, dass "real" unbekannt oder "tot" ist.
SYSERR: Oct 28 17:22:32 :: dungeon_get_flag: no dungeon !!!
Chat gpt sagt, such mal nach fake1/fake2 etc.
|
|
|
10/28/2023, 21:21
|
#3
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Quote:
Originally Posted by SchwarzerKönig
SYSERR: Oct 28 17:15:37 :: GetUniqueHpPerc: Unknown Key : fake1
Diese Meldung weist darauf hin, dass ein unbekannter Schlüssel (Key) namens "fake1" in Zusammenhang mit GetUniqueHpPerc aufgetreten ist. Das bedeutet, dass das System versucht hat, auf Informationen zuzugreifen, die mit "fake1" verknüpft sind, aber dieser Schlüssel ist nicht im System bekannt.
SYSERR: Oct 28 17:15:37 :: PurgeUnique: Unknown Key or Dead: fake1
Ähnlich wie die vorherige Meldung weist diese darauf hin, dass der Schlüssel "fake1" unbekannt ist oder als "tot" markiert wurde. Das System versucht möglicherweise, Ressourcen oder Informationen im Zusammenhang mit "fake1" zu löschen oder freizugeben.
SYSERR: Oct 28 17:15:57 :: GetUniqueHpPerc: Unknown Key : fake3
Dies ist eine weitere Instanz des ersten Fehlers, diesmal mit "fake3" anstelle von "fake1".
SYSERR: Oct 28 17:15:57 :: PurgeUnique: Unknown Key or Dead: fake3
Dies ist die entsprechende Meldung zur vorherigen, die das Löschen von "fake3" betrifft.
SYSERR: Oct 28 17:16:17 :: GetUniqueHpPerc: Unknown Key : fake2
Wiederum ein ähnlicher Fehler, jedoch mit "fake2".
SYSERR: Oct 28 17:16:17 :: PurgeUnique: Unknown Key or Dead: fake2
Entsprechende Meldung zur Löschung von "fake2".
SYSERR: Oct 28 17:17:07 :: GetUniqueHpPerc: Unknown Key : fake4
Ein weiterer unbekannter Schlüssel, diesmal "fake4".
SYSERR: Oct 28 17:17:07 :: PurgeUnique: Unknown Key or Dead: fake4
Entsprechende Meldung zur Löschung von "fake4".
SYSERR: Oct 28 17:17:27 :: IsUniqueDead: Unknown Key or Dead : real
Hier gibt es auch einen Fehler, aber dieser bezieht sich auf einen Schlüssel namens "real". Es wird gemeldet, dass "real" unbekannt oder "tot" ist.
SYSERR: Oct 28 17:22:32 :: dungeon_get_flag: no dungeon !!!
Chat gpt sagt, such mal nach fake1/fake2 etc.
|
Code:
when 8016.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.setf("level",4)
local positions = deviltower_zone.get_4floor_stone_pos()
for i = 1,6 do
d.spawn_mob(8017,positions[i][1],positions[i][2])
d.set_unique("fake"..i,d.spawn_mob(8017,positions[i][1],positions[i][2]))
end
test_chat(positions[7][1],positions[7][2])
local vid = d.spawn_mob(8017,positions[7][1],positions[7][2])
test_chat(vid)
d.set_unique("real",vid)
server_loop_timer('devil_stone4_update',10,pc.get_map_index())
server_timer('devil_stone4_fail1',5*60,pc.get_map_index())
notice_multiline(gameforge.deviltower_zone._50_dNotice,d.notice)
end
und dann wäre das hier noch:
Code:
when devil_stone4_update.server_timer begin
if d.select(get_server_timer_arg()) then
if not d.is_unique_dead("real") then
for i = 1,6 do
if d.getf("fakedead"..i) == 0 then
if d.unique_get_hp_perc("fake"..i) < 50 then
d.purge_unique("fake"..i)
d.setf("fakedead"..i,1)
notice_multiline(gameforge.deviltower_zone._90_dNotice,d.notice)
end
end
end
Allerdings verstehe ich nicht, warum dieser Fehler kommt, die Quest läuft so normal durch (wenn ich als GM diese Schlüssel her spawne) aber ansonsten, hab ich bloß die Meldung und in seltenen Fällen bleibt der Channel kurz komplett stehen und führt eben zu nem Kick auf der ganzen Map. Ab dann kann man wieder normal hinein und sich bis zur 5. Etage kämpfen, ab dann gehts nicht mehr weiter und ich bekomme diese Meldung welche in im Startpost gezeigt habe.
Wenn ich wüsste, wie ich das fixxe, kann ich mir das Workaround sparen, welches ich im schlimmsten Fall dann anwenden muss. Momentan hab ich auch mit keiner anderen Quest Probleme ausser mit der hier ^^
|
|
|
10/28/2023, 22:08
|
#4
|
elite*gold: 240
Join Date: May 2014
Posts: 214
Received Thanks: 115
|
Nabend,
Quote:
SYSERR: Oct 28 17:22:32 :: dungeon_get_flag: no dungeon !!!
|
ist die eigentliche Fehlermeldung. Daher resultieren die anderen.
Quote:
d.new_jump_all(66,special.devil_tower[1][1],special.devil_tower[1][2])
|
hier wird der Dungeon erstellt/initiiert. Hast du evtl. den Mapindex (66) geändert?
Grüße
|
|
|
10/29/2023, 08:11
|
#5
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Quote:
Originally Posted by Rainer Wahnsinn
Nabend,
ist die eigentliche Fehlermeldung. Daher resultieren die anderen.
hier wird der Dungeon erstellt/initiiert. Hast du evtl. den Mapindex (66) geändert?
Grüße
|
Nein, diesen habe ich so gelassen wie es ist:
Code:
66 Dungeons/Daemonenturm
Auch habe ich dafür gesorgt, dass diese auf allen Cores läuft.
|
|
|
10/29/2023, 17:49
|
#6
|
elite*gold: 240
Join Date: May 2014
Posts: 214
Received Thanks: 115
|
Teste bitte einmal folgende Quest:
Code:
quest deviltower_zone begin
state start begin
when login begin
if pc.get_map_index() == 66 then
if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
pc.warp((5376+532)*100, (512+596+4)*100, 65)
end
pc.set_warp_location(65, 5376+532, 512+596+4)
elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
pc.set_warp_location(65, 5376+532, 512+596+4)
end
end
when logout begin
if pc.count_item(30300) >= 1 then
pc.remove_item(30300, pc.count_item(30300))
end
-- not used in the game
-- pc.remove_item(30301, pc.count_item(30301))
if pc.count_item(30302) >= 1 then
pc.remove_item(30302, pc.count_item(30302))
end
end
when deviltower_man.chat.gameforge.deviltower_zone._10_npcChat begin
if pc.get_level() < 40 then
say_title(gameforge.deviltower_zone._20_sayTitle)
say(gameforge.deviltower_zone._30_say)
else
say_title(gameforge.deviltower_zone._20_sayTitle)
say(gameforge.deviltower_zone._40_say)
local s = select(gameforge.locale.monkey_dungeon.enter, gameforge.locale.monkey_dungeon.no_enter)
if s == 1 then
pc.warp(216500,727000)
end
end
end
when devil_stone1.kill begin
timer("devil_stone1_1", 6)
end
when devil_stone1_1.timer begin
d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
d.regen_file("data/dungeon/deviltower2_regen.txt")
d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
end
when devil_stone3.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
d.check_eliminated()
end
function get_4floor_stone_pos()
local positions =
{
{368, 629}, {419, 630}, {428, 653}, {422, 679},
{395, 689}, {369, 679}, {361, 658},
}
for i = 1, 6 do
local j = number(i, 7)
if i != j then
local t = positions[i];
positions[i] = positions[j];
positions[j] = t;
end
end
return positions
end
when 8016.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.setf("level", 4)
local positions = deviltower_zone.get_4floor_stone_pos()
for i = 1, 6 do
test_chat(positions[i][1], positions[i][2])
d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
end
test_chat(positions[7][1], positions[7][2])
local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
test_chat(vid)
d.set_unique("real", vid)
server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())
notice_multiline(gameforge.deviltower_zone._50_dNotice,d.notice)
end
when devil_stone4_fail1.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._60_dNotice,d.notice)
server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail2.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._70_dNotice,d.notice)
server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._80_dNotice,d.notice)
d.clear_regen()
d.exit_all()
clear_server_timer('devil_stone4_update', get_server_timer_arg())
end
end
when devil_stone4_update.server_timer begin
if d.select(get_server_timer_arg()) then
if not d.is_unique_dead("real") then
for i = 1, 6 do
if d.getf("fakedead" .. i) == 0 then
if d.unique_get_hp_perc("fake" .. i) < 50 then
d.purge_unique("fake" .. i)
d.setf("fakedead" .. i, 1)
notice_multiline(gameforge.deviltower_zone._90_dNotice,d.notice)
end
end
end
else
server_timer("devil_stone4_end", 5, get_server_timer_arg())
--d.kill_all()
d.purge()
notice_multiline(gameforge.deviltower_zone._100_dNotice,d.notice)
clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
clear_server_timer('devil_stone4_fail', get_server_timer_arg())
end
else
server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
end
end
when devil_stone4_stop_timer.server_timer begin
clear_server_timer('devil_stone4_update', get_server_timer_arg())
end
when devil_stone4_end.server_timer begin
if d.select(get_server_timer_arg()) then
clear_server_timer('devil_stone4_update', get_server_timer_arg())
clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
clear_server_timer('devil_stone4_fail', get_server_timer_arg())
-- clear regen from memory when exit
d.clear_regen()
d.setf("level", 5)
d.setf("stone_count", 5)
notice_multiline(gameforge.deviltower_zone._110_dNotice,d.notice)
d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
clear_server_timer('devil_stone4_update', get_server_timer_arg())
d.set_regen_file("data/dungeon/deviltower5_regen.txt")
d.spawn_mob(20073, 421, 452)
d.spawn_mob(20073, 380, 460)
d.spawn_mob(20073, 428, 414)
d.spawn_mob(20073, 398, 392)
d.spawn_mob(20073, 359, 426)
end
end
when devil_stone5_fail1.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._120_dNotice,d.notice)
server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail2.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._60_dNotice,d.notice)
server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail3.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._70_dNotice,d.notice)
server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._80_dNotice,d.notice)
d.exit_all()
end
end
when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
local KILL_COUNT_FOR_DROP_KEY = 50
local n =d.getf("count") + 1
d.setf("count", n)
if n == KILL_COUNT_FOR_DROP_KEY then
game.drop_item(50084, 1)
d.setf("count", 0)
end
end
when devil_stone5.take with item.vnum == 50084 begin
npc.purge()
item.remove()
d.setf("stone_count", d.getf("stone_count") - 1)
if d.getf("stone_count") <= 0 then
d.setf("level", 6)
d.clear_regen()
d.regen_file("data/dungeon/deviltower6_regen.txt")
notice_multiline(gameforge.deviltower_zone._130_dNotice,d.notice)
d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
local server_arg = d.get_map_index()
clear_server_timer('devil_stone5_fail1', server_arg)
clear_server_timer('devil_stone5_fail2', server_arg)
clear_server_timer('devil_stone5_fail3', server_arg)
clear_server_timer('devil_stone5_fail', server_arg)
else
d.notice(string.format(gameforge.deviltower_zone._140_dNotice, d.getf("stone_count")))
end
end
when devil_stone6.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and d.getf("level") == 6 begin
d.kill_all()
notice_multiline(gameforge.deviltower_zone._150_dNotice,d.notice)
d.check_eliminated()
notice_multiline(gameforge.deviltower_zone._160_dNotice,d.notice)
local reward_alchemist = {20074, 20075, 20076}
d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
d.setqf2("deviltower_zone","can_refine", 1)
end
when 20074.chat.gameforge.deviltower_zone._170_npcChat with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(mob_name(20074))
say(gameforge.deviltower_zone._190_say)
wait()
if pc.level >=75 then
say_title(mob_name(20074))
say(gameforge.deviltower_zone._200_say)
local s= select(gameforge.deviltower_zone._210_select, gameforge.locale.cancel, gameforge.deviltower_zone._220_select)
if s==3 then
pc.warp(590500, 110900)
return
end
if s==2 then
return
end
timer("devil_jump_7", 6)
npc.unlock()
d.purge()
return
end
say_title(mob_name(20074))
say(gameforge.deviltower_zone._230_say)
wait()
pc.warp(590500, 110500)
return
end
when 20075.chat.gameforge.deviltower_zone._170_npcChat with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(mob_name(20075))
say(gameforge.deviltower_zone._190_say)
wait()
if pc.level >=75 then
say_title(mob_name(20075))
say(gameforge.deviltower_zone._200_say)
local s= select(gameforge.deviltower_zone._210_select, gameforge.deviltower_zone._220_select)
if s==3 then
pc.warp(590500, 110900)
return
end
if s==2 then
return
end
timer("devil_jump_7", 6)
npc.unlock()
d.purge()
return
end
say_title(mob_name(20075))
say(gameforge.deviltower_zone._230_say)
wait()
pc.warp(590500, 110500)
return
end
when 20076.chat.gameforge.deviltower_zone._170_npcChat with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(mob_name(20076))
say(gameforge.deviltower_zone._190_say)
wait()
if pc.level >=75 then
say_title(mob_name(20076))
say(gameforge.deviltower_zone._200_say)
local s= select(gameforge.deviltower_zone._210_select, gameforge.deviltower_zone._220_select)
if s==3 then
pc.warp(590500, 110900)
return
end
if s==2 then
return
end
timer("devil_jump_7", 6)
npc.unlock()
d.purge()
return
end
say_title(mob_name(20076))
say(gameforge.deviltower_zone._230_say)
wait()
pc.warp(590500, 110500)
return
end
when devil_jump_7.timer begin
d.clear_regen()
d.spawn_mob(8018, 639, 658)
d.spawn_mob(8018, 611, 637)
d.spawn_mob(8018, 596, 674)
d.spawn_mob(8018, 629, 670)
d.setf("level", 7)
notice_multiline(gameforge.deviltower_zone._240_dNotice,d.notice)
d.jump_all(2048+590, 6656+638)
end
when 8018.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
local cont = d.getf("7_stone_kill") + 1
d.setf("7_stone_kill", cont)
if cont >= 4 then
d.setf("7_stone_kill", 0)
d.set_regen_file("data/dungeon/deviltower7_regen.txt")
end
end
when 8019.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
game.drop_item(30300, 1)
end
when 30300.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
pc.remove_item("30300", 1)
local pct = number(1,10)
if pct == 1 then
game.drop_item(30302, 1)
d.clear_regen()
else
-- nothing happens cause the items isnt used in the game
-- game.drop_item(30301, 1)
end
end
when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
if d.getf( "level" ) != 7 then
pc.remove_item( "30302", 1)
return
end
say_title(gameforge.blacksmith._40_sayTitle)
say(gameforge.deviltower_zone._250_say)
pc.remove_item("30302", 1)
timer("devil_jump_8", 6)
d.clear_regen()
end
when devil_jump_8.timer begin
d.setf("level", 8)
notice_multiline(gameforge.deviltower_zone._260_dNotice,d.notice)
d.jump_all(2048+590, 6656+403)
d.set_regen_file("data/dungeon/deviltower8_regen.txt")
d.spawn_mob(20366, 640, 460)
local _count = pc.count_item(30302)
pc.remove_item(30302,_count)
end
when 1040.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
local pct1 = number(1, 5)
if pct1 == 1 then
local pct2 = number(1, 10)
if pct2 == 1 then
game.drop_item(30304, 1)
else
game.drop_item(30303, 1)
end
else
return
end
end
when 20366.take with item.vnum == 30304 begin
npc.purge()
item.remove()
timer("devil_jump_9", 6)
end
when devil_jump_9.timer begin
d.setf("level", 9)
notice_multiline(gameforge.deviltower_zone._270_dNotice,d.notice)
d.jump_all(2048+590, 6656+155)
d.regen_file("data/dungeon/deviltower9_regen.txt")
end
when 1093.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.kill_all()
d.setqf2("deviltower_zone","9_done", 1)
notice_multiline(gameforge.deviltower_zone._280_dNotice,d.notice)
notice_multiline(gameforge.deviltower_zone._290_dNotice,d.notice)
server_timer("devil_end_jump", 60, d.get_map_index())
end
when devil_end_jump.server_timer begin
if d.select (get_server_timer_arg()) then
d.clear_regen()
d.exit_all()
end
end
end
end
Die stammt aus den offiziellen Files von 2013 und unterscheidet sich nur geringfügig zu deiner.
|
|
|
10/29/2023, 23:53
|
#7
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Quote:
Originally Posted by Rainer Wahnsinn
Teste bitte einmal folgende Quest:
Code:
quest deviltower_zone begin
state start begin
when login begin
if pc.get_map_index() == 66 then
if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
pc.warp((5376+532)*100, (512+596+4)*100, 65)
end
pc.set_warp_location(65, 5376+532, 512+596+4)
elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
pc.set_warp_location(65, 5376+532, 512+596+4)
end
end
when logout begin
if pc.count_item(30300) >= 1 then
pc.remove_item(30300, pc.count_item(30300))
end
-- not used in the game
-- pc.remove_item(30301, pc.count_item(30301))
if pc.count_item(30302) >= 1 then
pc.remove_item(30302, pc.count_item(30302))
end
end
when deviltower_man.chat.gameforge.deviltower_zone._10_npcChat begin
if pc.get_level() < 40 then
say_title(gameforge.deviltower_zone._20_sayTitle)
say(gameforge.deviltower_zone._30_say)
else
say_title(gameforge.deviltower_zone._20_sayTitle)
say(gameforge.deviltower_zone._40_say)
local s = select(gameforge.locale.monkey_dungeon.enter, gameforge.locale.monkey_dungeon.no_enter)
if s == 1 then
pc.warp(216500,727000)
end
end
end
when devil_stone1.kill begin
timer("devil_stone1_1", 6)
end
when devil_stone1_1.timer begin
d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
d.regen_file("data/dungeon/deviltower2_regen.txt")
d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
end
when devil_stone3.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
d.check_eliminated()
end
function get_4floor_stone_pos()
local positions =
{
{368, 629}, {419, 630}, {428, 653}, {422, 679},
{395, 689}, {369, 679}, {361, 658},
}
for i = 1, 6 do
local j = number(i, 7)
if i != j then
local t = positions[i];
positions[i] = positions[j];
positions[j] = t;
end
end
return positions
end
when 8016.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.setf("level", 4)
local positions = deviltower_zone.get_4floor_stone_pos()
for i = 1, 6 do
test_chat(positions[i][1], positions[i][2])
d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
end
test_chat(positions[7][1], positions[7][2])
local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
test_chat(vid)
d.set_unique("real", vid)
server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())
notice_multiline(gameforge.deviltower_zone._50_dNotice,d.notice)
end
when devil_stone4_fail1.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._60_dNotice,d.notice)
server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail2.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._70_dNotice,d.notice)
server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._80_dNotice,d.notice)
d.clear_regen()
d.exit_all()
clear_server_timer('devil_stone4_update', get_server_timer_arg())
end
end
when devil_stone4_update.server_timer begin
if d.select(get_server_timer_arg()) then
if not d.is_unique_dead("real") then
for i = 1, 6 do
if d.getf("fakedead" .. i) == 0 then
if d.unique_get_hp_perc("fake" .. i) < 50 then
d.purge_unique("fake" .. i)
d.setf("fakedead" .. i, 1)
notice_multiline(gameforge.deviltower_zone._90_dNotice,d.notice)
end
end
end
else
server_timer("devil_stone4_end", 5, get_server_timer_arg())
--d.kill_all()
d.purge()
notice_multiline(gameforge.deviltower_zone._100_dNotice,d.notice)
clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
clear_server_timer('devil_stone4_fail', get_server_timer_arg())
end
else
server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
end
end
when devil_stone4_stop_timer.server_timer begin
clear_server_timer('devil_stone4_update', get_server_timer_arg())
end
when devil_stone4_end.server_timer begin
if d.select(get_server_timer_arg()) then
clear_server_timer('devil_stone4_update', get_server_timer_arg())
clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
clear_server_timer('devil_stone4_fail', get_server_timer_arg())
-- clear regen from memory when exit
d.clear_regen()
d.setf("level", 5)
d.setf("stone_count", 5)
notice_multiline(gameforge.deviltower_zone._110_dNotice,d.notice)
d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
clear_server_timer('devil_stone4_update', get_server_timer_arg())
d.set_regen_file("data/dungeon/deviltower5_regen.txt")
d.spawn_mob(20073, 421, 452)
d.spawn_mob(20073, 380, 460)
d.spawn_mob(20073, 428, 414)
d.spawn_mob(20073, 398, 392)
d.spawn_mob(20073, 359, 426)
end
end
when devil_stone5_fail1.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._120_dNotice,d.notice)
server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail2.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._60_dNotice,d.notice)
server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail3.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._70_dNotice,d.notice)
server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.deviltower_zone._80_dNotice,d.notice)
d.exit_all()
end
end
when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
local KILL_COUNT_FOR_DROP_KEY = 50
local n =d.getf("count") + 1
d.setf("count", n)
if n == KILL_COUNT_FOR_DROP_KEY then
game.drop_item(50084, 1)
d.setf("count", 0)
end
end
when devil_stone5.take with item.vnum == 50084 begin
npc.purge()
item.remove()
d.setf("stone_count", d.getf("stone_count") - 1)
if d.getf("stone_count") <= 0 then
d.setf("level", 6)
d.clear_regen()
d.regen_file("data/dungeon/deviltower6_regen.txt")
notice_multiline(gameforge.deviltower_zone._130_dNotice,d.notice)
d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
local server_arg = d.get_map_index()
clear_server_timer('devil_stone5_fail1', server_arg)
clear_server_timer('devil_stone5_fail2', server_arg)
clear_server_timer('devil_stone5_fail3', server_arg)
clear_server_timer('devil_stone5_fail', server_arg)
else
d.notice(string.format(gameforge.deviltower_zone._140_dNotice, d.getf("stone_count")))
end
end
when devil_stone6.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and d.getf("level") == 6 begin
d.kill_all()
notice_multiline(gameforge.deviltower_zone._150_dNotice,d.notice)
d.check_eliminated()
notice_multiline(gameforge.deviltower_zone._160_dNotice,d.notice)
local reward_alchemist = {20074, 20075, 20076}
d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
d.setqf2("deviltower_zone","can_refine", 1)
end
when 20074.chat.gameforge.deviltower_zone._170_npcChat with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(mob_name(20074))
say(gameforge.deviltower_zone._190_say)
wait()
if pc.level >=75 then
say_title(mob_name(20074))
say(gameforge.deviltower_zone._200_say)
local s= select(gameforge.deviltower_zone._210_select, gameforge.locale.cancel, gameforge.deviltower_zone._220_select)
if s==3 then
pc.warp(590500, 110900)
return
end
if s==2 then
return
end
timer("devil_jump_7", 6)
npc.unlock()
d.purge()
return
end
say_title(mob_name(20074))
say(gameforge.deviltower_zone._230_say)
wait()
pc.warp(590500, 110500)
return
end
when 20075.chat.gameforge.deviltower_zone._170_npcChat with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(mob_name(20075))
say(gameforge.deviltower_zone._190_say)
wait()
if pc.level >=75 then
say_title(mob_name(20075))
say(gameforge.deviltower_zone._200_say)
local s= select(gameforge.deviltower_zone._210_select, gameforge.deviltower_zone._220_select)
if s==3 then
pc.warp(590500, 110900)
return
end
if s==2 then
return
end
timer("devil_jump_7", 6)
npc.unlock()
d.purge()
return
end
say_title(mob_name(20075))
say(gameforge.deviltower_zone._230_say)
wait()
pc.warp(590500, 110500)
return
end
when 20076.chat.gameforge.deviltower_zone._170_npcChat with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(mob_name(20076))
say(gameforge.deviltower_zone._190_say)
wait()
if pc.level >=75 then
say_title(mob_name(20076))
say(gameforge.deviltower_zone._200_say)
local s= select(gameforge.deviltower_zone._210_select, gameforge.deviltower_zone._220_select)
if s==3 then
pc.warp(590500, 110900)
return
end
if s==2 then
return
end
timer("devil_jump_7", 6)
npc.unlock()
d.purge()
return
end
say_title(mob_name(20076))
say(gameforge.deviltower_zone._230_say)
wait()
pc.warp(590500, 110500)
return
end
when devil_jump_7.timer begin
d.clear_regen()
d.spawn_mob(8018, 639, 658)
d.spawn_mob(8018, 611, 637)
d.spawn_mob(8018, 596, 674)
d.spawn_mob(8018, 629, 670)
d.setf("level", 7)
notice_multiline(gameforge.deviltower_zone._240_dNotice,d.notice)
d.jump_all(2048+590, 6656+638)
end
when 8018.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
local cont = d.getf("7_stone_kill") + 1
d.setf("7_stone_kill", cont)
if cont >= 4 then
d.setf("7_stone_kill", 0)
d.set_regen_file("data/dungeon/deviltower7_regen.txt")
end
end
when 8019.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
game.drop_item(30300, 1)
end
when 30300.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
pc.remove_item("30300", 1)
local pct = number(1,10)
if pct == 1 then
game.drop_item(30302, 1)
d.clear_regen()
else
-- nothing happens cause the items isnt used in the game
-- game.drop_item(30301, 1)
end
end
when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
if d.getf( "level" ) != 7 then
pc.remove_item( "30302", 1)
return
end
say_title(gameforge.blacksmith._40_sayTitle)
say(gameforge.deviltower_zone._250_say)
pc.remove_item("30302", 1)
timer("devil_jump_8", 6)
d.clear_regen()
end
when devil_jump_8.timer begin
d.setf("level", 8)
notice_multiline(gameforge.deviltower_zone._260_dNotice,d.notice)
d.jump_all(2048+590, 6656+403)
d.set_regen_file("data/dungeon/deviltower8_regen.txt")
d.spawn_mob(20366, 640, 460)
local _count = pc.count_item(30302)
pc.remove_item(30302,_count)
end
when 1040.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
local pct1 = number(1, 5)
if pct1 == 1 then
local pct2 = number(1, 10)
if pct2 == 1 then
game.drop_item(30304, 1)
else
game.drop_item(30303, 1)
end
else
return
end
end
when 20366.take with item.vnum == 30304 begin
npc.purge()
item.remove()
timer("devil_jump_9", 6)
end
when devil_jump_9.timer begin
d.setf("level", 9)
notice_multiline(gameforge.deviltower_zone._270_dNotice,d.notice)
d.jump_all(2048+590, 6656+155)
d.regen_file("data/dungeon/deviltower9_regen.txt")
end
when 1093.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.kill_all()
d.setqf2("deviltower_zone","9_done", 1)
notice_multiline(gameforge.deviltower_zone._280_dNotice,d.notice)
notice_multiline(gameforge.deviltower_zone._290_dNotice,d.notice)
server_timer("devil_end_jump", 60, d.get_map_index())
end
when devil_end_jump.server_timer begin
if d.select (get_server_timer_arg()) then
d.clear_regen()
d.exit_all()
end
end
end
end
Die stammt aus den offiziellen Files von 2013 und unterscheidet sich nur geringfügig zu deiner.
|
Guten Abend Rainer Wahnsinn,
ich danke dir erstmal für diese Hilfestellung
Ich habe die Quest eben eingebaut und ausprobiert und das Resultat ist folgendes: Der DT Run geht bis zum 5. Stock, an dem man diese Schlüssel für die Siegel finden muss, Schlüssel kommen aber keine.
Die sysserr gibt aber auf jeden Fall keine Meldung bezüglich des UniqueHP und dem "fake" mehr aus. nur noch das hier -->
Code:
SYSERR: Oct 29 23:29:39 :: pid_init:
Start of pid: 71509
SYSERR: Oct 29 23:38:30 :: IsUniqueDead: Unknown Key or Dead : real
SYSERR: Oct 29 23:44:56 :: pid_init:
Start of pid: 71579
In meinen Augen schonmal ein gutes Zeichen, doch verstehe nicht weshalb die Schlüssel nicht kommen, obwohl ich hier:
Code:
when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
local KILL_COUNT_FOR_DROP_KEY = 50
local n =d.getf("count") + 1
d.setf("count",n)
if n == KILL_COUNT_FOR_DROP_KEY then
game.drop_item(50084,1)
d.setf("count",0)
end
end
Obwohl ich den Raum 2x komplett gesäubert habe, müsste ich mindestens 1x son Schlüssel bekommen und diese Voraussetzung in der Quest erfüllt haben ^^
|
|
|
10/30/2023, 18:41
|
#8
|
elite*gold: 240
Join Date: May 2014
Posts: 214
Received Thanks: 115
|
Ich habe Zweifel, dass die Stelle des Codes, an dem der Drop geregelt wird
( when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin),
überhaupt erreicht wird.
Diese Meldung
Code:
SYSERR: Oct 29 23:38:30 :: IsUniqueDead: Unknown Key or Dead : real
wird durch die Zeile
Code:
if not d.is_unique_dead("real") then
in
Code:
when devil_stone4_update.server_timer begin
hervorgerufen.
An deiner Stelle würde ich mich nun Stück für Stück vortasten.
Sprich, jede if-Bedingungen und when-Block mit einer Debug-Message versehen, um zu prüfen, ob die Stelle im Code erreicht wird.
Das Löschen der Monster bevor die Ebene gewechselt wird, ist hier auch nicht außer Acht zu lassen.
Inwiefern jedoch ist für mich nicht ersichtlich - was den Sourcecode anbelangt.
Evtl. auch mal die Zeile --d.kill_all() unter
Code:
server_timer("devil_stone4_end", 5, get_server_timer_arg())
wieder miteinbeziehen, sodass vor dem Wechsel in die 5. Ebene gekillt und gepurged wird.
Ich guck, dass ich meine Umgebung wieder ans Laufen kriege und teste die Tage auch nochmal bei mir!
Grüße
|
|
|
10/30/2023, 19:22
|
#9
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Quote:
Originally Posted by Rainer Wahnsinn
Ich habe Zweifel, dass die Stelle des Codes, an dem der Drop geregelt wird
( when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin),
überhaupt erreicht wird.
Diese Meldung
Code:
SYSERR: Oct 29 23:38:30 :: IsUniqueDead: Unknown Key or Dead : real
wird durch die Zeile
Code:
if not d.is_unique_dead("real") then
in
Code:
when devil_stone4_update.server_timer begin
hervorgerufen.
An deiner Stelle würde ich mich nun Stück für Stück vortasten.
Sprich, jede if-Bedingungen und when-Block mit einer Debug-Message versehen, um zu prüfen, ob die Stelle im Code erreicht wird.
Das Löschen der Monster bevor die Ebene gewechselt wird, ist hier auch nicht außer Acht zu lassen.
Inwiefern jedoch ist für mich nicht ersichtlich - was den Sourcecode anbelangt.
Evtl. auch mal die Zeile --d.kill_all() unter
Code:
server_timer("devil_stone4_end", 5, get_server_timer_arg())
wieder miteinbeziehen, sodass vor dem Wechsel in die 5. Ebene gekillt und gepurged wird.
Ich guck, dass ich meine Umgebung wieder ans Laufen kriege und teste die Tage auch nochmal bei mir!
Grüße
|
Okey, ich danke dir. Falls ich etwas raus bekomme, editiere ich es hier hinein. Als workaround habe ich vorübergehend dies so eingestellt:
Code:
when kill with pc.in_dungeon() and d.getf("level") == 5 begin
local dkey=math.random(0,60)
if dkey == 59 then
game.drop_item(50084,1)
end
end
Allerdings ist diese Methode von mir jetzt ziemlich unellegant und ich vermeide dadurch leider nicht diese syserr Meldung. Aber wenigstens kommen diese Schlüssel dort vor und man kann den Run wenigstens mal bis zum Turm Schmied mal machen.
Mit freundlichen Grüßen, Endless
|
|
|
Similar Threads
|
HOOOOTTT!!!! Social Empires Cash hack (run run Run
04/02/2012 - Facebook - 10 Replies
Social Empires Cash Hack March 2012 - YouTube
this is the link for cash hack
finally it is completed
don't say thanks , press it ;)
New hacks coming
Heyyy people some say it works and others it doesnt
download teamviewer and i will explain it to you
And don't forget to press Thanks ;)
Contact me for everything
|
Compile all quest without quest's files list // Kompilieren Sie alle Quest ohne Quest
07/17/2011 - Metin2 PServer Guides & Strategies - 3 Replies
ENGLISH
Hello dear community, this is a very simple guide but at the same time useful.
How to compile ALL quest in the folder "quest" without the files list in the file "locale_list"?
Easy!
Open the file "make" and replace the content of the file with this:
for f in *.quest; do ./qc $f; done
Oki. Now set the 0777 permission to the file.
Finally open a SSH client and sign in. Write the command:
cd /game_file_folder
|
All times are GMT +2. The time now is 07:10.
|
|