[SERVICE] Die Questkontrolle

02/06/2012 21:11 playted#4696
Mein Problem ist das man nicht raus geportet wird nach den 10 sek . Danke schon mal :)

PHP Code:
quest Tempel_of_dragon begin
state start begin
    when 2493.kill with pc
.get_map_index() == 408 begin    
    notice_all
("Die Gruppe von "..pc.get_name().." hat Beran-Setaou getötet.")
    
notice_in_map("Beeindruckend, ihr habt ihn tatsächlich besiegt.")
    
notice_in_map("Verbleibende Zeit bis ihr rausfliegt: 10 Sekunden")
    
local x pc.set_warp_location(73 182512207)
    
timer("x"10)
    
game.set_event_flag("Grotte_zugang",0)
    
end
        end
end 
02/07/2012 19:48 DasKuchen#4697
Quote:
Originally Posted by playted View Post
Mein Problem ist das man nicht raus geportet wird nach den 10 sek . Danke schon mal :)

PHP Code:
quest Tempel_of_dragon begin
state start begin
    when 2493.kill with pc
.get_map_index() == 408 begin    
    notice_all
("Die Gruppe von "..pc.get_name().." hat Beran-Setaou getötet.")
    
notice_in_map("Beeindruckend, ihr habt ihn tatsächlich besiegt.")
    
notice_in_map("Verbleibende Zeit bis ihr rausfliegt: 10 Sekunden")
    
local x pc.set_warp_location(73 182512207)
    
timer("x"10)
    
game.set_event_flag("Grotte_zugang",0)
    
end
        end
end 

Habe nicht sehr viel Ahnung aber vllt geht es ja so:

PHP Code:
quest Tempel_of_dragon begin
    state start begin
        when 2493.kill with pc
.get_map_index() == 408 begin    
        notice_all
("Die Gruppe von "..pc.get_name().." hat Beran-Setaou getötet.")
        
d.notice("Beeindruckend, ihr habt ihn tatsächlich besiegt.")
        
d.notice("Verbleibende Zeit bis ihr rausfliegt: 10 Sekunden")
        
timer("x"10)
        
game.set_event_flag("Grotte_zugang",0)
        
end
        when x
.timer begin
        pc
.set_warp_location(73 182512207)
        
end
    end
