Timp de asteptare dupa run la npc.

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
virgil.tsk
Nou Venit

Nou Venit
Mesaje: 8
Membru din: 30 Mai 2021, 19:31
Server: TerrorStruck
Regat: Jinno
Aprecieri: 67  
Mulţumiri: 1  
Discord: Copiază ID
 Contact:
Medalii

*Problemă/Întrebare: Cum fac sa am timp de asteptare la un npc dupa ce termin un dungeon?
Exista quest la npc de la piramida din cate stiu de intrii cu tichet si cand ai terminat daca doresti sa intrii ai impusa o valoare de timp, cum fac sa pun si eu ca nu stiu?
Tipologie server(PvM / PvP):
*Resursă folosită: -
*ServerFiles utilizat: Propriu
*Syserr: -
Poză:
*Detalii suplimentare:
Avatar utilizator
[HF]White
Metin Master

Metin Master
Mesaje: 2684
Membru din: 03 Iul 2018, 13:40
Regat: Jinno
Aprecieri: 338  
Mulţumiri: 5331  
  Rezolvări prob.: 13
Discord: Copiază ID
 Contact:
Medalii

foloseste functia de la lottery

Cod: Selectaţi tot

.
.
.
when 20094.chat."Dungeon" begin
if 20 > get_global_time() - pc . getqf ( "timp_asteptare" ) then 
		say ("Trebuie sa astepti 20 secunde ca sa faci asta.") 
		return
end
.
.
.
bla bla bla  - questul tau aici
pc.setqf("timp_asteptare" , get_global_time())
.
.
.
end

if 20 = 20 secunde
Avatar utilizator
virgil.tsk
Nou Venit

Nou Venit
Mesaje: 8
Membru din: 30 Mai 2021, 19:31
Server: TerrorStruck
Regat: Jinno
Aprecieri: 67  
Mulţumiri: 1  
Discord: Copiază ID
 Contact:
Medalii

Cod: Selectaţi tot

