Kleines Problem mit LUA (Quest)

04/09/2015 01:15 シスイ#1
Guten Abend ^_^

Also, ich habe letztens einen Ostern Event-Quest hinzugefügt.
Wenn ich aber das Event starten möchte
Code:
/e easterspawn 1
kommt es zu einen Fehler; mein Server schließt sich, und dann steht in der syserr
Code:
    SYSERR: Mar 31 17:17:01 :: RunState: LUA_ERROR: [string "oster_2015"]:4: attempt to index global `easterevent' (a nil value)
    SYSERR: Mar 31 17:17:01 :: WriteRunningStateToSyserr: LUA_ERROR: quest oster_2015.start click
Wer könnte mir helfen? :D
04/09/2015 01:22 #'.Rayzor™#2
Poste am Besten noch die Quest.
04/09/2015 01:22 KΛIƬӨ#3
Zeig mal die Quest.
04/09/2015 02:40 シスイ#4
Ich meine es ist die hier :confused:
* Other Language und so *

Code:
quest paste_event_2015 begin
	state start begin
		when login with game.get_event_flag("easterspawn") != 1 begin
			clear_server_timer("easter_spawn", pc.get_map_index())
		end
		when login with game.get_event_flag("easterspawn") == 1 begin
			if easterspawn == nil then
				easterspawn = {}
			end
			if easterspawn[pc.get_map_index()] == nil then
				easterspawn[pc.get_map_index()] = {started = false, last_spawn_time = 0}
			end
			if easterspawn[pc.get_map_index()].started == false then
				easterspawn[pc.get_map_index()].started = true
				easterspawn[pc.get_map_index()].last_spawn_time = 0
				clear_server_timer("easter_spawn", pc.get_map_index())
				server_loop_timer("easter_spawn", 60, pc.get_map_index())
			end
		end
		when easter_spawn.server_timer begin
			local mapindex = get_server_timer_arg()
			if game.get_event_flag("easterspawn") == 1 and easterspawn[mapindex].last_spawn_time + 60*30 < get_global_time() then
				easterspawn[mapindex].last_spawn_time = get_global_time()
				easterevent.spawn_eggs(mapindex)
			end
		end

		function spawn_eggs(mapindex)
			local regen = {
				[61] = "map_n_snowm_01.txt",
				[62] = "metin2_map_n_flame_01.txt",
				[64] = "map_n_threeway.txt",
				[65] = "metin2_map_milgyo.txt",
				[67] = "metin2_map_trent.txt",
				[68] = "metin2_map_trent02.txt",
				[69] = "metin2_map_WL_01.txt",
				[70] = "metin2_map_nusluck01.txt",
				[72] = "metin2_map_skipia_dungeon_01.txt",
				[73] = "metin2_map_skipia_dungeon_02.txt",
			}
			if regen[mapindex] == nil then
				return
			end
			regen_in_map(mapindex, "data/event_paste/spawn_paste/"..regen[mapindex])
		end
		
		
		when 8042.kill or 8043.kill or 8044.kill or 8045.kill or 8046.kill or 8047.kill begin
			local level = (npc.get_race() - 8042)*10 + 40
			if pc.get_level() - level > 10 then
				return
			end
			local count = number(3, 5)
			for i = 1, count, 1 do
				game.drop_item_with_ownership(number(50160, 50179), 1)
			end
		end
		

		
	end
end
04/09/2015 03:34 KΛIƬӨ#5
Quote:
Originally Posted by Yoarashi View Post
Ich meine es ist die hier :confused:
* Other Language und so *

Code:
quest paste_event_2015 begin
	state start begin
		when login with game.get_event_flag("easterspawn") != 1 begin
			clear_server_timer("easter_spawn", pc.get_map_index())
		end
		when login with game.get_event_flag("easterspawn") == 1 begin
			if easterspawn == nil then
				easterspawn = {}
			end
			if easterspawn[pc.get_map_index()] == nil then
				easterspawn[pc.get_map_index()] = {started = false, last_spawn_time = 0}
			end
			if easterspawn[pc.get_map_index()].started == false then
				easterspawn[pc.get_map_index()].started = true
				easterspawn[pc.get_map_index()].last_spawn_time = 0
				clear_server_timer("easter_spawn", pc.get_map_index())
				server_loop_timer("easter_spawn", 60, pc.get_map_index())
			end
		end
		when easter_spawn.server_timer begin
			local mapindex = get_server_timer_arg()
			if game.get_event_flag("easterspawn") == 1 and easterspawn[mapindex].last_spawn_time + 60*30 < get_global_time() then
				easterspawn[mapindex].last_spawn_time = get_global_time()
				easterevent.spawn_eggs(mapindex)
			end
		end

		function spawn_eggs(mapindex)
			local regen = {
				[61] = "map_n_snowm_01.txt",
				[62] = "metin2_map_n_flame_01.txt",
				[64] = "map_n_threeway.txt",
				[65] = "metin2_map_milgyo.txt",
				[67] = "metin2_map_trent.txt",
				[68] = "metin2_map_trent02.txt",
				[69] = "metin2_map_WL_01.txt",
				[70] = "metin2_map_nusluck01.txt",
				[72] = "metin2_map_skipia_dungeon_01.txt",
				[73] = "metin2_map_skipia_dungeon_02.txt",
			}
			if regen[mapindex] == nil then
				return
			end
			regen_in_map(mapindex, "data/event_paste/spawn_paste/"..regen[mapindex])
		end
		
		
		when 8042.kill or 8043.kill or 8044.kill or 8045.kill or 8046.kill or 8047.kill begin
			local level = (npc.get_race() - 8042)*10 + 40
			if pc.get_level() - level > 10 then
				return
			end
			local count = number(3, 5)
			for i = 1, count, 1 do
				game.drop_item_with_ownership(number(50160, 50179), 1)
			end
		end
		

		
	end
end
Add mich mal auf Skype. Ich schreib dir ne neue.

Laut dem ersten Error würde ich sagen dass dir ne Function fehlt, füg die Function spawn_eggs mal in die Questlib wenns immernoch nicht geht schreib ich sie dir gerne neu.
04/09/2015 10:49 BizepsSupportAccount#6
Kann kein Lua aber versuch mal diese Version:

PHP Code:
quest easterevent begin
    state start begin
        when login with game
.get_event_flag("easterspawn") != 1 begin
            clear_server_timer
("easter_spawn"pc.get_map_index())
        
end
        when login with game
.get_event_flag("easterspawn") == 1 begin
            
if easterspawn == nil then
                easterspawn 
= {}
            
end
            
if easterspawn[pc.get_map_index()] == nil then
                easterspawn
[pc.get_map_index()] = {started falselast_spawn_time 0}
            
end
            
if easterspawn[pc.get_map_index()].started == false then
                easterspawn
[pc.get_map_index()].started true
                easterspawn
[pc.get_map_index()].last_spawn_time 0
                clear_server_timer
("easter_spawn"pc.get_map_index())
                
server_loop_timer("easter_spawn"60pc.get_map_index())
            
end
        end
        when easter_spawn
.server_timer begin
            local mapindex 
get_server_timer_arg()
            if 
game.get_event_flag("easterspawn") == and easterspawn[mapindex].last_spawn_time 60*30 get_global_time() then
                easterspawn
[mapindex].last_spawn_time get_global_time()
                
easterevent.spawn_eggs(mapindex)
            
end
        end

        
function spawn_eggs(mapindex)
            
local regen = {
                [
61] = "map_n_snowm_01.txt",
                [
62] = "metin2_map_n_flame_01.txt",
                [
64] = "map_n_threeway.txt",
                [
65] = "metin2_map_milgyo.txt",
                [
67] = "metin2_map_trent.txt",
                [
68] = "metin2_map_trent02.txt",
                [
69] = "metin2_map_WL_01.txt",
                [
70] = "metin2_map_nusluck01.txt",
                [
72] = "metin2_map_skipia_dungeon_01.txt",
                [
73] = "metin2_map_skipia_dungeon_02.txt",
            }
            if 
regen[mapindex] == nil then
                
return
            
end
            regen_in_map
(mapindex"data/event_paste/spawn_paste/"..regen[mapindex])
        
end
        
        
        when 8042.kill 
or 8043.kill or 8044.kill or 8045.kill or 8046.kill or 8047.kill begin
            local level 
= (npc.get_race() - 8042)*10 40
            
if pc.get_level() - level 10 then
                
return
            
end
            local count 
number(35)
            for 
1countdo
                
game.drop_item_with_ownership(number(5016050179), 1)
            
end
        end
        

        
    end
end 

Beim nächsten mal bitte diesen Thread für Fehler in Quests benutzen >
[Only registered and activated users can see links. Click Here To Register...]
04/09/2015 14:41 シスイ#7
Quote:
Originally Posted by BizepsSupportAccount View Post
Kann kein Lua aber versuch mal diese Version:

PHP Code:
quest easterevent begin
    state start begin
        when login with game
.get_event_flag("easterspawn") != 1 begin
            clear_server_timer
("easter_spawn"pc.get_map_index())
        
end
        when login with game
.get_event_flag("easterspawn") == 1 begin
            
if easterspawn == nil then
                easterspawn 
= {}
            
end
            
if easterspawn[pc.get_map_index()] == nil then
                easterspawn
[pc.get_map_index()] = {started falselast_spawn_time 0}
            
end
            
if easterspawn[pc.get_map_index()].started == false then
                easterspawn
[pc.get_map_index()].started true
                easterspawn
[pc.get_map_index()].last_spawn_time 0
                clear_server_timer
("easter_spawn"pc.get_map_index())
                
server_loop_timer("easter_spawn"60pc.get_map_index())
            
end
        end
        when easter_spawn
.server_timer begin
            local mapindex 
get_server_timer_arg()
            if 
game.get_event_flag("easterspawn") == and easterspawn[mapindex].last_spawn_time 60*30 get_global_time() then
                easterspawn
[mapindex].last_spawn_time get_global_time()
                
easterevent.spawn_eggs(mapindex)
            
end
        end

        
function spawn_eggs(mapindex)
            
local regen = {
                [
61] = "map_n_snowm_01.txt",
                [
62] = "metin2_map_n_flame_01.txt",
                [
64] = "map_n_threeway.txt",
                [
65] = "metin2_map_milgyo.txt",
                [
67] = "metin2_map_trent.txt",
                [
68] = "metin2_map_trent02.txt",
                [
69] = "metin2_map_WL_01.txt",
                [
70] = "metin2_map_nusluck01.txt",
                [
72] = "metin2_map_skipia_dungeon_01.txt",
                [
73] = "metin2_map_skipia_dungeon_02.txt",
            }
            if 
regen[mapindex] == nil then
                
return
            
end
            regen_in_map
(mapindex"data/event_paste/spawn_paste/"..regen[mapindex])
        
end
        
        
        when 8042.kill 
or 8043.kill or 8044.kill or 8045.kill or 8046.kill or 8047.kill begin
            local level 
= (npc.get_race() - 8042)*10 40
            
if pc.get_level() - level 10 then
                
return
            
end
            local count 
number(35)
            for 
1countdo
                
game.drop_item_with_ownership(number(5016050179), 1)
            
end
        end
        

        
    end
end 

Beim nächsten mal bitte diesen Thread für Fehler in Quests benutzen >
[Only registered and activated users can see links. Click Here To Register...]
Ehm... nicht nöse gemeint aber du hast du die erste Zeile Verändert
Anstatt
Code:
quest paste_event_2015 begin
steht da jetzt
Code:
quest easterevent begin
:o
04/09/2015 14:57 #'.Rayzor™#8
Quote:
Originally Posted by Yoarashi View Post
Ehm... nicht nöse gemeint aber du hast du die erste Zeile Verändert
Anstatt
Code:
quest paste_event_2015 begin
steht da jetzt
Code:
quest easterevent begin
:o
Das macht keinen Unterschied, da kann auch "bauernquestistso" stehen,
hauptsache kein " _ ".
04/09/2015 15:10 .yorliK#9
Da aber Funktionen in der Quest sind und diese in der Quest mit dem Questnamen aufgerufen werden, spielt es wohl eine Rolle wie die Quest heißt. Hier z.B. hat BizepsSupportAccount sehr schön erkannt, das die Funktion mit easterevent aufgerufen werden, heißt also die Quest hieß wohl vorher mal easterevent und wurde dann umbenannt, nur die Funktionsaufrufe nicht. Daher ist der Questname ohne viel zu ändern mit "easterevent" richtig!
04/09/2015 15:12 #'.Rayzor™#10
Quote:
Originally Posted by Kilroy. View Post
Da aber Funktionen in der Quest sind und diese in der Quest mit dem Questnamen aufgerufen werden, spielt es wohl eine Rolle wie die Quest heißt. Hier z.B. hat BizepsSupportAccount sehr schön erkannt, das die Funktion mit easterevent aufgerufen werden, heißt also die Quest hieß wohl vorher mal easterevent und wurde dann umbenannt, nur die Funktionsaufrufe nicht. Daher ist der Questname ohne viel zu ändern mit "easterevent" richtig!
Ahh, danke, das wusst ich z.B. nicht.
Aber sonst trifft meine Aussage doch zu?