end 
02/07/2012 20:07 Sp0ngeb0b ist cool#4698
das wird garnicht funktionieren, da nicht die gruppe rausgeportet wird sondern nur der, der beran gekillt hat ;)
map 408 müsste ein dungeon sein & dann könnte man dungeon befehle verwenden
aber ja, wenn überhaupt klappt daskuchen`s lösung
02/08/2012 08:42 playted#4699
@DasKuchen
Danke dir aber es klappt trotzdem nicht :(

@Sp0ngeb0b ist cool
Da hast du recht leider geht das ohne Dungeon nicht. Wenn man tortzdem in die Quest Dungean befehle einbaut, wird man beim teleportieren in die nächste Ebene gekickt hier ein beispiel:
PHP Code:
when 8023.kill with pc.get_map_index() == 408 begin
        timer
("skipia_boss_goo"2)
        
notice_in_map("Ihr hab den Stein zerstört ihr werden nun in die nächste Ebene gebracht")
        
end
    when skipia_boss_goo
.timer begin
        game
.set_event_flag("Grotte_zugang",0)
        
d.new_jump_all(408843610669)
        
d.setf("grotte_boss"1)
        
d.spawn_mob(9012239173)
        
end 
Das mit dem Drachenraum wird wohl schwere als ich es gedacht habe :confused:
02/08/2012 11:55 .HC'Destrox#4700
@playted: Du musst einfach beim Timer (ja muss ins Dungeon) als Befehl:
Code:
d.exit_all()
verwenden.
Quest:
Code:
quest Tempel_of_dragon begin
    state start begin
        when 2493.kill with pc.get_map_index() == 408 begin    
		notice_all("Die Gruppe von "..pc.get_name().." hat "..mob_name(2493).." getötet.")
		d.notice("Beeindruckend, ihr habt ihn tatsächlich besiegt.")
		d.notice("In 10 Sekunden werdet ihr heraus teleportiert...")
		timer("Exit_Dragon", 10)
		game.set_event_flag("Grotte_zugang", 0)
        end
        when Exit_Dragon.timer begin
		d.exit_all()
        end
    end
end
Meine Frage: Welchen Befehl nutze ich um ein Monster in einer anderen Map zu spawnen? Z.B.:
Code:
mob.spawn(mapindex, x, y, mob_id)
gibts sowas?

Mfg, Destroyer446
02/08/2012 16:00 Sp0ngeb0b ist cool#4701
richtig destroyer ;)

zu deiner frage: ob es den befehl gibt, weiß ich nicht. allerdings kann man spawns aus einer zusätzlichen txt möglich machen indem man in diese txt die spawn daten wie bei einer normalen regen.txt einer map eingibt & dann in der quest mit nem befehl ausgibt.
oder du modifizierst den mob.spawn befehl etwas, sodass eben wie du es bereits präsentiert hast mapindex, x, y, mob_id statt nur x, y, mob_id hast

einfach mal schauen, wie das bei befehlen die bei denen der mapindex benötigt wird, gemacht worden ist :)
02/08/2012 18:24 .HC'Destrox#4702
hmm, also ich habs jeze so gemacht, dass ich durch die quest eine
neue Regen.txt erstelle (in dem "data/" Ordner) und die lade, spawnzeit auf 1s gestellt und server_timer nach 5s ausführe der alte Regen.txt läd...

Naja, nich ganz so proffesionell und untested aber vllt gehts ja :D

Mfg, Destroyer446
02/08/2012 20:41 KingAura619#4703
bei mir kommt immer ein fehler bei der quest

----------------------------------------------------
--Tempel des Drachen
----------------------------------------------------
quest dragontemple begin
state start begin

when logout with pc.get_map_index() >= (82*10000) begin
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(password) then
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 3x")
say("")
say_item_vnum(30179)

local s = select("Hier, nimm sie und bring mich rein", "Abbrechen")
if s == 1 then
if pc.count_item(30179) >= 3 then
pc.remove_item(30179,3)
pc.warp(843600, 1066900,(82*10000))
--DragonLair.startRaid(82)
else
say("Du hast nur "..pc.count_item(30179).." von 3 benötigten")
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(""))
game.set_event_flag("dragontemple_password",passwo rd)
say_title(""..mob_name(30121).."")
say("")
say("Wenn du willst kann ich dich sofort,")
say("in den Drachnraum bringen.")
say("Gib mir einfach 3x")
say("")
say_item_vnum(30179)
say("")

local s = select("Hier, nimm sie und bring mich rein", "Abbrechen")
if s == 1 then
if pc.count_item(30179) >= 3 then
pc.remove_item(30179,3)
DragonLair.startRaid(82)
game.set_event_flag("dragontemple_used",1)
timer("blockentry",5*60)
else
say("Du hast nur "..pc.count_item(30179).." von 3 benötigten")
say("")
say_item_vnum(30179)
say("")
return
end
elseif s==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*10000) begin
timer("set_unused",30)
end

when set_unused.timer begin
game.set_event_flag("dragontemple_used",0)
game.set_event_flag("dragontemple_block",0)
end

when blockentry.timer begin
game.set_event_flag("dragontemple_block",1)
end
end
end

hier der fehler noma [Only registered and activated users can see links. Click Here To Register...]
02/09/2012 08:16 DasKuchen#4704
Du musst DragonLair.startRaid in deine quest_functions eintragen


Gibt es einen Befehl das ich eine bestimmte person töten kann?
Wenn er z.b. was unrechtes macht das er dann stirbt.
02/09/2012 18:38 richib135#4705
Quest:

PHP Code:
quest dia2 begin
    state start begin
        when 20083.chat
."Diamanttausch" begin
            
if pc get_level ( ) < 90 then 
                say 
("Unter LvL90 traue ich keinen!"
            else 
                
say_title("Diamanttausch:")
                
say("")
                
say("Guten Tag.")
                
say("Bei mir kannst du Gelbe Diamanten")
                
say("gegen Blaue Diamanten tauschen.")
                
say("Aber bitte erzähl den GM´s nix von meinen Diamant-Handel!")
                
say("Sonst komm ich wieder hinter Gitter!")
                if 
pc.count_item("20992")==0 then
                    say
("Sag mal, willst du mich verarschen?")
                    
say("Du hast keinen Gelben Diamanten!")
                    
say("Falls du das nochmal machst")
                    
say("Hole ich meine Kumpels")
                    
say("Und dan bist du ToT")
                    return
                elseif 
pc.count_item("20992")>=1 then
                    say
("Also, willst du nun Tauschen?")
                
local s select("Ja!""Nein!")
                    if 
== 1 then
                        pc
.remove_item("20992"1)
                        
pc.give_item("20993"1)
                    if 
== 2 then
                        say
("Ok, bis später")
                    return
                
end
            end
        end
quest dia22 begin
    state start begin
        when 20083.chat
."Diamantentausch2" begin
            
if pc get_level ( ) < 90 then 
                say 
("Unter LvL90 traue ich keinen!"
            else 
                
say_title("Diamanttausch2:")
                
say("")
                
say("Guten Tag.")
                
say("Bei mir kannst du Blaue Diamanten")
                
say("gegen Gelbe Diamanten tauschen.")
                
say("Aber bitte erzähl den GM´s nix von meinen Diamant-Handel!")
                
say("Sonst komm ich wieder hinter Gitter!")
                if 
pc.count_item("20992")==0 then
                    say
("Sag mal, willst du mich verarschen?")
                    
say("Du hast keinen Blauen Diamanten!")
                    
say("Falls du das nochmal machst")
                    
say("Hole ich meine Kumpels")
                    
say("Und dan bist du ToT")
                    return
                elseif 
pc.count_item("20992")>=1 then
                    say
("Also, willst du nun Tauschen?")
                
local s select("Ja!""Nein!")
                    if 
== 1 then
                        pc
.remove_item("20992"1)
                        
pc.give_item("20993"1)
                    if 
== 2 then
                        say
("Ok, bis später")
                    return
                
end
            end
        end 

Fehlermeldung:

Nach "./make.sh":


qc in malloc(): error: allocation failed
Abort trap (core dumped)
Error occured on compile dia2.quest
02/09/2012 19:16 Sp0ngeb0b ist cool#4706
PHP Code:
quest dia2 begin
    state start begin
        
function change(levelitem1item_da)
            if 
pc.get_level() < level then 
                say 
("Unter LvL "..level.." traue ich keinem!"
                return
            
end
            say_title
("Diamanttausch:")
            
say("")
            
say("Guten Tag.")
            
say("Bei mir kannst du "..item_name(item1))
            
say("gegen "..item_name(item_da).." tauschen.")
            
say("Aber bitte erzähl den GM´s nix von meinen Diamant-Handel!")
            
say("Sonst komm ich wieder hinter Gitter!")
            if 
pc.count_item(item1)==0 then
                say
("Sag mal, willst du mich verarschen?")
                
say("Du hast keinen "..item_name(item1).."!")
                
say("Falls du das nochmal machst")
                
say("Hole ich meine Kumpels")
                
say("Und dan bist du ToT")
                return
            
end    
            say
("Also, willst du nun Tauschen?")
            
local s select("Ja!""Nein!")
            if 
== 1 then
                pc
.remove_item(item11)
                
pc.give_item(item_da1)
            
end    
            
if == 2 then
                say
("Ok, bis später")
                return
            
end    
        end
        when 20083.take with item
.vnum == 20992 begin dia2.change(902099220993end
        when 20083.take with item
.vnum == 20993 begin dia2.change(902099320992end
    end
end 
teste es mal so ;)

Ps: Du musst das Item auf den npc ziehen...ist cooler :D
02/09/2012 19:33 richib135#4707
Quote:
Originally Posted by Sp0ngeb0b ist cool View Post
PHP Code:
quest dia2 begin
    state start begin
        
function change(levelitem1item_da)
            if 
pc.get_level() < level then 
                say 
("Unter LvL "..level.." traue ich keinem!"
                return
            
end
            say_title
("Diamanttausch:")
            
say("")
            
say("Guten Tag.")
            
say("Bei mir kannst du "..item_name(item1))
            
say("gegen "..item_name(item_da).." tauschen.")
            
say("Aber bitte erzähl den GM´s nix von meinen Diamant-Handel!")
            
say("Sonst komm ich wieder hinter Gitter!")
            if 
pc.count_item(item1)==0 then
                say
("Sag mal, willst du mich verarschen?")
                
say("Du hast keinen "..item_name(item1).."!")
                
say("Falls du das nochmal machst")
                
say("Hole ich meine Kumpels")
                
say("Und dan bist du ToT")
                return
            
end    
            say
("Also, willst du nun Tauschen?")
            
local s select("Ja!""Nein!")
            if 
== 1 then
                pc
.remove_item(item11)
                
pc.give_item(item_da1)
            
end    
            
if == 2 then
                say
("Ok, bis später")
                return
            
end    
        end
        when 20083.take with item
.vnum == 20992 begin dia2.change(902099220993end
        when 20083.take with item
.vnum == 20993 begin dia2.change(902099320992end
    end
end 
teste es mal so ;)

Ps: Du musst das Item auf den npc ziehen...ist cooler :D

Ahh sorry habe das PS nicht gelesen.
Aber man bekommt für Gelben Diamant Yang -.-
02/09/2012 20:04 Sp0ngeb0b ist cool#4708
:facepalm: du hast den falschen befehl genommen...
änder das pc.give_item(item_da, 1) in pc.give_item2(item_da, 1) dann gehts ;)
02/09/2012 20:24 richib135#4709
Quote:
Originally Posted by Sp0ngeb0b ist cool View Post
:facepalm: du hast den falschen befehl genommen...
änder das pc.give_item(item_da, 1) in pc.give_item2(item_da, 1) dann gehts ;)
Danke, funktioniert! <3
02/09/2012 21:04 Lеlouch#4710
Hätte gerne mal Hilfe, undzwar würde die Quest funktionieren?
Bin nagelneu und habe nochnie eine Quest geschrieben, meine Erste:

PS: Es kommt Segmention fault (core dumped=

PHP Code:
quest weißerloewe begin
    state start begin
        when 71128.
use begin
                say_title
("Weißer Löwe mit Bonis:")
                
say("Mit welchem Boni willst du es benutzen?")
                
local s select("1000 Attacke","500 Verteidigung","30% mehr EXP","Abbrechen")
            if 
== 1 then
                say_reward
("Du hast nun W. Löwen mit 1000 ATK!")
                
pc.mount(20114999999999)
                
horse.ride()
                
pc.mount_bonus(apply.ATT_GRADE_BONUS,1000,3600)
            
end
        
if horse.unride() then
            affect
.remove_collect()
        
end
            
if == 2 then
                say_reward
("Du hast nun W. Löwen mit 500 DEFF!")
                
pc.mount(20114999999999)
                
horse.ride()
                
pc.mount_bonus(apply.DEF_GRADE_BONUS,500,3600)
            
end
        
if horse.unride() then
            affect
.remove_collect()
        
end
            
if == 3 then
                say_reward
("Du hast nun W. Löwen mit 30% EXP!")
                
pc.mount(20114999999999)
                
horse.ride()
                
pc.mount_bonus(apply.EXP_GRADE_BONUS,30,3600)
            
end
        
if horse.unride() then
            affect
.remove_collect()
        
end
        end
    end
end