[SERVICE] Die Questkontrolle

02/12/2013 16:11 xddxx1#7606
@ c1pr1an90

take this, it´s very good.
I´ve edited the upper part. :D

Sorry for my bad english. ;)

Ps: write for itemzerstoerer.txt itemzerstoerer.quest
02/12/2013 17:13 warrockplayer4#7607
Hey,
ich wollt heut das energy sytem einfügen aber iwie kommt da ein Fehler beim komplimieren

PHP Code:
QUEST energy_sys
STATE 
start
WHEN  
20001.chat ("Eine neue Technik")
        
with game get_event_flag "energy" ) == or pc is_gm ( ) == true                                              )
STATE make
WHEN  
20001.chat ("Energiesplitter extrahieren")
        
with game get_event_flag "energy" ) == or pc is_gm ( ) == true                                              )
WHEN  20001.chat ("Energiekristall herstellen")
        
with game get_event_flag "energy" ) == or pc is_gm ( ) == true                                              )
WHEN  20001.take
        with game 
get_event_flag "energy" ) == or pc is_gm ( ) == 1
WHEN  
login
WHEN  
logout
WHEN  
51002.use
assertion failure nested==0
energy_sys
.quest:233:Error occured on compile energy_sys.quest 
Die Quest:
PHP Code:
quest energy_sys begin
    state start begin
        when 20001.chat
