[PROBLEM] DT quest and lua.

02/25/2012 11:03 panikaa#1
Hi, I have a big problem with DT quest and lua.
Since I come to the DT and I'm on the fifth floor, the mob (vnum 20073) does not want to take the stamps, all is well in advance. But when I want to give a stamp, nothing happens and pops up an error in the syslog.
I give you my quest and syslog. I have a FreeBSD 8.2 x64.
PHP Code:
quest deviltower_zone begin
    state start begin
        when login begin
            
if pc.get_map_index() == 66 then
                
-- Nicht in einer Etage, die wieder nach drau?1/4n .
                -- 
Layer Range 
                
-- 1F   88  577  236 737
                
-- 2F   91  343  238 504
                
-- 3F  104  107  248 269
                
if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
                    pc
.warp((5376+532)*100, (512+596+4)*10065)
                
end
                pc
.set_warp_location(655376+532512+596+4)
            elseif 
pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
                pc
.set_warp_location(655376+532512+596+4)
            
end
        end
        when deviltower_man
.chat.locale.deviltower_man_chat begin
            
if pc.get_level() < 40 then
                say
(locale.deviltower_man_say_you_cant)
            else
                
say(locale.deviltower_man_say)
                
local s select(locale.deviltower_enter,locale.deviltower_no_enter)
                if 
== 1 then
                    
-- warp into!
                    
pc.warp(216500,727000)
                
end
            end
        end
        when devil_stone1
.kill begin
            timer
("devil_stone1_1"6)
        
end
        when devil_stone1_1
.timer begin
                local mapto7
pc.count_item(30302)  -- Ich weiß nichtdas wahre Tilgung der die Existenz der Seele des Turms 
                pc
.remove_item(30302,mapto7)

                
local boxto7pc.count_item(30300)  -- Beseitigung des unbekannten weiß nichtob es sich um ein Feld 
                pc
.remove_item(30300,boxto7)

            
d.new_jump_all(66special.devil_tower[1][1], special.devil_tower[1][2])
            
d.regen_file("data/dungeon/deviltower2_regen.txt")
            
