Stehen die würfel die Nordsterne wo ich benötige droppen nicht selbstständig von der quest aus aber wenn ich mir welche erstelle per code und sie drauf ziehe sieht es am anfang aus als ob es funktioniert ... aber ich könnte 1000stk draufziehen und drotzdem wehre es der Falsche nordstern wo kann ich in der quest definieren das jeder nordstern klappen wird oder nur jeder 4. ect ???
PHP Code:
--[[
-- Nemeres Warte (Snow Dungeon)
-- lvl 100
-- Copyright ©Zymos/Risan
-- Version 2.0
-- Create: 08.06.2014
-- Need ga_me_re_vi_sion: 40250
-- INFO:
ga_me_re_vi_sion 40301 oder P40301 wird benötigt für:
MobVnum 8058 kann nur Schamanen DMG anfügen. MobVnum 20399 kann nur Schamanen und Ninja DMG anfügen.
Neue Questfuntion: drop_item_and_select() ersetzt pc.give_item2_select().
]]
quest snow_dungeon begin
state start begin
when 9010.chat."Spawn Statue" 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 Nordstern Kordinaten")
-- 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 Kords 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 = 352 --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 = 60*60*4 --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.IsNewga_me_re_vi_sion = true --Need ga_me_re_vi_sion 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."Deiner Gruppe wieder beitreten" 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("Aktuelles Dungeon Level deiner Gruppe: "..level.."")
if level == 0 then
say_npc_name()
say("Deine Gruppe hat den Run bereits beendet.")
return
end
if pc.getqf("out_party_time") < get_global_time() then
say_npc()
say("")
say("Du hast länger als "..math.ceil(set.DurationMaxOnReJoinGroup /60) .." Minute(n) vor dem")
say("Eisberg verweilt und kannst jetzt nicht")
say("mehr eintreten.")
return
end
if n == 0 then
setskin(NOWINDOW)
return
else
say_npc()
say("")
say("Möchtest du deiner Gruppe wieder beitreten?")
if select("Ja","Nein") == 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."Nemeres Warte" begin
local set = snow_dungeon.get_settings()
local need_level = set.need_level
say_npc()
say("")
say("Willst du mit deiner Gruppe wirklich die")
say("Nemeres Warte betreten?")
if select("Ja, wir wollen eintreten!","Nein, uns ist es zu kalt dort...") == 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("Ich schätze deinen Mut, doch alleine wirst du in")
say("der Nemres-Warte in dein Verderben rennen.")
say("Stelle eine starke Gruppe zusammen und ich werde")
say("dir Einlass gewähren.")
return
end
if pc.get_level() < need_level then
say("Ihr braucht mindestens level "..need_level.."")
say("um diesen Dungeon betreten zu können.")
return
end
if pc.getf("snow_dungeon","duration") >= get_global_time() then
say_npc()
say("Die Wartezeit für den Wiedereintritt in die")
say("Nemeres-Warte ist noch nicht abgelaufen. ")
say("Verb. Zeit: "..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."Die Schlacht beginnen" begin --Eisiger Löwe
say_npc()
say("")
say("Sicher das ihr anfangen wollt?")
if select("Ja","Nein, lieber doch nicht") == 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("Die ersten Monster erscheinen, tötet alle um in den nächsten Stock zu gelangen.")
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("Ihr könnt diesen Dungeon nicht ohnen einen")
say("Ninja betreten.")
return false
end
if have_shaman == false then
say("Ihr könnt diesen Dungeon nicht ohnen einen")
say("Schamanen betreten.")
return false
end
if table.getn(user_fail_level) >= 1 then
say_npc()
say("")
say("Einige Mitglieder einer Gruppe haben das")
say("Level "..need_level.." noch nicht erreicht:")
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:# Outside, your Group is not on this 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("Willkommen im Nemeres Warte, Ihr habt "..math.ceil((d.getf("Start_Time") - get_global_time()) /60) .." Minuten Zeit.")
--notice("Tötet alle Monster auf dieser Ebene um in den nächsten Stock zu gelangen.")
--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("Euch verbleiben ca "..math.ceil(t / 60).." Minute(n).")
else
d.notice("Euch verbleiben "..t .." Sekunde(n).")
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("Zeit ist abgelaufen.")
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("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
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("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
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("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
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("Ihr habt alle Monster besiegt, Der "..mob_name(MobStonelvl6).." erscheint.")
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("Ihr habt alle Monster besiegt, in wenigen Sekunden geht es in den nächsten Stock.")
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("findet den richtigen "..item_name(v).." um weiter zu gelangen.")
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("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
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("Das war der Falsche Schlüssel.")
item.remove()
end
else
d.notice("Nur Schamanen können ihn benutzen.")
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("Tötet alle Monster auf dieser Ebene um in den nächsten Stock zu gelangen.")
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("Tötet alle Monster auf dieser Ebene um in den nächsten Stock zu gelangen.")
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("Öffnet die Siegel an den "..mob_name(v).." in der richtigen Reihenfolge.")
if set.IsNewga_me_re_vi_sion == true then
d.notice("Die Schlüssel lassen die Monster fallen...")
else
d.notice("Die Schlüssel landen automatisch ins 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.IsNewga_me_re_vi_sion == 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.getn(c))
--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 wenigen Sekunden geht es in den nächsten Stock.")
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("Der Letzte Stein wurde richtig endeckt, in wenigen Sekunden geht es in den nächsten Stock.")
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("Der "..search..".Stein wurde endeckt. Es müssen noch weitere ".. stone_level5_count - search .." Steine in der richtigen Reihenfolge gefunden werden.")
npc.purge()
item.remove()
end
d.setf("Stone_5_count",new)
else
chat("Das ist zwar der richtige Stein, aber der falsche Schlüssel.")
item.remove()
end
else
chat("Das ist nicht der richtige Stein.")
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("Ihr habt alle Monster getötet. Tötet alle Monster und zerstört den "..mob_name(v).."")
d.notice("Nur Schamanen können ihm Schaden hinzufügen.")
--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("Ihr habt den Metinstein Erfolgreich zerstört nun Tötet alle Monster und "..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("Tötet solange Monster bis ihr "..item_name(v).." Habt.")
d.notice("Aber nur Schamanen und Ninjas können ihn benutzen.")
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("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
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("Das war der Falsche Schlüssel.")
item.remove()
end
else
d.notice("Nur Schamanen und Ninja können das benutzen.")
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("Zerstört die "..mob_name(v).." ")
d.notice("Aber nur Schamanen und Ninjas können ihn schanden zufügen.")
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("Besiegt "..mob_name(v)..", den König über Frost und Eis.")
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("Der "..mob_name(stone_level_6).." wurde zerstört, in wenigen Sekunden geht es in den nächsten Stock.")
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.getn(c))
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("Der "..mob_name(stone_level_9).." wurde zerstört, in wenigen Sekunden geht es in den nächsten Stock.")
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("Ihr habt "..mob_name(boss_vnum).." besiegt. In "..wait_time.." Sekunden werden alle hinausteleportiert.")
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