Servus,
habe eben mal die Nemere Quest in die Fliege Files eingefügt, es funktioniert alles perfekt bis ich in der 4. Ebene komme, dort crasht nämlich der Server, alle Chars werden ausgelogt.
Syserr:
[sbox]
SYSERR: Feb 11 16:27:24 :: AddServerTimer: already registered server timer name:Jp_3 arg:3540000
SYSERR: Feb 11 16:29:38 :: RunState: LUA_ERROR: locale/germany/quest/object/state/snow_dungeon:170: attempt to index field `?' (a nil value)
SYSERR: Feb 11 16:29:38 :: WriteRunningStateToSyserr: LUA_ERROR: quest snow_dungeon.start click
[/sbox]
Quest:
- quest snow_dungeon begin
- state start begin
- when 9010.chat."Spawn Statuie" with snow_dungeon.is_nemeres_dungeon() == true begin
- d.purge()
- d.spawn_mob_dir(20397, 173,262,1)
- setskin(NOWINDOW)
- end
- when 9010.chat."TESTSERVER: SnowD Jump level 9" with snow_dungeon.is_nemeres_dungeon() == true begin
- local set = snow_dungeon.get_settings()
- d.notice("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
- server_timer("Jp_9",6,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
- setskin(NOWINDOW)
- end
- when 9010.chat."TESTSERVER: SnowD Jump level 10" with snow_dungeon.is_nemeres_dungeon() == true begin
- local set = snow_dungeon.get_settings()
- server_timer("Jp_Boss",3,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
- local v = set.BossVnumGroup
- d.spawn_group(v, 928, 335, 5 ,1, 1) -- (Input from SRC: argument: vnum,x,y,radius,aggressive,count)
- setskin(NOWINDOW)
- end
- when 9010.chat."TESTSERVER: SnowD Spawn Boss" with snow_dungeon.is_nemeres_dungeon() == true begin
- local set = snow_dungeon.get_settings()
- local v = set.BossVnumGroup
- d.spawn_group(v, 928, 335, 5 ,1, 1) -- (INFO from SRC: argument: vnum,x,y,radius,aggressive,count)
- end
- when 9010.chat."TESTSERVER: SnowD Ending" with snow_dungeon.is_nemeres_dungeon() == true begin
- server_timer("Jp_OutAll",5,d.get_map_index())
- say("done")
- end
- -- when 30331.use begin --key_level_2
- -- LIB_writelog("{"..pc.get_local_x()..","..pc.get_local_y().."}",3,"snowcordis.txt")
- -- d.spawn_mob(20399, pc.get_local_x(), pc.get_local_y())
- -- chat("write north star coordinates")
- -- end
- when 9010.chat."TESTSERVER: SnowD Spawn create Cords Test level 5" with snow_dungeon.is_nemeres_dungeon() == true begin
- snow_dungeon._Create_Stones_level5()
- setskin(NOWINDOW)
- end
- when 9010.chat."TESTSERVER: SnowD Create Key level 5" with snow_dungeon.is_nemeres_dungeon() == true begin
- snow_dungeon._DropKeyOnLevel5()
- setskin(NOWINDOW)
- end
- when 9010.chat."TESTSERVER: SnowD Get cord from Level" with snow_dungeon.is_nemeres_dungeon() == true begin
- local set = snow_dungeon.get_settings()
- local warp_to_level = set.Position_level_1
- local level = 2
- say("old: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
- local warp_to_level = set. _G[ "Position_level_"..level ]
- say("new: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
- --DONT WORKS!
- end
- function get_settings()
- local snow_dungeon_settings = {}
- snow_dungeon_settings.map_index = 354 --Mapindex
- snow_dungeon_settings.base_cord = {5120, 1536 } --Base Kordinaten
- snow_dungeon_settings.outside_entry_pos = {61,4321,1667} --Mapindex, Exit Position (Eisland)
- snow_dungeon_settings.need_level = 100 --Ab wann ist der Dungeon betretbar.
- snow_dungeon_settings.need_level_group = 100 --Benötigte Level für Gruppenmitglieder
- snow_dungeon_settings.WaitBeforOutAllOnExit = 60 --Wartezeit bevor alle alle herausteleportiert werden bei einem erfolgreichen Run. (Empfohlen 60)
- snow_dungeon_settings.NextJumpTime = 5 --Wann man zur nächsten ebene Gejumpt wird (timer) (Empfohlen 5)
- snow_dungeon_settings.DurationLoopTimer = 45 --Welchen intervall die Level und Missionen geprüft werden sollen. (Empfohlen 45)
- snow_dungeon_settings.wait_duration = 24 --Ab wann der Dungeon wieder betretbar ist (PartyLeader)
- snow_dungeon_settings.maxlife_time_on_dungeon = 60*60*1 --Maximale Zeit für den Dungeon.
- snow_dungeon_settings.DurationMaxOnReJoinGroup = 60*5 --Maximale Zeit innerhalb wann man wieder in die Gruppe joinen kann.
- snow_dungeon_settings.key_level_2 = 30331 --KeyVnum für die 2.Ebene --Frostschlüssel
- snow_dungeon_settings.NpcVnum_level_5 = 20398 --MobVnum von 5.Ebene --Würfel des Arktos
- snow_dungeon_settings.StoneCount_level_5 = 6 --Wie viele Würfel des Arktos sollen erscheinen?
- snow_dungeon_settings.Key_on_level_5 = 30332 --KeyVnum von 5.Ebene --Nordstern
- snow_dungeon_settings.StoneCords_level_5 = {
- {432,508},{437,493},{448,492},{448,476},{467,475},{466,464},
- {462,450},{458,428},{446,439},{431,431},{415,416},{402,427},
- {397,438},{375,434},{374,456},{390,468},{385,492},{402,505},
- {404,489},{386,482}
- } --Positionen von Würfel des Arktos
- snow_dungeon_settings.MobVnum_level_6 = 8058 --MobVnum von 6.Ebene --Metin der Kälte
- snow_dungeon_settings.MobVnum_level_7 = 6151 --MobVnum von 7.Ebene --Szel
- snow_dungeon_settings.SzelCords_level_7 = {
- {752,499},{758,479},{772,452},{763,444},{750,451},{728,441},
- {726,455},{718,482},{715,491},{731,473},{748,429}
- } --Positionen von Szel
- snow_dungeon_settings.Key_on_level_8 = 30333 --KeyVnum von 8.Ebene --Eisblumenschlüssel
- snow_dungeon_settings.NpcVnum_level_9 = 20399 --MobVnum von 9.Ebene --Säule des Norddrachen
- snow_dungeon_settings.BossVnumGroup = 6062 --GroupMobVnum vom Boss --(Group.txt)
- snow_dungeon_settings.BossVnum = 6191 --MobVnum von 10.Ebene --Nemere(6191)
- snow_dungeon_settings.Position_level_1 = { 171,271 } --Position ebene 1 --Startposition --Töte alle Monster auf dieser Ebene.
- snow_dungeon_settings.Position_level_2 = { 761,270 } --Position ebene 2 --Finde den richtigen Frostschlüssel, nur ein Schamane kann ihn benutzen.
- snow_dungeon_settings.Position_level_3 = { 187,491 } --Position ebene 3 --Töte alle Monster auf dieser Ebene.
- snow_dungeon_settings.Position_level_4 = { 421,259 } --Position ebene 4 --Töte alle Monster auf dieser Ebene.
- snow_dungeon_settings.Position_level_5 = { 419,530 } --Position ebene 5 --Öffnet die Siegel an den Würfel des Arktos in der richtigen Reihenfolge. (Zieht Nordstern auf die Würfel)
- snow_dungeon_settings.Position_level_6 = { 571,706 } --Position ebene 6 --Töte alle Monster auf dieser Ebene. Danach Zersöre den Metin der Kälte (Nur ein Schamane kann ihn Schaden)
- snow_dungeon_settings.Position_level_7 = { 746,534 } --Position ebene 7 --Töte alle Monster auf dieser Ebene und Szel
- snow_dungeon_settings.Position_level_8 = { 303,710 } --Position ebene 8 --Der Eisblumenschlüssel muss gedroppt werden, jedoch kann dieser nur von Schamanen und Ninja benutzt werden.
- snow_dungeon_settings.Position_level_9 = { 848,693 } --Position ebene 9 --Zerstört die Säule des Norddrachen. Nur Ninjas und Schamanen können ihm Schaden zufügen.
- snow_dungeon_settings.Position_level_10 = { 927,391 } --Position ebene 10 (BossZone) --Besiege Nemere, den König über Frost und Eis.
- snow_dungeon_settings.Enable_TestServerMode = false --Ob TestServer mode aktiviert ist. Wenn ja werden die Aufgaben schneller beendet.
- snow_dungeon_settings.IsNewGameRevision = true --Need GameRevision 40301
- return snow_dungeon_settings
- end
- function is_TestServerMode()
- local set = snow_dungeon.get_settings()
- return set.Enable_TestServerMode
- end
- function is_nemeres_dungeon()
- local set = snow_dungeon.get_settings()
- local map = pc.get_map_index()
- if map >= (set.map_index * 10000) and map < (set.map_index * 10000 + 9000) then
- return true
- else
- return false
- end
- end
- when 20395.chat."Alãturã-te din nou grupei" with (party.is_party() and d.find(party.getf("ice_dungeon_map_index"))) begin
- local set = snow_dungeon.get_settings()
- local n = party.getf("ice_dungeon_map_index")
- local cord = set.base_cord
- local level = d.getf_from_map_index("level", n)
- --say("News Dungeon Level your group: "..level.."")
- if level == 0 then
- --say_npc_name()
- say("Grupul tãu a terminat deja dungeonul.")
- return
- end
- if pc.getqf("out_party_time") < get_global_time() then
- --say_npc()
- say("")
- say("Ai mai mult de "..math.ceil(set.DurationMaxOnReJoinGroup /60) .." Minute")
- say("Nu mai poþi intra acum!")
- say(" ")
- return
- end
- if n == 0 then
- setskin(NOWINDOW)
- return
- else
- --say_npc()
- say("")
- say("Vrei sã te alãturi din nou grupei?")
- if select("Da","Nu") == 1 then
- local warp_to_level = set.Position_level_1
- local level = d.getf_from_map_index("level", n)
- if level >= 1 and level <= 10 then
- if level == 1 then warp_to_level = set.Position_level_1
- elseif level == 2 then warp_to_level = set.Position_level_2
- elseif level == 3 then warp_to_level = set.Position_level_3
- elseif level == 4 then warp_to_level = set.Position_level_4
- elseif level == 5 then warp_to_level = set.Position_level_5
- elseif level == 6 then warp_to_level = set.Position_level_6
- elseif level == 7 then warp_to_level = set.Position_level_7
- elseif level == 8 then warp_to_level = set.Position_level_8
- elseif level == 9 then warp_to_level = set.Position_level_9
- elseif level == 10 then warp_to_level = set.Position_level_10
- end
- pc.warp((cord[1] + warp_to_level[1])*100,(cord[2] + warp_to_level[2])*100,n)
- else
- return
- end
- end
- end
- end
- when 20395.chat."Turnul lui Nemere" begin
- local set = snow_dungeon.get_settings()
- local need_level = set.need_level
- ----say_npc()
- say("")
- say("Esti sigur ca vrei sa intri ")
- say("in Turnul lui Nemere?")
- if select("Da! Vrem sa intram. "," Nu, e prea frig acolo ...") == 2 then
- return
- end
- if (pc.is_gm() and pc.getf("snow_dungeon","duration") >= get_global_time()) then
- say("Your are GameMaster, remove the duration?")
- if select("Yes","No") == 1 then
- pc.setf("snow_dungeon","duration",0)
- return
- end
- end
- if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
- say("TestServer Mode is enable.")
- say("Join now")
- timer("make_dungeon",3)
- return
- end
- if not party.is_leader() then
- --say_npc()
- say("Iti apreciez curajul insa singur ")
- say("nu poti intra in Turnul lui Nemere.")
- say("Strange un grup puternic in care sa ai ")
- say("un Ninja si un Saman si intoarcete la mine")
- return
- end
- if pc.get_level() < need_level then
- say("Trebuie sa ai cel putin nivelul "..need_level.."")
- say("pentru a intra in Turnul lui Nemere.")
- return
- end
- if pc.getf("snow_dungeon","duration") >= get_global_time() then
- --say_npc()
- say("Timpul de asteptare pentru a intra dinou in ")
- say("Turnul lui Nemere nu a expirat. ")
- say("Timp de asteptare: "..LIB_duration(pc.getf("snow_dungeon","duration") - get_global_time()).."")
- return
- end
- if snow_dungeon._CheckMembersLevel() == false then
- return
- else
- timer("make_dungeon",2)
- end
- end
- when 20397.chat."Batalia Incepe" begin --Eisiger Löwe
- --say_npc()
- say("")
- say("Esti sigur ca vrei sa incepi?")
- if select("Da","Nu, Poate mai tarziu") == 1 then
- local set = snow_dungeon.get_settings()
- local loop_durr = set.DurationLoopTimer
- local wait_durations = set.wait_duration
- local t = get_global_time()
- d.setf("LastTimeGetOutPut",0)
- server_loop_timer("CheckLevelAndCountKillOnMobs",loop_durr,d.get_map_index())
- d.regen_file("data/dungeon/ice_dungeon/zone_1.txt")
- d.setf("Start_Time",t + set.maxlife_time_on_dungeon)
- server_timer("Jp_OutAllFailNotice",(t + set.maxlife_time_on_dungeon) - t,d.get_map_index())
- --pc.setqf("duration",t + wait_durations)
- d.setqf2("snow_dungeon","duration",t + wait_durations)
- d.setf("level",1)
- d.notice("Primii monstri au aparut. Omoarai pe toti pentru a trece la nivelul urmator.")
- npc.purge()
- snow_dungeon._GetLastTime()
- end
- setskin(NOWINDOW)
- end
- when make_dungeon.timer begin
- local set = snow_dungeon.get_settings()
- local cord = set.base_cord
- local start_pos = set.Position_level_1
- local t = get_global_time()
- d.new_jump_party(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
- --d.new_jump_all(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
- snow_dungeon._ClearAlls()
- d.setf("party_leader_pid",party.get_leader_pid())
- party.setf("ice_dungeon_map_index",d.get_map_index())
- d.spawn_mob_dir(20397, 173,262,1) --Eisiger Löwe
- end
- function _ClearAlls()
- local d_index = d.get_map_index()
- clear_server_timer("CheckLevelAndCountKillOnMobs",d_index)
- clear_server_timer("Jp_1",d_index)
- clear_server_timer("Jp_2",d_index)
- clear_server_timer("Jp_3",d_index)
- clear_server_timer("Jp_4",d_index)
- clear_server_timer("Jp_5",d_index)
- clear_server_timer("Jp_6",d_index)
- clear_server_timer("Jp_7",d_index)
- clear_server_timer("Jp_8",d_index)
- clear_server_timer("Jp_9",d_index)
- clear_server_timer("Jp_10",d_index)
- clear_server_timer("Jp_OutAll",d_index)
- clear_server_timer("Jp_OutAllFail",d_index)
- clear_server_timer("Jp_OutAllFailNotice",d_index)
- d.setf("level",0)
- d.setf("party_leader_pid",0)
- d.setf("Start_Time",0)
- d.setf("LastTimeGetOutPut",0)
- d.setf("Stone_5_count",0)
- d.setf("Stone_5_item_fail",0)
- d.clear_regen()
- d.kill_all()
- end
- function _CheckMembersLevel()
- local set = snow_dungeon.get_settings()
- local user_fail_level = {}
- local pids = {party.get_member_pids()}
- local need_level = set.need_level_group
- local have_ninja = false
- local have_shaman = false
- for i = 1, table.getn(pids), 1 do
- q.begin_other_pc_block(pids[i])
- if pc.get_level() < need_level then
- table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name())
- end
- local job = pc.get_job()
- if job == 1 -- Ninja weiblich
- or job == 5 --Ninja männlich
- then
- have_ninja = true
- end
- if job == 3 -- Schamane weiblich
- or job == 7 --Schamane männlich
- then
- have_shaman = true
- end
- q.end_other_pc_block()
- end
- if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
- --dchat("TestServer Mode is enable.")
- return true
- end
- if have_ninja == false then
- say("Nu poti intra in acest dungeon fara un Ninja.")
- say("")
- return false
- end
- if have_shaman == false then
- say("Nu poti intra in acest dungeon fara un Saman.")
- say("")
- return false
- end
- if table.getn(user_fail_level) >= 1 then
- --say_npc()
- say("")
- say("Cativa membri din grup ")
- say("nu au nivelul "..need_level..":")
- for x = 1, table.getn(user_fail_level), 1 do
- say(color(1,1,0), " "..user_fail_level[x])
- end
- return false
- end
- if table.getn(user_fail_level) == 0 then
- return true
- end
- end
- when logout begin
- if snow_dungeon.is_nemeres_dungeon() == true then
- local set = snow_dungeon.get_settings()
- pc.setqf("out_party_time",get_global_time() + set.DurationMaxOnReJoinGroup)
- --snow_dungeon.unregister_name()
- end
- end
- when login begin
- if snow_dungeon.is_nemeres_dungeon() == true then
- local set = snow_dungeon.get_settings()
- local backk = set.outside_entry_pos
- pc.set_warp_location(backk[1], backk[2],backk[3])
- if d.getf("party_leader_pid") != party.get_leader_pid() then
- chat("nemeres_wait_dungeon #RAUS:# Grupul tau nu se afla in acest dungeon.")
- chat("nemeres_wait_dungeon #RAUS:#debug -> "..d.getf("party_leader_pid").." != "..party.get_leader_pid().."")
- d.exit()
- return
- end
- if pc.get_level() < set.need_level_group then
- chat("nemeres_wait_dungeon #RAUS:# My level is low")
- d.exit()
- return
- end
- --chat("Welcome to Nemeres waiting, you have "..math.ceil((d.getf("Start_Time") - get_global_time()) /60) .." Minutes Time.")
- --notice("Kill all the monsters on this level to get to the next floor.")
- --snow_dungeon._GetLastTime()
- end
- end
- function _GetLastTime()
- local c = get_global_time()
- local t = d.getf("Start_Time") - c
- local o = d.getf("LastTimeGetOutPut")
- --d.notice("CurrentTime: "..c.." Last: "..o.."")
- if c >= o then
- if t >= 60 then
- d.notice("Mai aveti "..math.ceil(t / 60).." Minute.")
- else
- d.notice("Mai aveti "..t .." Secunde.")
- end
- if t >= (60*10) then
- d.setf("LastTimeGetOutPut",c + 60*5)
- elseif t >= (60*5) then
- d.setf("LastTimeGetOutPut",c + 60*2)
- else
- d.setf("LastTimeGetOutPut",c + 10)
- end
- --d.setf("LastTimeGetOutPut",c + 60*number(3,5)) -- Random
- end
- end
- when Jp_OutAllFailNotice.server_timer begin
- if d.select(get_server_timer_arg()) then
- d.notice("Timpul a expirat.")
- server_timer("Jp_OutAll",1,d.get_map_index())
- end
- end
- when CheckLevelAndCountKillOnMobs.server_timer begin
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- local level = d.getf("level")
- local mob_count = d.count_monster()
- local next_jump_time = set.NextJumpTime
- --d.notice("level: "..level.." mob_count: "..mob_count.."")
- if level == 1 and mob_count <= 0 then
- d.notice("Ati infrant toti monstrii de la nivelul 1, in cateva secunde ve-ti fi teleportati la nivelul 2.")
- d.notice("")
- server_timer("Jp_2",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt")
- elseif level == 3 and mob_count <= 0 then
- d.notice("Ati infrant toti monstrii, in cateva secunde ve-ti fi teleportati la nivelul urmator.")
- d.notice("")
- server_timer("Jp_4",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_4.txt")
- elseif level == 4 and mob_count <= 0 then
- d.notice("Ati infrant toti monstrii, in cateva secunde ve-ti fi teleportati la nivelul urmator.")
- d.notice("")
- server_timer("Jp_5",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt")
- elseif level == 6 and mob_count <= 0 then
- local MobStonelvl6 = set.MobVnum_level_6
- d.notice("Ati infrant toti monstrii, "..mob_name(MobStonelvl6).." v-a aparea..")
- d.notice("")
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
- d.spawn_mob(MobStonelvl6,570,649)
- elseif level == 7 and mob_count <= 0 then
- d.notice("Ati infrant toti monstrii, in cateva secunde ve-ti fi teleportati la nivelul urmator.")
- d.notice("")
- server_timer("Jp_8",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt")
- end
- snow_dungeon._GetLastTime()
- end
- end
- when Jp_2.server_timer begin --Jump Level 2
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- local v = set.key_level_2
- d.setf("level",2)
- local cord = set.base_cord
- local pos = set.Position_level_2
- d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
- d.notice("finds the right "..item_name(v).." to get to on.")
- d.notice("")
- end
- end
- when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin --key_level_2
- local set = snow_dungeon.get_settings()
- local next_jump_time = set.NextJumpTime
- local job = pc.get_job()
- local level = d.getf("level")
- if level == 2 then
- if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
- --dchat("SET VARIABLE JOB 3")
- job = 3
- end
- if job == 3 -- Schamane weiblich
- or job == 7 --Schamane männlich
- then
- if number(1,3) == 1 then --or d.count_monster() < 10 then
- d.notice("Ati gasit cheia corecta, in cateva secunde veti fi teleportati la nivelul urmator.")
- server_timer("Jp_3",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_3.txt")
- item.remove()
- else
- d.notice("Aceasta este cheia gresita.")
- item.remove()
- end
- else
- d.notice("Numai Samanii pot folosi aceasta cheie.")
- return
- end
- end
- end
- when Jp_3.server_timer begin --Jump Level 3
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- d.setf("level",3)
- local cord_MQ = set.base_cord
- local pos = set.Position_level_3
- d.jump_all((cord_MQ[1] + pos[1]), (cord_MQ[2] + pos[2]))
- d.notice("Omorati toti monstrii si veti trece la nivelul urmator.")
- end
- end
- when Jp_4.server_timer begin --Jump Level 4
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- d.setf("level",4)
- local cord = set.base_cord
- local pos = set.Position_level_4
- d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
- d.notice("Omorati toti monstrii si veti trece la nivelul urmator..")
- end
- end
- when Jp_5.server_timer begin --Jump Level 5
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- local v = set.NpcVnum_level_5
- d.setf("level",5)
- local cord = set.base_cord
- local pos = set.Position_level_5
- d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
- d.notice("Deschide sigiilile "..mob_name(v).." in ordinea corecta.")
- if set.IsNewGameRevision == true then
- d.notice("Cheia va dropa la monstrii ...")
- else
- d.notice("Cheia se va pune automat la tine in inventar...")
- end
- snow_dungeon._Create_Stones_level5()
- end
- end
- function _DropKeyOnLevel5()
- if number(1,1000) >= 666 then --Abbruch der weiteren funtion -> Damit es spannend bleibt bei den würfeln... :P
- return
- end
- local set = snow_dungeon.get_settings()
- local count = set.StoneCount_level_5
- local vnum = set.Key_on_level_5
- local get_random_unique = d.get_unique_vid("stone5_"..number(1,count).."")
- local fail_count = d.getf("Stone_5_item_fail") +1
- local search = d.getf("Stone_5_count")
- local search2 = d.get_unique_vid("stone5_"..search.."")
- if search2 != get_random_unique then
- d.setf("Stone_5_item_fail",fail_count)
- end
- --
- if set.IsNewGameRevision == true then
- --New function
- game.drop_item_and_select(vnum,1)
- else
- pc.give_item2_select(vnum,1)
- end
- --dchat("Creaty Key fail_count: "..fail_count.."")
- if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then --Wenn TestServer Modus
- item.set_socket(1,search2)
- d.setf("Stone_5_item_fail",0)
- elseif fail_count > 6 then --Wenn mehr wie x mal nicht richtig erstellt wird, dann kommt der richtige Key
- item.set_socket(1,search2)
- d.setf("Stone_5_item_fail",0)
- else
- item.set_socket(1,get_random_unique)
- end
- end
- function _Create_Stones_level5()
- local set = snow_dungeon.get_settings()
- local stone_level5_count_MQ = set.StoneCount_level_5
- local c = set.StoneCords_level_5 --{ {432,508},{437,493},{448,492},{448,476},{467,475},{466,464}}
- local v = set.NpcVnum_level_5
- for i = 1, stone_level5_count_MQ, 1 do
- local n = number(1,table.getnC)
- --d.spawn_mob(20398, c[n][1], c[n][2])
- d.set_unique("stone5_"..i.."", d.spawn_mob(v, c[n][1], c[n][2]))
- --d.set_unique("stone5_"..i.."", mob.spawn(20398, c[n][1], c[n][2],1,1,1)) --GEHT
- --d.set_unique("stone5_"..i.."", d.spawn_mob_ac_dir(20398, c[n][1], c[n][2],i)) --GEHT
- table.remove(c,n)
- if i == 1 then
- d.setf("Stone_5_count",1)
- d.setf("Stone_5_item_fail",0)
- end
- end
- end
- when 20398.take begin --NpcVnum_level_5
- if snow_dungeon.is_nemeres_dungeon() == true then
- local set = snow_dungeon.get_settings()
- local stone_level5_count = set.StoneCount_level_5
- local next_jump_time = set.NextJumpTime
- local vnum = item.get_vnum()
- local key_level_5 = set.Key_on_level_5 --30332
- local unique_item = item.get_socket(1)
- --dchat("unique_item: "..unique_item.."")
- if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
- d.notice("TESTSERVERMODE, in a few seconds it goes to the next floor.")
- npc.purge()
- item.remove()
- server_timer("Jp_6",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
- return
- end
- if vnum == key_level_5 then
- local npc_vid = npc.get_vid()
- local search = d.getf("Stone_5_count")
- local search2 = d.get_unique_vid("stone5_"..search.."")
- --dchat("npc_vid: "..npc_vid.." search:"..search.." search2:"..search2.." ")
- if npc_vid == search2 then
- if unique_item == npc_vid then
- local new = search +1
- if new > stone_level5_count then
- d.notice("Ai deschis ultima piatrã. Te mai þin aici.")
- npc.purge()
- item.remove()
- server_timer("Jp_6",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
- else
- d.notice(""..search..". Ai deschis piatra, miºcã-te mai repede. Ai ".. stone_level5_count - search .." bucãþi.")
- npc.purge()
- item.remove()
- end
- d.setf("Stone_5_count",new)
- else
- chat("Aceasta este piatra corecta insa cheia este gresita.")
- item.remove()
- end
- else
- chat("Aceasta nu este piatra corecta.")
- end
- end
- end --if is dungeon end
- end --when end
- when Jp_6.server_timer begin --Jump Level 6
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- local v = set.MobVnum_level_6
- d.setf("level",6)
- local cord = set.base_cord
- local pos = set.Position_level_6
- d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
- d.notice("Ai distrus toti monstrii, acum distruge "..mob_name(v).."")
- d.notice("Numai Samanii il pot distruge.")
- --d.spawn_mob(v,570,649)
- end
- end
- when Jp_7.server_timer begin --Jump Level 7
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- local v = set.MobVnum_level_7
- d.setf("level",7)
- local cord = set.base_cord
- local pos = set.Position_level_7
- d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
- d.notice("Ai distrus piatra metin cu succes, acum distruge "..mob_name(v)..".")
- end
- end
- when Jp_8.server_timer begin --Jump Level 8
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- local v = set.Key_on_level_8
- d.setf("level",8)
- local cord = set.base_cord
- local pos = set.Position_level_8
- d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
- d.notice("Omoarã monºtrii cu "..item_name(v).."")
- d.notice("Numai Ninja ºi ªaman pot înþelege limba acestui obiect.")
- end
- end
- when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin --Key_on_level_8
- local set = snow_dungeon.get_settings()
- local next_jump_time = set.NextJumpTime
- local level = d.getf("level")
- local job = pc.get_job()
- if level == 8 then
- if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
- --dchat("SET VARIABLE JOB 3")
- job = 3
- end
- if job == 1 -- Ninja weiblich
- or job == 5 --Ninja männlich
- or job == 3 -- Schamane weiblich
- or job == 7 --Schamane männlich
- then
- if number(1,3) == 1 then
- d.notice("Ai gãsit cheia bunã. Vei urca mai departe în câteva secunde.")
- server_timer("Jp_9",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
- item.remove()
- else
- d.notice("Aceastã cheie nu este corectã.")
- item.remove()
- end
- else
- d.notice("Poþi folosii numai caracterele ªaman ºi Ninja.")
- return
- end
- end
- end
- when Jp_9.server_timer begin --Jump Level 9
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- local v = set.NpcVnum_level_9
- d.setf("level",9)
- local cord = set.base_cord
- local pos = set.Position_level_9
- d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
- d.notice("Omoarã "..mob_name(v).." ")
- d.notice("Se poate confrunta numai cu Saman si Ninja.")
- d.notice("")
- d.spawn_mob(v,849,655)
- end
- end
- when Jp_Boss.server_timer begin --Jump Level BossZone
- if d.select(get_server_timer_arg()) then
- local set = snow_dungeon.get_settings()
- local v = set.BossVnum
- d.setf("level",10)
- local cord = set.base_cord
- local pos = set.Position_level_10
- d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
- d.notice("Omoara "..mob_name(v)..", regele ghetii si zapezii.")
- end
- end
- when kill begin
- if snow_dungeon.is_nemeres_dungeon() == true then
- local set = snow_dungeon.get_settings()
- local next_jump_time = set.NextJumpTime
- local level = d.getf("level")
- local stone_level_6 = set.MobVnum_level_6
- local stone_level_9 = set.NpcVnum_level_9
- local boss_vnum = set.BossVnum
- local wait_time = set.WaitBeforOutAllOnExit
- local mobvnum = npc.get_race()
- --dchat("nemeres_wait_dungeon MobVnum = "..mobvnum.."")
- if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10) then
- local v = set.key_level_2
- game.drop_item(v,1)
- elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,15) then
- snow_dungeon._DropKeyOnLevel5()
- elseif level == 6 and mobvnum == stone_level_6 then
- d.notice(""..mob_name(stone_level_6).." este distrusã ºi vei urca la nivelul urmãtor.")
- d.notice("")
- server_timer("Jp_7",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_7.txt") --Szel
- local v_MQv = set.MobVnum_level_7
- local c = set.SzelCords_level_7
- local n = number(1,table.getnC)
- d.spawn_mob(v_MQv, c[n][1], c[n][2])
- elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10) then
- local v = set.Key_on_level_8
- game.drop_item(v,1)
- elseif level == 9 and mobvnum == stone_level_9 then
- d.notice(""..mob_name(stone_level_9).." este distrusã ºi vei urca la nivelul urmãtor.")
- server_timer("Jp_Boss",next_jump_time,d.get_map_index())
- d.clear_regen()
- d.kill_all()
- d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
- local v = set.BossVnumGroup
- d.spawn_group(v, 928, 335, 5 ,1, 1) -- (Input from SRC: argument: vnum,x,y,radius,aggressive,count)
- elseif level == 10 and mobvnum == boss_vnum then
- d.clear_regen()
- d.kill_all()
- d.notice("Felicitãri rãzboinicilor curajoºi! L-ai omorât pe "..mob_name(boss_vnum).." . In "..wait_time.." secunde veti fi teleportati afara.")
- notice_all("Grupa lui "..pc.get_name().." l-a înfrânt pe Nemere!")
- server_timer("Jp_OutAll",wait_time,d.get_map_index())
- end
- end
- end
- when Jp_OutAll.server_timer begin --Jump Out Bye bye ;D
- if d.select(get_server_timer_arg()) then
- snow_dungeon._ExitAll()
- end
- end
- function _ExitAll()
- d.exit_all()
- end
- end
- end
Alles anzeigen
locale/germany/quest/object/state/snow_dungeon:
- snow_dungeon={["start"]=0,get_settings= function ()local snow_dungeon_settings = { }
- snow_dungeon_settings . map_index = 354
- snow_dungeon_settings . base_cord = { 5120 , 1536 }
- snow_dungeon_settings . outside_entry_pos = { 61 , 4321 , 1667 }
- snow_dungeon_settings . need_level = 100
- snow_dungeon_settings . need_level_group = 100
- snow_dungeon_settings . WaitBeforOutAllOnExit = 60
- snow_dungeon_settings . NextJumpTime = 5
- snow_dungeon_settings . DurationLoopTimer = 45
- snow_dungeon_settings . wait_duration = 24
- snow_dungeon_settings . maxlife_time_on_dungeon = 60 * 60 * 1
- snow_dungeon_settings . DurationMaxOnReJoinGroup = 60 * 5
- snow_dungeon_settings . key_level_2 = 30331
- snow_dungeon_settings . NpcVnum_level_5 = 20398
- snow_dungeon_settings . StoneCount_level_5 = 6
- snow_dungeon_settings . Key_on_level_5 = 30332
- snow_dungeon_settings . StoneCords_level_5 = {
- { 432 , 508 } , { 437 , 493 } , { 448 , 492 } , { 448 , 476 } , { 467 , 475 } , { 466 , 464 } ,
- { 462 , 450 } , { 458 , 428 } , { 446 , 439 } , { 431 , 431 } , { 415 , 416 } , { 402 , 427 } ,
- { 397 , 438 } , { 375 , 434 } , { 374 , 456 } , { 390 , 468 } , { 385 , 492 } , { 402 , 505 } ,
- { 404 , 489 } , { 386 , 482 }
- }
- snow_dungeon_settings . MobVnum_level_6 = 8058
- snow_dungeon_settings . MobVnum_level_7 = 6151
- snow_dungeon_settings . SzelCords_level_7 = {
- { 752 , 499 } , { 758 , 479 } , { 772 , 452 } , { 763 , 444 } , { 750 , 451 } , { 728 , 441 } ,
- { 726 , 455 } , { 718 , 482 } , { 715 , 491 } , { 731 , 473 } , { 748 , 429 }
- }
- snow_dungeon_settings . Key_on_level_8 = 30333
- snow_dungeon_settings . NpcVnum_level_9 = 20399
- snow_dungeon_settings . BossVnumGroup = 6062
- snow_dungeon_settings . BossVnum = 6191
- snow_dungeon_settings . Position_level_1 = { 171 , 271 }
- snow_dungeon_settings . Position_level_2 = { 761 , 270 }
- snow_dungeon_settings . Position_level_3 = { 187 , 491 }
- snow_dungeon_settings . Position_level_4 = { 421 , 259 }
- snow_dungeon_settings . Position_level_5 = { 419 , 530 }
- snow_dungeon_settings . Position_level_6 = { 571 , 706 }
- snow_dungeon_settings . Position_level_7 = { 746 , 534 }
- snow_dungeon_settings . Position_level_8 = { 303 , 710 }
- snow_dungeon_settings . Position_level_9 = { 848 , 693 }
- snow_dungeon_settings . Position_level_10 = { 927 , 391 }
- snow_dungeon_settings . Enable_TestServerMode = false
- snow_dungeon_settings . IsNewGameRevision = true
- return snow_dungeon_settings
- end ,is_TestServerMode= function ()local set = snow_dungeon . get_settings ( )
- return set . Enable_TestServerMode end ,is_nemeres_dungeon= function ()local set = snow_dungeon . get_settings ( )
- local map = pc . get_map_index ( )
- if map >= ( set . map_index * 10000 ) and map < ( set . map_index * 10000 + 9000 ) then
- return true
- else
- return false
- end
- end ,_ClearAlls= function ()local d_index = d . get_map_index ( )
- clear_server_timer ( "CheckLevelAndCountKillOnMobs" , d_index )
- clear_server_timer ( "Jp_1" , d_index )
- clear_server_timer ( "Jp_2" , d_index )
- clear_server_timer ( "Jp_3" , d_index )
- clear_server_timer ( "Jp_4" , d_index )
- clear_server_timer ( "Jp_5" , d_index )
- clear_server_timer ( "Jp_6" , d_index )
- clear_server_timer ( "Jp_7" , d_index )
- clear_server_timer ( "Jp_8" , d_index )
- clear_server_timer ( "Jp_9" , d_index )
- clear_server_timer ( "Jp_10" , d_index )
- clear_server_timer ( "Jp_OutAll" , d_index )
- clear_server_timer ( "Jp_OutAllFail" , d_index )
- clear_server_timer ( "Jp_OutAllFailNotice" , d_index )
- d . setf ( "level" , 0 )
- d . setf ( "party_leader_pid" , 0 )
- d . setf ( "Start_Time" , 0 )
- d . setf ( "LastTimeGetOutPut" , 0 )
- d . setf ( "Stone_5_count" , 0 )
- d . setf ( "Stone_5_item_fail" , 0 )
- d . clear_regen ( )
- d . kill_all ( )
- end ,_CheckMembersLevel= function ()local set = snow_dungeon . get_settings ( )
- local user_fail_level = { }
- local pids = { party . get_member_pids ( ) }
- local need_level = set . need_level_group local have_ninja = false
- local have_shaman = false
- for i = 1 , table . getn ( pids ) , 1 begin
- q . begin_other_pc_block ( pids [ i ] )
- if pc . get_level ( ) < need_level then
- table . insert ( user_fail_level , table . getn ( user_fail_level ) + 1 , pc . get_name ( ) )
- end
- local job = pc . get_job ( )
- if job == 1
- or job == 5
- then
- have_ninja = true
- end
- if job == 3
- or job == 7
- then
- have_shaman = true
- end
- q . end_other_pc_block ( )
- end
- if ( is_test_server ( ) and snow_dungeon . is_TestServerMode ( ) == true ) then
- return true
- end
- if have_ninja == false then
- say ( "Nu poti intra in acest dungeon fara un Ninja." )
- say ( "" )
- return false
- end
- if have_shaman == false then
- say ( "Nu poti intra in acest dungeon fara un Saman." )
- say ( "" )
- return false
- end
- if table . getn ( user_fail_level ) >= 1 then
- say ( "" )
- say ( "Cativa membri din grup " )
- say ( "nu au nivelul " .. need_level .. ":" )
- for x = 1 , table . getn ( user_fail_level ) , 1 begin
- say ( color ( 1 , 1 , 0 ) , " " .. user_fail_level [ x ] )
- end
- return false
- end
- if table . getn ( user_fail_level ) == 0 then
- return true
- end
- end ,_GetLastTime= function ()local c = get_global_time ( )
- local t = d . getf ( "Start_Time" ) - c
- local o = d . getf ( "LastTimeGetOutPut" )
- if c >= o then
- if t >= 60 then
- d . notice ( "Mai aveti " .. math . ceil ( t / 60 ) .. " Minute." )
- else
- d . notice ( "Mai aveti " .. t .. " Secunde." )
- end
- if t >= ( 60 * 10 ) then
- d . setf ( "LastTimeGetOutPut" , c + 60 * 5 )
- elseif t >= ( 60 * 5 ) then
- d . setf ( "LastTimeGetOutPut" , c + 60 * 2 )
- else
- d . setf ( "LastTimeGetOutPut" , c + 10 )
- end
- end
- end ,_DropKeyOnLevel5= function ()if number ( 1 , 1000 ) >= 666 then
- return
- end
- local set = snow_dungeon . get_settings ( )
- local count = set . StoneCount_level_5 local vnum = set . Key_on_level_5 local get_random_unique = d . get_unique_vid ( "stone5_" .. number ( 1 , count ) .. "" )
- local fail_count = d . getf ( "Stone_5_item_fail" ) + 1
- local search = d . getf ( "Stone_5_count" )
- local search2 = d . get_unique_vid ( "stone5_" .. search .. "" )
- if search2 ~= get_random_unique then
- d . setf ( "Stone_5_item_fail" , fail_count )
- end
- if set . IsNewGameRevision == true then
- game . drop_item_and_select ( vnum , 1 )
- else
- pc . give_item2_select ( vnum , 1 )
- end
- if ( is_test_server ( ) and snow_dungeon . is_TestServerMode ( ) == true ) then
- item . set_socket ( 1 , search2 )
- d . setf ( "Stone_5_item_fail" , 0 )
- elseif fail_count > 6 then
- item . set_socket ( 1 , search2 )
- d . setf ( "Stone_5_item_fail" , 0 )
- else
- item . set_socket ( 1 , get_random_unique )
- end
- end ,_Create_Stones_level5= function ()local set = snow_dungeon . get_settings ( )
- local stone_level5_count_MQ = set . StoneCount_level_5 local c = set . StoneCords_level_5 local v = set . NpcVnum_level_5 for i = 1 , stone_level5_count_MQ , 1 begin
- local n = number ( 1 , table . getnC )
- d . set_unique ( "stone5_" .. i .. "" , d . spawn_mob ( v , c [ n ] [ 1 ] , c [ n ] [ 2 ] ) )
- table . remove ( c , n )
- if i == 1 then
- d . setf ( "Stone_5_count" , 1 )
- d . setf ( "Stone_5_item_fail" , 0 )
- end
- end
- end ,_ExitAll= function ()d . exit_all ( )
- end }
Alles anzeigen
Woran liegt es denn dass der core crasht?
Best Regards,
.Dex