d.set_warp_at_eliminate(4d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
        
end
        
--when devil_stone2.kill begin
        
--d.jump_all_local(special.devil_tower[2][1], special.devil_tower[2][2])
        --
end
        when devil_stone3
.kill begin
            
--d.jump_all_local(special.devil_tower[3][1], special.devil_tower[3][2])
            --
d.set_exit_all_at_eliminate(6)
            --
d.set_warp_at_eliminate(6d.get_map_index(), 100100)
            --
d.set_warp_at_eliminate(4655376+532512+596+4)
            
d.set_warp_at_eliminate(4d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
            
d.check_eliminated()
            --
d.exit_all()
        
end
        
function get_4floor_stone_pos()
            
local positions = {
                {
368629},
                {
419630},
                {
428653},
                {
422679},
                {
395689},
                {
369679},
                {
361658},
            }
            for 
1do
                
local j number(i7)
                if 
!= j then
                    local t 
positions[i];
                    
positions[i] = positions[j];
                    
positions[j] = t;
                
end
            end
            
--for 1do
        --      
positions[i][1] = positions[i][1] * 100
        
--      positions[i][2] = positions[i][2] * 100
         
--   end
            
return positions
        end
        when 8016.kill with pc
.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
            d
.setf("level"4)
            -- 
Reproduzieren eine gro?1/4 Anzahl von Monstern und Herstellung von wahr und falsch Steine Steine 
            
--d.regen_file("data/dungeon/deviltower4_regen.txt")
            
local positions deviltower_zone.get_4floor_stone_pos()
            for 
1do
                
chat(positions[i][1], positions[i][2])
                
d.set_unique("fake" .. d.spawn_mob(8017positions[i][1], positions[i][2]))
            
end
            chat
(positions[7][1], positions[7][2])
            
local vid d.spawn_mob(8017positions[7][1], positions[7][2])
            
chat(vid)
            
d.set_unique("real"vid)
            
server_loop_timer('devil_stone4_update'10pc.get_map_index())
            
server_timer('devil_stone4_fail1'5*60pc.get_map_index())

            
d.notice("Hier ist der 4. Etage,");
            
d.notice("findet den Echten Metinstein");
            
d.notice("innerhalb von 15 Minuten,");
            
d.notice("Sonst werdet ihr vor die Tür gesetzt.");
        
end

        when devil_stone4_fail1
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Noch 10 Minuten!")
                
server_timer('devil_stone4_fail2'5*60get_server_timer_arg())
            
end
        end

        when devil_stone4_fail2
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Noch 5 Minuten!")
                
server_timer('devil_stone4_fail'5*60get_server_timer_arg())
            
end
        end

        when devil_stone4_fail
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Die Zeit ist abgelaufen")
                
d.exit_all()
                
clear_server_timer('devil_stone4_update'get_server_timer_arg())
            
end
        end

        when devil_stone4_update
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if not d.is_unique_dead("real"then
                    
for 1do
                        if 
d.getf("fakedead" .. i) == 0 then
                            
if d.unique_get_hp_perc("fake" .. i) < 50 then
                                d
.purge_unique("fake" .. i)
                                
d.setf("fakedead" .. i1)
                                
d.notice("Ein falscher Metinstein verschwindet.");
                            
end
                        end
                    end
                
else
                    --
d.clear_regen()
                    --
d.regen_file("data/dungeon/deviltower5_regen.txt")
                    
server_timer("devil_stone4_end"5get_server_timer_arg())
                    
d.notice("Glückwunsch Euch ist es geglückt den Echten Metinstein");
                    
d.notice("zu finden... Auf in die nächste Etage.")
                    
clear_server_timer('devil_stone4_fail1'get_server_timer_arg())
                    
clear_server_timer('devil_stone4_fail2'get_server_timer_arg())
                    
clear_server_timer('devil_stone4_fail'get_server_timer_arg())
                
end
            
else
                
server_timer('devil_stone4_stop_timer'1get_server_timer_arg())
            
end
        end

        when devil_stone4_stop_timer
.server_timer begin
            clear_server_timer
('devil_stone4_update'get_server_timer_arg())
        
end

        when devil_stone4_end
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.setf("level"5)
                
d.setf("stone_count"5)
                
d.notice("Willkommen auf der 5.ten Etage")
                
d.notice("Tötet alle Monster denn manche Tragen den Schlüssel")
                
d.notice("für die nächste Etage mit sich")
                
d.notice("Öffnet alle Säulen mit hilfe der Schlüsselsteine (Ihr habt 20 Minuten Zeit)")
                
d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
                
server_timer('devil_stone5_fail1'5*60get_server_timer_arg())
                
clear_server_timer('devil_stone4_update'get_server_timer_arg())

                -- 
5. Stockweiter zu reproduzieren 
                d
.set_regen_file("data/dungeon/deviltower5_regen.txt")

                -- 
5. StockSeal Stone Reproduktion 
                d
.spawn_mob(20073421452)
                
d.spawn_mob(20073380460)
                
d.spawn_mob(20073428414)
                
d.spawn_mob(20073398392)
                
d.spawn_mob(20073359426)
            
end
        end
        when devil_stone5_fail1
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Noch 15 Minuten.")
                
server_timer('devil_stone5_fail2'5*60get_server_timer_arg())
            
end
        end

        when devil_stone5_fail2
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Noch 10 Minuten.")
                
server_timer('devil_stone5_fail3'5*60get_server_timer_arg())
            
end
        end

        when devil_stone5_fail3
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Noch 5 Minuten.")
                
server_timer('devil_stone5_fail'5*60get_server_timer_arg())
            
end
        end

        when devil_stone5_fail
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Die Zeit ist abgelaufen.")
                
d.exit_all()
            
end
        end

        
--when devil_stone4.kill begin
            
--d.setf("level"5)
            --
d.setf("stone_count"4)
            --
d.clear_regen()
            --
d.regen_file("data/dungeon/deviltower5_regen.txt")
            --
d.jump_all_local(special.devil_tower[4][1], special.devil_tower[4][2])
        --
end

        when 1062.kill with pc
.in_dungeon() and d.getf("level") == 5 begin
            local KILL_COUNT_FOR_DROP_KEY 
50
            
--if is_test_server() then
                
--KILL_COUNT_FOR_DROP_KEY 1
            
--end
            local n 
=d.getf("count") + 1
            d
.setf("count"n
            if 
== KILL_COUNT_FOR_DROP_KEY then
                
-- Falling Tasten 
                game
.drop_item(500841)
                
d.setf("count"0)
            
end
        end
        when devil_stone5
.take with item.vnum == 50084 begin
            npc
.purge()
            
item.remove()
            
d.setf("stone_count"d.getf("stone_count") - 1)
            if 
d.getf("stone_count") <= 0 then
                d
.setf("level"6)
                
d.clear_regen()
                
d.regen_file("data/dungeon/deviltower6_regen.txt")

                
d.notice("Glückwunsch ihr habt alle Säulen Geöffnet")
                
d.notice("Ihr werdet in die nächste Etage aufsteigen.")
                
d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
                
clear_server_timer('devil_stone5_fail1'get_server_timer_arg())
                
clear_server_timer('devil_stone5_fail2'get_server_timer_arg())
                
clear_server_timer('devil_stone5_fail3'get_server_timer_arg())
                
clear_server_timer('devil_stone5_fail'get_server_timer_arg())
            else
                
d.notice("Säule entfernt... Noch "..d.getf("stone_count").."Viel Glück")
            
end
        end

        when devil_stone6
.kill begin
            
-- Geschicktum eine Kartewo die Verfeinerung St
            -- 
Ansonsten ?1/4fnen Sie ein neues Lian Sheng 
            
--d.jump_all(special.devil_tower[6][1], special.devil_tower[6][2])
            
d.kill_all()
           -- 
d.set_warp_at_eliminate(3*60655376+532512+596+4)
            
d.check_eliminated()
            
local reward_alchemist = {200742007520076}
            
d.spawn_mob(reward_alchemist[number(1,3)], 425216);
            
d.setqf("can_refine"1)
        
end

        
--------------------------------------
        -- 
7 D kommt man aus dem Zugriff vor dem 8. Stock 
        
--------------------------------------

        
when 20074.chat."Die Oberen Stockwerke" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                say
(""..mob_name(20074).."")
                
say("Möchtet ihr Weiter herrauf")
                
say("und euer können weiterhin unter Beweiss stellen?")
                
say("Ich jedenfalls bleibe hier")
                
say("")
                
wait()
                if 
pc.level >=75 then
                        say
("Ihr seid zumindest gross genug.")
                        
say("Doch seid ihr auch Tapfer genug?")
                        
say("Es gibt nur eine möglichkeit das festzustellen.")
                        
timer("devil_jump_7"6)
                        return
                
end
                say
("Ihr seid leider noch nicht ")
                
say("gross genug um weiter aufzusteigen")
                
say("Übt noch ein wenig und kommt dann wieder.")
                
say("Viel Glück auf eurer Reise.")
                
say("")
                
wait()
                
pc.warp(590500110500)
                return
    
end
        when 20075.chat
."Mit Bezug auf den oberen Turm .." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                say
(""..mob_name(20075).."")
                
say("Möchtet ihr Weiter herrauf")
                
say("und euer können weiterhin unter Beweiss stellen?")
                
say("Ich jedenfalls bleibe hier")
                
say("")
                
wait()
                if 
pc.level >=75 then
                        say
("Ihr seid zumindest gross genug.")
                        
say("Doch seid ihr auch Tapfer genug?")
                        
say("Es gibt nur eine möglichkeit das festzustellen.")
                        
timer("devil_jump_7"6)
                        return
                
end
                say
("Ihr seid leider noch nicht ")
                
say("gross genug um weiter aufzusteigen")
                
say("Übt noch ein wenig und kommt dann wieder.")
                
say("Viel Glück auf eurer Reise.")
                
say("")
                
wait()
                
pc.warp(590500110500)
                return
    
end
        when 20076.chat
."Mit Bezug auf den oberen Turm .." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                say
(""..mob_name(20076).."")
                
say("Möchtet ihr Weiter herrauf")
                
say("und euer können weiterhin unter Beweiss stellen?")
                
say("Ich jedenfalls bleibe hier")
                
say("")
                
wait()
                if 
pc.level >=75 then
                        say
("Ihr seid zumindest gross genug.")
                        
say("Doch seid ihr auch Tapfer genug?")
                        
say("Es gibt nur eine möglichkeit das festzustellen.")
                        
timer("devil_jump_7"6)
                        return
                
end
                say
("Ihr seid leider noch nicht ")
                
say("gross genug um weiter aufzusteigen")
                
say("Übt noch ein wenig und kommt dann wieder.")
                
say("Viel Glück auf eurer Reise.")
                
say("")
                
wait()
                
pc.warp(590500110500)
                return
    
end

   when devil_jump_7
.timer begin
                d
.clear_regen()

                
d.spawn_mob(8018639658)
                
d.spawn_mob(8018611637)
                
d.spawn_mob(8018596674)
                
d.spawn_mob(8018629670)

                
d.setf("level"7)

                
d.jump_all(2048+5906656+638)
        
end
        
        when 8018.kill with pc
.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                local cont 
d.getf("7_stone_kill") + 1
                d
.setf("7_stone_kill"cont)

                if 
cont >= 4 then
                        d
.setf("7_stone_kill"0)
                        
d.set_regen_file("data/dungeon/deviltower7_regen.txt")
                
end     
        end

        when 8019.kill with pc
.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                game
.drop_item(303001)
        
end

        when 30300.
use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                pc
.remove_item("30300"1)

                
local pct number(1,10)

                if 
pct == 1 then
                        
-- Fall wahr Karte
                        game
.drop_item(303021)
                        
d.clear_regen()
                else
                        -- 
Fall wahr Karte
                        game
.drop_item(303011)
                        
                
end
        end

        when 30302.
use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                
-- An der 8th Floor 
                say
("Du wirst in die Zin Grotte teleportiert. Viel Glück.")
                
pc.remove_item("30302"1)
            
timer("devil_jump_8"6)
                
d.clear_regen()
        
end
                                                
        
--------------------------------------------
        -- 
Von 8 F vor der Ankunft geben Sie die 9 F 
        
--------------------------------------------
        
when devil_jump_8.timer begin
                d
.setf("level"8)
                
d.jump_all(2048+5906656+403)
                
d.set_regen_file("data/dungeon/deviltower8_regen.txt")
                
d.spawn_mob(20366640460)
                
local _countpc.count_item(30302)-- True Tilgung Dead Turm 
                pc
.remove_item(30302,_count)
                
        
end

        when 1040.kill with pc
.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                local pct1 
number(15)
                if 
pct1 == 1 then
                        local pct2 
number(110)
                        if 
pct2 == 1 then
                                
-- Fall wahre Schl?1/4sel 
                                game
.drop_item(303041)
                        else
                                -- 
Keys fiel 
                                game
.drop_item(303031)
                        
end
                
else
                        return
                
end
        end

        when 20366.take with item
.vnum == 30304 begin
                
-- 9 F-Zeichen aufgehoben 
                npc
.purge()
                
item.remove()
                
timer("devil_jump_9"6)
        
end

        
---------------------------------------------
        -- 
9 F ein Endeindem Sie 
        
---------------------------------------------
        
when devil_jump_9.timer begin
                d
.setf("level"9)
                
d.jump_all(2048+5906656+155)
                
d.regen_file("data/dungeon/deviltower9_regen.txt")
        
end

        when 1093.kill with pc
.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                d
.kill_all()
                
timer("devil_end_jump"10)
                
d.notice("Glückwunsch!!!")
                
d.notice("Du hast den Sensenmann getötet!!!")
                
d.notice("Du gelangst nun in die Etage des Gemeinen Dämonenkönigs!!!")
        
end

        when devil_end_jump
.timer begin
            d
.setf("level"7)
                
d.jump_all(2048+5906656+638)
                
d.clear_regen()
                
d.spawn_mob(1094639658)
        
end
        
        when 1094.kill with pc
.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
                d
.notice("Glückwunsch!!!")
                
d.notice("Du hast den Gemeinen Dämonenkönig getötet!!!")
                
d.notice("Du gelangst nun in die Etage des Blauen Todes!!!")
                
d.kill_all()
                
timer("devil_end_jump_schmied"10)
        
end

        when devil_end_jump_schmied
.timer begin
                d
.setf("level"9)
                
d.jump_all(2048+5906656+155)
                
d.clear_regen()
                
d.spawn_mob(1095605178)
        
end
        
        when 1095.kill with pc
.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
            notice_all
("".. pc.get_name() .." hat den Blauen Tod bezwungen!!!")
        
notice_all("Wir sind alle soo stolz XDDD")
                
d.notice("Glückwunsch!!!")
                
d.notice("Du hast den Blauen Tod getötet!!!")
                
d.notice("Als belohnung spawnen nun alle 3 Dt-Schmiede!!!")
                
d.check_eliminated()
            
local reward_alchemist = {200742007520076}
            
d.spawn_mob(20074609179);
                
d.spawn_mob(20075609172);
                
d.spawn_mob(20076609185);
                
d.spawn_mob(9012619170);
                
d.setqf("can_refine"1)
        
end
end
end 
syslog
PHP Code:
Feb 23 15:12:17 :: TakeItem zzz 20073 50084
SYSERR
Feb 23 16:12:17 :: RunStateLUA_ERROR: [string "deviltower_zone"]:1attempt to index global `item' (a number value)
SYSERR: Feb 23 16:12:17 :: WriteRunningStateToSyserr: LUA_ERROR: quest deviltower_zone.start click
Feb 23 15:12:20 :: TakeItem zzz 20073 50084
SYSERR: Feb 23 16:12:20 :: RunState: LUA_ERROR: [string "deviltower_zone"]:1: attempt to index global 
`item' (a number value)
SYSERR: Feb 23 16:12:20 :: WriteRunningStateToSyserr: LUA_ERROR: quest deviltower_zone.start click 
Sorry for my bad english.
Thanks for the quick response.
EDIT: I've tested on the Freebsd 7.4 and 8.2 (clean) and this same error.

Anybody help me?

Anybody help me?