Jump to content

QUEST NEMERE NO FREE.


asusta099

Recommended Posts

Me dijeron que ya estaba posteada en algún lado, así que yo la posteo aquí.

 

Esta versión no tiene errores, yo la usaba.

 

QUEST:

quest snow_dungeon begin
state start begin

	function _TimersKilledLevel(v)
		if d.getf("level") == 1 and d.count_monster() <= 0 then
			--d.notice("Has derrotado a todos los monstruos en unos segundos irás a la siguiente planta. (1)")
			d.setf("level",2)
			snow_dungeon._DungeonClear()
			server_timer("SnowJp_2",5,d.get_map_index())
		elseif d.getf("level") == 3 and d.count_monster() <= 0 then
			--d.notice("Has derrotado a todos los monstruos en unos segundos irás a la siguiente planta. (3)")
			d.setf("level",4)
			snow_dungeon._DungeonClear()
			server_timer("SnowJp_4",5,d.get_map_index())
		elseif d.getf("level") == 4 and d.getf("mobwelle") == 1 and d.count_monster() <= 0 then
			d.notice("La defensa Szel fue muy devil...")
			d.setf("level",4)
			snow_dungeon._DungeonClear()
			server_timer("SnowJp_41",5,d.get_map_index())
		elseif d.getf("level") == 4 and d.getf("mobwelle") == 2 and d.count_monster() <= 0 then
			--d.notice("Has derrotado a todos los monstruos en unos segundos irás a la siguiente planta. (41)")
			d.setf("level",5)
			snow_dungeon._DungeonClear()
			server_timer("SnowJp_5",5,d.get_map_index())
		else 
			if v == 1 then
				server_timer ("Killed_Level2", 8, get_server_timer_arg())
			elseif v == 2 then
				server_timer ("Killed_Level", 8, get_server_timer_arg())
			end
		end
	end

	function isFlame01Map() -- snow_dungeon.isFlame01Map()
		local set = snow_dungeon.get_settings()
		local idx = pc.get_map_index()
		if idx == set.outside_entry_pos[1] then
			return true
		else
			return false
		end
	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

	function _CheckMembersLevel()
		local set = snow_dungeon.get_settings()
		if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
			--dchat("Modo Test activo.")
			return true
		end
		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 have_ninja == false then
			say("No puede iniciar la mazmorra si no tiene un")
			say("Ninja en su grupo.")
			return false
		end
		if have_shaman == false then
			say("No puede iniciar la mazmorra si no tiene un")
			say("Chamán en su grupo.")
			return false
		end
		if table.getn(user_fail_level) >= 1 then
			say_npc()
			say("")
			say("Algunos miembros del grupo no tienen el nivel")
			say("Nivel "..need_level.." no alcanzado:")
			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

	function is_TestServerMode()
		local set = snow_dungeon.get_settings()
		return set.Enable_TestServerMode
	end

	function _ClearAlls()
		local d_index = d.get_map_index()
		clear_server_timer("SnowJp_1",d_index)
		clear_server_timer("SnowJp_2",d_index)
		clear_server_timer("SnowJp_3",d_index)
		clear_server_timer("SnowJp_4",d_index)
		clear_server_timer("SnowJp_41",d_index)
		clear_server_timer("SnowJp_5",d_index)
		clear_server_timer("SnowJp_6",d_index)
		clear_server_timer("SnowJp_7",d_index)
		clear_server_timer("SnowJp_8",d_index)
		clear_server_timer("SnowJp_9",d_index)
		clear_server_timer("SnowJp_Boss",d_index)
		clear_server_timer("Killed_Level",d_index)
		clear_server_timer("Killed_Level2",d_index)
		
		clear_server_timer("SnowLeftTime_0",d_index)
		clear_server_timer("SnowLeftTime_1",d_index)
		clear_server_timer("SnowLeftTime_2",d_index)
		clear_server_timer("SnowLeftTime_3",d_index)
		clear_server_timer("SnowLeftTime_4",d_index)
		d.purge_unique("SnowDungeonStartNpc")
		d.setf("level",0)	
		d.setf("party_leader_pid",0)
		d.clear_regen()
	end

	function get_settings()
		local snow_dungeon_settings = {}
		snow_dungeon_settings.map_index = 219						
		snow_dungeon_settings.base_cord = {5120, 1536 } 			
		snow_dungeon_settings.outside_entry_pos = {61,4322,1655} 	
		snow_dungeon_settings.need_level = 100						
		snow_dungeon_settings.need_level_group = 100 				
		snow_dungeon_settings.GroupDuration = 60*60*4				
		snow_dungeon_settings.WarpMode = 1 -- 1 == Gruppe, 2 == Todo el mapa, 3 == Solo uno, == 4 solo uno
		snow_dungeon_settings.WarpPositions = { --d.warp_all
		{5291,1814}, --Level 1 
		{5540,1797},
		{5882,1800},
		{5293,2071},
		{5540,2074}, --Level 5
		{5866,2076},
		{5423,2244},
		{5689,2237},
		{5969,2229},--Level 9
		{6047,1924}  --Jefe
		}
		snow_dungeon_settings.JumpPositionns = { --d.jump_all
		{173,278}, --Level 1
		{422,261},
		{764,264},
		{175,535},
		{422,538}, --Level 5
		{748,540},
		{305,708},
		{571,701},
		{851,693}, --Level 9
		{927,395} --Jefe
		}
		
		--['LEVEL2_STONE_pos'] = {421,191}, 
		--['LEVEL4_TARGET_pos'] = {171,496},
		
		snow_dungeon_settings.LEVEL1_NPC_vnum = 20397 				
		snow_dungeon_settings.LEVEL1_NPC_pos = {172,261}
		
		snow_dungeon_settings.LEVEL2_REALKEY_vnum = 30331			
		
		snow_dungeon_settings.LEVEL5_STONE_pos = {	{449, 488},	{455, 445},	{419, 422},	{382, 444},	{389, 488}	}
		snow_dungeon_settings.LEVEL5_STONE_vnum =  20398
		snow_dungeon_settings.LEVEL5_REALKEY_vnum = 30332			
		
		snow_dungeon_settings.LEVEL6_TARGET_pos = {747,494}
		snow_dungeon_settings.LEVEL6_STONE_vnum = 8058				--Metin
		
		snow_dungeon_settings.LEVEL7_BOSSMOB_pos = {	{302, 678},	{281, 657},	{303, 635},	{324, 656} }
		snow_dungeon_settings.LEVEL7_BOSSMOB_vnum = 6151			
		
		snow_dungeon_settings.LEVEL8_REALKEY_vnum = 30333			
		--['LEVEL8_STONE_pos'] = {570, 650}
		
		snow_dungeon_settings.LEVEL9_TARGET_pos = {849, 660}
		snow_dungeon_settings.LEVEL9_STONE_vnum = 20399				
		
		snow_dungeon_settings.boss_pos = {927,333}
		snow_dungeon_settings.BossVnumGroup = 6062					--GroupMobVnum of Boss --(Group.txt)
		snow_dungeon_settings.BossVnum = 6191						--MobVnum of 10.Ebene	--Nemere(6191)
		

		snow_dungeon_settings.Enable_TestServerMode = false			
		snow_dungeon_settings.WarpOutOnLoginMap = true				
		return snow_dungeon_settings
	end

	when 20395.chat."Torre Nemere" with snow_dungeon.isFlame01Map() == true begin
		if npc.lock() == false then
			set_skin(NOWINDOW)
			return
		end
		local set = snow_dungeon.get_settings()
		say_npc()
		say("")
		say("¿Quieres entrar a Torre")
		say("Nemere con tu grupo?")
		say("Tenga cuidado,")
		say("el lugar es muy peligroso y")
		say("en un descuido usted podria salir")
		say("muerto.")
		say("")
		say("¿Estan seguro de entrar?")
		if select("Si, Queremos iniciar!","No, no estamos preparados...") == 2 then
			return
		end
		if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
			say("Habilitar modo Servidor prueba")
			say("Suscríbete ahora.")
			timer("MakeSnowDungeonCreate",3)
			return
		end
		if not party.is_leader() then
			say_npc()
			say("Seria glorosio que usted solo pudiera")
			say("destruir la Torre Nemere.")
			say("Usted puede terminar muerto, así que le pido")
			say("forme un grupo y vuelva.")
			return
		end
		if pc.get_level() < set.need_level then
			say("Usted necesita por lo menos el nivel "..set.need_level.."")
			say("para poder entrar a Nemere.")
			return
		end

		if (pc.getf("snow_dungeon","duration") + set.GroupDuration) >= get_global_time() then
			say_npc()
			say("El tiempo de espera para poder entrar a ")
			say("torre Nemere aún no ha expirado. ")
			say("Comp. Tiempo: "..LIB_duration(pc.getf("snow_dungeon","duration") - get_global_time()).."")
			return
		end

		if snow_dungeon._CheckMembersLevel() == false then	
			return
		else
			timer("MakeSnowDungeonCreate",2)
		end
	end
	
	when MakeSnowDungeonCreate.timer begin
		local set = snow_dungeon.get_settings()
		local t = get_global_time()
		local level = 1
		if snow_dungeon.is_TestServerMode() == true then
			set.WarpMode = 2
		end
		
		if set.WarpMode == 1 then --Gruppe
			d.new_jump_party(set.map_index, set.WarpPositions[level][1], set.WarpPositions[level][2] )
		elseif set.WarpMode == 2 then
			d.new_jump_all(set.map_index, set.WarpPositions[level][1], set.WarpPositions[level][2] )
		elseif set.WarpMode == 3 then 
			d.new_jump(set.map_index, set.WarpPositions[level][1] * 100, set.WarpPositions[level][2] * 100)
		elseif set.WarpMode == 4 then 
			d.new_jump(set.map_index, set.WarpPositions[level][1], set.WarpPositions[level][2]) 
		else
			d.new_jump_all(set.map_index, set.WarpPositions[level][1], set.WarpPositions[level][2] )
		end
		-- if snow_dungeon.is_nemeres_dungeon() == false then
			-- say("ERROR FATAL")
			-- say("No se ha creado la Dungeon: "..set.map_index.."")
			-- say("Reportar con Administrador")
			-- return
		-- end
		snow_dungeon._ClearAlls()
		d.setf("party_leader_pid",party.get_leader_pid())
		party.setf("ice_dungeon_map_index",d.get_map_index())
		d.set_unique("SnowDungeonStartNpc", d.spawn_mob_dir(set.LEVEL1_NPC_vnum, set.LEVEL1_NPC_pos[1] ,set.LEVEL1_NPC_pos[2] ,1) ) --Eisiger Löwe
		--d.spawn_mob_dir(set.LEVEL1_NPC_vnum, set.LEVEL1_NPC_pos[1] ,set.LEVEL1_NPC_pos[2] ,1)
		
	end

	-- FUNCs
	function _DungeonClear()
		d.clear_regen()
		d.purge_area(512000,153600,614000,228600)
	end
	
	function _CheckMembersLevel()
		local set = snow_dungeon.get_settings()
		if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
			--dchat("Modo Test activo.")
			return true
		end
		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 have_ninja == false then
			say("No puede iniciar la mazmorra si no tiene un")
			say("Ninja en su grupo.")
			return false
		end
		if have_shaman == false then
			say("No puede iniciar la mazmorra si no tiene un")
			say("Chamán en su grupo.")
			return false
		end
		if table.getn(user_fail_level) >= 1 then
			say_npc()
			say("")
			say("Algunos miembros del grupo no tienen el nivel")
			say("Nivel "..need_level.." no alcanzado:")
			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
	function _ClearAlls()
		local d_index = d.get_map_index()
		clear_server_timer("SnowJp_1",d_index)
		clear_server_timer("SnowJp_2",d_index)
		clear_server_timer("SnowJp_3",d_index)
		clear_server_timer("SnowJp_4",d_index)
		clear_server_timer("SnowJp_41",d_index)
		clear_server_timer("SnowJp_5",d_index)
		clear_server_timer("SnowJp_6",d_index)
		clear_server_timer("SnowJp_7",d_index)
		clear_server_timer("SnowJp_8",d_index)
		clear_server_timer("SnowJp_9",d_index)
		clear_server_timer("SnowJp_Boss",d_index)
		clear_server_timer("Killed_Level",d_index)
		clear_server_timer("Killed_Level2",d_index)
		
		clear_server_timer("SnowLeftTime_0",d_index)
		clear_server_timer("SnowLeftTime_1",d_index)
		clear_server_timer("SnowLeftTime_2",d_index)
		clear_server_timer("SnowLeftTime_3",d_index)
		clear_server_timer("SnowLeftTime_4",d_index)
		d.purge_unique("SnowDungeonStartNpc")
		d.setf("level",0)	
		d.setf("party_leader_pid",0)
		d.clear_regen()
	end

	when 20397.chat."La lucha inicia" begin --Eisiger Löwe
		if npc.lock() == false then
			set_skin(NOWINDOW)
			return
		end
		say_npc()
		say("")
		say("¿Seguros quieren iniciar?")
		local wp = select("Avanzar","Talvez más tarde")
		if wp == 1 then
			local set = snow_dungeon.get_settings()
			snow_dungeon._DungeonClear()
			d.regen_file("data/dungeon/ice_dungeon/zone_1.txt")
			d.setf("level",1)
			d.notice("Una ola de frío helada sobre esta tierra.")
			d.notice("Mata a todos los monstruos para llegar a ")
			d.notice("la siguiente plant.")
			clear_server_timer("Killed_Level",d.get_map_index())
			clear_server_timer("Killed_Level2",d.get_map_index())
			server_timer ("Killed_Level", 10, d.get_map_index() )
			npc.purge()
			d.set_warp_location(set.outside_entry_pos[1], set.outside_entry_pos[2] , set.outside_entry_pos[3])
			d.setqf2("snow_dungeon","duration",get_global_time() ) --setzt bei allen Gruppenmitglieder den QuestFlag.
			server_timer("SnowLeftTime_0",60*15,d.get_map_index())
		end
		setskin(NOWINDOW)
	end
	
	function _Create_LEVEL5_STONE()
		local set = snow_dungeon.get_settings()
		local c = set.LEVEL5_STONE_pos
		for i = 1, table.getn(c), 1 do
			local n = number(1,table.getn(c))
			d.set_unique("stone5_"..i.."", d.spawn_mob(set.LEVEL5_STONE_vnum, c[n][1], c[n][2]))
			table.remove(c,n)
		end
	end
	
	-- TIMEs
	when Killed_Level.server_timer begin
		if d.select(get_server_timer_arg()) then
			snow_dungeon._TimersKilledLevel(1)
		end
	end
	when Killed_Level2.server_timer begin
		if d.select(get_server_timer_arg()) then
			snow_dungeon._TimersKilledLevel(2)
		end
	end
	
	
	-- Jumps
	when SnowJp_2.server_timer begin --Jump Level 2
		if d.select(get_server_timer_arg()) then
			local set = snow_dungeon.get_settings()
			local level = 2
			d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt")
			d.setf("level",level)
			d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2]  ))
			--d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
			d.notice("Encuentra el objeto "..item_name( set.LEVEL2_REALKEY_vnum ).." para liberar las fuerzas ocultas.")
		end
	end
	
	when SnowJp_3.server_timer begin --Jump Level 3
		if d.select(get_server_timer_arg()) then
			local set = snow_dungeon.get_settings()
			local level = 3
			d.regen_file("data/dungeon/ice_dungeon/zone_3.txt")
			d.setf("level",level)
			d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2]  ))
			--d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
			d.notice("Las criaturas de los fríos inviernos fueron despertados.")
			d.notice("Ve y destruye a todos!")
			clear_server_timer("Killed_Level",d.get_map_index())
			clear_server_timer("Killed_Level2",d.get_map_index())
			server_timer ("Killed_Level", 10, d.get_map_index() )
		end
	end
	
	when SnowJp_4.server_timer begin --Jump Level 4 Welle 1
		if d.select(get_server_timer_arg()) then
			local set = snow_dungeon.get_settings()
			local level = 4
			d.regen_file("data/dungeon/ice_dungeon/zone_4.txt")
			d.setf("level",level)
			d.setf("mobwelle",1)
			d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2]  ))
			--d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
			d.notice("Ve a destruir la fuerza Szel.")
			clear_server_timer("Killed_Level",d.get_map_index())
			clear_server_timer("Killed_Level2",d.get_map_index())
			server_timer ("Killed_Level", 10, d.get_map_index() )
		end
	end
	
	when SnowJp_41.server_timer begin --Jump Level 4 Welle 2
		if d.select(get_server_timer_arg()) then
			local level = 4
			d.regen_file("data/dungeon/ice_dungeon/zone_41.txt")
			d.setf("level",level)
			d.setf("mobwelle",2)
			d.notice("Usted ha logrado destruir la fuerza Szel muy rapido.")
			d.notice("Felicidades, obtiene un buff que le ayudará a destruir")
			d.notice("el dragón!")
			clear_server_timer("Killed_Level",d.get_map_index())
			clear_server_timer("Killed_Level2",d.get_map_index())
			server_timer ("Killed_Level", 10, d.get_map_index() )
		end
	end
	
	when SnowJp_5.server_timer begin --Jump Level 5
		if d.select(get_server_timer_arg()) then
			local set = snow_dungeon.get_settings()
			local level = 5
			d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt")
			d.setf("level",level)
			d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2]  ) )
			--d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
			d.notice("Busca "..mob_name(set.LEVEL5_STONE_vnum).." y utiliza las fuerzas de "..item_name(set.LEVEL5_REALKEY_vnum).." en el orden correcto.")
			snow_dungeon._Create_LEVEL5_STONE()
			-- Entferne die Servertimer und setze anderen Flag vorsichthalber um eventuele Bugs auszuschliessen.
			clear_server_timer("Killed_Level",d.get_map_index())
			clear_server_timer("Killed_Level2",d.get_map_index())
			d.setf("mobwelle",0)
			d.setf("stone",0) --For npcs
		end
	end
	
	when SnowJp_6.server_timer begin --Jump Level 6
		if d.select(get_server_timer_arg()) then
			local set = snow_dungeon.get_settings()
			local level = 6
			d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
			d.setf("level",level)
			d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2]  ))
			--d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
			d.notice("Se han escuchado explociones muy fuertes")
			d.notice("Un monstruo ha caído sobre la tierra!")
			d.notice("Destruye "..mob_name(set.LEVEL6_STONE_vnum).."")
			d.notice("¡Solo los chamanes pueden destruirlo!")
			d.spawn_mob_dir(set.LEVEL6_STONE_vnum ,set.LEVEL6_TARGET_pos[1] ,set.LEVEL6_TARGET_pos[2],1)
		end
	end

	when SnowJp_7.server_timer begin --Jump Level 7
		if d.select(get_server_timer_arg()) then
			local set = snow_dungeon.get_settings()
			local level = 7
			d.regen_file("data/dungeon/ice_dungeon/zone_7.txt")
			d.setf("level",level)
			d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2]  ))
			--d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
			d.notice("Usted debe destruir la piedra metin correcta "..mob_name(set.LEVEL7_BOSSMOB_vnum)..".")
			-- OLD!
			-- local c = set.LEVEL7_BOSSMOB_pos
			-- local n = number(1,table.getn(c))
			-- d.setf("LEVEL7_Mob_Kill_Count",0)
			-- d.spawn_mob_dir(set.LEVEL7_BOSSMOB_vnum, c[n][1], c[n][2],1)
			-- NEW
			
			d.setf("LEVEL7_BOSSMOB_VID",0)
			local c = set.LEVEL7_BOSSMOB_pos
			local n = number(1,table.getn(c))
			for i = 1, table.getn(c), 1 do
				local vid = d.spawn_mob_dir(set.LEVEL7_BOSSMOB_vnum, c[i][1], c[i][2],1)
				if i == n then
					d.setf("LEVEL7_BOSSMOB_VID",vid)
				end
			end
			
		end
	end
	
	when SnowJp_8.server_timer begin --Jump Level 8
		if d.select(get_server_timer_arg()) then
			local set = snow_dungeon.get_settings()
			local level = 8
			d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt")
			d.setf("level",level)
			d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2]  ))
			--d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
			d.notice("Ya superaste varias escalas en la torre Nemere")
			d.notice("Ahora tu objetivo es destruir todos los monstruos.")
			d.notice("Busca el item "..item_name(set.LEVEL8_REALKEY_vnum).." , cuando lo encuentres terminarás.")
			--d.notice("Aber nur Schamanen und Ninjas können ihn benutzen.")
			d.setf("fail_key_count",0)
		end
	end
	
	when SnowJp_9.server_timer begin --Jump Level 9
		if d.select(get_server_timer_arg()) then
			local set = snow_dungeon.get_settings()
			local level = 9
			d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
			d.setf("level",level)
			d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2]  ))
			--d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
			d.notice("Destruye "..mob_name(set.LEVEL9_STONE_vnum).." ")
			d.notice("¡Solo puede ser destruido por los Ninjas!")
			--d.notice("Aber nur Schamanen und Ninjas können ihn schanden zufügen.")
			d.notice("")
			d.spawn_mob_dir( set.LEVEL9_STONE_vnum , set.LEVEL9_TARGET_pos[1] , set.LEVEL9_TARGET_pos[2] ,1)
		end
	end
	
	when SnowJp_Boss.server_timer begin --Jump Level BossZone
		if d.select(get_server_timer_arg()) then
			d.notice("Se escucha una risa.")
			d.notice("Nemere: Ja Ja Ja")
			d.notice("Nemere: ¿Crees que me puedes ver?")
			d.notice("Nemere: ¿Crees que puedes derrotarme?")
			d.notice("Nemere: ¡No puedes escapar del destino!")
			d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
			local set = snow_dungeon.get_settings()
			local level = 10
			d.setf("level",level)
			d.jump_all( ( set.base_cord[1] + set.JumpPositionns[level][1] ), (set.base_cord[2]+set.JumpPositionns[level][2]  ))
			--d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
			d.spawn_group( set.BossVnumGroup , set.boss_pos[1], set.boss_pos[2], 5 ,1, 1) --	(Input from SRC: argument: vnum,x,y,radius,aggressive,count)	
		end
	end
	
	--Timess
	when SnowLeftTime_0.server_timer begin
		if d.select(get_server_timer_arg()) then
			d.notice("Tiempo restante: 45 Minutos.")
			server_timer("SnowLeftTime_1",60*15,get_server_timer_arg())
		end
	end
	
	when SnowLeftTime_1.server_timer begin
		if d.select(get_server_timer_arg()) then
			d.notice("Tiempo restante: 30 Minutos.")
			server_timer("SnowLeftTime_2",60*15,get_server_timer_arg())
		end
	end
	when SnowLeftTime_2.server_timer begin
		if d.select(get_server_timer_arg()) then
			d.notice("Tiempo restante: 15 Minutos.")
			server_timer("SnowLeftTime_3",60*10,get_server_timer_arg())
		end
	end
	when SnowLeftTime_3.server_timer begin
		if d.select(get_server_timer_arg()) then
			d.notice("Tiempo restante: 5 Minutos. Despues de, 5 minutos todos serán teletransportados.")
			server_timer("SnowLeftTime_4",60*4,get_server_timer_arg())
		end
	end
	when SnowLeftTime_4.server_timer begin
		if d.select(get_server_timer_arg()) then
			d.notice("Tiempo restante: 1 Minutos. Despues de, 1 minuto todos serán teletransportados.")
			server_timer("server_timer", 60,get_server_timer_arg())
		end
	end
	
	-- All exit
	when SnowJp_OutAll.server_timer begin --Jump Out Bye bye ;D
		if d.select(get_server_timer_arg()) then
			local set = snow_dungeon.get_settings()
			d.set_warp_location(set.outside_entry_pos[1], set.outside_entry_pos[2] , set.outside_entry_pos[3]) 
			snow_dungeon._ClearAlls()
			d.exit_all()
		end
	end
	
	--Others
	when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin --LEVEL2_REALKEY_vnum
		local set = snow_dungeon.get_settings()
		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("La tecla de la derecha se encontró en unos segundos irán a la siguiente planta.")
					d.setf("level",3)
					snow_dungeon._DungeonClear()
					server_timer("SnowJp_3",5,d.get_map_index())
					item.remove()
				else
					d.notice("Esa fue una clave equivocada.")
					item.remove()
				end
			else
				d.notice("Sólo los chamanes pueden utilizarlo.")
				return
			end
		end
	end
	
	when kill with not npc.is_pc() and snow_dungeon.is_nemeres_dungeon() == true begin
		local set = snow_dungeon.get_settings()
		local level = d.getf("level")
		local mobvnum = npc.get_race()
		local mobvid = npc.get_vid()
		--d.notice("KILL SNOW DUNGEON: mobvnum:"..mobvnum.." level:"..level.." vid:"..npc.get_vid().."")
		-- level 1 kill only
		if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,100)  then
			game.drop_item( set.LEVEL2_REALKEY_vnum ,1)
		-- level 3 kill only
		-- level 4 kill only
		elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,100)  then
       			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( set.LEVEL5_REALKEY_vnum ,1)
            			d.setf("count", 0)
        		end
   		elseif level == 6 and mobvnum == set.LEVEL6_STONE_vnum then
			d.notice("Der "..mob_name(set.LEVEL6_STONE_vnum).." wurde zerstört, in wenigen Sekunden geht es in den nächsten Stock.")
			d.setf("level",7)
			snow_dungeon._DungeonClear()
			server_timer("SnowJp_7",5,d.get_map_index())
		elseif level == 7 and mobvnum == set.LEVEL7_BOSSMOB_vnum and d.getf("LEVEL7_BOSSMOB_VID") == mobvid then
			-- OLD
			-- local new = d.getf("LEVEL7_Mob_Kill_Count") +1
			-- d.setf("LEVEL7_Mob_Kill_Count",new)
			-- if number(1,5) == 1 or new > 5 then
				-- snow_dungeon._DungeonClear()
				-- server_timer("SnowJp_8",5,d.get_map_index())
				-- d.notice("Der Richtige "..mob_name(set.LEVEL7_BOSSMOB_vnum).." wurde vernichtet.")
			-- else
				-- local c = set.LEVEL7_BOSSMOB_pos
				-- local n = number(1,table.getn(c))
				-- d.spawn_mob(set.LEVEL7_BOSSMOB_vnum, c[n][1], c[n][2])
				-- d.notice("Der falsche "..mob_name(set.LEVEL7_BOSSMOB_vnum).." wurde vernichtet.")
			-- end
			-- NEW
			snow_dungeon._DungeonClear()
			server_timer("SnowJp_8",5,d.get_map_index())
			d.notice("El mob correcto "..mob_name(set.LEVEL7_BOSSMOB_vnum).." ha sido destruido.")
		elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,100) then
			game.drop_item(set.LEVEL8_REALKEY_vnum,1)		
		elseif level == 9 and mobvnum == set.LEVEL9_STONE_vnum then
			d.notice("El "..mob_name(set.LEVEL9_STONE_vnum).." fue destruido en pocos segundos se pasa al siguiente piso.")
			snow_dungeon._DungeonClear()
			d.setf("level",10)
			server_timer("SnowJp_Boss",5,d.get_map_index())
		elseif level == 10 and mobvnum == set.BossVnum then
			local OutTimeWarp = 60
			snow_dungeon._DungeonClear()
			d.notice("Usted tiene "..mob_name(set.BossVnum).." derrotados en "..OutTimeWarp.." Segundos.")
			snow_dungeon.give_names_notice()
			server_timer("SnowJp_OutAll",OutTimeWarp,d.get_map_index())
		end
	end

	when 20398.take begin --LEVEL5_STONE_vnum
		if snow_dungeon.is_nemeres_dungeon() == true then
			local set = snow_dungeon.get_settings()
			local vnum = item.get_vnum()
			local npc_vid = npc.get_vid()
			local old_stone = d.getf("stone")
			-- for i = 1, 6, 1 do
				-- dchat("Búsqueda: "..i.." : "..d.get_unique_vid("stone5_"..i.."").."")
			-- end	
			if set.LEVEL5_REALKEY_vnum == vnum then --30332
				if npc_vid == d.get_unique_vid("stone5_1") then -- Stone 1
					--dchat("Stone 1")
					d.setf("stone",1)
					chat("Esa fue una buena elección. Destruye la siguiente.")
				elseif npc_vid == d.get_unique_vid("stone5_2") then -- Stone 2
					--dchat("Stone 2")
					if old_stone != 1 then
						chat("Orden incorrecto. La clave fue destruida.")
					else
						d.setf("stone",2)
						chat("Esa fue una buena elección. Destruye la siguiente.")
					end
				elseif npc_vid == d.get_unique_vid("stone5_3") then -- Stone 3
					--dchat("Stone 3")
					if old_stone != 2 then
						chat("Orden incorrecto. La clave fue destruida en el proceso.")
					else
						d.setf("stone",3)
						chat("Esa fue una buena elección. Destruye la siguiente.")
					end
				elseif npc_vid == d.get_unique_vid("stone5_4") then -- Stone 4
					--dchat("Stone 4")
					if old_stone != 3 then
						chat("Orden incorrecto. La clave fue destruida.")
					else
						d.setf("stone",4)
						chat("Esa fue una buena elección. Destruye la siguiente.")
					end
				elseif npc_vid == d.get_unique_vid("stone5_5") then -- Stone 5
					--dchat("Stone 5")
					if old_stone != 4 then
						chat("Orden incorrecto. La clave fue destruida en el proceso.")
					else
						d.setf("level",6)
						d.setf("stone",5)
						d.notice("Has destruido todos los bloques en unos segundos va en el siguiente piso.")
						snow_dungeon._DungeonClear()
						server_timer("SnowJp_6",5,d.get_map_index())
					end
				else
					chat("Orden incorrecto. La clave fue destruid en el proceso.")
				end
				--dchat("old_stone:"..old_stone.." "..d.getf("stone").."")
				if old_stone != d.getf("stone") then
					--dchat("npc remove")
					npc.purge()
				end
				item.remove()
			end
		end	
	end
	
	when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin --LEVEL8_REALKEY_vnum
		local set = snow_dungeon.get_settings()
		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
				local new = d.getf("fail_key_count") +1
				if number(1,10) == 1 or new > 5 then
					d.notice("La tecla de la derecha se encontró en unos segundos va a la siguiente planta.")
					d.setf("level",9)
					snow_dungeon._DungeonClear()
					server_timer("SnowJp_9",5,d.get_map_index())
					item.remove()
				else
					d.notice("Esa fue la clave equivocada.")
					d.setf("fail_key_count",new)
					item.remove()
				end
			else
				d.notice("Sólo los chamanes y Ninja pueden utilizar.")
				return
			end
		end
	end
	-- Login, Logout
	when logout begin
		if snow_dungeon.is_nemeres_dungeon() == true then
			local set = snow_dungeon.get_settings()
			pc.setqf("exit_time", get_global_time() )
			snow_dungeon.unregister_name()
		end
	end
	
	when login begin
		local set = snow_dungeon.get_settings()
		-- if pc.is_gm() then
			-- return 
		-- end
		if set.map_index == pc.get_map_index() and set.WarpOutOnLoginMap == true then --Selbe Map!
			pc.warp(set.outside_entry_pos[2] * 100,set.outside_entry_pos[3] * 100)
			return
		end
		if snow_dungeon.is_nemeres_dungeon() == true then
			d.set_warp_location(set.outside_entry_pos[1], set.outside_entry_pos[2] , set.outside_entry_pos[3]) 
			
			-- local v = find_npc_by_vnum(set.LEVEL1_NPC_vnum)
			-- if v == 0 then
				-- d.spawn_mob_dir(set.LEVEL1_NPC_vnum, set.LEVEL1_NPC_pos[1] ,set.LEVEL1_NPC_pos[2] ,1) --Eisiger Löwe
			-- end
			snow_dungeon.register_name()
		end
	end
	
	--My Name Func
	function give_names_notice()
		--remove
	end
	function register_name()
		--remove
	end
	function unregister_name()
		--remove
	end

	
	---TESTS
	--[[
	when 9010.chat."Dungeon de Hielo: _DungeonClear" with is_test_server() begin
		snow_dungeon._DungeonClear()
		say("done")
	end
	when 9010.chat."Dungeon de Hielo: Limpiar todo" with is_test_server()  begin
		say("done")
		snow_dungeon._ClearAlls()
	end
	when 9010.chat."Dungeon de Hielo: Regen en X" with is_test_server() begin
		snow_dungeon._DungeonClear()
		local n = input()
		d.regen_file("data/dungeon/ice_dungeon/zone_"..n..".txt")
		say("done")
	end

	when 9010.chat."Dungeon de Hielo: Subir a X" with is_test_server() begin
		local set = snow_dungeon.get_settings()
		local level = input()
		say("level:"..level.." "..set.WarpPositions[level][1].." "..set.WarpPositions[level][2].."")
		wait()
		d.warp_all( set.WarpPositions[level][1], set.WarpPositions[level][2] )
	end
	
	when 9010.chat."Dungeon de Hielo: SnowJp_Boss " begin
		d.setf("level",10)
		snow_dungeon._DungeonClear()
		server_timer("SnowJp_Boss",5,d.get_map_index())
		say("done")
	end
	when 9010.chat."Dungeon de Hielo: Salir de todo " begin
		say("done")
		server_timer("SnowJp_OutAll",5,d.get_map_index())
	
	end
	]]
	