."Eine neue Technik" with (game.get_event_flag("energy") == or pc.is_gm() == truebegin
            say_title
("Alchemist")
            
say("Ich habe es geschafft!")
            
say("Endlich konnte ich eine vollkommen neue Technik")
            
say("entwickeln.")
            
say("Ich habe es möglich gemacht, Gegenstände")
            
say("weiterzuverarbeiten und pure Energie aus ihnen zu")
            
say("ziehen. Absolut brillant!")
            
wait()
            
say_title("Alchemist")
            
say("Zerstört man einen Gegenstand mithilfe meiner")
            
say("Technik, erhält man Energiesplitter. Fügt man 30")
            
say("dieser Splitter zusammen, erhält man einen")
            
say("machtvollen Energiekristall! Reine, ungefilterte")
            
say("Energie, gebündelt in einem Edelstein. Diese")
            
say("Kraft fließt in deine gesamte Ausrüstung.")
            
say("Hast du Interesse daran?")
            
wait()
            
say_title("Alchemist")
            
say("Bring Ausrüstungsgegenstände wie Waffen, Schmuck")
            
say("und Kleidung, die du auf deiner")
            
say("Jagt findest, zu mir. Ich werde sie zu")
            
say("Energiesplittern verarbeiten.")
            
say("Zukunft und Hoffnung unseres Reiches liegen in")
            
say("dieser Technik. Wir werden unbesiegbar!")
            
set_state("make")
        
end
    end
    state make begin
        when 20001.chat
."Energiesplitter extrahieren" with (game.get_event_flag("energy") == or pc.is_gm() == truebegin
            say_title
("Alchemist")
            
say("Hat es funktioniert? Hast du Energiesplitter")
            
say("bekommen?")
            
say("Bring mir mehr Gegenstände und ich werde ")
            
say("sie mithilfe der Alchemie zerbrechen.")
            
say("Meine Technik ist noch nicht ganz ausgefeilt.")
            
say("Deswegen kann ich dir nicht garantieren, wie")
            
say("viele Splitter du erhälst.")
            
wait()
            
say_title("Alchemist")
            
say("Es gibt eine Bedingung: Sowohl dein eigener als")
            
say("auch der Level des Gegenstandes muss")
            
say("mindestens 35 sein.")
            
say("Hm, schauen wir einfach mal...")
            
wait()
            if 
pc.get_level() < 35 then
                say_title
("Alchemist")
                
say("Du bist noch nicht stark genug! Komm wieder,")
                
say("wenn du mindestens Level 35 erreicht hast.")
            else -- 
NICHT DE
                say_title
("Alchemist")
                
say("Ok du bist Stark genug für meine neue")
                
say("Entdeckung.")        
            
end
            
        end
        
        when 20001.chat
."Energiekristall herstellen" with (game.get_event_flag("energy") == or pc.is_gm() == truebegin
            say_title
("Alchemist")
            
say("Hast du deine Kraftreserven etwa schon")
            
say("aufgebraucht? Du solltest nicht so hart arbeiten")
            
say("und dein Leben leichtsinnig aufs Spiel setzen.")
            
say("Um einen Energiekristall herzustellen, benötige")
            
say("ich 30 Energiesplitter.")
            
wait()
            if 
pc.get_level() < 35 then
                say_title
("Alchemist")
                
say("Du bist noch nicht stark genug! Komm wieder,")
                
say("wenn du mindestens Level 35 erreicht hast.")
            else
                if 
pc.count_item(51001) >= 30 then
                    say_title
("Alchemist")
                    
say("Sehr schön du hast alle benötigten 30")
                    
say("Energiesplitter. Daraus kann ich einen")
                    
say("Energiekristall herstellen.")
                    
say("Warte bitte einen Moment. Ich werde es")
                    
say("versuchen, aber ich kann nicht garantieren,")
                    
say("dass es funktioniert.")
                    
wait()
                    
say_title("Alchemist")
                    
say("Alles ist bereit, um die Splitter zu einem")
                    
say("Energiekristall zu verschmelzen.")
                    
say("Doch von irgendwas muss ich leben und")
                    
say("meine Werkzeuge fallen nicht einfach so vom")
                    
say("Himmel. Ich verlange einen kleinen")
                    
say("Unkostenbeitrag von 1000 Yang. Bist du bereit, zu")
                    
say("bezahlen?")
                    if 
select("Selbstverständlich!","Nein, jetzt nicht") == 2 then
                        
return
                    
end
                    
                    pc
.change_money(-1000)
                    
pc.remove_item(51001,30)
                    
                    if 
number(0,1) == 1 then
                        say_title
("Alchemist")
                        
say("Ich wusste meine Technik ist brilliant!")
                        
say("Hier ist dein Energiekristall.")
                        
say("Ein Prachtexemplar! Spürst du die Kraft?")
                        
pc.give_item2(51002,1)
                    else -- 
NICHT DE
                        say_title
("Alchemist")
                        
say("Leider hat es nicht geklappt")
                        
say("einen Energiekristall herzustellen!")
                        return
                    
end
                    
                
else -- NICHT DE
                    say_title
("Alchemist")
                    
say("Du hast leider nicht alle benötigten 30")
                    
say("Energiesplitter. Daraus kann ich nichts")
                    
say("herstellen.")
                    return
                
end
                
            end
        end

        when 20001.take with game
.get_event_flag("energy") == or pc.is_gm() == 1 begin
            
if pc.get_level() < 35 then
                say_title
("Alchemist")
                
say("Du bist noch nicht stark genug, um die Kraft, die")
                
say("den Energiesplittern innewohnt, zu beherrschen.")
                
say("Komm wieder wenn du mindestens Level 35")
                
say("erreicht hast.")
                return
            
end
            
            
if item.get_type() == or item.get_type() == 2 then
            
--                2070 2239
--                80 369
--                1040 1189
--                3070 3249
--                5040 5359
--                4030 4069
--                7070 7219
--                11250 11299
--                11450 11499
--                11650 11699
--                11850 11899
--                12240 12699

                local maxlvl 
mysql_query("SELECT limitvalue0 FROM player.item_proto WHERE vnum='"..item.get_vnum().."' LIMIT 1;")
                
test_chat(maxlvl[1][1])
                if 
tonumber(maxlvl[1][1]) < 35 then 
                    
-- NICHT DE
                    say_title
("Alchemist")
                    
say("Dieses Item ist nicht geeignet!")
                    return
                
end
            
                say_title
("Alchemist")
                
say(string.trim(item.get_name()))
                
say("Soll ich diesen Gegenstand zerstören?")
                if 
select("Ja!","Nein, noch nicht!") == 2 then
                    
return
                else
                    
local anzahl number(0,15)
                    if 
anzahl 0 then
                        say_title
("Alchemist")
                        
say("Sagenhaft! Ich konnte "..anzahl.." Energiesplitter finden.")
                        
say("Bitte sehr.")
                        
pc.give_item2(51001anzahl)
                    else
                        
say_title("Alchemist")
                        
say("Ich habe versagt - leider konnte ich keinen")
                        
say("Energiesplitter extrahieren. Vielleicht klappt es")
                        
say("beim nächsten Versuch.")
                        return
                    
end
                    item
.remove()
                
end
                
            
else -- NICHT DE
                say_title
("Alchemist")
                
say("Dieses Item ist nicht geeignet!")
            
end
        end
        
        when login begin
            
if getenergytime() < 50000 then
                test_chat
("[Energy]Restzeit: "..getenergytime())
                
setenergytime(getenergytime() + get_time())
                
cmdchat("energysystem "..getenergytyp().."|"..getenergyvalue().."#"..getenergytime())
            
end
        end
        when logout begin
            
if getenergytime() > get_time() then
                local energy 
getenergytime() - get_time()
                if 
energy 0 then
                    setenergytime
(energy)
                
end
            end
        end
        
        when 51002.
use begin
            
if getenergytime() > get_time() then
                chat
("Du benutzst schon die Energie eines Energiekristalls!")
                return
            
end
            
            local anz 
number(1,10)
            
boni_list = {}
            
boni_list [1] = {apply.ATTBONUS_HUMAN,    15}
            
boni_list [2] = {apply.ATTBONUS_MONSTER,    10}
            
boni_list [3] = {apply.CRITICAL_PCT,    10}
            
boni_list [4] = {apply.PENETRATE_PCT,    10}
            
boni_list [5] = {apply.MAX_HP,    1000}
            
boni_list [6] = {apply.MAX_SP,    2000}
            
boni_list [7] = {apply.HP_REGEN,    30}
            
boni_list [8] = {apply.STEAL_HP,    10}
            
boni_list [9] = {apply.ATT_GRADE_BONUS,    75}
            
boni_list [10] = {apply.ATT_GRADE_BONUS,    50}
            
            
test_chat(anz)
            
test_chat(boni_list[anz][1])
            
test_chat(boni_list[anz][2])

            
affect.add_collect(boni_list[anz][1],boni_list[anz][2],7200)
            
setenergy(anz,boni_list[anz][2],get_time() + 7200)

            
cmdchat("energysystem "..anz.."|"..boni_list[anz][2].."#"..(get_time() + 7200))
            
            
setenergytime(get_time() + 7200)
            
            
item.remove()
            
chat("Du spürst die Energie des Kristalls, die sich auf deinen Körper überträgt..")
            
        
end
    end 
02/12/2013 19:29 ~NwD~#7608
nach dem ersten metin (8010) passiert nichts

Code:
quest deviltower_zone begin
    state start begin
		when login begin
			if pc.get_map_index() == 66 then			
				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)*100, 65)
				end
				pc.set_warp_location(65, 5376+532, 512+596+4)
			elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
				pc.set_warp_location(65, 5376+532, 512+596+4)
			end
		end
		when 20348.chat."DT" begin
			say_title("Wächter des Dämonturmes")
			if pc . get_level ( ) < 40 then 
				say("Du hast noch nicht genügend Erfahrung gesammelt.")
				say("Komme wieder, wenn du Level 40 bist!") 
				return
			end
			say("Möchtest du den Dämonenturm betreten?") 
			local s = select ("Betreten", "Abbrechen") 
			if s == 1 then 
				pc.warp (216500, 727000) 				
			end
		end
		when 8010.kill begin
			chat("lol")
			timer("devil_stone1_1", 6)
		end
		when devil_stone1_1.timer begin
			local mapto7= pc.count_item(30302)  -- Die Karte der Zin Grotte wurde aus deinem Inventar entfernt
			pc.remove_item(30302,mapto7)

			local boxto7= pc.count_item(30300)  -- Die Unbekannte Alte Kiste wurde aus deinem Inventar entfernt
			pc.remove_item(30300,boxto7)

			d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
			d.regen_file("data/dungeon/deviltower2_regen.txt")
			d.set_warp_at_eliminate(4, d.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(6, d.get_map_index(), 100, 100)
	    --d.set_warp_at_eliminate(4, 65, 5376+532, 512+596+4)
	    d.set_warp_at_eliminate(4, d.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 = {
		{368, 629},
		{419, 630},
		{428, 653},
		{422, 679},
		{395, 689},
		{369, 679},
		{361, 658},
	    }
	    for i = 1, 6 do
		local j = number(i, 7)
		if i != j then
		    local t = positions[i];
		    positions[i] = positions[j];
		    positions[j] = t;
		end
	    end
	    --for i = 1, 7 do
	--	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)
	    -- ¦A²{¤j¶q©Çª«¤Î»s³y¯u¥ÛÀY©M°²¥ÛÀY
	    --d.regen_file("data/dungeon/deviltower4_regen.txt")
	    local positions = deviltower_zone.get_4floor_stone_pos()
	    for i = 1, 6 do
		chat(positions[i][1], positions[i][2])
		d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
	    end
	    chat(positions[7][1], positions[7][2])
	    local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
	    chat(vid)
	    d.set_unique("real", vid)
	    server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
	    server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())

	    d.notice("Findet den richtigen Metinstein und zerstört ihn.");
	    d.notice("Die falschen Metinsteine werden verschwinden!");
	    d.notice("Ihr habt 15 Minuten zeit!");
	end

	when devil_stone4_fail1.server_timer begin
	    if d.select(get_server_timer_arg()) then
		d.notice("Verbleibende Zeit: 10 Minuten")
		server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
	    end
	end

	when devil_stone4_fail2.server_timer begin
	    if d.select(get_server_timer_arg()) then
		d.notice("Verbleibende Zeit: 5 Minuten")
		server_timer('devil_stone4_fail', 5*60, get_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.notice("Ihr werdet nun nach draußen teleportiert")
		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 i = 1, 6 do
			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" .. i, 1)
				d.notice("Der falsche Metinstein ist verschwunden..");
			    end
			end
		    end
		else
		    --d.clear_regen()
		    --d.regen_file("data/dungeon/deviltower5_regen.txt")
		    server_timer("devil_stone4_end", 5, get_server_timer_arg())
		    d.notice("Ihr habt den richtigen Metinstein zerstört.");
		    d.notice("Ihr werdet nun in die nächste Etage teleportiert")
		    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', 1, get_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("Du bist nun in der 5. Ebene")
		d.notice("Öffne alle Alten Siegel um in die nächste Ebene zu gelangen.")
		d.notice("Du hast 20 Minuten Zeit um alle Siegel zu öffnen.")
		d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
		server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
		clear_server_timer('devil_stone4_update', get_server_timer_arg())

		-- bla bla
		d.set_regen_file("data/dungeon/deviltower5_regen.txt")

		-- bla bla 2
		d.spawn_mob(20073, 421, 452)
		d.spawn_mob(20073, 380, 460)
		d.spawn_mob(20073, 428, 414)
		d.spawn_mob(20073, 398, 392)
		d.spawn_mob(20073, 359, 426)
	    end
	end
	when devil_stone5_fail1.server_timer begin
	    if d.select(get_server_timer_arg()) then
		d.notice("Verbleibende Zeit: 15 Minuten")
		server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
	    end
	end

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

	when devil_stone5_fail3.server_timer begin
	    if d.select(get_server_timer_arg()) then
		d.notice("Verbleibende Zeit: 5 Minuten")
		server_timer('devil_stone5_fail', 5*60, get_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.notice("Ihr werdet nun nach draußen teleportiert")
		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 n == KILL_COUNT_FOR_DROP_KEY then
		-- bla bla 3
		game.drop_item(50084, 1)
		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("Ihr habt alle alten Siegel geöffnet. Ihr werdet nun")
		d.notice("in die 6. Ebene teleportiert.")
		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("Es verbleibt eine Anzahl von "..d.getf("stone_count").." Siegeln")
	    end
	end

	when devil_stone6.kill begin
	    -- bla bla 4
	    -- bla bla 5
	    --d.jump_all(special.devil_tower[6][1], special.devil_tower[6][2])
	    d.kill_all()
	   -- d.set_warp_at_eliminate(3*60, 65, 5376+532, 512+596+4)
	    d.check_eliminated()
	    local reward_alchemist = {20074, 20075, 20076}
	    d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
	    d.setqf("can_refine", 1)
	end

	--------------------------------------
	-- bla bla 6
	--------------------------------------

	when 20074.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
		say(""..mob_name(20074).."")
		say("Ihr möchtet in die 7.Etage?")
		say("Ihr haben Glück! Heute erlaube ich es ihnen vielleicht!")
		say("Aber voher muss ich euch noch prüfen..")
		say("Mal sehen..")
		wait()
		if pc.level >=75 then
			say("Ich erlaube euch weiterzugehen!")
			say("Viel Glück und passt auf euch auf da oben!")
			timer("devil_jump_7", 6)
			return
		end
		say("Betreten der 7.Etage nicht erlaubt!")
		say("Ihr seid nicht qualifiziert genug!")
		say("Erreicht Level 75 oder höher,")
		say("damit ihr eure Fertigkeiten steigern könnt")
		say("und kommt dann wieder!")
		wait()
		pc.warp(590500, 110500)
		return
    end
	when 20075.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
		say(""..mob_name(20075).."")
		say("Ihr möchtet in die 7.Etage?")
		say("Ihr haben Glück! Heute erlaube ich es ihnen vielleicht!")
		say("Aber voher muss ich euch noch prüfen..")
		say("Mal sehen..")
		wait()
		if pc.level >=75 then
			say("Ich erlaube euch weiterzugehen!")
			say("Viel Glück und passt auf euch auf da oben!")
			timer("devil_jump_7", 6)
			return
		end
		say("Betreten der 7.Etage nicht erlaubt!")
		say("Ihr seid nicht qualifiziert genug!")
		say("Erreicht Level 75 oder höher,")
		say("damit ihr eure Fertigkeiten steigern könnt")
		say("und kommt dann wieder!")
		wait()
		pc.warp(590500, 110500)
		return
    end
	when 20076.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
		say(""..mob_name(20076).."")
		say("Ihr möchtet in die 7.Etage?")
		say("Ihr haben Glück! Heute erlaube ich es ihnen vielleicht!")
		say("Aber voher muss ich euch noch prüfen..")
		say("Mal sehen..")
		wait()
		if pc.level >=75 then
			say("Ich erlaube euch weiterzugehen!")
			say("Viel Glück und passt auf euch auf da oben!")
			timer("devil_jump_7", 6)
			return
		end
		say("Betreten der 7.Etage nicht erlaubt!")
		say("Ihr seid nicht qualifiziert genug!")
		say("Erreicht LvL 75 oder höher,")
		say("damit ihr eure Fertigkeiten steigern könnt")
		say("und kommt dann wieder!")
		wait()
		pc.warp(590500, 110500)
		return
    end

   when devil_jump_7.timer begin
		d.clear_regen()

		d.spawn_mob(8018, 639, 658)
		d.spawn_mob(8018, 611, 637)
		d.spawn_mob(8018, 596, 674)
		d.spawn_mob(8018, 629, 670)

		d.setf("level", 7)

		d.jump_all(2048+590, 6656+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(30300, 1)
	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
			-- bla bla 7
			game.drop_item(30302, 1)
			d.clear_regen()
		else
			-- bla bla 8
			game.drop_item(30301, 1)
			
		end
	end

	when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
		-- bla bla 9
		say("Die Karte wird euch alle in die nächste Ebene")
		say("des Dämonenturms bringen.")
		pc.remove_item("30302", 1)
	    timer("devil_jump_8", 6)
		d.clear_regen()
	end
						
	--------------------------------------------
	-- bla bla 10
	--------------------------------------------
	when devil_jump_8.timer begin
		d.setf("level", 8)
		d.jump_all(2048+590, 6656+403)
		d.set_regen_file("data/dungeon/deviltower8_regen.txt")
		d.spawn_mob(20366, 640, 460)
		local _count= pc.count_item(30302)-- bla bla 11
		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(1, 5)
		if pct1 == 1 then
			local pct2 = number(1, 10)
			if pct2 == 1 then
				-- bla bla 12
				game.drop_item(30304, 1)
			else
				-- bla bla 13
				game.drop_item(30303, 1)
			end
		else
			return
		end
	end

	when 20366.take with item.vnum == 30304 begin
		-- bla bla 14
		npc.purge()
		item.remove()
		timer("devil_jump_9", 6)
	end

	---------------------------------------------
	-- bla bla 15
	---------------------------------------------
	when devil_jump_9.timer begin
		d.setf("level", 9)
		d.jump_all(2048+590, 6656+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", 60)
	end

	when devil_end_jump.timer begin
	    d.exit_all()
	end
end
end
02/12/2013 21:26 doublesnake#7609
Hey Liebe Leute bitte helft mir Alles funktioniert nur beim Ausziehen blieben alle Bonis.

PHP Code:
quest halbmondring begin 
    state start begin 
        when 71135.
use with pc.getqf("halbmondring") == 0 begin 
            chat
("Du erhälst solange du den Ring trägst:")    
            
chat("+20% Chance auf Kritischen Treffer")   
            
chat("+2000 TP")   
            
chat("+30% Stärker gegen Monster"
            
affect.add_collect(apply.CRITICAL_PCT2060*60*24*365*60
            
affect.add_collect(apply.MAX_HP200060*60*24*365*60
            
affect.add_collect(apply.ATT_BONUS_TO_MONSTER3060*60*24*365*60
            
pc.setqf("halbmondring",1
        
end
        when 71135.
use with pc.getqf("halbmondring") == 0 begin 
            chat
("Der Ring wirkt nun nicht mehr!"
            
affect.remove_collect(apply.CRITICAL_PCT2060*60*24*365*60
            
affect.remove_collect(apply.MAX_HP200060*60*24*365*60
            
affect.remove_collect(apply.ATT_BONUS_TO_MONSTER3060*60*24*365*60)             
            
pc.setqf("halbmondring",0
        
end  
    end 
end 
BITTE helft mir
02/13/2013 00:12 c1pr1an90#7610
What is wrong in the next function?
Mob number 30101 doesen't spam
Code:
	when 2092.kill with pc.get_map_index() == 115 begin
		notice_in_map("xxx xxx xxx.")
		timer("buddha", 5)
	end

	when buddha.timer begin
		d.spawn_mob(30101, 100, 100)
	end
Help please !!
02/13/2013 02:54 .KingDarkness#7611
€: geklärt!

Quote:
Originally Posted by warrockplayer4 View Post
Hey,
ich wollt heut das energy sytem einfügen aber iwie kommt da ein Fehler beim komplimieren

PHP Code:
QUEST energy_sys
STATE 
start
WHEN  
20001.chat ("Eine neue Technik")
        
with game get_event_flag "energy" ) == or pc is_gm ( ) == true                                              )
STATE make
WHEN  
20001.chat ("Energiesplitter extrahieren")
        
with game get_event_flag "energy" ) == or pc is_gm ( ) == true                                              )
WHEN  20001.chat ("Energiekristall herstellen")
        
with game get_event_flag "energy" ) == or pc is_gm ( ) == true                                              )
WHEN  20001.take
        with game 
get_event_flag "energy" ) == or pc is_gm ( ) == 1
WHEN  
login
WHEN  
logout
WHEN  
51002.use
assertion failure nested==0
energy_sys
.quest:233:Error occured on compile energy_sys.quest 
Die Quest:
PHP Code:
quest energy_sys begin
    state start begin
        when 20001.chat
."Eine neue Technik" with (game.get_event_flag("energy") == or pc.is_gm() == truebegin
            say_title
("Alchemist")
            
say("Ich habe es geschafft!")
            
say("Endlich konnte ich eine vollkommen neue Technik")
            
say("entwickeln.")
            
say("Ich habe es möglich gemacht, Gegenstände")
            
say("weiterzuverarbeiten und pure Energie aus ihnen zu")
            
say("ziehen. Absolut brillant!")
            
wait()
            
say_title("Alchemist")
            
say("Zerstört man einen Gegenstand mithilfe meiner")
            
say("Technik, erhält man Energiesplitter. Fügt man 30")
            
say("dieser Splitter zusammen, erhält man einen")
            
say("machtvollen Energiekristall! Reine, ungefilterte")
            
say("Energie, gebündelt in einem Edelstein. Diese")
            
say("Kraft fließt in deine gesamte Ausrüstung.")
            
say("Hast du Interesse daran?")
            
wait()
            
say_title("Alchemist")
            
say("Bring Ausrüstungsgegenstände wie Waffen, Schmuck")
            
say("und Kleidung, die du auf deiner")
            
say("Jagt findest, zu mir. Ich werde sie zu")
            
say("Energiesplittern verarbeiten.")
            
say("Zukunft und Hoffnung unseres Reiches liegen in")
            
say("dieser Technik. Wir werden unbesiegbar!")
            
set_state("make")
        
end
    end
    state make begin
        when 20001.chat
."Energiesplitter extrahieren" with (game.get_event_flag("energy") == or pc.is_gm() == truebegin
            say_title
("Alchemist")
            
say("Hat es funktioniert? Hast du Energiesplitter")
            
say("bekommen?")
            
say("Bring mir mehr Gegenstände und ich werde ")
            
say("sie mithilfe der Alchemie zerbrechen.")
            
say("Meine Technik ist noch nicht ganz ausgefeilt.")
            
say("Deswegen kann ich dir nicht garantieren, wie")
            
say("viele Splitter du erhälst.")
            
wait()
            
say_title("Alchemist")
            
say("Es gibt eine Bedingung: Sowohl dein eigener als")
            
say("auch der Level des Gegenstandes muss")
            
say("mindestens 35 sein.")
            
say("Hm, schauen wir einfach mal...")
            
wait()
            if 
pc.get_level() < 35 then
                say_title
("Alchemist")
                
say("Du bist noch nicht stark genug! Komm wieder,")
                
say("wenn du mindestens Level 35 erreicht hast.")
            else -- 
NICHT DE
                say_title
("Alchemist")
                
say("Ok du bist Stark genug für meine neue")
                
say("Entdeckung.")        
            
end
            
        end
        
        when 20001.chat
."Energiekristall herstellen" with (game.get_event_flag("energy") == or pc.is_gm() == truebegin
            say_title
("Alchemist")
            
say("Hast du deine Kraftreserven etwa schon")
            
say("aufgebraucht? Du solltest nicht so hart arbeiten")
            
say("und dein Leben leichtsinnig aufs Spiel setzen.")
            
say("Um einen Energiekristall herzustellen, benötige")
            
say("ich 30 Energiesplitter.")
            
wait()
            if 
pc.get_level() < 35 then
                say_title
("Alchemist")
                
say("Du bist noch nicht stark genug! Komm wieder,")
                
say("wenn du mindestens Level 35 erreicht hast.")
            else
                if 
pc.count_item(51001) >= 30 then
                    say_title
("Alchemist")
                    
say("Sehr schön du hast alle benötigten 30")
                    
say("Energiesplitter. Daraus kann ich einen")
                    
say("Energiekristall herstellen.")
                    
say("Warte bitte einen Moment. Ich werde es")
                    
say("versuchen, aber ich kann nicht garantieren,")
                    
say("dass es funktioniert.")
                    
wait()
                    
say_title("Alchemist")
                    
say("Alles ist bereit, um die Splitter zu einem")
                    
say("Energiekristall zu verschmelzen.")
                    
say("Doch von irgendwas muss ich leben und")
                    
say("meine Werkzeuge fallen nicht einfach so vom")
                    
say("Himmel. Ich verlange einen kleinen")
                    
say("Unkostenbeitrag von 1000 Yang. Bist du bereit, zu")
                    
say("bezahlen?")
                    if 
select("Selbstverständlich!","Nein, jetzt nicht") == 2 then
                        
return
                    
end
                    
                    pc
.change_money(-1000)
                    
pc.remove_item(51001,30)
                    
                    if 
number(0,1) == 1 then
                        say_title
("Alchemist")
                        
say("Ich wusste meine Technik ist brilliant!")
                        
say("Hier ist dein Energiekristall.")
                        
say("Ein Prachtexemplar! Spürst du die Kraft?")
                        
pc.give_item2(51002,1)
                    else -- 
NICHT DE
                        say_title
("Alchemist")
                        
say("Leider hat es nicht geklappt")
                        
say("einen Energiekristall herzustellen!")
                        return
                    
end
                    
                
else -- NICHT DE
                    say_title
("Alchemist")
                    
say("Du hast leider nicht alle benötigten 30")
                    
say("Energiesplitter. Daraus kann ich nichts")
                    
say("herstellen.")
                    return
                
end
                
            end
        end

        when 20001.take with game
.get_event_flag("energy") == or pc.is_gm() == 1 begin
            
if pc.get_level() < 35 then
                say_title
("Alchemist")
                
say("Du bist noch nicht stark genug, um die Kraft, die")
                
say("den Energiesplittern innewohnt, zu beherrschen.")
                
say("Komm wieder wenn du mindestens Level 35")
                
say("erreicht hast.")
                return
            
end
            
            
if item.get_type() == or item.get_type() == 2 then
            
--                2070 2239
--                80 369
--                1040 1189
--                3070 3249
--                5040 5359
--                4030 4069
--                7070 7219
--                11250 11299
--                11450 11499
--                11650 11699
--                11850 11899
--                12240 12699

                local maxlvl 
mysql_query("SELECT limitvalue0 FROM player.item_proto WHERE vnum='"..item.get_vnum().."' LIMIT 1;")
                
test_chat(maxlvl[1][1])
                if 
tonumber(maxlvl[1][1]) < 35 then 
                    
-- NICHT DE
                    say_title
("Alchemist")
                    
say("Dieses Item ist nicht geeignet!")
                    return
                
end
            
                say_title
("Alchemist")
                
say(string.trim(item.get_name()))
                
say("Soll ich diesen Gegenstand zerstören?")
                if 
select("Ja!","Nein, noch nicht!") == 2 then
                    
return
                else
                    
local anzahl number(0,15)
                    if 
anzahl 0 then
                        say_title
("Alchemist")
                        
say("Sagenhaft! Ich konnte "..anzahl.." Energiesplitter finden.")
                        
say("Bitte sehr.")
                        
pc.give_item2(51001anzahl)
                    else
                        
say_title("Alchemist")
                        
say("Ich habe versagt - leider konnte ich keinen")
                        
say("Energiesplitter extrahieren. Vielleicht klappt es")
                        
say("beim nächsten Versuch.")
                        return
                    
end
                    item
.remove()
                
end
                
            
else -- NICHT DE
                say_title
("Alchemist")
                
say("Dieses Item ist nicht geeignet!")
            
end
        end
        
        when login begin
            
if getenergytime() < 50000 then
                test_chat
("[Energy]Restzeit: "..getenergytime())
                
setenergytime(getenergytime() + get_time())
                
cmdchat("energysystem "..getenergytyp().."|"..getenergyvalue().."#"..getenergytime())
            
end
        end
        when logout begin
            
if getenergytime() > get_time() then
                local energy 
getenergytime() - get_time()
                if 
energy 0 then
                    setenergytime
(energy)
                
end
            end
        end
        
        when 51002.
use begin
            
if getenergytime() > get_time() then
                chat
("Du benutzst schon die Energie eines Energiekristalls!")
                return
            
end
            
            local anz 
number(1,10)
            
boni_list = {}
            
boni_list [1] = {apply.ATTBONUS_HUMAN,    15}
            
boni_list [2] = {apply.ATTBONUS_MONSTER,    10}
            
boni_list [3] = {apply.CRITICAL_PCT,    10}
            
boni_list [4] = {apply.PENETRATE_PCT,    10}
            
boni_list [5] = {apply.MAX_HP,    1000}
            
boni_list [6] = {apply.MAX_SP,    2000}
            
boni_list [7] = {apply.HP_REGEN,    30}
            
boni_list [8] = {apply.STEAL_HP,    10}
            
boni_list [9] = {apply.ATT_GRADE_BONUS,    75}
            
boni_list [10] = {apply.ATT_GRADE_BONUS,    50}
            
            
test_chat(anz)
            
test_chat(boni_list[anz][1])
            
test_chat(boni_list[anz][2])

            
affect.add_collect(boni_list[anz][1],boni_list[anz][2],7200)
            
setenergy(anz,boni_list[anz][2],get_time() + 7200)

            
cmdchat("energysystem "..anz.."|"..boni_list[anz][2].."#"..(get_time() + 7200))
            
            
setenergytime(get_time() + 7200)
            
            
item.remove()
            
chat("Du spürst die Energie des Kristalls, die sich auf deinen Körper überträgt..")
            
        
end
    end 
Schonmal die "Ends" kontrolliert?
02/13/2013 15:33 diechecker#7612
Hey,
Hoffe ihr könnt mir helfen:)
PHP Code:
quest Warpring begin
    state start begin
        when 70007.
use begin 
            say_title
("Warpring")
            
say("")
            
say("In welches gebiet möchtest du?")
            
local s select("Joan","Pyungmoo","Yongan","Spinnendungeon2","Farmmap","Highlvlmap1","Highlvlmap2","Schließen")
                if 
s==1 then
                    pc
.warp(55700157900)
                
end
                
if s==2 then
                    pc
.warp(969600278400)
                
end
                
if s==3 then
                    pc
.warp(469300964200)
                
end
                
if s==4 then
                    pc
.warp(665600435200)
                
end
                
if s==5 then
                    pc
.warp(832000)
                
end
                
if s==6 then
                    pc
.warp(01203200)
                
end
                
if s==7 then
                    pc
.warp(256000665600)
                
end
                
if s==8 then
                    
return
                
end
            end
        end
    end
end 
Wen ich die Quest reloade kommt immer der Fehler:
must start with "quest"
Warpring.quest:35 Error occured on compile Warpring.quest
Obwohl sie ja mit quest Warpring beginnt -.-
Hoffe mal ihr könnt mir helfen
02/13/2013 17:53 x_Core_x#7613
Quote:
Originally Posted by diechecker View Post
Hey,
Hoffe ihr könnt mir helfen:)
PHP Code:
quest Warpring begin
    state start begin
        when 70007.
use begin 
            say_title
("Warpring")
            
say("")
            
say("In welches gebiet möchtest du?")
            
local s select("Joan","Pyungmoo","Yongan","Spinnendungeon2","Farmmap","Highlvlmap1","Highlvlmap2","Schließen")
                if 
s==1 then
                    pc
.warp(55700157900)
                
end
                
if s==2 then
                    pc
.warp(969600278400)
                
end
                
if s==3 then
                    pc
.warp(469300964200)
                
end
                
if s==4 then
                    pc
.warp(665600435200)
                
end
                
if s==5 then
                    pc
.warp(832000)
                
end
                
if s==6 then
                    pc
.warp(01203200)
                
end
                
if s==7 then
                    pc
.warp(256000665600)
                
end
                
if s==8 then
                    
return
                
end
            end
        end
    end
end 
Wen ich die Quest reloade kommt immer der Fehler:
must start with "quest"
Warpring.quest:35 Error occured on compile Warpring.quest
Obwohl sie ja mit quest Warpring beginnt -.-
Hoffe mal ihr könnt mir helfen
Du hattest ein "end" zu viel :
PHP Code:
quest Warpring begin
    state start begin
        when 70007.
use begin 
            say_title
("Warpring")
            
say("")
            
say("In welches gebiet möchtest du?")
            
local s select("Joan","Pyungmoo","Yongan","Spinnendungeon2","Farmmap","Highlvlmap1","Highlvlmap2","Schließen")
            if 
s==1 then
                pc
.warp(55700157900)
            
end
            
if s==2 then
                pc
.warp(969600278400)
            
end
            
if s==3 then
                pc
.warp(469300964200)
            
end
            
if s==4 then
                pc
.warp(665600435200)
            
end
            
if s==5 then
                pc
.warp(832000)
            
end
            
if s==6 then
                pc
.warp(01203200)
            
end
            
if s==7 then
                pc
.warp(256000665600)
            
end
            
if s==8 then
                
return
            
end
        end
    end
end 
Quote:
Originally Posted by ~NwD~ View Post
nach dem ersten metin (8010) passiert nichts

Code:
quest deviltower_zone begin
    state start begin
		when login begin
			if pc.get_map_index() == 66 then			
				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)*100, 65)
				end
				pc.set_warp_location(65, 5376+532, 512+596+4)
			elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
				pc.set_warp_location(65, 5376+532, 512+596+4)
			end
		end
		when 20348.chat."DT" begin
			say_title("Wächter des Dämonturmes")
			if pc . get_level ( ) < 40 then 
				say("Du hast noch nicht genügend Erfahrung gesammelt.")
				say("Komme wieder, wenn du Level 40 bist!") 
				return
			end
			say("Möchtest du den Dämonenturm betreten?") 
			local s = select ("Betreten", "Abbrechen") 
			if s == 1 then 
				pc.warp (216500, 727000) 				
			end
		end
		when 8010.kill begin
			chat("lol")
			timer("devil_stone1_1", 6)
		end
		when devil_stone1_1.timer begin
			local mapto7= pc.count_item(30302)  -- Die Karte der Zin Grotte wurde aus deinem Inventar entfernt
			pc.remove_item(30302,mapto7)

			local boxto7= pc.count_item(30300)  -- Die Unbekannte Alte Kiste wurde aus deinem Inventar entfernt
			pc.remove_item(30300,boxto7)

			d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
			d.regen_file("data/dungeon/deviltower2_regen.txt")
			d.set_warp_at_eliminate(4, d.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(6, d.get_map_index(), 100, 100)
	    --d.set_warp_at_eliminate(4, 65, 5376+532, 512+596+4)
	    d.set_warp_at_eliminate(4, d.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 = {
		{368, 629},
		{419, 630},
		{428, 653},
		{422, 679},
		{395, 689},
		{369, 679},
		{361, 658},
	    }
	    for i = 1, 6 do
		local j = number(i, 7)
		if i != j then
		    local t = positions[i];
		    positions[i] = positions[j];
		    positions[j] = t;
		end
	    end
	    --for i = 1, 7 do
	--	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)
	    -- ¦A²{¤j¶q©Çª«¤Î»s³y¯u¥ÛÀY©M°²¥ÛÀY
	    --d.regen_file("data/dungeon/deviltower4_regen.txt")
	    local positions = deviltower_zone.get_4floor_stone_pos()
	    for i = 1, 6 do
		chat(positions[i][1], positions[i][2])
		d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
	    end
	    chat(positions[7][1], positions[7][2])
	    local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
	    chat(vid)
	    d.set_unique("real", vid)
	    server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
	    server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())

	    d.notice("Findet den richtigen Metinstein und zerstört ihn.");
	    d.notice("Die falschen Metinsteine werden verschwinden!");
	    d.notice("Ihr habt 15 Minuten zeit!");
	end

	when devil_stone4_fail1.server_timer begin
	    if d.select(get_server_timer_arg()) then
		d.notice("Verbleibende Zeit: 10 Minuten")
		server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
	    end
	end

	when devil_stone4_fail2.server_timer begin
	    if d.select(get_server_timer_arg()) then
		d.notice("Verbleibende Zeit: 5 Minuten")
		server_timer('devil_stone4_fail', 5*60, get_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.notice("Ihr werdet nun nach draußen teleportiert")
		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 i = 1, 6 do
			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" .. i, 1)
				d.notice("Der falsche Metinstein ist verschwunden..");
			    end
			end
		    end
		else
		    --d.clear_regen()
		    --d.regen_file("data/dungeon/deviltower5_regen.txt")
		    server_timer("devil_stone4_end", 5, get_server_timer_arg())
		    d.notice("Ihr habt den richtigen Metinstein zerstört.");
		    d.notice("Ihr werdet nun in die nächste Etage teleportiert")
		    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', 1, get_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("Du bist nun in der 5. Ebene")
		d.notice("Öffne alle Alten Siegel um in die nächste Ebene zu gelangen.")
		d.notice("Du hast 20 Minuten Zeit um alle Siegel zu öffnen.")
		d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
		server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
		clear_server_timer('devil_stone4_update', get_server_timer_arg())

		-- bla bla
		d.set_regen_file("data/dungeon/deviltower5_regen.txt")

		-- bla bla 2
		d.spawn_mob(20073, 421, 452)
		d.spawn_mob(20073, 380, 460)
		d.spawn_mob(20073, 428, 414)
		d.spawn_mob(20073, 398, 392)
		d.spawn_mob(20073, 359, 426)
	    end
	end
	when devil_stone5_fail1.server_timer begin
	    if d.select(get_server_timer_arg()) then
		d.notice("Verbleibende Zeit: 15 Minuten")
		server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
	    end
	end

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

	when devil_stone5_fail3.server_timer begin
	    if d.select(get_server_timer_arg()) then
		d.notice("Verbleibende Zeit: 5 Minuten")
		server_timer('devil_stone5_fail', 5*60, get_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.notice("Ihr werdet nun nach draußen teleportiert")
		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 n == KILL_COUNT_FOR_DROP_KEY then
		-- bla bla 3
		game.drop_item(50084, 1)
		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("Ihr habt alle alten Siegel geöffnet. Ihr werdet nun")
		d.notice("in die 6. Ebene teleportiert.")
		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("Es verbleibt eine Anzahl von "..d.getf("stone_count").." Siegeln")
	    end
	end

	when devil_stone6.kill begin
	    -- bla bla 4
	    -- bla bla 5
	    --d.jump_all(special.devil_tower[6][1], special.devil_tower[6][2])
	    d.kill_all()
	   -- d.set_warp_at_eliminate(3*60, 65, 5376+532, 512+596+4)
	    d.check_eliminated()
	    local reward_alchemist = {20074, 20075, 20076}
	    d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
	    d.setqf("can_refine", 1)
	end

	--------------------------------------
	-- bla bla 6
	--------------------------------------

	when 20074.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
		say(""..mob_name(20074).."")
		say("Ihr möchtet in die 7.Etage?")
		say("Ihr haben Glück! Heute erlaube ich es ihnen vielleicht!")
		say("Aber voher muss ich euch noch prüfen..")
		say("Mal sehen..")
		wait()
		if pc.level >=75 then
			say("Ich erlaube euch weiterzugehen!")
			say("Viel Glück und passt auf euch auf da oben!")
			timer("devil_jump_7", 6)
			return
		end
		say("Betreten der 7.Etage nicht erlaubt!")
		say("Ihr seid nicht qualifiziert genug!")
		say("Erreicht Level 75 oder höher,")
		say("damit ihr eure Fertigkeiten steigern könnt")
		say("und kommt dann wieder!")
		wait()
		pc.warp(590500, 110500)
		return
    end
	when 20075.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
		say(""..mob_name(20075).."")
		say("Ihr möchtet in die 7.Etage?")
		say("Ihr haben Glück! Heute erlaube ich es ihnen vielleicht!")
		say("Aber voher muss ich euch noch prüfen..")
		say("Mal sehen..")
		wait()
		if pc.level >=75 then
			say("Ich erlaube euch weiterzugehen!")
			say("Viel Glück und passt auf euch auf da oben!")
			timer("devil_jump_7", 6)
			return
		end
		say("Betreten der 7.Etage nicht erlaubt!")
		say("Ihr seid nicht qualifiziert genug!")
		say("Erreicht Level 75 oder höher,")
		say("damit ihr eure Fertigkeiten steigern könnt")
		say("und kommt dann wieder!")
		wait()
		pc.warp(590500, 110500)
		return
    end
	when 20076.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
		say(""..mob_name(20076).."")
		say("Ihr möchtet in die 7.Etage?")
		say("Ihr haben Glück! Heute erlaube ich es ihnen vielleicht!")
		say("Aber voher muss ich euch noch prüfen..")
		say("Mal sehen..")
		wait()
		if pc.level >=75 then
			say("Ich erlaube euch weiterzugehen!")
			say("Viel Glück und passt auf euch auf da oben!")
			timer("devil_jump_7", 6)
			return
		end
		say("Betreten der 7.Etage nicht erlaubt!")
		say("Ihr seid nicht qualifiziert genug!")
		say("Erreicht LvL 75 oder höher,")
		say("damit ihr eure Fertigkeiten steigern könnt")
		say("und kommt dann wieder!")
		wait()
		pc.warp(590500, 110500)
		return
    end

   when devil_jump_7.timer begin
		d.clear_regen()

		d.spawn_mob(8018, 639, 658)
		d.spawn_mob(8018, 611, 637)
		d.spawn_mob(8018, 596, 674)
		d.spawn_mob(8018, 629, 670)

		d.setf("level", 7)

		d.jump_all(2048+590, 6656+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(30300, 1)
	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
			-- bla bla 7
			game.drop_item(30302, 1)
			d.clear_regen()
		else
			-- bla bla 8
			game.drop_item(30301, 1)
			
		end
	end

	when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
		-- bla bla 9
		say("Die Karte wird euch alle in die nächste Ebene")
		say("des Dämonenturms bringen.")
		pc.remove_item("30302", 1)
	    timer("devil_jump_8", 6)
		d.clear_regen()
	end
						
	--------------------------------------------
	-- bla bla 10
	--------------------------------------------
	when devil_jump_8.timer begin
		d.setf("level", 8)
		d.jump_all(2048+590, 6656+403)
		d.set_regen_file("data/dungeon/deviltower8_regen.txt")
		d.spawn_mob(20366, 640, 460)
		local _count= pc.count_item(30302)-- bla bla 11
		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(1, 5)
		if pct1 == 1 then
			local pct2 = number(1, 10)
			if pct2 == 1 then
				-- bla bla 12
				game.drop_item(30304, 1)
			else
				-- bla bla 13
				game.drop_item(30303, 1)
			end
		else
			return
		end
	end

	when 20366.take with item.vnum == 30304 begin
		-- bla bla 14
		npc.purge()
		item.remove()
		timer("devil_jump_9", 6)
	end

	---------------------------------------------
	-- bla bla 15
	---------------------------------------------
	when devil_jump_9.timer begin
		d.setf("level", 9)
		d.jump_all(2048+590, 6656+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", 60)
	end

	when devil_end_jump.timer begin
	    d.exit_all()
	end
end
end
Versuch es mal so, so ist es bei mir:
02/13/2013 18:41 new-kingmt2#7614
Quote:
Originally Posted by doublesnake View Post
Hey Liebe Leute bitte helft mir Alles funktioniert nur beim Ausziehen blieben alle Bonis.

PHP Code:
quest halbmondring begin 
    state start begin 
        when 71135.
use with pc.getqf("halbmondring") == 0 begin 
            chat
("Du erhälst solange du den Ring trägst:")    
            
chat("+20% Chance auf Kritischen Treffer")   
            
chat("+2000 TP")   
            
chat("+30% Stärker gegen Monster"
            
affect.add_collect(apply.CRITICAL_PCT2060*60*24*365*60
            
affect.add_collect(apply.MAX_HP200060*60*24*365*60
            
affect.add_collect(apply.ATT_BONUS_TO_MONSTER3060*60*24*365*60
            
pc.setqf("halbmondring",1
        
end
        when 71135.
use with pc.getqf("halbmondring") == 0 begin 
            chat
("Der Ring wirkt nun nicht mehr!"
            
affect.remove_collect(apply.CRITICAL_PCT2060*60*24*365*60
            
affect.remove_collect(apply.MAX_HP200060*60*24*365*60
            
affect.remove_collect(apply.ATT_BONUS_TO_MONSTER3060*60*24*365*60)             
            
pc.setqf("halbmondring",0
        
end  
    end 
end 
Du hast es so eingestellt dass beide male pc.getqf("halbmondring") auf 0 sein muss.

Versuchs mal so:

PHP Code:
quest halbmondring begin 
    state start begin 
        when 71135.
use with pc.getqf("halbmondring") == 0 begin 
            chat
("Du erhälst solange du den Ring trägst:")    
            
chat("+20% Chance auf Kritischen Treffer")   
            
chat("+2000 TP")   
            
chat("+30% Stärker gegen Monster"
            
affect.add_collect(apply.CRITICAL_PCT2060*60*24*365*60
            
affect.add_collect(apply.MAX_HP200060*60*24*365*60
            
affect.add_collect(apply.ATT_BONUS_TO_MONSTER3060*60*24*365*60
            
pc.setqf("halbmondring",1
        
end
        when 71135.
use with pc.getqf("halbmondring") == 1 begin 
            chat
("Der Ring wirkt nun nicht mehr!"
            
affect.remove_collect(apply.CRITICAL_PCT2060*60*24*365*60
            
affect.remove_collect(apply.MAX_HP200060*60*24*365*60
            
affect.remove_collect(apply.ATT_BONUS_TO_MONSTER3060*60*24*365*60)             
            
pc.setqf("halbmondring",0
        
end  
    end 
end 
02/13/2013 21:00 zunmt2#7615
PHP Code:
quest sala_boronesa begin
    state start begin
        when 22011.kill 
and pc.get_map_index() >= 1357900 and pc.get_map_index() < 9753100 and pc.countitem(30327) < 1 begin
            local rnd 
number(1,100)
            if 
rnd == 6 then
                game
.drop_item_with_ownership(303271)
            
end
        end
    end
end 
What is the problem? Any one know?
02/13/2013 22:50 new-kingmt2#7616
Quote:
Originally Posted by zunmt2 View Post
PHP Code:
quest sala_boronesa begin
    state start begin
        when 22011.kill 
and pc.get_map_index() >= 1357900 and pc.get_map_index() < 9753100 and pc.countitem(30327) < 1 begin
            local rnd 
number(1,100)
            if 
rnd == 6 then
                game
.drop_item_with_ownership(303271)
            
end
        end
    end
end 
What is the problem? Any one know?
I think this will help you: pc.count_item(itemid)
02/13/2013 23:31 zunmt2#7617
[Only registered and activated users can see links. Click Here To Register...]

PHP Code:
quest sala_boronesa begin 
    state start begin 
        when 22011.kill 
and pc.get_map_index() >= 1357900 and pc.get_map_index() < 9753100 and pc.countitem(30327) < 1 begin 
            local rnd 
number(1,100
            if 
rnd == 6 then 
                game
.drop_item_with_ownership(303271
            
end 
        end 
    end 
end 
02/14/2013 18:35 .Delta#7618
schreib statt dem and ein with hin.
02/14/2013 20:10 Analyze™#7619
Quote:
Originally Posted by zunmt2 View Post
[Only registered and activated users can see links. Click Here To Register...]

PHP Code:
quest sala_boronesa begin 
    state start begin 
        when 22011.kill 
and pc.get_map_index() >= 1357900 and pc.get_map_index() < 9753100 and pc.countitem(30327) < 1 begin 
            local rnd 
number(1,100
            if 
rnd == 6 then 
                game
.drop_item_with_ownership(303271
            
end 
        end 
    end 
end 
PHP Code:
quest sala_boronesa begin 
    state start begin 
        when 22011.kill with pc
.get_map_index() >= 1357900 or pc.get_map_index() < 9753100 and pc.countitem(30327) < 1 begin 
            local rnd 
number(1,100
            if 
rnd == 6 then 
                game
.drop_item_with_ownership(303271
            
end 
        end 
    end 
end 
have fun :)
02/15/2013 15:46 [SA]Con#7620
Weis einer was an der Funktion falsch ist?

PHP Code:
local actual_pw mysql_query("SELECT * FROM account.account WHERE account.password")
                
local actual_pw input()
                if 
actual_pw == TRUE then
                    say_title
("Passwort ändern")
                    
say("ACHTUNG: Dein neues Passwort muss mindestens")
                    
say("8 - Zeichen lang sein!")
                    
say("ACHTUNG: Verwende nur: 0-9 & A-Z")
                    
new_password input()
                    
account.set_pw(""..new_password.."")
                    
say_title("Passwort ändern")
                    
say("Das Passwort wurde erfolgreich")
                    
say("auf: "..new_password.." geändert.")
                    
say("Bitte logge dich erneut ein.")
                else
                    
say("Falsch"
Ich meine die mysql_query Funtkion, wer die Quest versteht, weis was mein Problem ist. :)

Danke schon mal :)