quest crystal_dungeon begin
	state start begin
		--Functions
		function settings()
			return
			{
				["map_index"] = 9,
				["spawm_pos"] = {
					[1] = {21272, 29576},
					[2] = {21650, 29689},
					[3] = {21232, 30067},
					[4] = {21396, 30104},
					[5] = {21765, 30187},
				},
				["level_check"] = {
					["minimum"] = 105,
					["maximum"] = 120
				},
				["keys"] = {30701, 30702, 30703},
				["metin_stones"] = {8411, 8412, 8413, 8414},
			};
		end
		
		function spawn_boss(level)
			local boss_settings = {
				[3] = {948, 741, 191},
				[5] = {949, 431, 544},
				[7] = {950, 773, 681}
				};
			
			return d.spawn_mob(boss_settings[level][1], boss_settings[level][2], boss_settings[level][3])
		end
		
		function spawn_metins_4thfloor()
			local setting = crystal_dungeon.settings()
			local r = number (1,8)
			if r == 1 then
				d.spawn_mob(setting["metin_stones"][3], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 2 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][3], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 3 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][3], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 4 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][3], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 5 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][3], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 6 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][3], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 7 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][3], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 8 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][3], 410, 714)
			end
		end
		
		function make_dungeon()
			local setting = crystal_dungeon.settings()
			
			d.new_jump_party(setting["map_index"], setting["spawm_pos"][1][1], setting["spawm_pos"][1][2])
			d.setf("lair_check", 1)
			d.setf("level_four_login", 0)
			crystal_dungeon.get_regens(1)
		end

		function get_regens(level)
			local regens = {
				[1] = "data/dungeon/crystal_dungeon/regen_1.txt",
				[2] = "data/dungeon/crystal_dungeon/regen_2.txt",
				[3] = "data/dungeon/crystal_dungeon/regen_3.txt",
				[4] = "data/dungeon/crystal_dungeon/regen_4a.txt",
				[5] = "data/dungeon/crystal_dungeon/regen_4b.txt",
				[6] = "data/dungeon/crystal_dungeon/regen_5.txt",
				[7] = "data/dungeon/crystal_dungeon/regen_5_metins.txt"};
			
			return d.set_regen_file(regens[level])
		end
		
		function party_get_member_pids()
			local pids = {party.get_member_pids()}
			
			return pids
		end
		
		------
		------[Dungeon enter]
		------
		when 20092.chat."Temnita de cristal" begin
			local settings = crystal_dungeon.settings()
			
			say_title(mob_name(9214))
			say("")
			
			if not party.is_party() then
				say("Trebuie sa faci parte dintr-un grup")
				say("sa poti intra in temnita de cristal .")
				return
			end
			
			if not party.is_leader() then
				say("Doar liderul grupului poate")
				say("sa porneasca temnita de cristal .")
				say("")
				say("Vorbeste cu el intai .")
				return
			end
			
			if party.get_near_count() < 2 then
				say("Daca vrei sa intrii,")
				say("grupa trebuie facuta din mai mult de 2 persoane .")
				return
			end
			
			local levelCheck, maximlevelCheck = true, true
			local notEnoughLevelMembers, notEnoughmaximLevelMembers = {}, {}
			local pids = {party.get_member_pids()}
			
			for i, pid in next, crystal_dungeon.party_get_member_pids(), nil do
				q.begin_other_pc_block(pid)
				
				if pc.get_level() < settings["level_check"]["minimum"] then
					table.insert(notEnoughLevelMembers, pc.get_name())
					levelCheck = false
				end
				if pc.get_level() > settings["level_check"]["maximum"] then
					table.insert(notEnoughmaximLevelMembers, pc.get_name())
					maximlevelCheck = false
				end
				
				q.end_other_pc_block()
			end
			
			if not levelCheck then
				say("Daca iti doresti sa intrii in temnita de")
				say("cristal, fiecare membru din grup trebuie")
				say(string.format("sa aiba minim nivelul %s.", settings["level_check"]["minimum"]))
				say("")
				say("Urmatorii membrii nu au nivelul necesar:")
				for i, name in next, notEnoughLevelMembers, nil do
					say("- "..name)
				end
				return
			end
			
			if not maximlevelCheck then
				say("If you wish to enter the Crystal dungeon,")
				say("every each memeber of the group")
				say(string.format("must have maximum level %s.", settings["level_check"]["maximum"]))
				say("")
				say("The following members don't have enough lvl:")
				for i, name in next, notEnoughmaximLevelMembers, nil do
					say("- "..name.."")
				end
				return
			end
			
			say("Dupa ce apesi pe continua,")
			say("fiecare membru v-a fii teleportat.")
			wait()
			crystal_dungeon.make_dungeon()
		end
		
		----
		----Dungeon start
		----
		
		when login begin
			local get_flag = d.getf("lair_check")
			local four_login = d.getf("level_four_login")
			local six_login = d.getf("level_six_login")
			
			if get_flag == 2 then
				say_title("Al doilea etaj :")
				say("")
				say("Omora toti mobii, pentru a primi sigiliul.")
				say("sa poti debloca altarul de crystal.")
				say("Poti dropa un sigiliu fals.")
				d.setf("crystal_seal", 0)
			elseif get_flag == 3 then
				say_title("Al treilea etaj :")
				say("")
				say("Omoara toti monstrii de la acest etaj .")
				say("Ei sunt gardienii Monstrului de Cristal !")
				say("Dupa ce omori toti monstri, Monstrul")
				say("de Cristal se v-a trezii !")
				say("")
				say_title("REPEDE ! Aveti la dispozitie 10 minute .")
				if four_login == 0 then
					d.setf("level_four_login", 1)
					d.setf("lair_check", 3)
					clear_server_timer("level_four_timer", get_server_timer_arg())
					clear_server_timer("exit_before", get_server_timer_arg())
					server_timer("level_four_timer", 10 * 60, d.get_map_index())
				end
			elseif get_flag == 4 then
				say_title("Etajul al 4 lea  :")
				say("")
				say("Sunteti niste razboinici buni !")
				say("Nu prea multi razboinici au reusit")
				say("sa ajunga pana aici !")
				say("REPEDE ! Trebuie sa spargeti metinul bun")
				say("care dropeaza cheia care se potriveste .")
				say("")
				say_title("Sigiliul este plasat la sfarsitul")
				say_title("acestui etaj !")
			elseif get_flag == 5 then
				say_title("Al 5 lea etaj :")
				say("")
				say(" OMOARA !")
				say("Trebuie sa omori toti monstrii !")
				say("Dino de Cristal o sa apara ! Nu poti supravietuii")
				say("cu toti acesti monstrii !")
				say("Dino de Cristal este aici !")
				say("")
				say_title("Multa bafta !")
			elseif get_flag == 6 then
				say_title("Al 6 lea etaj :")
				say("")
				say("Trebuie sa spargi toate pietrele metin !")
				say("Aceste pietre metin sunt puternice !")
				say("")
				say_title("Ai la dispozitie 15 minute sa le spargi pe toate !")
				say_title("metins!")
				if six_login == 0 then
					d.setf("level_six_login", 1)
					d.setf("lair_check", 6)
					clear_server_timer("level_six_timer", get_server_timer_arg())
					clear_server_timer("exit_before2", get_server_timer_arg())
					server_timer("level_six_timer", 15 * 60, d.get_map_index())
				end
			else
				return
			end
		end
		
		when kill with npc.get_race() == 940 or npc.get_race() == 941 or npc.get_race() == 942 begin
			local count, check = d.getf("mobs") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 1 then
						--83
				if count < 83 and check == false then
					d.setf("mobs", count)
				else
					if d.getf("metin_stone") == 0 then
						d.clear_regen()
						d.kill_all()
						d.spawn_mob(setting["metin_stones"][1], 261, 276)
						d.spawn_mob(setting["metin_stones"][1], 242, 303)
						d.spawn_mob(setting["metin_stones"][1], 293, 305)
						d.notice(string.format(" %s s-a spawnat  ! ", mob_name(8411)))
						d.setf("metin_stone", 1)
					end
					check = true
				end
			end
		end
		
		when kill with npc.get_race() == 8411 and pc.in_dungeon() begin
			local count, check_metin1 = d.getf("metins") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 1 then
				if count < 3 and check_metin1 == false then
					d.setf("metins", count)
				else
					if d.getf("metin_stone1") == 0 then
						d.notice("Te-ai descurcat de minune ! Acum vei fi teleportat !")
						d.kill_all()
						d.setf("lair_check", 2)
						d.setf("metin_stone1", 1)
						cleartimer("level_timer")
						timer("level_timer", 7)
					end
					check_metin1 = true
				end
			end
		end
		
		
		when 942.kill or 943.kill or 944.kill begin
			local count, check_2 = d.getf("mobs_2") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 2 then
						--73
				if count < 73 and check_2 == false then
					d.setf("mobs_2", count)
				else
					if d.getf("crystal_seal") == 0 then
						game.drop_item(setting["keys"][1], 1)
						d.setf("crystal_seal", 1)
					end
					check_2 = true
				end
			end
		end
		
		
		when 9210.take with item.vnum == 30701 and pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			local n = number (1,2)
			
			if n == 1 then
				d.clear_regen()
				pc.remove_item(setting["keys"][1], 1)
				d.notice("Acesta nu este un sigiliu bun .")
				d.notice("Du-te si cauta unul bun !")
				d.spawn_mob(9211, 753, 172)
				timer("effect_purge", 10)
				d.setf("mobs_2", 1)
				crystal_dungeon.get_regens(2)
				d.setf("crystal_seal", 0)
			else
				d.notice("Este un sigiliu bun !")
				d.kill_unique(9210)
				d.clear_regen()
				d.kill_all()
				d.setf("lair_check", 3)
				pc.remove_item(setting["keys"][1], 1)
				cleartimer("level_timer")
				timer("level_timer", 12)
			end
		end
		
		when 940.kill or 943.kill or 944.kill or 945.kill begin
			local count, check3 = d.getf("mobs_3") + 1, false;
			
			if d.getf("lair_check") == 3 then
						--105
				if count < 105 and check3 == false then
					d.setf("mobs_3", count)
				else
					if d.getf("crystal_boss1") == 0 then
						d.kill_all()
						d.clear_regen()
						d.notice("Toti monstrii au fost infranti !")
						d.notice("Bestia de Cristal o sa apara in curand !")
						timer("third_boss", 10)
						d.setf("third_boss", 1)
						d.setf("crystal_boss1", 1)
					end
					check3 = true
				end
			end
		end
		
		when 948.kill begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 3 then
				d.clear_regen()
				d.kill_all()
				d.setf("lair_check", 4)				
				d.notice("Monstrul de Cristal a fost omorat !")
				d.notice("In 30 de secunde te teleportam la urmatorul nivel .")
				cleartimer("level_four_timer")
				cleartimer("level_timer")
				timer("level_timer", 10)
			else
				return
			end
		end
		
		when 8412.kill begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 4 then
				game.drop_item(setting["keys"][2],1)
			end				
		end
		
		when 8413.kill begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 4 then
				game.drop_item(setting["keys"][3],1)
			end
		end
		
		when 9212.take with item.vnum == 30702 and pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			pc.remove_item(setting["keys"][2], 1)
			d.spawn_mob(9213, 405, 687)
			timer("wait_eff1", 2)
		end
		
		when 9212.take with item.vnum == 30703 and pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			pc.remove_item(setting["keys"][3], 1)
			d.spawn_mob(9213, 405, 687)
			timer("wait_eff2", 2)
		end
		
		when 944.kill or 945.kill or 946.kill begin
			local count, check_4 = d.getf("mobs_5") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 5 then
						--75
				if count < 75 and check_4 == false then
					d.setf("mobs_5", count)
				else
					if d.getf("crystal_dino") == 0 then
						d.clear_regen()
						d.kill_all()
						timer("crystal_dino", 10)
						d.setf("crystal_dino", 1)
					end
					check_4 = true
				end
			end
		end
		
		when 949.kill with pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 5 then
				d.clear_regen()
				d.kill_all()
				d.setf("lair_check", 6)				
				d.notice("Dino de Cristal a fost omorat !")
				d.notice("In 10 secunde te teleportam la urmatorul nivel .")
				cleartimer("level_timer")
				timer("level_timer", 10)
			else
				return
			end
		end

		when 8414.kill with pc.in_dungeon() begin
			local count, check_5 = d.getf("metins_6") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 6 then
				if count < 7 and check_5 == false then
					d.setf("metins_6", count)
				else
					if d.getf("crystal_dragon") == 0 then
						d.notice("Toate pietrele metin au fost sparte inainte sa se termine timpul !")
						d.notice("Dragonul de Cristal o sa apara in curand !")
						cleartimer("level_six_timer")
						cleartimer("level_timer")
						d.kill_all()
						d.setf("lair_check", 7)
						d.setf("crystal_dragon", 1)
						cleartimer("level_timer")
						timer("level_timer", 7)
					end
					check_5 = true
				end
			end
		end

		when 950.kill with pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 7 then
				d.clear_regen()
				d.kill_all()
				d.notice("Dragonul de Cristal a fost omorat !")
				d.notice("Ai terminat temnita cu succes !")
				d.notice("In 3 minute vei fi teleportat .")
				cleartimer("level_timer")
				server_timer("final", 3 * 60, d.get_map_index())
			else
				return
			end
		end

		---
		--- Dungeon end
		---
		
		---
		--- TIMERS
		---		
		when effect_purge.timer begin
			d.kill_unique(9211)
		end
		
		when third_boss.timer begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("third_boss") == 1 then
				crystal_dungeon.spawn_boss(3)
				d.setf("third_boss", 0)
			else
				return
			end
		end
		
		when crystal_dino.timer begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("crystal_dino") == 1 then
				crystal_dungeon.spawn_boss(5)
				d.notice(string.format("  %s a venit ! Omoara-l !", mob_name(949)))
				d.setf("crystal_dino", 0)
			else
				return
			end
		end
		
		when wait_eff1.timer begin
			d.notice("Nu este buna !!")
			d.notice("Cauta una buna .")			
		end
		
		when wait_eff2.timer begin
			d.notice("Ai pus piesa cu succes !")
			d.notice("Te teleportam la urmatorul etaj .")
			d.kill_unique(9212)
			d.clear_regen()
			d.kill_all()
			d.setf("lair_check", 5)
			cleartimer("level_timer")
			timer("level_timer", 12)
		end
		
		when level_four_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.set_warp_location(41, 9694, 2786)
				d.notice("Temnita nu a fost dusa pana la capat !")
				d.notice("Timpul s-a terminat !")
				
				server_timer("exit_before", 10, get_server_timer_arg())
			end
		end
		
		when level_six_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.set_warp_location(41, 9694, 2786)
				d.notice("Temnita nu a fost dusa pana la capat !")
				d.notice("Timpul s-a terminat !")
				
				server_timer("exit_before2", 10, get_server_timer_arg())
			end
		end

		when final.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.set_warp_location(41, 9694, 2786)
				d.notice(" Cele 3 minute s-au terminat. Acum te teleportam .")
				
				server_timer("final_warp", 10, get_server_timer_arg())
			end
		end

		when exit_before.server_timer begin
			if d.select(get_server_timer_arg()) then
				clear_server_timer("exit_before", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				clear_server_timer("level_four_timer", get_server_timer_arg())
				d.exit_all()
			end
		end
		
		when exit_before2.server_timer begin
			if d.select(get_server_timer_arg()) then
				clear_server_timer("exit_before2", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				clear_server_timer("level_six_timer", get_server_timer_arg())
				d.exit_all()
			end
		end
		
		when final_warp.server_timer begin
			if d.select(get_server_timer_arg()) then
				clear_server_timer("final_warp", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				d.exit_all()
			end
		end
		
		when level_timer.timer begin
			local get_flag = d.getf("lair_check")
			local setting = crystal_dungeon.settings()
			
			d.clear_regen()
			d.kill_all()
			
			if get_flag == 2 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][2][1], setting["spawm_pos"][2][2])
				crystal_dungeon.get_regens(2)
				d.spawn_mob(9210, 753, 172)
				d.setf("lair_check", 2)
			end
			if get_flag == 3 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][2][1], setting["spawm_pos"][2][2])
				crystal_dungeon.get_regens(3)
				d.setf("lair_check", 3)
			end
			if get_flag == 4 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][3][1], setting["spawm_pos"][3][2])
				crystal_dungeon.get_regens(4)
				d.setf("lair_check", 4)
				crystal_dungeon.spawn_metins_4thfloor()
			end
			if get_flag == 5 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][4][1], setting["spawm_pos"][4][2])
				crystal_dungeon.get_regens(5)
				d.setf("lair_check", 5)
			end
			if get_flag == 6 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][5][1], setting["spawm_pos"][5][2])
				crystal_dungeon.get_regens(6)
				crystal_dungeon.get_regens(7)
				d.setf("lair_check", 6)
			end
			if get_flag == 7 then
				crystal_dungeon.spawn_boss(7)
				d.setf("lair_check", 7)
			end
		end
		
	end
