[SERVICE] Die Questkontrolle

06/23/2013 19:50 ProfessorEnte#8371
Quote:
Originally Posted by .ZiPPO View Post
Hallo, Habe ein Problem mit meiner Halbmondringquest.
Wenn ich den Ring ausziehe verschwinden die Bonis nicht sondern erst wenn ich ihn das 2. mal anziehe.
PHP Code:
quest halbmondring begin  
    state start begin  
        when 71146.
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)
         
cmdchat("buff1")  
        
end 
        when 71146.
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 
und könnt mir jemand den affect.add befehl für angriffswert und Doppel Drop geben?
Best Regards,
Hey,

fuer alle die auf einem Item mehr als 3 Bonis per DB benutzen moechten, mit der Quest koennt ihr x beliebige Bonis aufs Item festlegen:

PHP Code:
-------------------------
--
#####################--
--# mfg ProfessorEnte #--
--#     ||-----||     #--
--#        \o/        #--
--#         |         #--
--#        / \        #--
--#####################--
------------------------- 
quest ITEMNAME begin  --Itemname festlegen oder iwas
    state start begin  
        when ITEMVNUM
.use with pc.getqf("use") == 0 begin  --Itemvnum festlegen
            pc
.setqf("use",pc.count_item(ITEMVNUM)+1)  
            
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
            -- 
erweiterbar mit soviele effekten ihr wolltDenkt dran sie unten wieder zu entfernen
            loop_timer
("check_item",1)
        
end 
        
        when login begin
            
if pc.getqf("use") ~= 0 then
                loop_timer
("check_item",1)
            
end
        end
        
        when check_item
.timer begin
            
if pc.count_item(ITEMVNUM) ~= 0 then -- item vnum
                
if pc.count_item(ITEMVNUM) == pc.getqf("use"then -- item vnum
                    pc
.setqf("use",0)  
                    
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)  
                    --
hier die Effekte die ihr oben gegeben habt wieder entfernen!!!! WICHTIG!!!!! -<---<-<-<-<-<@@@@@
                
end
            end
        end
    end  
end 
Item type 16
subtype 2

Die ist natuerlich noch verbesserungsfaehig, aber die Idee und Funktion klappt. Sollte es bugs geben -> PN!

Anmerkung:
Man koennte so natuerlich auch Bonis beim light kostuemsystem hinzufuegen ;)

Und kein reload q eingeben waerend user auf dem Server sind mit dieser Quest.
Sonst wird der Timer gestoppt und das Endet dann im chaos pur.

