Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 08:13

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[QUEST] DC & Syserr! <------------------------------------

Discussion on [QUEST] DC & Syserr! <------------------------------------ within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1
 
.SliceR's Avatar
 
elite*gold: 29
Join Date: Aug 2010
Posts: 855
Received Thanks: 523
[QUEST] DC & Syserr! <------------------------------------

Der Core auf dem der DC-Run läuft schmiert ständig ab, was zunehmend nervig ist.

Fehler in der Syserr:
Code:
SYSERR: Dec 12 14:39:15 :: AddServerTimer: already registered server timer name:dc_time_notice arg:900003
SYSERR: Dec 12 14:39:15 :: AddServerTimer: already registered server timer name:dc_time_notice arg:900003
SYSERR: Dec 12 14:39:15 :: AddServerTimer: already registered server timer name:dc_time_notice arg:900003
SYSERR: Dec 12 14:41:56 :: WriteRunningStateToSyserr: LUA_ERROR: quest devils_catacomb.start letter
DC-Run Quest:
Code:
quest devils_catacomb begin
	state start begin
--Konfiguration
		when 30122.chat."DC Configuration!" with game.get_event_flag("block_dc_config") == 0 and pc.is_gm begin
			game.set_event_flag("dc_is_ok",1)
			game.set_event_flag("block_dc_config",1)
			game.set_event_flag("dc_versuche",1)
		end