end
Daca ai tu timp, imi poti pune pe acest quest? Am facut asemanator si nu mi-a mers, poate nu fac ceva bine, te rog.
Avatar utilizator
[HF]White
Metin Master

Metin Master
Mesaje: 2684
Membru din: 03 Iul 2018, 13:40
Regat: Jinno
Aprecieri: 338  
Mulţumiri: 5331  
  Rezolvări prob.: 13
Discord: Copiază ID
 Contact:
Medalii

Cod: Selectaţi tot

quest crystal_dungeon begin
	state start begin
		--Functions
		function settings()
			return
			{
				["map_index"] = 9,
				["spawm_pos"] = {
					[1] = {21272, 29576},
					[2] = {21650, 29689},
					[3] = {21232, 30067},
					[4] = {21396, 30104},
					[5] = {21765, 30187},
				},
				["level_check"] = {
					["minimum"] = 105,
					["maximum"] = 120
				},
				["keys"] = {30701, 30702, 30703},
				["metin_stones"] = {8411, 8412, 8413, 8414},
			};
		end
		
		function spawn_boss(level)
			local boss_settings = {
				[3] = {948, 741, 191},
				[5] = {949, 431, 544},
				[7] = {950, 773, 681}
				};
			
			return d.spawn_mob(boss_settings[level][1], boss_settings[level][2], boss_settings[level][3])
		end
		
		function spawn_metins_4thfloor()
			local setting = crystal_dungeon.settings()
			local r = number (1,8)
			if r == 1 then
				d.spawn_mob(setting["metin_stones"][3], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 2 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][3], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 3 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][3], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 4 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][3], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 5 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][3], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 6 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][3], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 7 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][3], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 8 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][3], 410, 714)
			end
		end
		
		function make_dungeon()
			local setting = crystal_dungeon.settings()
			
			d.new_jump_party(setting["map_index"], setting["spawm_pos"][1][1], setting["spawm_pos"][1][2])
			d.setf("lair_check", 1)
			d.setf("level_four_login", 0)
			crystal_dungeon.get_regens(1)
		end

		function get_regens(level)
			local regens = {
				[1] = "data/dungeon/crystal_dungeon/regen_1.txt",
				[2] = "data/dungeon/crystal_dungeon/regen_2.txt",
				[3] = "data/dungeon/crystal_dungeon/regen_3.txt",
				[4] = "data/dungeon/crystal_dungeon/regen_4a.txt",
				[5] = "data/dungeon/crystal_dungeon/regen_4b.txt",
				[6] = "data/dungeon/crystal_dungeon/regen_5.txt",
				[7] = "data/dungeon/crystal_dungeon/regen_5_metins.txt"};
			
			return d.set_regen_file(regens[level])
		end
		
		function party_get_member_pids()
			local pids = {party.get_member_pids()}
			
			return pids
		end
		
		------
		------[Dungeon enter]
		------
		when 20092.chat."Temnita de cristal" begin
		
			if 3600 > get_global_time() - pc . getqf ( "timp_asteptare" ) then 
					say ("Trebuie sa astepti 1 ora ca sa participi din nou la Dungeon.") 
					return
			end
			
			local settings = crystal_dungeon.settings()
			
			say_title(mob_name(9214))
			say("")
			
			if not party.is_party() then
				say("Trebuie sa faci parte dintr-un grup")
				say("sa poti intra in temnita de cristal .")
				return
			end
			
			if not party.is_leader() then
				say("Doar liderul grupului poate")
				say("sa porneasca temnita de cristal .")
				say("")
				say("Vorbeste cu el intai .")
				return
			end
			
			if party.get_near_count() < 2 then
				say("Daca vrei sa intrii,")
				say("grupa trebuie facuta din mai mult de 2 persoane .")
				return
			end
			
			local levelCheck, maximlevelCheck = true, true
			local notEnoughLevelMembers, notEnoughmaximLevelMembers = {}, {}
			local pids = {party.get_member_pids()}
			
			for i, pid in next, crystal_dungeon.party_get_member_pids(), nil do
				q.begin_other_pc_block(pid)
				
				if pc.get_level() < settings["level_check"]["minimum"] then
					table.insert(notEnoughLevelMembers, pc.get_name())
					levelCheck = false
				end
				if pc.get_level() > settings["level_check"]["maximum"] then
					table.insert(notEnoughmaximLevelMembers, pc.get_name())
					maximlevelCheck = false
				end
				
				q.end_other_pc_block()
			end
			
			if not levelCheck then
				say("Daca iti doresti sa intrii in temnita de")
				say("cristal, fiecare membru din grup trebuie")
				say(string.format("sa aiba minim nivelul %s.", settings["level_check"]["minimum"]))
				say("")
				say("Urmatorii membrii nu au nivelul necesar:")
				for i, name in next, notEnoughLevelMembers, nil do
					say("- "..name)
				end
				return
			end
			
			if not maximlevelCheck then
				say("If you wish to enter the Crystal dungeon,")
				say("every each memeber of the group")
				say(string.format("must have maximum level %s.", settings["level_check"]["maximum"]))
				say("")
				say("The following members don't have enough lvl:")
				for i, name in next, notEnoughmaximLevelMembers, nil do
					say("- "..name.."")
				end
				return
			end
			
			say("Dupa ce apesi pe continua,")
			say("fiecare membru v-a fii teleportat.")
			wait()
			crystal_dungeon.make_dungeon()
		end
		
		----
		----Dungeon start
		----
		
		when login begin
			local get_flag = d.getf("lair_check")
			local four_login = d.getf("level_four_login")
			local six_login = d.getf("level_six_login")
			
			if get_flag == 2 then
				say_title("Al doilea etaj :")
				say("")
				say("Omora toti mobii, pentru a primi sigiliul.")
				say("sa poti debloca altarul de crystal.")
				say("Poti dropa un sigiliu fals.")
				d.setf("crystal_seal", 0)
			elseif get_flag == 3 then
				say_title("Al treilea etaj :")
				say("")
				say("Omoara toti monstrii de la acest etaj .")
				say("Ei sunt gardienii Monstrului de Cristal !")
				say("Dupa ce omori toti monstri, Monstrul")
				say("de Cristal se v-a trezii !")
				say("")
				say_title("REPEDE ! Aveti la dispozitie 10 minute .")
				if four_login == 0 then
					d.setf("level_four_login", 1)
					d.setf("lair_check", 3)
					clear_server_timer("level_four_timer", get_server_timer_arg())
					clear_server_timer("exit_before", get_server_timer_arg())
					server_timer("level_four_timer", 10 * 60, d.get_map_index())
				end
			elseif get_flag == 4 then
				say_title("Etajul al 4 lea  :")
				say("")
				say("Sunteti niste razboinici buni !")
				say("Nu prea multi razboinici au reusit")
				say("sa ajunga pana aici !")
				say("REPEDE ! Trebuie sa spargeti metinul bun")
				say("care dropeaza cheia care se potriveste .")
				say("")
				say_title("Sigiliul este plasat la sfarsitul")
				say_title("acestui etaj !")
			elseif get_flag == 5 then
				say_title("Al 5 lea etaj :")
				say("")
				say(" OMOARA !")
				say("Trebuie sa omori toti monstrii !")
				say("Dino de Cristal o sa apara ! Nu poti supravietuii")
				say("cu toti acesti monstrii !")
				say("Dino de Cristal este aici !")
				say("")
				say_title("Multa bafta !")
			elseif get_flag == 6 then
				say_title("Al 6 lea etaj :")
				say("")
				say("Trebuie sa spargi toate pietrele metin !")
				say("Aceste pietre metin sunt puternice !")
				say("")
				say_title("Ai la dispozitie 15 minute sa le spargi pe toate !")
				say_title("metins!")
				if six_login == 0 then
					d.setf("level_six_login", 1)
					d.setf("lair_check", 6)
					clear_server_timer("level_six_timer", get_server_timer_arg())
					clear_server_timer("exit_before2", get_server_timer_arg())
					server_timer("level_six_timer", 15 * 60, d.get_map_index())
				end
			else
				return
			end
		end
		
		when kill with npc.get_race() == 940 or npc.get_race() == 941 or npc.get_race() == 942 begin
			local count, check = d.getf("mobs") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 1 then
						--83
				if count < 83 and check == false then
					d.setf("mobs", count)
				else
					if d.getf("metin_stone") == 0 then
						d.clear_regen()
						d.kill_all()
						d.spawn_mob(setting["metin_stones"][1], 261, 276)
						d.spawn_mob(setting["metin_stones"][1], 242, 303)
						d.spawn_mob(setting["metin_stones"][1], 293, 305)
						d.notice(string.format(" %s s-a spawnat  ! ", mob_name(8411)))
						d.setf("metin_stone", 1)
					end
					check = true
				end
			end
		end
		
		when kill with npc.get_race() == 8411 and pc.in_dungeon() begin
			local count, check_metin1 = d.getf("metins") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 1 then
				if count < 3 and check_metin1 == false then
					d.setf("metins", count)
				else
					if d.getf("metin_stone1") == 0 then
						d.notice("Te-ai descurcat de minune ! Acum vei fi teleportat !")
						d.kill_all()
						d.setf("lair_check", 2)
						d.setf("metin_stone1", 1)
						cleartimer("level_timer")
						timer("level_timer", 7)
					end
					check_metin1 = true
				end
			end
		end
		
		
		when 942.kill or 943.kill or 944.kill begin
			local count, check_2 = d.getf("mobs_2") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 2 then
						--73
				if count < 73 and check_2 == false then
					d.setf("mobs_2", count)
				else
					if d.getf("crystal_seal") == 0 then
						game.drop_item(setting["keys"][1], 1)
						d.setf("crystal_seal", 1)
					end
					check_2 = true
				end
			end
		end
		
		
		when 9210.take with item.vnum == 30701 and pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			local n = number (1,2)
			
			if n == 1 then
				d.clear_regen()
				pc.remove_item(setting["keys"][1], 1)
				d.notice("Acesta nu este un sigiliu bun .")
				d.notice("Du-te si cauta unul bun !")
				d.spawn_mob(9211, 753, 172)
				timer("effect_purge", 10)
				d.setf("mobs_2", 1)
				crystal_dungeon.get_regens(2)
				d.setf("crystal_seal", 0)
			else
				d.notice("Este un sigiliu bun !")
				d.kill_unique(9210)
				d.clear_regen()
				d.kill_all()
				d.setf("lair_check", 3)
				pc.remove_item(setting["keys"][1], 1)
				cleartimer("level_timer")
				timer("level_timer", 12)
			end
		end
		
		when 940.kill or 943.kill or 944.kill or 945.kill begin
			local count, check3 = d.getf("mobs_3") + 1, false;
			
			if d.getf("lair_check") == 3 then
						--105
				if count < 105 and check3 == false then
					d.setf("mobs_3", count)
				else
					if d.getf("crystal_boss1") == 0 then
						d.kill_all()
						d.clear_regen()
						d.notice("Toti monstrii au fost infranti !")
						d.notice("Bestia de Cristal o sa apara in curand !")
						timer("third_boss", 10)
						d.setf("third_boss", 1)
						d.setf("crystal_boss1", 1)
					end
					check3 = true
				end
			end
		end
		
		when 948.kill begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 3 then
				d.clear_regen()
				d.kill_all()
				d.setf("lair_check", 4)				
				d.notice("Monstrul de Cristal a fost omorat !")
				d.notice("In 30 de secunde te teleportam la urmatorul nivel .")
				cleartimer("level_four_timer")
				cleartimer("level_timer")
				timer("level_timer", 10)
			else
				return
			end
		end
		
		when 8412.kill begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 4 then
				game.drop_item(setting["keys"][2],1)
			end				
		end
		
		when 8413.kill begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 4 then
				game.drop_item(setting["keys"][3],1)
			end
		end
		
		when 9212.take with item.vnum == 30702 and pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			pc.remove_item(setting["keys"][2], 1)
			d.spawn_mob(9213, 405, 687)
			timer("wait_eff1", 2)
		end
		
		when 9212.take with item.vnum == 30703 and pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			pc.remove_item(setting["keys"][3], 1)
			d.spawn_mob(9213, 405, 687)
			timer("wait_eff2", 2)
		end
		
		when 944.kill or 945.kill or 946.kill begin
			local count, check_4 = d.getf("mobs_5") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 5 then
						--75
				if count < 75 and check_4 == false then
					d.setf("mobs_5", count)
				else
					if d.getf("crystal_dino") == 0 then
						d.clear_regen()
						d.kill_all()
						timer("crystal_dino", 10)
						d.setf("crystal_dino", 1)
					end
					check_4 = true
				end
			end
		end
		
		when 949.kill with pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 5 then
				d.clear_regen()
				d.kill_all()
				d.setf("lair_check", 6)				
				d.notice("Dino de Cristal a fost omorat !")
				d.notice("In 10 secunde te teleportam la urmatorul nivel .")
				cleartimer("level_timer")
				timer("level_timer", 10)
			else
				return
			end
		end

		when 8414.kill with pc.in_dungeon() begin
			local count, check_5 = d.getf("metins_6") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 6 then
				if count < 7 and check_5 == false then
					d.setf("metins_6", count)
				else
					if d.getf("crystal_dragon") == 0 then
						d.notice("Toate pietrele metin au fost sparte inainte sa se termine timpul !")
						d.notice("Dragonul de Cristal o sa apara in curand !")
						cleartimer("level_six_timer")
						cleartimer("level_timer")
						d.kill_all()
						d.setf("lair_check", 7)
						d.setf("crystal_dragon", 1)
						cleartimer("level_timer")
						timer("level_timer", 7)
					end
					check_5 = true
				end
			end
		end

		when 950.kill with pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 7 then
				d.clear_regen()
				d.kill_all()
				d.notice("Dragonul de Cristal a fost omorat !")
				d.notice("Ai terminat temnita cu succes !")
				d.notice("In 3 minute vei fi teleportat .")
				pc.setqf("timp_asteptare" , get_global_time())
				cleartimer("level_timer")
				server_timer("final", 3 * 60, d.get_map_index())
			else
				return
			end
		end

		---
		--- Dungeon end
		---
		
		---
		--- TIMERS
		---		
		when effect_purge.timer begin
			d.kill_unique(9211)
		end
		
		when third_boss.timer begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("third_boss") == 1 then
				crystal_dungeon.spawn_boss(3)
				d.setf("third_boss", 0)
			else
				return
			end
		end
		
		when crystal_dino.timer begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("crystal_dino") == 1 then
				crystal_dungeon.spawn_boss(5)
				d.notice(string.format("  %s a venit ! Omoara-l !", mob_name(949)))
				d.setf("crystal_dino", 0)
			else
				return
			end
		end
		
		when wait_eff1.timer begin
			d.notice("Nu este buna !!")
			d.notice("Cauta una buna .")			
		end
		
		when wait_eff2.timer begin
			d.notice("Ai pus piesa cu succes !")
			d.notice("Te teleportam la urmatorul etaj .")
			d.kill_unique(9212)
			d.clear_regen()
			d.kill_all()
			d.setf("lair_check", 5)
			cleartimer("level_timer")
			timer("level_timer", 12)
		end
		
		when level_four_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.set_warp_location(41, 9694, 2786)
				d.notice("Temnita nu a fost dusa pana la capat !")
				d.notice("Timpul s-a terminat !")
				
				server_timer("exit_before", 10, get_server_timer_arg())
			end
		end
		
		when level_six_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.set_warp_location(41, 9694, 2786)
				d.notice("Temnita nu a fost dusa pana la capat !")
				d.notice("Timpul s-a terminat !")
				
				server_timer("exit_before2", 10, get_server_timer_arg())
			end
		end

		when final.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.set_warp_location(41, 9694, 2786)
				d.notice(" Cele 3 minute s-au terminat. Acum te teleportam .")
				
				server_timer("final_warp", 10, get_server_timer_arg())
			end
		end

		when exit_before.server_timer begin
			if d.select(get_server_timer_arg()) then
				clear_server_timer("exit_before", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				clear_server_timer("level_four_timer", get_server_timer_arg())
				d.exit_all()
			end
		end
		
		when exit_before2.server_timer begin
			if d.select(get_server_timer_arg()) then
				clear_server_timer("exit_before2", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				clear_server_timer("level_six_timer", get_server_timer_arg())
				d.exit_all()
			end
		end
		
		when final_warp.server_timer begin
			if d.select(get_server_timer_arg()) then
				clear_server_timer("final_warp", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				d.exit_all()
			end
		end
		
		when level_timer.timer begin
			local get_flag = d.getf("lair_check")
			local setting = crystal_dungeon.settings()
			
			d.clear_regen()
			d.kill_all()
			
			if get_flag == 2 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][2][1], setting["spawm_pos"][2][2])
				crystal_dungeon.get_regens(2)
				d.spawn_mob(9210, 753, 172)
				d.setf("lair_check", 2)
			end
			if get_flag == 3 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][2][1], setting["spawm_pos"][2][2])
				crystal_dungeon.get_regens(3)
				d.setf("lair_check", 3)
			end
			if get_flag == 4 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][3][1], setting["spawm_pos"][3][2])
				crystal_dungeon.get_regens(4)
				d.setf("lair_check", 4)
				crystal_dungeon.spawn_metins_4thfloor()
			end
			if get_flag == 5 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][4][1], setting["spawm_pos"][4][2])
				crystal_dungeon.get_regens(5)
				d.setf("lair_check", 5)
			end
			if get_flag == 6 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][5][1], setting["spawm_pos"][5][2])
				crystal_dungeon.get_regens(6)
				crystal_dungeon.get_regens(7)
				d.setf("lair_check", 6)
			end
			if get_flag == 7 then
				crystal_dungeon.spawn_boss(7)
				d.setf("lair_check", 7)
			end
		end
		
	end