end	
end

Quest_lib

function LIB_duration(seconds) 
	local days = 0
	local hours = math.floor(seconds / 3600)
	local mins = math.floor((seconds - (hours*3600)) / 60)
	local secs = math.floor(seconds - hours*3600 - mins*60 )
	local t = ""
	if tonumber(hours) >= 24 then
		days = math.floor(hours / 24)
		hours = math.floor(hours - (days*24))
	end
	if tonumber(days) == 1 then
		t = t..days.." Dias "
	elseif tonumber(days) >= 1 then
		t = t..days.." Dias "
	end
	if tonumber(hours) == 1 then
		t = t..hours.." Horas "
	elseif tonumber(hours) >= 1 then
		t = t..hours.." Horas "
	end
	if tonumber(mins) == 1 then
		t = t..mins.." Minutos "
	elseif tonumber(mins) >= 1 then
		t = t..mins.." Minutos "
	end
	if tonumber(secs) == 1 then
		t = t..secs.." Segundos "
	elseif tonumber(secs) >= 1 then
		t = t..secs.." Segundos "
	end
	if t == "" then
		return "(Por el momento no puedes!)"
	end
	return t
end 

-- 6151
Szel_4thfloor_affectlimit	= {AFF_HOSIN}
Szel_7thfloor_affectlimit	= {AFF_GICHEON}
-- 8058
IceMetin_racelimit			= {WARRIOR_M,WARRIOR_W,NINJA_W,NINJA_M,SURA_M,SURA_W}
-- 20399
IceStonePillar_racelimit	= {WARRIOR_M,WARRIOR_W,SURA_M,SURA_W}
-- C3 NEMERE END
Link to comment
Share on other sites

  • 5 years later...
hace 10 minutos, FaltaUnEdwiin dijo:

una pregunta espero me saquen de duda la quest la tengo bien y todo va bien pero al ingresar al mapa entra y luego me devuelve afuera del guardia si podrian decirme por que seria ese error  se los agradeseria mucho 

Necesitas un grupo para entrar, nivel que te pida, que el mapa que tienes coincidan con el index de la quest, y si todo eso coincide entonces tu mapa está mal

Link to comment
Share on other sites

hace 34 minutos, FaltaUnEdwiin dijo:

Tengo el mismo problema en ambos el purgatorio también y la idex está bien pero lo que noto que la idex solo está en en el Game99 y en en los canales solo en uno de los 3 no sé si debería estar en los 3 o como y si entro con grupo pero no sé si los personajes gm influyen o tienen que ser playera normal 

El mapa de Sohan y el de la Torre de Nemere deben estar en el mismo core.

El mapa de Tierra de fuego y el Infierno deben estar en el mismo core.

 

PD: esa quest yo no la pondría, mejor subo una yo xD

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...