--Eintritt
		when 30122.chat."The Devil's Catacomb" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 0 begin
			say_title("Geist eines Kriegers:")
			if pc.get_level() < 120 then 
				say("Du kannst die teuflischen Katakomben noch")
				say("nicht betreten, da dein Level zu niedrig ist.")
				say("")
				say_reward("Komme zurück wenn du Level 120 erreicht hast.")
				say("")
			--elseif pc.getf("deviltower_zone", "dcenter") == 0 then
			--	say("Du musst einmal den Dämonenturm erfolgreich")
			--	say("abgeschlossen haben, um in die Katakomben eintreten")
			--	say("zu können.")
			--	say("")
			else
				say("Bisher haben "..game.get_event_flag("dcgamer").." Soldaten es versucht und "..game.get_event_flag("dc_geschaft").."")
				say("haben es tatsächlich geschafft Azrael zu besiegen.")
				say("")
				say("Bist du dieser Herausvorderung gewachsen?")
				say_reward("Du wärst der "..game.get_event_flag("dc_versuche")..". Kämpfer der es versucht.")
				say("")
				local dc_login = select("Betreten", "Abbrechen")
				if dc_login == 2 then
					return
				elseif dc_login == 1 then
					pc.warp(415200, 4209200)
					d.join(90)
					d.regen_file(get_locale_base_path().."/map/metin2_map_devilscatacomb/regen.txt")
					d.regen_file(get_locale_base_path().."/map/metin2_map_devilscatacomb/npc.txt")
					d.setf("base1_killed_mobs", 0)
					game.set_event_flag(("dcgamer"), game.get_event_flag("dcgamer")+1)
					game.set_event_flag(("dc_versuche"), game.get_event_flag("dc_versuche")+1)
				end
			end
		end
		when 20367.chat."Zurück zur Stadt" with pc.get_map_index() >= 900000 and pc.get_map_index() < 910000 begin
			say_title(""..mob_name(20367)..":")
			say("Bist du sicher, dass du aufgeben und")
			say("zurück in die Stadt möchtest?")
			say("")
			local s = select("Ja, ich bin zu schwach.", "Nein, ich will weiter kämpfen!")
			if s == 1 then
				if pc.get_empire() == 1 then
					pc.warp(474300,954800)
				elseif pc.get_empire() == 2 then
					pc.warp(63800,166400)
				elseif pc.get_empire() == 3 then
					pc.warp(959900,269200)
				end
			end
		end
		function get_devil_base()
			local x = pc.get_local_x()
			local y = pc.get_local_y()
			if pc.get_map_index() == 90 and x > 30 and y > 45 and x < 450 and y < 450 then
				return 1
			end
			if pc.get_map_index() >= 900000 and pc.get_map_index() < 1000000 then
				if x > 30 and y > 45 and x < 450 and y < 450 then
					return 1
				elseif x > 540 and y > 39 and x < 1000 and y < 462 then
					return 2
				elseif x > 1048 and y > 35 and x < 1455 and y < 458 then
					return 3
				elseif x > 31 and y > 541 and x < 564 and y < 1058 then
					return 4
				elseif x > 650 and y > 540 and x < 1050 and y < 955 then
					return 5
				elseif x > 1175 and y > 576 and x < 1420 and y < 810 then
					return 6
				elseif x > 46 and y > 1091 and x < 102 and y < 1164 then
					return 7
				end
			end
			return 0
		end
		function register_player(vid)
			local player_count = d.getf("player_count")
			player_count = player_count + 1
			d.setf("player_count", tonumber(player_count))
			d.setf(string.format("player%d", player_count), tonumber(vid))
		end
		function unregister_player(vid)
			local player_count = d.getf("player_count")
			local found = false
			for i = 1, player_count, 1 do
				if found == true then
					d.setf(string.format("player%d", tonumber(i)), d.getf(string.format("player%d", i+1)))
				end
				p = d.getf("player"..tostring(i))
				if p == vid then
					i = i -1
					found = true
				end
			end
			if found == true then
				d.setf("player_count", tonumber(player_count - 1))
			end
		end
		function get_players()
			local players = {}
			local player_count = d.getf("player_count")
			for i = 1, player_count, 1 do
				players[i] = d.getf("player"..tostring(i))
			end
			return players
		end
		function checkbase3item(pindex)
			local self_checked = false
			local self = pc.select(d.getf("player"..tostring(pindex)))
			if pc.count_item(30319) < 1 and self_checked == false then
				warp_to_village()
			else
				pc.remove_item(30319, 1)
			end
			if pc.get_vid() == self then
				self_checked = true
			end
			pc.select(self)
		end
		function spawnbase4portals()
			d.spawn_goto_mob(70, 673, 94, 847)
			d.spawn_goto_mob(91, 948, 347, 564)
			d.spawn_goto_mob(401, 558, 272, 829)
			d.spawn_goto_mob(274, 713, 141, 807)
			d.spawn_goto_mob(68, 815, 313, 868)
			d.spawn_goto_mob(431, 935, 355, 840)
			d.spawn_goto_mob(430, 842, 499, 787)
		end
		function get_remaining_minutes()
			local m = 60 - (get_global_time() - d.getf("start_time"))/60
			if m <= 1 then
				return "one minute"
			else
				return string.format("%d Minuten", m)
			end
		end
		when login with devils_catacomb.get_devil_base() == 1 begin
            say_title("The Devil's Catacomb")
            say("Um in die 1. Ebene zu gelangen, müsst ihr den")
            say_item_vnum(30311)
            say("droppen und auf die Statue des Kud ziehen!")
            say("Du bekommst diesen bei den Monstern.")
			say("")
            say_reward("Ingesamt habt ihr 90 Minuten Zeit.")
			pc.remove_item(30311, pc.count_item(30311))
			pc.remove_item(30312, pc.count_item(30312))
		end
		when kill with devils_catacomb.get_devil_base() == 1 begin
			d.setf("base1_killed_mobs", d.getf("base1_killed_mobs"))
			if number(1, 100) == 1 or d.getf("base1_killed_mobs") >= 432 then
				game.drop_item(30311, 1)
			end
		end
		when 30101.take with item.vnum == 30311 and devils_catacomb.get_devil_base() == 1 begin
			item.remove()
			say("Das Eingangsportal wurde geöffnet.")
			say("Geh schnell hindurch!")
			wait()
			say("Hier beginnt das wahre Abendteuer! Du hast")
			say("jedoch nur eine Stunde Zeit, um die Devil's")
			say("Catacomb zu erforschen.")
			wait()
			d.new_jump_all(90, 4632, 42082)
			d.clear_regen()
			d.regen_file("data/dungeon/devilcave/dc_regen_ebene2.txt")
			d.regen_file("data/dungeon/devilcave/dc_tore_ebene2.txt")
			d.setf("doors", 0)
			d.setf("start_time", get_global_time())
			server_timer("dc_time_expired", 60*60, d.get_map_index())
			server_timer("dc_time_notice", 30*60, d.get_map_index())
			server_timer("dc_time_notice", 45*60, d.get_map_index())
			server_timer("dc_time_notice", 50*60, d.get_map_index())
			server_timer("dc_time_notice", 55*60, d.get_map_index())
		end
		when login with pc.in_dungeon() == true and devils_catacomb.get_devil_base() != 0 begin
			pc.set_warp_location(65, 5914, 999)
			devils_catacomb.register_player(pc.get_vid())
			loop_timer("base7_smashout", 10)
			if party.is_leader() == true then
				d.setf("leader", pc.get_vid())
			end
			if devils_catacomb.get_devil_base() != 2 then return end
			say("Zerstöre das Siegel dieses Tores, um die 3. Ebene")
			say("zu erreichen!")
			say_reward("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.")
		end
		when logout with pc.in_dungeon() == true and devils_catacomb.get_devil_base() > 1 begin
			devils_catacomb.unregister_player(pc.get_vid())
		end
		when kill with npc.get_race()>30111 and npc.get_race()<30119 and pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 2 begin
			d.setf("doors", d.getf("doors") + 1)
		end
		when 30103.click with pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 2 begin
			npc.lock()
			say("Während du den Stein genauer untersuchst, kannst")
			say("du eine Gravur erkennen.")
			say("")
			say_reward("Möchtest du der 2. Ebene beitreten?")
			local s = select("Ja, lass mich eintreten!", "Nein, ich möchte nicht eintreten.")
			if s == 1 then
				say("Du wirst nun in die 3. Ebene teleportiert.")
				timer("base3_jump", 4)
				wait()
			else
				say("Du wirst zurück in deine Stadt teleportiert.")
				wait()
				if pc.get_empire() == 1 then
					pc.warp(474300,954800)
				elseif pc.get_empire() == 2 then
					pc.warp(63800,166400)
				elseif pc.get_empire() == 3 then
					pc.warp(959900,269200)
				end
			end
		end
		when base3_jump.timer begin
			if d.getf("base3jump") == 1 then
				return
			end
			d.setf("base3jump", 1)
			d.purge()
			--table.foreach(devils_catacomb.get_players(), devils_catacomb.checkbase3item)

			d.jump_all(5427, 42282)
			d.notice("Suche den richtigen Metinstein und zerstöre ihn!")
			d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.")
			d.clear_regen()
			d.regen_file("data/dungeon/devilcave/dc_regen_ebene3.txt")
			d.spawn_mob(8034, 1237, 237)
			d.spawn_mob(8034, 1337, 166)
			d.spawn_mob(8034, 1152, 138)
			d.spawn_mob(8034, 1135, 344)
			d.spawn_mob(8034, 1367, 354)
		end
		when kill with npc.get_race()==8034 and pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 3 and d.getf("warp_countdown_mode") != 1 begin
			local stone_count = d.getf("stone_count")
			stone_count = stone_count + 1
			if stone_count >= 5 or number(1, 5) == 5 then
				d.notice("Der richtige Metinstein wurde zerstört. Du darfst nun die 4. Ebene betreten.")
				d.setf("warp_countdown_mode", 1)
				server_timer("base4_jump", 7, pc.get_map_index())
			else
				d.setf("stone_count", stone_count + 1)
				d.notice("Du hast den falschen Metinstein zerstört. Finde den Richtigen!")
			end
		end
		when base4_jump.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.purge()
				d.jump_all(4143, 42657)
				d.clear_regen()
				--d.regen_file("data/dungeon/devilcave/dc_warps.txt")
				devils_catacomb.spawnbase4portals()
				d.spawn_mob(30104, 500, 787)
				d.regen_file("data/dungeon/devilcave/dc_warps.txt")
				d.notice("Finde den Weg aus dem Labyrinth, um die 5. Ebene zu erreichen!")
				d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.")
			end
		end
		when 30104.click with pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 4 begin
			npc.purge()
			say("Du hast es geschafft! Hier ist der Ausgang des")
			say("Labyrinths. Steige nun in die 5. Ebene hinab.")
			wait()
			server_timer("base5_jump", 4, pc.get_map_index())
		end
		when base5_jump.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.purge()
				d.jump_all(4917, 42925)
				d.notice("Besiege die Dämonenwachen, um das Fratzen-Totem zu erhalten. Es dient dir als Schlüssel zu 6. Ebene.")
				d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.")
				local pos =
				{
					{850, 588},
					{714, 655},
					{701, 817},
					{987, 838},
					{994, 657},
				}
				cid = number(1, 5)
				d.spawn_mob(2591, pos[cid][1], pos[cid][2])
				
				d.regen_file("data/dungeon/devilcave/dc_regen_ebene5.txt")
			end
		end
		when kill with npc.get_race()==2591 and pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 5 begin
			game.drop_item(30312, 1)
		end
		when 30102.take with item.vnum == 30312 and pc.in_dungeon() == true and devils_catacomb.get_devil_base() == 5 begin
			item.remove()
			d.purge()
			d.notice("Aus den Tiefen der Davil's Catacomb dringt ein makernschütterndes Brüllen.")
			d.notice("Charon ist erwacht!")
			d.jump_all(5422, 42782)
			d.clear_regen()
			d.regen_file("data/dungeon/devilcave/dc_regen_ebene6.txt")
			server_loop_timer('base6_update', 10, pc.get_map_index())
			d.notice("Besiege Charon und seine Schergen!")
			d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.")
		end
		when base6_update.server_timer begin
			if not d.select(get_server_timer_arg()) then
				server_timer("base6_update_stop_timer", 1, get_server_timer_arg())
				return
			end
			if d.count_monster() == 0 then
				d.notice("Charon, der Wächter der Katakomben wurde besiegt!")
				d.notice("Nun erwartet dich die wahre Gefahr.")
				server_timer("base7_jump", 5, get_server_timer_arg())
			end
		end
		when base6_update_stop_timer.server_timer begin
			clear_server_timer("base6_update", get_server_timer_arg())
		end
		when base7_jump.server_timer begin
			clear_server_timer("base6_update", get_server_timer_arg())
			if not d.select(get_server_timer_arg()) then
				return
			end
			d.purge()
			d.jump_all(4147, 43191)
			d.clear_regen()
			d.regen_file("data/dungeon/devilcave/dc_regen_ebene7.txt")
			d.set_unique("boss", d.spawn_mob(2598, 74, 1105))
			server_loop_timer("base7_boss_update", 10, get_server_timer_arg())
			d.notice("Töte Azrael!")
			d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.")
			d.setf("level", 7)
		end
		when base7_boss_update.server_timer begin
			if d.select(get_server_timer_arg()) then
				if d.is_unique_dead("boss") then
					d.clear_regen()
					clear_server_timer("dc_time_expired", get_server_timer_arg())
					say_in_map(d.get_map_index(), color256(255, 230, 186).."The Devil´s Catacomb:[ENTER]"..color256(196, 196, 196).."Azrael wurde getötet!.[ENTER]Nun kann wieder Frieden in[ENTER]die Katakomben einkehren.[ENTER]Du wirst in einer Minute heraus teleportiert.[ENTER]")
					game.set_event_flag(("dc_geschaft"), game.get_event_flag("dc_geschaft")+1)
					server_timer("base7_update_stop_timer", 1, get_server_timer_arg())
					server_timer("dc_end_jump", 60, get_server_timer_arg())
				end
				return
			end
			server_timer("base7_update_stop_timer", 1, get_server_timer_arg())
		end
		when base7_update_stop_timer.server_timer begin
			clear_server_timer("base7_boss_update", get_server_timer_arg())
		end
		when base7_smashout.timer begin
			if d.getf("level") == 7 and devils_catacomb.get_devil_base() != 7 and d.select(pc.get_map_index()) then
				d.jump_all(4147, 43191)
			end
		end
		when dc_end_jump.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.setf("level", 0)
				clear_server_timer("dc_time_expired", get_server_timer_arg())
				clear_server_timer("base7_smashout", get_server_timer_arg())
				clear_server_timer("base7_update_stop_timer", get_server_timer_arg())
				clear_server_timer("base7_boss_update", get_server_timer_arg())
				clear_server_timer("base6_update_stop_timer", get_server_timer_arg())
				clear_server_timer("base6_update", get_server_timer_arg())
				clear_server_timer("base5_jump", get_server_timer_arg())
				clear_server_timer("base4_jump", get_server_timer_arg())
				d.clear_regen()
				d.exit_all()
			end
		end
		when dc_time_expired.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.setf("level", 0)
				d.notice("Die Zeit ist abgelaufen. Du hast es nicht geschafft die Katakomben")
				d.notice("von dem Bösen zu erlösen.")
				clear_server_timer("base7_smashout", get_server_timer_arg())
				clear_server_timer("base7_update_stop_timer", get_server_timer_arg())
				clear_server_timer("base7_boss_update", get_server_timer_arg())
				clear_server_timer("base6_update_stop_timer", get_server_timer_arg())
				clear_server_timer("base6_update", get_server_timer_arg())
				clear_server_timer("base5_jump", get_server_timer_arg())
				clear_server_timer("base4_jump", get_server_timer_arg())
				d.clear_regen()
				--table.foreach(devils_catacomb.get_players(), devils_catacomb.polyzombie)
				d.exit_all()
			end
		end
		
		when dc_time_notice.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.notice("Du hast noch "..devils_catacomb.get_remaining_minutes().." Zeit.")
			end
		end
		
	end