end
Dupa ce ai omorat dragonul (fiind in run!) si ai terminat dungeon-ul, se va creea un timer de 1 ora.
Avatar utilizator
virgil.tsk
Nou Venit

Nou Venit
Mesaje: 8
Membru din: 30 Mai 2021, 19:31
Server: TerrorStruck
Regat: Jinno
Aprecieri: 67  
Mulţumiri: 1  
Discord: Copiază ID
 Contact:
Medalii

Asa am facut si eu si nu merge, dupa ce ies din run ma lasa sa reintru normal.
Runul este bagat partial, nu este bagat inca bossul si mobii, dar am pus la npc si cand ies din run in map 1 si dau sa intru ma lasa simplu, vreo rezolvare?
Avatar utilizator
[HF]White
Metin Master

Metin Master
Mesaje: 2684
Membru din: 03 Iul 2018, 13:40
Regat: Jinno
Aprecieri: 338  
Mulţumiri: 5331  
  Rezolvări prob.: 13
Discord: Copiază ID
 Contact:
Medalii

atunci vezi asa:

Cod: Selectaţi tot

quest crystal_dungeon begin
	state start begin
		--Functions
		function settings()
			return
			{
				["map_index"] = 9,
				["spawm_pos"] = {
					[1] = {21272, 29576},
					[2] = {21650, 29689},
					[3] = {21232, 30067},
					[4] = {21396, 30104},
					[5] = {21765, 30187},
				},
				["level_check"] = {
					["minimum"] = 105,
					["maximum"] = 120
				},
				["keys"] = {30701, 30702, 30703},
				["metin_stones"] = {8411, 8412, 8413, 8414},
			};
		end
		
		function spawn_boss(level)
			local boss_settings = {
				[3] = {948, 741, 191},
				[5] = {949, 431, 544},
				[7] = {950, 773, 681}
				};
			
			return d.spawn_mob(boss_settings[level][1], boss_settings[level][2], boss_settings[level][3])
		end
		
		function spawn_metins_4thfloor()
			local setting = crystal_dungeon.settings()
			local r = number (1,8)
			if r == 1 then
				d.spawn_mob(setting["metin_stones"][3], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 2 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][3], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 3 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][3], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 4 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][3], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 5 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][3], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 6 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][3], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 7 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][3], 397, 737)
				d.spawn_mob(setting["metin_stones"][2], 410, 714)
			elseif r == 8 then
				d.spawn_mob(setting["metin_stones"][2], 250, 659)
				d.spawn_mob(setting["metin_stones"][2], 239, 714)
				d.spawn_mob(setting["metin_stones"][2], 257, 745)
				d.spawn_mob(setting["metin_stones"][2], 282, 777)
				d.spawn_mob(setting["metin_stones"][2], 321, 767)
				d.spawn_mob(setting["metin_stones"][2], 371, 770)
				d.spawn_mob(setting["metin_stones"][2], 397, 737)
				d.spawn_mob(setting["metin_stones"][3], 410, 714)
			end
		end
		
		function make_dungeon()
			local setting = crystal_dungeon.settings()
			
			d.new_jump_party(setting["map_index"], setting["spawm_pos"][1][1], setting["spawm_pos"][1][2])
			d.setf("lair_check", 1)
			d.setf("level_four_login", 0)
			crystal_dungeon.get_regens(1)
		end

		function get_regens(level)
			local regens = {
				[1] = "data/dungeon/crystal_dungeon/regen_1.txt",
				[2] = "data/dungeon/crystal_dungeon/regen_2.txt",
				[3] = "data/dungeon/crystal_dungeon/regen_3.txt",
				[4] = "data/dungeon/crystal_dungeon/regen_4a.txt",
				[5] = "data/dungeon/crystal_dungeon/regen_4b.txt",
				[6] = "data/dungeon/crystal_dungeon/regen_5.txt",
				[7] = "data/dungeon/crystal_dungeon/regen_5_metins.txt"};
			
			return d.set_regen_file(regens[level])
		end
		
		function party_get_member_pids()
			local pids = {party.get_member_pids()}
			
			return pids
		end
		
		------
		------[Dungeon enter]
		------
		when 20092.chat."Temnita de cristal" begin
		
			if 3600 > get_global_time() - pc . getqf ( "timp_asteptare" ) then 
					say ("Trebuie sa astepti 1 ora ca sa participi din nou la Dungeon.") 
					return
			end
			
			local settings = crystal_dungeon.settings()
			
			say_title(mob_name(9214))
			say("")
			
			if not party.is_party() then
				say("Trebuie sa faci parte dintr-un grup")
				say("sa poti intra in temnita de cristal .")
				return
			end
			
			if not party.is_leader() then
				say("Doar liderul grupului poate")
				say("sa porneasca temnita de cristal .")
				say("")
				say("Vorbeste cu el intai .")
				return
			end
			
			if party.get_near_count() < 2 then
				say("Daca vrei sa intrii,")
				say("grupa trebuie facuta din mai mult de 2 persoane .")
				return
			end
			
			local levelCheck, maximlevelCheck = true, true
			local notEnoughLevelMembers, notEnoughmaximLevelMembers = {}, {}
			local pids = {party.get_member_pids()}
			
			for i, pid in next, crystal_dungeon.party_get_member_pids(), nil do
				q.begin_other_pc_block(pid)
				
				if pc.get_level() < settings["level_check"]["minimum"] then
					table.insert(notEnoughLevelMembers, pc.get_name())
					levelCheck = false
				end
				if pc.get_level() > settings["level_check"]["maximum"] then
					table.insert(notEnoughmaximLevelMembers, pc.get_name())
					maximlevelCheck = false
				end
				
				q.end_other_pc_block()
			end
			
			if not levelCheck then
				say("Daca iti doresti sa intrii in temnita de")
				say("cristal, fiecare membru din grup trebuie")
				say(string.format("sa aiba minim nivelul %s.", settings["level_check"]["minimum"]))
				say("")
				say("Urmatorii membrii nu au nivelul necesar:")
				for i, name in next, notEnoughLevelMembers, nil do
					say("- "..name)
				end
				return
			end
			
			if not maximlevelCheck then
				say("If you wish to enter the Crystal dungeon,")
				say("every each memeber of the group")
				say(string.format("must have maximum level %s.", settings["level_check"]["maximum"]))
				say("")
				say("The following members don't have enough lvl:")
				for i, name in next, notEnoughmaximLevelMembers, nil do
					say("- "..name.."")
				end
				return
			end
			
			say("Dupa ce apesi pe continua,")
			say("fiecare membru v-a fii teleportat.")
			wait()
			pc.setqf("timp_asteptare" , get_global_time())
			crystal_dungeon.make_dungeon()
		end
		
		----
		----Dungeon start
		----
		
		when login begin
			local get_flag = d.getf("lair_check")
			local four_login = d.getf("level_four_login")
			local six_login = d.getf("level_six_login")
			
			if get_flag == 2 then
				say_title("Al doilea etaj :")
				say("")
				say("Omora toti mobii, pentru a primi sigiliul.")
				say("sa poti debloca altarul de crystal.")
				say("Poti dropa un sigiliu fals.")
				d.setf("crystal_seal", 0)
			elseif get_flag == 3 then
				say_title("Al treilea etaj :")
				say("")
				say("Omoara toti monstrii de la acest etaj .")
				say("Ei sunt gardienii Monstrului de Cristal !")
				say("Dupa ce omori toti monstri, Monstrul")
				say("de Cristal se v-a trezii !")
				say("")
				say_title("REPEDE ! Aveti la dispozitie 10 minute .")
				if four_login == 0 then
					d.setf("level_four_login", 1)
					d.setf("lair_check", 3)
					clear_server_timer("level_four_timer", get_server_timer_arg())
					clear_server_timer("exit_before", get_server_timer_arg())
					server_timer("level_four_timer", 10 * 60, d.get_map_index())
				end
			elseif get_flag == 4 then
				say_title("Etajul al 4 lea  :")
				say("")
				say("Sunteti niste razboinici buni !")
				say("Nu prea multi razboinici au reusit")
				say("sa ajunga pana aici !")
				say("REPEDE ! Trebuie sa spargeti metinul bun")
				say("care dropeaza cheia care se potriveste .")
				say("")
				say_title("Sigiliul este plasat la sfarsitul")
				say_title("acestui etaj !")
			elseif get_flag == 5 then
				say_title("Al 5 lea etaj :")
				say("")
				say(" OMOARA !")
				say("Trebuie sa omori toti monstrii !")
				say("Dino de Cristal o sa apara ! Nu poti supravietuii")
				say("cu toti acesti monstrii !")
				say("Dino de Cristal este aici !")
				say("")
				say_title("Multa bafta !")
			elseif get_flag == 6 then
				say_title("Al 6 lea etaj :")
				say("")
				say("Trebuie sa spargi toate pietrele metin !")
				say("Aceste pietre metin sunt puternice !")
				say("")
				say_title("Ai la dispozitie 15 minute sa le spargi pe toate !")
				say_title("metins!")
				if six_login == 0 then
					d.setf("level_six_login", 1)
					d.setf("lair_check", 6)
					clear_server_timer("level_six_timer", get_server_timer_arg())
					clear_server_timer("exit_before2", get_server_timer_arg())
					server_timer("level_six_timer", 15 * 60, d.get_map_index())
				end
			else
				return
			end
		end
		
		when kill with npc.get_race() == 940 or npc.get_race() == 941 or npc.get_race() == 942 begin
			local count, check = d.getf("mobs") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 1 then
						--83
				if count < 83 and check == false then
					d.setf("mobs", count)
				else
					if d.getf("metin_stone") == 0 then
						d.clear_regen()
						d.kill_all()
						d.spawn_mob(setting["metin_stones"][1], 261, 276)
						d.spawn_mob(setting["metin_stones"][1], 242, 303)
						d.spawn_mob(setting["metin_stones"][1], 293, 305)
						d.notice(string.format(" %s s-a spawnat  ! ", mob_name(8411)))
						d.setf("metin_stone", 1)
					end
					check = true
				end
			end
		end
		
		when kill with npc.get_race() == 8411 and pc.in_dungeon() begin
			local count, check_metin1 = d.getf("metins") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 1 then
				if count < 3 and check_metin1 == false then
					d.setf("metins", count)
				else
					if d.getf("metin_stone1") == 0 then
						d.notice("Te-ai descurcat de minune ! Acum vei fi teleportat !")
						d.kill_all()
						d.setf("lair_check", 2)
						d.setf("metin_stone1", 1)
						cleartimer("level_timer")
						timer("level_timer", 7)
					end
					check_metin1 = true
				end
			end
		end
		
		
		when 942.kill or 943.kill or 944.kill begin
			local count, check_2 = d.getf("mobs_2") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 2 then
						--73
				if count < 73 and check_2 == false then
					d.setf("mobs_2", count)
				else
					if d.getf("crystal_seal") == 0 then
						game.drop_item(setting["keys"][1], 1)
						d.setf("crystal_seal", 1)
					end
					check_2 = true
				end
			end
		end
		
		
		when 9210.take with item.vnum == 30701 and pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			local n = number (1,2)
			
			if n == 1 then
				d.clear_regen()
				pc.remove_item(setting["keys"][1], 1)
				d.notice("Acesta nu este un sigiliu bun .")
				d.notice("Du-te si cauta unul bun !")
				d.spawn_mob(9211, 753, 172)
				timer("effect_purge", 10)
				d.setf("mobs_2", 1)
				crystal_dungeon.get_regens(2)
				d.setf("crystal_seal", 0)
			else
				d.notice("Este un sigiliu bun !")
				d.kill_unique(9210)
				d.clear_regen()
				d.kill_all()
				d.setf("lair_check", 3)
				pc.remove_item(setting["keys"][1], 1)
				cleartimer("level_timer")
				timer("level_timer", 12)
			end
		end
		
		when 940.kill or 943.kill or 944.kill or 945.kill begin
			local count, check3 = d.getf("mobs_3") + 1, false;
			
			if d.getf("lair_check") == 3 then
						--105
				if count < 105 and check3 == false then
					d.setf("mobs_3", count)
				else
					if d.getf("crystal_boss1") == 0 then
						d.kill_all()
						d.clear_regen()
						d.notice("Toti monstrii au fost infranti !")
						d.notice("Bestia de Cristal o sa apara in curand !")
						timer("third_boss", 10)
						d.setf("third_boss", 1)
						d.setf("crystal_boss1", 1)
					end
					check3 = true
				end
			end
		end
		
		when 948.kill begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 3 then
				d.clear_regen()
				d.kill_all()
				d.setf("lair_check", 4)				
				d.notice("Monstrul de Cristal a fost omorat !")
				d.notice("In 30 de secunde te teleportam la urmatorul nivel .")
				cleartimer("level_four_timer")
				cleartimer("level_timer")
				timer("level_timer", 10)
			else
				return
			end
		end
		
		when 8412.kill begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 4 then
				game.drop_item(setting["keys"][2],1)
			end				
		end
		
		when 8413.kill begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 4 then
				game.drop_item(setting["keys"][3],1)
			end
		end
		
		when 9212.take with item.vnum == 30702 and pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			pc.remove_item(setting["keys"][2], 1)
			d.spawn_mob(9213, 405, 687)
			timer("wait_eff1", 2)
		end
		
		when 9212.take with item.vnum == 30703 and pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			pc.remove_item(setting["keys"][3], 1)
			d.spawn_mob(9213, 405, 687)
			timer("wait_eff2", 2)
		end
		
		when 944.kill or 945.kill or 946.kill begin
			local count, check_4 = d.getf("mobs_5") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 5 then
						--75
				if count < 75 and check_4 == false then
					d.setf("mobs_5", count)
				else
					if d.getf("crystal_dino") == 0 then
						d.clear_regen()
						d.kill_all()
						timer("crystal_dino", 10)
						d.setf("crystal_dino", 1)
					end
					check_4 = true
				end
			end
		end
		
		when 949.kill with pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 5 then
				d.clear_regen()
				d.kill_all()
				d.setf("lair_check", 6)				
				d.notice("Dino de Cristal a fost omorat !")
				d.notice("In 10 secunde te teleportam la urmatorul nivel .")
				cleartimer("level_timer")
				timer("level_timer", 10)
			else
				return
			end
		end

		when 8414.kill with pc.in_dungeon() begin
			local count, check_5 = d.getf("metins_6") + 1, false;
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 6 then
				if count < 7 and check_5 == false then
					d.setf("metins_6", count)
				else
					if d.getf("crystal_dragon") == 0 then
						d.notice("Toate pietrele metin au fost sparte inainte sa se termine timpul !")
						d.notice("Dragonul de Cristal o sa apara in curand !")
						cleartimer("level_six_timer")
						cleartimer("level_timer")
						d.kill_all()
						d.setf("lair_check", 7)
						d.setf("crystal_dragon", 1)
						cleartimer("level_timer")
						timer("level_timer", 7)
					end
					check_5 = true
				end
			end
		end

		when 950.kill with pc.in_dungeon() begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("lair_check") == 7 then
				d.clear_regen()
				d.kill_all()
				d.notice("Dragonul de Cristal a fost omorat !")
				d.notice("Ai terminat temnita cu succes !")
				d.notice("In 3 minute vei fi teleportat .")
				cleartimer("level_timer")
				server_timer("final", 3 * 60, d.get_map_index())
			else
				return
			end
		end

		---
		--- Dungeon end
		---
		
		---
		--- TIMERS
		---		
		when effect_purge.timer begin
			d.kill_unique(9211)
		end
		
		when third_boss.timer begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("third_boss") == 1 then
				crystal_dungeon.spawn_boss(3)
				d.setf("third_boss", 0)
			else
				return
			end
		end
		
		when crystal_dino.timer begin
			local setting = crystal_dungeon.settings()
			
			if d.getf("crystal_dino") == 1 then
				crystal_dungeon.spawn_boss(5)
				d.notice(string.format("  %s a venit ! Omoara-l !", mob_name(949)))
				d.setf("crystal_dino", 0)
			else
				return
			end
		end
		
		when wait_eff1.timer begin
			d.notice("Nu este buna !!")
			d.notice("Cauta una buna .")			
		end
		
		when wait_eff2.timer begin
			d.notice("Ai pus piesa cu succes !")
			d.notice("Te teleportam la urmatorul etaj .")
			d.kill_unique(9212)
			d.clear_regen()
			d.kill_all()
			d.setf("lair_check", 5)
			cleartimer("level_timer")
			timer("level_timer", 12)
		end
		
		when level_four_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.set_warp_location(41, 9694, 2786)
				d.notice("Temnita nu a fost dusa pana la capat !")
				d.notice("Timpul s-a terminat !")
				
				server_timer("exit_before", 10, get_server_timer_arg())
			end
		end
		
		when level_six_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.set_warp_location(41, 9694, 2786)
				d.notice("Temnita nu a fost dusa pana la capat !")
				d.notice("Timpul s-a terminat !")
				
				server_timer("exit_before2", 10, get_server_timer_arg())
			end
		end

		when final.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.set_warp_location(41, 9694, 2786)
				d.notice(" Cele 3 minute s-au terminat. Acum te teleportam .")
				
				server_timer("final_warp", 10, get_server_timer_arg())
			end
		end

		when exit_before.server_timer begin
			if d.select(get_server_timer_arg()) then
				clear_server_timer("exit_before", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				clear_server_timer("level_four_timer", get_server_timer_arg())
				d.exit_all()
			end
		end
		
		when exit_before2.server_timer begin
			if d.select(get_server_timer_arg()) then
				clear_server_timer("exit_before2", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				clear_server_timer("level_six_timer", get_server_timer_arg())
				d.exit_all()
			end
		end
		
		when final_warp.server_timer begin
			if d.select(get_server_timer_arg()) then
				clear_server_timer("final_warp", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				clear_server_timer("final", get_server_timer_arg())
				d.exit_all()
			end
		end
		
		when level_timer.timer begin
			local get_flag = d.getf("lair_check")
			local setting = crystal_dungeon.settings()
			
			d.clear_regen()
			d.kill_all()
			
			if get_flag == 2 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][2][1], setting["spawm_pos"][2][2])
				crystal_dungeon.get_regens(2)
				d.spawn_mob(9210, 753, 172)
				d.setf("lair_check", 2)
			end
			if get_flag == 3 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][2][1], setting["spawm_pos"][2][2])
				crystal_dungeon.get_regens(3)
				d.setf("lair_check", 3)
			end
			if get_flag == 4 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][3][1], setting["spawm_pos"][3][2])
				crystal_dungeon.get_regens(4)
				d.setf("lair_check", 4)
				crystal_dungeon.spawn_metins_4thfloor()
			end
			if get_flag == 5 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][4][1], setting["spawm_pos"][4][2])
				crystal_dungeon.get_regens(5)
				d.setf("lair_check", 5)
			end
			if get_flag == 6 then
				d.new_jump_party(setting["map_index"], setting["spawm_pos"][5][1], setting["spawm_pos"][5][2])
				crystal_dungeon.get_regens(6)
				crystal_dungeon.get_regens(7)
				d.setf("lair_check", 6)
			end
			if get_flag == 7 then
				crystal_dungeon.spawn_boss(7)
				d.setf("lair_check", 7)
			end
		end
		
	end