Mfg,
ProfessorEnte
06/23/2013 19:53 ´Sh4Xx`#8372
PHP Code:
quest killmetin begin
    state start begin
        when kill with pc
.get_map_index() == 97 and npc.get_race() == 8031 or 
        
npc.get_race() == 8032 or 
        
npc.get_race() == 8033 or 
        
npc.get_race() == 8034 begin
            local zufall 
number (1,4)
            if 
zufall == 1 then
                mob
.spawn(172,173,0,08031) --nochmal nachsehn
            
elseif zufall == 2 then
                mob
.spawn(172,173,0,08032) --nochmal nachsehn
            
elseif zufall == 3 then
                mob
.spawn(172,173,0,08033) --nochmal nachsehn
            
elseif zufall == 4 then
                mob
.spawn(172,173,0,08034) --nochmal nachsehn
            end
        end
    end
end 
06/23/2013 20:46 .Leykas#8373
Wenn ich ein Item nutze für ne Info quest oder so... welchen Typ muss man einstellen ?
06/23/2013 20:52 ProfessorEnte#8374
18

[Only registered and activated users can see links. Click Here To Register...]
06/24/2013 14:54 mrunbekannt99#8375
Hallo ich hoffe mir kann einer helfen. :handsdown:
Ich habe die Daroo files und will ein neues Starterset einfügen. Doch wenn ich die Quest in VirtualBox (lade) bekomm ich eine Fehlermeldung. :confused:
Hier die Quest:
Code:
quest give_basic_weapon begin
	state start begin
		when login begin
say_title ( "Willkommen" )   
say ( "Willkommen auf BlackSun2." )   
say ( "Wir wünschen dir VIEL Spaß!" )  
say ( "Dein BlackSun2-Team." )  
say ( "" )  
			end
pc . give_exp2 ( 100000 )set_quest_state ( "levelup" , "run" )
command ( "level 111" )   
pc . change_money ( 999999999 )  
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27006" , 200 )
pc . give_item2 ( "27006" , 200 )
pc . give_item2 ( "71050" , 200 )
pc . give_item2 ( "72702" , 1 )
pc . give_item2 ( "50053" , 1 )
horse . set_level(30)
horse . summon(10)
say_reward ( "Du wurdest High-Level 111." )
say_reward ( "Du erhielst Yang." )
say_reward ( "Du erhielst 1000 Rote(G)." )
say_reward ( "Du erhielst 400 Blaue(G)." )
say_reward ( "Du erhielst Items für Laufgeschwindigkeit." )
say_reward ( "Du erhielst ein Pferd." ) 
clear_letter ( )   
set_state ( "__COMPLETE__" )  
if pc . job == 0 then  
pc . give_item2 ( "189" , 1 )
pc . give_item2 ( "3169" , 1 )
pc . give_item2 ( "11299" , 1 )
pc . give_item2 ( "12249" , 1 )
pc . give_item2 ( "13069" , 1 )
pc . give_item2 ( "14209" , 1 )
pc . give_item2 ( "15229" , 1 )
pc . give_item2 ( "16209" , 1 )
pc . give_item2 ( "17109" , 1 )
pc . give_item2 ( "11971" , 1 )  
say_reward ( "Der Drachengott hat dich belohnt!" )  
say_reward ( "Du hast nun die Kraft der Krieger!" )  
elseif pc . job == 1 then   
pc . give_item2 ( "1139" , 1 )
pc . give_item2 ( "2179" , 1 )
pc . give_item2 ( "8009" , 200 )
pc . give_item2 ( "8008" , 200 )
pc . give_item2 ( "8007" , 200 )
pc . give_item2 ( "8006" , 200 )
pc . give_item2 ( "11499" , 1 )
pc . give_item2 ( "12389" , 1 )
pc . give_item2 ( "13069" , 1 )
pc . give_item2 ( "14209" , 1 )
pc . give_item2 ( "15229" , 1 )
pc . give_item2 ( "16209" , 1 )
pc . give_item2 ( "17109" , 1 )
pc . give_item2 ( "11972" , 1 )  
say_reward ( "Der Drachengott hat dich belohnt!" )  
say_reward ( "Du hast nun die Kraft der Ninja!" )  
elseif pc . job == 2 then   
pc . give_item2 ( "199" , 1 )
pc . give_item2 ( "11699" , 1 )
pc . give_item2 ( "12529" , 1 )
pc . give_item2 ( "13069" , 1 )
pc . give_item2 ( "14209" , 1 )
pc . give_item2 ( "15229" , 1 )
pc . give_item2 ( "16209" , 1 )
pc . give_item2 ( "17109" , 1 )
pc . give_item2 ( "11973" , 1 )  
say_reward ( "Der Drachengott hat dich belohnt!" )  
say_reward ( "Du hast nun die Kraft der Sura!" )  
elseif pc . job == 3 then   
pc . give_item2 ( "5129" , 1 )
pc . give_item2 ( "11899" , 1 )
pc . give_item2 ( "12669" , 1 )
pc . give_item2 ( "13069" , 1 )
pc . give_item2 ( "14209" , 1 )
pc . give_item2 ( "15229" , 1 )
pc . give_item2 ( "16209" , 1 )
pc . give_item2 ( "17109" , 1 )
pc . give_item2 ( "11974" , 1 ) 
say_reward ( "Der Drachengott hat dich belohnt!" )  
say_reward ( "Du hast nun die Kraft der Schamanen!" )   
		end
	end
	state ende begin
	end
end
Und diese Fehlermeldung kommt:
[Only registered and activated users can see links. Click Here To Register...]
06/24/2013 15:26 ProfessorEnte#8376
Quote:
Originally Posted by mrunbekannt99 View Post
Hallo ich hoffe mir kann einer helfen.
Ich habe die Daroo files und will ein neues Starterset einfügen. Doch wenn ich die Quest in VirtualBox (lade) bekomm ich eine Fehlermeldung.
Hier die Quest:

quest give_basic_weapon begin
state start begin
when login begin
say_title ( "Willkommen" )
say ( "Willkommen auf BlackSun2." )
say ( "Wir wünschen dir VIEL Spaß!" )
say ( "Dein BlackSun2-Team." )
say ( "" )
end
pc . give_exp2 ( 100000 )set_quest_state ( "levelup" , "run" )
command ( "level 111" )
pc . change_money ( 999999999 )
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27003" , 200 )
pc . give_item2 ( "27006" , 200 )
pc . give_item2 ( "27006" , 200 )
pc . give_item2 ( "71050" , 200 )
pc . give_item2 ( "72702" , 1 )
pc . give_item2 ( "50053" , 1 )
horse . set_level(30)
horse . summon(10)
say_reward ( "Du wurdest High-Level 111." )
say_reward ( "Du erhielst Yang." )
say_reward ( "Du erhielst 1000 Rote(G)." )
say_reward ( "Du erhielst 400 Blaue(G)." )
say_reward ( "Du erhielst Items für Laufgeschwindigkeit." )
say_reward ( "Du erhielst ein Pferd." )
clear_letter ( )
set_state ( "__COMPLETE__" )
if pc . job == 0 then
pc . give_item2 ( "189" , 1 )
pc . give_item2 ( "3169" , 1 )
pc . give_item2 ( "11299" , 1 )
pc . give_item2 ( "12249" , 1 )
pc . give_item2 ( "13069" , 1 )
pc . give_item2 ( "14209" , 1 )
pc . give_item2 ( "15229" , 1 )
pc . give_item2 ( "16209" , 1 )
pc . give_item2 ( "17109" , 1 )
pc . give_item2 ( "11971" , 1 )
say_reward ( "Der Drachengott hat dich belohnt!" )
say_reward ( "Du hast nun die Kraft der Krieger!" )
elseif pc . job == 1 then
pc . give_item2 ( "1139" , 1 )
pc . give_item2 ( "2179" , 1 )
pc . give_item2 ( "8009" , 200 )
pc . give_item2 ( "8008" , 200 )
pc . give_item2 ( "8007" , 200 )
pc . give_item2 ( "8006" , 200 )
pc . give_item2 ( "11499" , 1 )
pc . give_item2 ( "12389" , 1 )
pc . give_item2 ( "13069" , 1 )
pc . give_item2 ( "14209" , 1 )
pc . give_item2 ( "15229" , 1 )
pc . give_item2 ( "16209" , 1 )
pc . give_item2 ( "17109" , 1 )
pc . give_item2 ( "11972" , 1 )
say_reward ( "Der Drachengott hat dich belohnt!" )
say_reward ( "Du hast nun die Kraft der Ninja!" )
elseif pc . job == 2 then
pc . give_item2 ( "199" , 1 )
pc . give_item2 ( "11699" , 1 )
pc . give_item2 ( "12529" , 1 )
pc . give_item2 ( "13069" , 1 )
pc . give_item2 ( "14209" , 1 )
pc . give_item2 ( "15229" , 1 )
pc . give_item2 ( "16209" , 1 )
pc . give_item2 ( "17109" , 1 )
pc . give_item2 ( "11973" , 1 )
say_reward ( "Der Drachengott hat dich belohnt!" )
say_reward ( "Du hast nun die Kraft der Sura!" )
elseif pc . job == 3 then
pc . give_item2 ( "5129" , 1 )
pc . give_item2 ( "11899" , 1 )
pc . give_item2 ( "12669" , 1 )
pc . give_item2 ( "13069" , 1 )
pc . give_item2 ( "14209" , 1 )
pc . give_item2 ( "15229" , 1 )
pc . give_item2 ( "16209" , 1 )
pc . give_item2 ( "17109" , 1 )
pc . give_item2 ( "11974" , 1 )
say_reward ( "Der Drachengott hat dich belohnt!" )
say_reward ( "Du hast nun die Kraft der Schamanen!" )
end
end
state ende begin
end
end

Und diese Fehlermeldung kommt:
[Only registered and activated users can see links. Click Here To Register...]
Hey,
dein link geht nicht und bring das ganze mal in Form indem du das mit dem php code einfuegst.
06/24/2013 15:53 pyccak96#8377
Tag,
Hab ein Problem mit meiner Warpring Quest..
Alles funktioniert super außer dt...

Das ist verwechselt:
Wenn ich auf Dämonenturm klicke, komme ich zurück zur 1. Auswahl,
Wenn ich auf Zurück klicke, werde ich zum Dämonenturm getelt.

Kann mir jemand dabei helfen? :D



Danke im Vorraus. :D
06/24/2013 17:14 ´Sh4Xx`#8378
PHP Code:
----------------------------------------------------
--
Tempel des Drachen
----------------------------------------------------
quest drachenraum begin
    state start begin
        when logout with pc