end
Würde mich über jede Hilfe freuen!
.SliceR is offline  
Old 12/15/2014, 20:19   #2

 
elite*gold: 0
Join Date: Dec 2008
Posts: 2,825
Received Thanks: 1,538
Wieso hat er das mit Servertimer geschrieben?
.Colossus. is offline  
Old 12/15/2014, 21:25   #3




 
Nick's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 5,823
Received Thanks: 3,368
Hallo,

ich stelle mir gerade die Frage, warum der Server-Timer hier vier mal hintereinander mit verschiedenen Zeiten definiert wird.
Code:
			server_timer("dc_time_expired", 60*60, d.get_map_index())
			server_timer("dc_time_notice", 30*60, d.get_map_index())
			server_timer("dc_time_notice", 45*60, d.get_map_index())
			server_timer("dc_time_notice", 50*60, d.get_map_index())
			server_timer("dc_time_notice", 55*60, d.get_map_index())
Ersetz dies mal mit folgendem Code;

Code:
			server_timer("dc_time_expired", 60*60, d.get_map_index())
			server_timer("dc_time_notice", 55*60, d.get_map_index())
lg
Nick is offline  
Old 03/08/2015, 21:57   #4
 
.SliceR's Avatar
 
elite*gold: 29
Join Date: Aug 2010
Posts: 855
Received Thanks: 523
Der Fehler tritt weiterhin auf... Zudem ist mir aufgefallen, dass immer kurz nach diesem Error:

dieser Error folgt:

Unmittelbar vor den beiden Errors taucht dies auf:
.SliceR is offline  
Old 03/08/2015, 23:52   #5
 
_Lea's Avatar
 
elite*gold: 0
Join Date: Feb 2015
Posts: 50
Received Thanks: 6
Is the map where the dungeon-begin npc is located on the same game-core as the dungeon itself?
_Lea is offline  
Reply


Similar Threads Similar Threads
Fehler in der syserr durch quest
06/18/2013 - Metin2 Private Server - 1 Replies
Abend auch, Ich habe nicht direckt ein problem mit einer quest, aber glaube es hat schon was damit zutuhen. Hier die Quest: quest icerun begin state start begin when login begin if pc.get_map_index() == 226 then if pc.get_x() < 23333+79 or pc.get_y() < 23333+54 or pc.get_x() > 23333+151 or pc.get_y() > 23333+130 then pc.warp((9999+123)*100, (9999+135)*100, 201)
[SYSERR]Levelup.quest
11/24/2012 - Metin2 Private Server - 5 Replies
Hi epvp. My English is not good because of this write briefly. I have a problem with the server-side syserr: SYSERR: Nov 24 16:24:07 :: RunState: LUA_ERROR: :10: attempt to concatenate field `level1' (a nil value) SYSERR: Nov 24 16:24:07 :: WriteRunningStateToSyserr: LUA_ERROR: quest levelup.start letter Quest levelup exchanged several times, to no avail... Please quick help :)



All times are GMT +1. The time now is 08:13.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.