end
Avatar utilizator
iMerv3
Nivel 1

Nivel 1
Mesaje: 86
Membru din: 20 Mai 2020, 23:25
Aprecieri: 85  
Mulţumiri: 159  
Discord: Copiază ID
 Contact:
Medalii

Ți-am creat un mic exemplu pentru turnul demonilor, nu am testat dar dacă ai probleme cu el, revino cu un reply.

Cod: Selectaţi tot

quest deviltower_zone begin
	state start begin
		function cooldown()
			return 5*60 -- 5 minute
		end

		when login begin
			local idx = pc.get_map_index()
			if idx >= 660000 and idx < 670000 then
				if d.select(idx) then
					if d.getf("complete") == 0 then
						pc.setf("deviltower_zone", "cooldown", get_global_time() + deviltower_zone.cooldown())
					end
				end
			end
		end

		when 1093.kill begin
			local idx = pc.get_map_index()
			if idx >= 660000 and idx < 670000 then
				if d.select(idx) then
					if d.getf("complete") == 0 then
						d.setf("complete", 1)
						if party.is_party() then
							local pids = {party.get_member_pids()}
							for i, pid in next, pids, nil do
								q.begin_other_pc_block(pid)
								pc.setf("deviltower_zone", "cooldown", get_global_time() + deviltower_zone.cooldown())
								q.end_other_pc_block()
							end
						else
							pc.setf("deviltower_zone", "cooldown", get_global_time() + deviltower_zone.cooldown())
						end
					end
				end
			end
		end

		when 20348.chat."Bla bla" begin
			say_title(string.format("%s:[ENTER]", mob_name(20348)))
			local cooldown = pc.getf("deviltower_zone", "cooldown") - get_global_time()
			if cooldown > 0 then
				local h = cooldown / 3600
				local m = cooldown - (3600 * h) / 60
				say(string.format("Trebuie sa astepti inca %d ore si %d minute.[ENTER]", h, m))
			else
				say("bla bla")
			end
		end
	end
end
Închis
Răspunsuri
3
Vizualizări
260
Răspunsuri
6
Vizualizări
559
Răspunsuri
1
Vizualizări
143
Răspunsuri
0
Vizualizări
285

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 78 vizitatori