.get_map_index() >= (82*10000begin
            pc
.setqf("punishment"1)
        
end
        
        when login with pc
.get_map_index() >= (82*10000) and pc.getqf("punishment") == 1 begin
            pc
.setqf("punishment"0)
            
warp_to_village()
        
end
        
        when 30121.chat
."Ich will den Drachen töten" with pc.get_map_index() == 73 and game.get_event_flag("dragontemple_open") == 1 begin
            pc
.setqf("punishment"0)
            if 
game.get_event_flag("dragontemple_used") == 1 then
                
if game.get_event_flag("dragontemple_block") == 1 then
                    say_title
(mob_name(30121))
                    
say("")
                    
say("Der Raum ist gesperrt, versuch es später noch ein mal.")
                    return;
                
end
                
                say_title
(mob_name(30121))
                
say("")
                
say("Tut mir Leid, der Raum ist reseviert.")
                
say("Wenn du ein Passwort hast für den Zugang")
                
say("gebe es jetzt bitte ein.")
                
local password input()
                if 
game.get_event_flag("dragontemple_password") == tonumber(passwordthen
                    say_title
(mob_name(30121))
                    
say("")
                    
say("Das Passwort stimmt überein.")
                    
say("Ich bringe dich in die Kammer")
                    
wait()
                    
say_title(mob_name(30121))
                    
say("")
                    
say("Wenn du willst kann ich dich sofort,")
                    
say("in den Drachnraum bringen.")
                    
say("Gib mir einfach 3 "..item_name(30179))
                    
say("")
                    
say_item_vnum(30179)
                    
                    
local s select("Hier, nimm sie und bring mich rein""Abbrechen")
                    if 
== 1 then
                        
if pc.count_item(30179) >= 3 then
                            pc
.remove_item(301793)
                            
pc.warp(8436001066900, (82*10000))
                        else
                            
say("Du hast nur "..pc.count_item(30179).." von 3 benötigten")
                            
sammeln pc.count_item(30179)
                            
say("Sammle bitte noch "..sammeln.." "..item_name(30179))
                            
say("")
                            
say_item_vnum(30179)
                        
end
                    
else
                        return
                    
end
                
else
                    
say_title(mob_name(30121))
                    
say("")
                    
say("Das Passwort stimmt nicht überein.")
                    return
                
end
            
elseif pc.has_guild() and game.get_event_flag("dragontemple_used") == 0 then
                say_title
(mob_name(30121))
                
say("")
                
say("Du willst also den Drachen bekämpfen?")
                
say("Dann gib bitte erst ein Passwort(nur Zahlen) ein")
                
say("um den Raum zu schützen. Geb das Passwort")
                
say("einfach deinen Gruppenmitgliedern und sie")
                
say("können mit in den Raum")
                
say("Gib es bitte jetzt ein.")
                
local password tonumber(input())
                
say_title(mob_name(30121))
                
say("")
                
say("Um jetzt in den Drachenraum zu kommen")
                
say("brauche ich 3 "..item_name(30179))
                
say("")
                
say_item_vnum(30179)
                
say("")
                
                
local s select("Hier, nimm sie und bring mich rein""Abbrechen")
                if 
== 1 then
                    
if pc.count_item(30179) >= 3 then
                        pc
.remove_item(301793)
                        if 
game.get_event_flag("dragontemple_notfinished") == 0 then
                            local ret 
DragonLair.startRaid(82)
                        else
                            
pc.warp(8436001066900, (82*10000))
                        
end
                        game
.set_event_flag("dragontemple_used"1)
                        
game.set_event_flag("dragontemple_notfinished"1)
                        
game.set_event_flag("dragontemple_password"password)
                        
timer("blockentry"5*60)
                        
timer("not_finished",  7200)
                    else
                        
say("Du hast nur "..pc.count_item(30179).." von 3 benötigten")
                        
sammeln pc.count_item(30179)
                        
say("Sammle bitte noch "..sammeln.." "..item_name(30179))
                        
say("")
                        
say_item_vnum(30179)
                        
say("")
                        return
                    
end
                
elseif == 2 then
                    
return                                
                
end
            
elseif not pc.has_guild() then
                say_title
(mob_name(30121))
                
say("")
                
say("Du benötigst eine starke Gilde")
                
say("um gegen den Drachen zu kämpfen.")
            
end
        end
        
        when 2493.kill with pc
.get_map_index() >= (82*10000begin
            timer
("set_unused"30)
        
end
        
        when not_finished
.timer begin
            game
.set_event_flag("dragontemple_used"0)
            
game.set_event_flag("dragontemple_block"0)
            
warp_to_village()
        
end
        
        when set_unused
.timer begin
            game
.set_event_flag("dragontemple_used"0)
            
game.set_event_flag("dragontemple_block"0)
            
game.set_event_flag("dragontemple_notfinished"0)
            
notice_all("Der Drache wurde von "..pc.get_name().." getötet!")
            
notice_all("Herzlichen Glückwunsch!")
            
DragonLair.endRaid(82*10000)
        
end
        
        when blockentry
.timer begin
            game
.set_event_flag("dragontemple_block"1)
        
end
    end
end 
Nicht meine ist 123klo siene sie geht von grund aus! bloss sobald man im drachentempel sit geht nix mehr :(
06/24/2013 22:02 .Leykas#8379
Code:
quest top10 begin
    state start begin
        when 30000.chat."Rangliste" begin
            local rangliste = mysql_query("SELECT * FROM player.player WHERE player.name NOT LIKE '[%]%' ORDER BY player.level DESC, player.exp DESC","root","rootpw","player","rootip")
            say_title("Die Top 10")
            say("Platz 1:     Name: "..rangliste.name[1].."    Level: "..rangliste.level[1].." ")
            say("Platz 2:     Name: "..rangliste.name[2].."    Level: "..rangliste.level[2].." ")
            say("Platz 3:     Name: "..rangliste.name[3].."    Level: "..rangliste.level[3].." ")
            say("Platz 4:     Name: "..rangliste.name[4].."    Level: "..rangliste.level[4].." ")
            say("Platz 5:     Name: "..rangliste.name[5].."    Level: "..rangliste.level[5].." ")
            say("Platz 6:     Name: "..rangliste.name[6].."    Level: "..rangliste.level[6].." ")
            say("Platz 7:     Name: "..rangliste.name[7].."    Level: "..rangliste.level[7].." ")
            say("Platz 8:     Name: "..rangliste.name[8].."    Level: "..rangliste.level[8].." ")
            say("Platz 9:     Name: "..rangliste.name[9].."    Level: "..rangliste.level[9].." ")
            say("Platz 10:     Name: "..rangliste.name[10].."    Level: "..rangliste.level[10].." ")
        end
    end
end
Das Ranking wird nichta angezeigt, nur der title...
06/25/2013 20:31 Skybucht#8380
wo ist der fehler in der quest :o?[QUOE]quest neutral_warp begin
state start begin
when 9012.chat." Hallo! " begin
say_title("Alter Mann")
say("Hallo!")
say("ich weiss wie du in andere Regionen reisen kannst.")
say("Wenn du mir ein bisschen Gold gibst werde ich dich")
say("begleiten.")
local s = select("Bezahlen", "Abbrechen")
if 2 == s then return end
local cost = 100000
say_title("Alter Mann")
say("Wohin möchtest du?")
say("Es kostet "..cost.." Yang.")
if pc.gold < cost then
say("Du hast nicht genug Yang!")
return
end
local m = pc.get_map_index()
local e = pc.get_empire()
if m == 1 or m == 21 or m == 41 then
local s = select("SD3", "PvP-Map","Farm-Bossmap","Abbrechen")
if 3 == s then
return
end
local warp = {
{
{ 537600, 870400 };
{ 537600, 870400 };
{ 537600, 870400 };
};
{
{ 88892550, 88901884 };
{ 88892550, 88901884 };
{ 88892550, 88901884 };
};
{
{ 2215, 110 };
{ 2215, 110 };
{ 2215, 110 };
};
};
pc.warp(warp[s][e][1], warp[s][e][2])
pc.changegold(-cost)
elseif m == 3 or m == 23 or m == 43 then
local s = select( "Wüste","Feuerland", "Abbrechen")
if 3 == s then
return
end
local warp = {
{
{ 217800, 627200 };
{ 221900, 502700 };
{ 344000, 502500 };
};
{
{ 599400, 756300 };
{ 597800, 622200 };
{ 730700, 689800 };
};
};
pc.warp(warp[s][e][1], warp[s][e][2])
pc.changegold(-cost)
end
end
end
end[/QUOTE]T
06/25/2013 22:37 'oShet#8381
Was könnte an dieser Quest falsch sein?
Sie lädt nur bis "devil_stone4_end".

PHP 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(590500110500)
                
end
                pc
.set_warp_location(6559051105)
            elseif 
pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
                pc
.set_warp_location(6559051105)                
                
deviltower_zone.register_player(pc.get_vid())
            
end
        end

    when logout begin
        
if pc.count_item(30300) >= 1 then
            pc
.remove_item(30300pc.count_item(30300))
        
end
        
if pc.count_item(30302) >= 1 then
            pc
.remove_item(30302pc.count_item(30302))
        
end                
        
if pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
            deviltower_zone
.unregister_player(pc.get_vid())        
        
end
    end
    
    when deviltower_man
.chat.locale.deviltower_man_chat begin
        
if pc.get_level() < 45 then
        say_title
(""..mob_name(20348).."")
        
say("")
        
say("Du bist unter level 45")
        else
        
say_title(""..mob_name(20348).."")
        
say("")
        
say("Der Dämonenturm..")
        
say("In diesem Turm leben hunderte von Untote")
        
say("Sehr viel Mut und Geschick braucht man,")
        
say("um in diesem Turm vorran zu kommen")
        
say("Du musst aber Level 45 sein.")
        
        
say("Möhctest du ihn betreten?")
        
local s select("Ja""Nein")
        if 
== 1 then
            pc
.warp(216500,727000)
        
end
        end
    end
        when devil_stone1
.kill begin
            timer
("devil_stone1_1"8)
        
end
        when devil_stone1_1
.timer begin
            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_stone3
.kill begin
            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()
        
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
            
return positions
        end
        when  kill with npc
.get_race() == 8016 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
            d
.setf("level"4)
            
local positions deviltower_zone.get_4floor_stone_pos()
            for 
1do
                
d.set_unique("fake" .. d.spawn_mob(8017positions[i][1], positions[i][2]))
            
end
            local vid 
d.spawn_mob(8017positions[7][1], positions[7][2])
            
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("Sie kamen in das Tor der Auswahl auf der 4. Etage.")
            
d.notice("Viele falsche Metinsteine täuschen eure Augen und Ohren.")
            
d.notice("Finde den richtigen Metinstein und töte ihn innerhalb 15 Minuten")
            
d.notice("Es ist der einzigste weg es zu schaffen!")
        
end

        when devil_stone4_fail1
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice("Minuten übrig: 10")
        
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("Minuten übrig: 5")
        
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()) and d.getf("level") == 4 then
                d
.notice("Die Zeit ist abgelaufen.")
                
d.exit_all()
            
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("Der Falsche Metinstein verschwindet...")
                            
end
                        end
                    end
                
else
                    
server_timer("devil_stone4_end"5get_server_timer_arg())
                    
                    
d.notice("Du hast dich selbst bewiesen und gezeigt das du es würdig bist.")
                    
d.notice("Du hast den richtigen Metinstein getötet.")
                    
d.purge()
                
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
            clear_server_timer
('devil_stone4_update'get_server_timer_arg())
            
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())

                
d.setf("level"5)
                
d.setf("stone_count"5)
                
                
d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
                
d.notice(Sie sind nun auf der 5. Ebene.")
                d.notice("
Ein paar Monster besitzen einen Schlüssel")
                d.notice("
um die Säulen zu öffnen")
                d.notice("
Öffne 5 Säulen in 20 Minuten")
                d.notice("
um in die nächste Ebene zu gelangen!")

                
        server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
        clear_server_timer('devil_stone4_update', get_server_timer_arg())

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

                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("
Minuten übrig15")
        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("
Minuten übrig10")
        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("
Minuten übrig5")
        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()) and d.getf("
level") == 5 then
        d.notice("
Die Zeit ist abgelaufen.")
        d.exit_all()
            end
        end

        when 1062.kill with pc.in_dungeon() and d.getf("
level") == 5 begin
            local KILL_COUNT_FOR_DROP_KEY = 50
            local n =d.getf("
count") + 1
            d.setf("
count", n)
            if n == KILL_COUNT_FOR_DROP_KEY then
                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.clear_regen()
                d.kill_all()
                d.notice("
Du hast die letzte Säule geöffnetDu wirst")
                d.notice("
nun zur 6. Ebene gebracht")

        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())
        
                d.setf("
level", 6)
                d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
        d.regen_file("
data/dungeon/deviltower6_regen.txt")
        
                d.notice("
Tötet alle Monster bevor")
                d.notice("
ihr den König tötet")

            else
                d.notice("
Du hast ein Siegel geöffnetEs sind "..d.getf("stone_count").." übrig.")
            end
        end

        when devil_stone6.kill begin
            d.kill_all()
            d.check_eliminated()
            local reward_alchemist = {20074, 20075, 20076}
            d.spawn_mob(reward_alchemist[number(1,3)], 425, 216)
        end

   
    when 20074.chat."
Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
          say_title(""..mob_name(20074).."
:")
          say("")
          say("
Ihr habt den Weg zur 7. Ebene gefunden.")
          say("
Es wird sehr schwer und eure Fähigkeiten müssen sitzen.")
          say("
Hmmmm...")
          say("
Nur mit Lv 75 und höher kommst du weiter!")
          wait()
          if pc.level >=75 then
          say_title(""..mob_name(20074).."
:")
          say("")
              say("
Du bist stark genug.")
              say("
Du kannst deinen Weg nun fortsetzen")
              timer("
devil_jump_7", 6)
              npc.unlock()
              d.purge()
              return
          end
          say_title(""..mob_name(20074).."
:")
          say("")
          say("
Du brauchst mehr Training.")
          say("
Komm wieder sobald du Lv 75 oder höher bist und")
          say("
mehr Erfahrung besitzt")

        say("")
        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 and npc.lock() begin
          say_title(""..mob_name(20075).."
:")
          say("")
          say("
Ihr habt den Weg zur 7. Ebene gefunden.")
          say("
Es wird sehr schwer und eure Fähigkeiten müssen sitzen.")
          say("
Hmmmm...")
          say("
Nur mit Lv 75 und höher kommst du weiter!")
          wait()
          if pc.level >=75 then
          say_title(""..mob_name(20075).."
:")
          say("")
              say("
Du bist stark genug.")
              say("
Du kannst deinen Weg nun fortsetzen")
              timer("
devil_jump_7", 6)
              npc.unlock()
              d.purge()
              return
          end
          say_title(""..mob_name(20075).."
:")
          say("")
          say("
Du brauchst mehr Training.")
          say("
Komm wieder sobald du Lv 75 oder höher bist und")
          say("
mehr Erfahrung besitzt")

        say("")
        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 and npc.lock() begin
          say_title(""..mob_name(20076).."
:")
          say("")
          say("
Ihr habt den Weg zur 7. Ebene gefunden.")
          say("
Es wird sehr schwer und eure Fähigkeiten müssen sitzen.")
          say("
Hmmmm...")
          say("
Nur mit Lv 75 und höher kommst du weiter!")
          wait()
          if pc.level >=75 then
          say_title(""..mob_name(20076).."
:")
          say("")
              say("
Du bist stark genug.")
              say("
Du kannst deinen Weg nun fortsetzen")
              timer("
devil_jump_7", 6)
              npc.unlock()
              d.purge()
              return
          end
          say_title(""..mob_name(20076).."
:")
          say("")
          say("
Du brauchst mehr Training.")
          say("
Komm wieder sobald du Lv 75 oder höher bist und")
          say("
mehr Erfahrung besitzt")

        say("")
        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 kill with npc.get_race() == 8018 and 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 kill with npc.get_race() == 8019 and 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,8)

        if pct == 1 then
            game.drop_item(30302, 1)
            d.clear_regen()
        else
            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

            if d.getf( "
level" ) != 7 then
                pc.remove_item( "
30302", 1)
                return
            end
            
        say("
Mit dieser Karte kann ich dich auf die nächste Ebene bringen")
        pc.remove_item("
30302", 1)
        timer("
devil_jump_8", 6)
        d.clear_regen()
    end
                        
    --------------------------------------------
    -- 8Ãþ ÁøÀÔºÎÅÍ 9Ãþ ±îÁö
    --------------------------------------------
    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)
        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
        if d.getf("
level") < 9 then
            local pct1 = number(1, 10)
            if pct1 == 1 then
                local pct2 = number(1, 4)
                if pct2 == 1 then
                    game.drop_item(30304, 1)
                else
                    game.drop_item(30303, 1)
                end
            else
                return
            end
        end
    end

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

    ---------------------------------------------
    -- 9Ãþ ÁøÀÔºÎÅÍ ¿Ï·á±îÁö
    ---------------------------------------------
    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 kill with npc.get_race() == 1093 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        d.kill_all()
        timer("
devil_end_jump", 30)
    end

    when devil_end_jump.timer begin
        d.exit_all()
    end
    function register_player(vid)
        local player_count = d.getf("
player_count")
        player_count = player_count + 1
        d.setf("
player_count", tonumber(player_count))
        d.setf(string.format("
player%d", player_count), tonumber(vid))
    end    
    function unregister_player(vid)
        local player_count = d.getf("
player_count")
        local found = false
        for i = 1, player_count, 1 do
            if found == true then
                d.setf(string.format("
player%d", tonumber(i)), d.getf(string.format("player%d", i+1)))
            end
            p = d.getf("
player"..tostring(i))
            if p == vid then
                i = i -1
                found = true
            end
        end    
        if found == true then
            d.setf("
player_count", tonumber(player_count - 1))
        end
    end    
    function get_players()
        local players = {}
        local player_count = d.getf("
player_count")
        for i = 1, player_count, 1 do
            players[i] = d.getf("
player"..tostring(i))
        end
        return players
    end
    function give_dc_access(pindex)
        local self_checked = false
        local self = pc.select(d.getf("
player"..tostring(pindex)))
        pc.setqf("
dtgeschafft", 1)
        pc.setf("
deviltower_zone", "dtgeschafft", 1)
        pc.select(self)
    end
end
end 
06/26/2013 07:14 Astro.#8382
Quote:
Originally Posted by 'oShet View Post
Was könnte an dieser Quest falsch sein?
Sie lädt nur bis "devil_stone4_end".
müsste jetzt klappen

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(590500, 110500)
                end
                pc.set_warp_location(65, 5905, 1105)
            elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
                pc.set_warp_location(65, 5905, 1105)                
                deviltower_zone.register_player(pc.get_vid())
            end
        end

    when logout begin
        if pc.count_item(30300) >= 1 then
            pc.remove_item(30300, pc.count_item(30300))
        end
        if pc.count_item(30302) >= 1 then
            pc.remove_item(30302, pc.count_item(30302))
        end                
        if pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
            deviltower_zone.unregister_player(pc.get_vid())        
        end
    end
    
    when deviltower_man.chat.locale.deviltower_man_chat begin
        if pc.get_level() < 45 then
        say_title(""..mob_name(20348).."")
        say("")
        say("Du bist unter level 45")
        else
        say_title(""..mob_name(20348).."")
        say("")
        say("Der Dämonenturm..")
        say("In diesem Turm leben hunderte von Untote")
        say("Sehr viel Mut und Geschick braucht man,")
        say("um in diesem Turm vorran zu kommen")
        say("Du musst aber Level 45 sein.")
        
        say("Möhctest du ihn betreten?")
        local s = select("Ja", "Nein")
        if s == 1 then
            pc.warp(216500,727000)
        end
        end
    end
        when devil_stone1.kill begin
            timer("devil_stone1_1", 8)
        end
        when devil_stone1_1.timer begin
            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_stone3.kill begin
            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()
        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, 1 do
                local j = number(i, 7)
                if i ~= j then
                    local t = positions[i]
                    positions[i] = positions[j]
                    positions[j] = t
                end
            end
            return positions
        end
        when  kill with npc.get_race() == 8016 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
            d.setf("level", 4)
            local positions = deviltower_zone.get_4floor_stone_pos()
            for i = 1, 6 do
                d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
            end
            local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
            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("Sie kamen in das Tor der Auswahl auf der 4. Etage.")
            d.notice("Viele falsche Metinsteine täuschen eure Augen und Ohren.")
            d.notice("Finde den richtigen Metinstein und töte ihn innerhalb 15 Minuten")
            d.notice("Es ist der einzigste weg es zu schaffen!")
        end

        when devil_stone4_fail1.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Minuten übrig: 10")
        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("Minuten übrig: 5")
        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()) and d.getf("level") == 4 then
                d.notice("Die Zeit ist abgelaufen.")
                d.exit_all()
            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 verschwindet...")
                            end
                        end
                    end
                else
                    server_timer("devil_stone4_end", 5, get_server_timer_arg())
                    
                    d.notice("Du hast dich selbst bewiesen und gezeigt das du es würdig bist.")
                    d.notice("Du hast den richtigen Metinstein getötet.")
                    d.purge()
                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
            clear_server_timer('devil_stone4_update', get_server_timer_arg())
            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())

                d.setf("level", 5)
                d.setf("stone_count", 5)
                
                d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
                d.notice("Sie sind nun auf der 5. Ebene.")
                d.notice("Ein paar Monster besitzen einen Schlüssel")
                d.notice("um die Säulen zu öffnen")
                d.notice("Öffne 5 Säulen in 20 Minuten")
                d.notice("um in die nächste Ebene zu gelangen!")

                
        server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
        clear_server_timer('devil_stone4_update', get_server_timer_arg())

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

                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("Minuten übrig: 15")
        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("Minuten übrig: 10")
        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("Minuten übrig: 5")
        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()) and d.getf("level") == 5 then
        d.notice("Die Zeit ist abgelaufen.")
        d.exit_all()
            end
        end

        when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
            local KILL_COUNT_FOR_DROP_KEY = 50
            local n =d.getf("count") + 1
            d.setf("count", n)
            if n == KILL_COUNT_FOR_DROP_KEY then
                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.clear_regen()
                d.kill_all()
                d.notice("Du hast die letzte Säule geöffnet. Du wirst")
                d.notice("nun zur 6. Ebene gebracht")

        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())
        
                d.setf("level", 6)
                d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
        d.regen_file("data/dungeon/deviltower6_regen.txt")
        
                d.notice("Tötet alle Monster bevor")
                d.notice("ihr den König tötet")

            else
                d.notice("Du hast ein Siegel geöffnet! Es sind "..d.getf("stone_count").." übrig.")
            end
        end

        when devil_stone6.kill begin
            d.kill_all()
            d.check_eliminated()
            local reward_alchemist = {20074, 20075, 20076}
            d.spawn_mob(reward_alchemist[number(1,3)], 425, 216)
        end

   
    when 20074.chat."Die höheren Etagen.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
          say_title(""..mob_name(20074)..":")
          say("")
          say("Ihr habt den Weg zur 7. Ebene gefunden.")
          say("Es wird sehr schwer und eure Fähigkeiten müssen sitzen.")
          say("Hmmmm...")
          say("Nur mit Lv 75 und höher kommst du weiter!")
          wait()
          if pc.level >=75 then
          say_title(""..mob_name(20074)..":")
          say("")
              say("Du bist stark genug.")
              say("Du kannst deinen Weg nun fortsetzen")
              timer("devil_jump_7", 6)
              npc.unlock()
              d.purge()
              return
          end
          say_title(""..mob_name(20074)..":")
          say("")
          say("Du brauchst mehr Training.")
          say("Komm wieder sobald du Lv 75 oder höher bist und")
          say("mehr Erfahrung besitzt")

        say("")
        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 and npc.lock() begin
          say_title(""..mob_name(20075)..":")
          say("")
          say("Ihr habt den Weg zur 7. Ebene gefunden.")
          say("Es wird sehr schwer und eure Fähigkeiten müssen sitzen.")
          say("Hmmmm...")
          say("Nur mit Lv 75 und höher kommst du weiter!")
          wait()
          if pc.level >=75 then
          say_title(""..mob_name(20075)..":")
          say("")
              say("Du bist stark genug.")
              say("Du kannst deinen Weg nun fortsetzen")
              timer("devil_jump_7", 6)
              npc.unlock()
              d.purge()
              return
          end
          say_title(""..mob_name(20075)..":")
          say("")
          say("Du brauchst mehr Training.")
          say("Komm wieder sobald du Lv 75 oder höher bist und")
          say("mehr Erfahrung besitzt")

        say("")
        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 and npc.lock() begin
          say_title(""..mob_name(20076)..":")
          say("")
          say("Ihr habt den Weg zur 7. Ebene gefunden.")
          say("Es wird sehr schwer und eure Fähigkeiten müssen sitzen.")
          say("Hmmmm...")
          say("Nur mit Lv 75 und höher kommst du weiter!")
          wait()
          if pc.level >=75 then
          say_title(""..mob_name(20076)..":")
          say("")
              say("Du bist stark genug.")
              say("Du kannst deinen Weg nun fortsetzen")
              timer("devil_jump_7", 6)
              npc.unlock()
              d.purge()
              return
          end
          say_title(""..mob_name(20076)..":")
          say("")
          say("Du brauchst mehr Training.")
          say("Komm wieder sobald du Lv 75 oder höher bist und")
          say("mehr Erfahrung besitzt")

        say("")
        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 kill with npc.get_race() == 8018 and 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 kill with npc.get_race() == 8019 and 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,8)

        if pct == 1 then
            game.drop_item(30302, 1)
            d.clear_regen()
        else
            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

            if d.getf("level") ~= 7 then
                pc.remove_item("30302", 1)
                return
            end
            
        say("Mit dieser Karte kann ich dich auf die nächste Ebene bringen")
        pc.remove_item("30302", 1)
        timer("devil_jump_8", 6)
        d.clear_regen()
    end
                        
    --------------------------------------------
    -- 8Ãþ ÁøÀÔºÎÅÍ 9Ãþ ±îÁö
    --------------------------------------------
    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)
        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
        if d.getf("level") < 9 then
            local pct1 = number(1, 10)
            if pct1 == 1 then
                local pct2 = number(1, 4)
                if pct2 == 1 then
                    game.drop_item(30304, 1)
                else
                    game.drop_item(30303, 1)
                end
            else
                return
            end
        end
    end

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

    ---------------------------------------------
    -- 9Ãþ ÁøÀÔºÎÅÍ ¿Ï·á±îÁö
    ---------------------------------------------
    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 kill with npc.get_race() == 1093 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        d.kill_all()
        timer("devil_end_jump", 30)
    end

    when devil_end_jump.timer begin
        d.exit_all()
    end
    function register_player(vid)
        local player_count = d.getf("player_count")
        player_count = player_count + 1
        d.setf("player_count", tonumber(player_count))
        d.setf(string.format("player%d", player_count), tonumber(vid))
    end    
    function unregister_player(vid)
        local player_count = d.getf("player_count")
        local found = false
        for i = 1, player_count, 1 do
            if found == true then
                d.setf(string.format("player%d", tonumber(i)), d.getf(string.format("player%d", i+1)))
            end
            p = d.getf("player"..tostring(i))
            if p == vid then
                i = i -1
                found = true
            end
        end    
        if found == true then
            d.setf("player_count", tonumber(player_count - 1))
        end
    end    
    function get_players()
        local players = {}
        local player_count = d.getf("player_count")
        for i = 1, player_count, 1 do
            players[i] = d.getf("player"..tostring(i))
        end
        return players
    end
    function give_dc_access(pindex)
        local self_checked = false
        local self = pc.select(d.getf("player"..tostring(pindex)))
        pc.setqf("dtgeschafft", 1)
        pc.setf("deviltower_zone", "dtgeschafft", 1)
        pc.select(self)
    end
end
end
06/26/2013 10:27 sony199#8383
Die Funktion soll sein, dass der NPC "20090" nach 60 sec. wieder verschwinden soll, doch beide varianten klappen nicht.

PHP Code:
quest user begin
    state start begin
        when 70017.
use begin                    
            say_title
("Shopping-Funktion")
            
say("")
            
say_gold("Mit dieser Funktion kannst du einen")
            
say_gold("Multishop herbeirufen.")
            
say_gold("Dieser Shop hat das zu bieten, was du bestellst.")
            
say_gold("Also probier es einfach mal aus!")
            
say("")
            
say_red("Aber denk dran:")
            
say_red("Der Shop muss inerhalb einer Minute")
            
say_red("geöffnet werden!!!")
            
say_red("Ansonsten ist deine bestellung weg und")
            
say_red("der Shop wird bis zu nächsten reboot")
            
say_red("dort stehen.")
            
local s=select("Verstanden""Abbrechen")
            if 
1==s then
                say_title
("Shopping-Funktion")
                
say("")
                
say_gold("Was möchtest du bestellen?")
                
local shop =select("Gemischtwarenhändlerin","ItemShop""Abbrechen")
                if 
shop ==3 then
                    
return
                
end
                
if shop ==1 then
                    local npcVID 
mob.spawn(20090pc.get_local_x(),  pc.get_local_y(), 111)
                    
server_timer("mobPurge"10npcVID)
                    
set_state(gemi)
                
end
                
if shop ==2 then
                    mob
.spawn(20090pc.get_local_x(),  pc.get_local_y(), 111)
                    
timer("dc2"60)
                    
set_state(item)
                
end 
            end
        end
    end
    state gemi begin
        when 20090.chat
."Gemischtwarenhändlerin" begin
            npc
.open_shop(3)
            
setskin(NOWINDOW)
            
npc.purge()
            
set_state(start)
        
end
        when mobPurge
.server_timer begin
            npc
.purge(get_server_timer_arg())
            
set_state(start)
        
end
    end
    state item begin
        when 20090.chat
."ItemShop" begin
            npc
.open_shop(19)
            
setskin(NOWINDOW)
            
npc.purge(20090)
            
set_state(start)
        
end
        when dc2
.timer begin
            npc
.purge(20090)
            
set_state(start)
        
end
    end
end 
06/26/2013 15:44 CantShutMyMouth#8384
PHP Code:
  quest    roua23    begin
        state start begin
                when 40002.
use  begin
                pc
.removeitem("40002"1)
                    
affect.add_collect(apply.ATTBONUS_HUMAN10200)
                
end
            end
        end 

So, with this item, is like a water ... you use it, you get 10 half human, and it disappear. All works right.


What the problem is?

I want to make it so you can use it only one time in 200 seconds....


i tried with a variable i, which is 0, then an if i=0 .... but i have no ideea how lua works....

So, how to make this item to work only one time in 200 seconds, so you can't get 9999999 hh ....
06/26/2013 17:23 .Leykas#8385
Code:
quest heiligertrank begin
    state start begin
        when login or levelup with pc.level >= 55 begin
            set_state(information)
        end    
    end
    state information begin
        when letter begin
            local v = find_npc_by_vnum(20023)
            if v != 0 then
                target.vid("__TARGET__", v, "Soon")
            end
            send_letter("Der heilige Trank")
        end
        
        when button or info begin
            say_title("Der heilige Trank")
            say("Du solltest mal zu Soon gehen.")
            say("Er braucht deine Hilfe.")
            say(""
        end
        when __TARGET__.target.click or
            20023.chat."Der heilige Trank" begin
            say("Sei gegrüßt, "..pc.get_name().."!")
            say("Ich brauche einen Heiligen Trank.")
            say("Es ist sehr wichtig. Du wirst auch belohnt *hehe*.")
            say("Willst du mir denn helfen??")
            local s = select("Ja", "Nein, keine Zeit!")
            if s == 1 then
                say("Vielen Dank. Versuch dein Glück.")
                say("Der heilige Tarok wartet im Orktal auf dich.")
				say_reward("Töte den heiligen Tarok")
                set_state(weiter)
            end
        end
    end    
    state weiter begin
        when letter begin
            send_letter("Der heilige Trank")            
        end
        when button or info begin
            say_title("Der heilige Trank")
            say("Soon möchte, dass du ihm einen heiligen Trank besorgst.")
            say("Im Orktal wirst du den heiligen Tarok finden, der diesen Trank droppt!")
            say_item_vnum(70013)
        end
        when 693.kill begin
            local x = number(1, 100)
            if x == 1 then
                game.drop_item(70013, 1)
            end    
        end      
        when 20023.chat."Der heilige Trank" with pc.count_item(70013) > 0 begin
            say("Hey du hast den Trank!")
            say("Vielen Dank!")
            pc.remove_item(70013, 1)
            say("Als Belohnung erhälst du:")
			say_reward("- 10Mio Yang")
			say_reward("- 10x Spezial-Truhe")
            pc.give_item2(50130, 10)
			pc.change_money(10000000)
            clear_letter()
            set_state(__complete)
        end
    end
    state __complete begin
    end
end

Warum auch immer, funktioniert nicht. Weiß jemand weiter?