[SERVICE] Die Questkontrolle

03/13/2011 12:49 .iXream.#1666
Quote:
Originally Posted by Delta619 View Post
mach das so:
PHP Code:
quest login begin
    state start begin
        when login begin
            chat
(" Willkommen auf xxx!")
            
chat(" Die Homepage befindet sich noch in Arbeit")
            
chat(" Das Forum ebenfalls.")
            
chat(" Das Team:")
            
chat(" [xx]xx [xx]xx")
            
chat(" [xx]xx [xx]xx")
        
end
    end
end 
steht allerdings nur im Chat unten und nicht in der Ankündigungszeile.
Möchte ich aber anderes haben,auf manchen Server haben die das geschafft.
Ich möchte das als Ankündigungszeile und nicht als Chat
03/13/2011 13:11 $Alex$#1667
Normalerweise müsste es mich porten wenn der Metin down ist tut es jedoch nicht
Danke im Vorraus

PHP Code:
quest hey begin
    state start begin
        when 9010.chat
."Hey" begin
            
if pc get_level ( ) < 90 then 
                say 
("Du hast noch nicht genuegend Erfahrung gesammelt. Komme wieder, wenn du Level 90 bist!"
            else 
                
say_title("lala")
                
say("")
                
say("piep.")
                
say("")
                
say_reward("Soll ich dich teleportieren?")
                
                
local s select("Teleportieren""Hier bleiben")
                    if 
== 1 then
                        pc
.warp(81920051200)
                    else
                        return
                    
end
            end
        end
        
        when 8010.kill with pc
.get_map_index()==107 begin
            
if d.is_unique_dead("real"then
                pc
.warp(81920051200)
            
end
        end
    end
end 
03/13/2011 14:28 MrOnline#1668
Quote:
Originally Posted by ~АLeЖ~ View Post
@Mr.Online
Du hast habe viele Schöneheits fehler in der Quest drin ^^.

Ich rate dir Quests in .lua Dateien zu schreiben (da sieht man besser die fehler).

PHP Code:
quest markensystem begin
    state start begin
        when letter begin
            send_letter
("Das Markensystem")
        
end
        when info 
or button begin
            say_title
("Das Markensystem")
            
say("")
            
say("Hallo "..pc.get_name().." ")
            
say("Wir haben auf diesem Server ein Markensystem")
            
say("eingeführt. Es handelt sich hierbei um eine Art Währung.")
            
say("Für jeden Spieler, aus einem befeindeten Reich, den")
            
say("du tötest, bekommst du eine Marke")
            
say("Nun gibt es ab einer unterschiedlichen Anzahl von Marken")
            
say("unterschiedliche Belohnungen.")
            
say_reward("Bisher hast du "..pc.getqf("marken").." Marken gesammelt!")
            
say_reward("Töte Spieler aus anderen Reichen, um mehr zu sammeln.")
        
end
        
        when 20011.chat
."Markensystem" begin
            say_title
("Markensystem")
            
say("")
            
say("Hier befindest du dich im Markenbereich.")
            
say("Du erfährst hier, welche Belohnungen es gibt")
            
say("und kannst diese auch gleich gegen Marken eintauschen, wenn du genügend")
            
say("davon hast. Bisher hast du "..pc.getqf("marken").." Marken!")
            
say("")
            
local s select("Belohnungen ansehen","Marken eintauschen","Abbrechen")
            if 
== 3 then
                
return
            
end
            
if == 1 then
                say
("Hier siehst du für wieviele Marken du welche Belohnung bekommst.")
                
say("")
                
say("20  Marken: Belohnung 1:  3x schwere Metinrufrolle"
                
say("40  Marken: Belohnung 2:  1x Flammenkönigrufrolle")
                
say("60  Marken: Belohnung 3: 50x Segen des Lebens")
                
say("80  Marken: Belohnung 4:  1x Weiße Perle")
                
say("120 Marken: Belohnung 5:  1x Sensenmanntruhe")
                
say("150 Marken: Belohnung 6:  1x Weiße Perle, 1x Blaue Perle, 1x Rote Perle")
                
say("250 Marken: Belohnung 7:  2x Weiße Perle, 2x Blaue Perle, 2x Rote Perle, 2x Sensenmanntruhe.")
        
end
            
if == 2 then
                say
("Du hast "..pc.getqf("marken").." Marken")
                
say("Was möchtest du davon kaufen?")
                
say("")
                
local v select("Belohnung 1","Belohnung 2","Belohnung 3","Belohnung 4","Belohnung 5","Belohnung 6","Belohnung 7","nichts kaufen")
                if 
== 8 then
                
return
                
end
                
elseif == and pc.count_item("1111")>=20  then
                pc
.give_item2("71082,1")
                
pc.give_item2("71082,1")
                
pc.give_item2("71082,1")
                
pc.remove_item("1111,20")
                elseif 
== and pc.count_item("1111")>=40 then
                pc
.give_item2("5504,1")
                
pc.remove_item("1111,40")
                elseif 
== and pc.count_item("1111")>=60 then
                pc
.give_item2("71018,50")
                
pc.remove_item("1111,60")
                elseif 
== and pc.count_item("1111")>=80 then
                pc
.give_item2("27992,1")
                
pc.remove_item("1111,80")
                elseif 
== and pc.count_item("1111")>=120
                pc
.give_item2("50082,1")
                
pc.remove_item("1111,120")
                elseif 
== and pc.count_item("1111")>=150
                pc
.give_item2("27992,1")
                
pc.give_item2("27993,1")
                
pc.give_item2("27994,1")
                
pc.remove_item("1111,150")
                elseif 
== and pc.count_item("1111")>= 250
                pc
.give_item2("27992,1")
                
pc.give_item2("27993,1")
                
pc.give_item2("27994,1")
                
pc.remove_item("1111,250")
                
notice_all(" "..pc.get_name().." hat soeben 250 Marken eingetauscht,")
                
notice_all("viel Spaß mit deiner Belohnung.")
                
end
                
else
                
say("Du hast nicht genug Marken")
            
end    
        end        
    state kill begin
            when npc
.is_pc() and npc.kill() begin and npc.is_pc() and npc.empire != pc.empire and npc.get_level >=40 then
                pc
.give_item("1111,1")
        
end
    end
end 
Ich hoffe ich habe nicht all zuviele end´s weggehaun >.<
Hey, danke für deine Hilfe. Ich habe die Quest in Lua geschrieben, allerdings innerhalb von 10 Minuten, daher hab ich vermutlich so viele Fehler reingehauen ;].
Meinst du sie funktioniert so?
Ich bin mir bei einer Funktion nicht so sicher, und zwar bei der hier:

npc.get_level >=40

Die Funktion soll festlegen, dass nur Spieler über Level 40 zählen, also Marken geben. Funktioniert das wohl?
03/13/2011 14:34 LxR'EsoZiaL#1669
haste schonmal in einer Core geguckt ob da was drin steht?

Weil da sind ja alle Befehle für Quests drin.
03/13/2011 14:45 Jurop#1670
Quote:
Originally Posted by Delta619 View Post
probiers so, hab eine { hinzugefügt.
PHP Code:
-- Teleporter
quest map_warp begin
    state start begin
        when 9012.chat
."Möchtest du reisen?"  begin
            say_title
("Teleporter:")
            
say("Dies ist eine faszinierende Gegend. Aber")
            
say("passiert hier denn auch mal etwas")
            
say("Außergewöhnliches? Eher wohl nicht. In anderen")
            
say("Teilen des Landes sieht es mitunter ganz anders.")
            
say("aus! Es gibt daher sicher einen intressanten")
            
say("Ort, an den ich dich teleportieren könnte. Da")
            
say("jedoch die Kräfte des Bösen wieder stärker")
            
say("geworden sind, wurden Raum und Zeit ins Chaos")
            
say("gestürzt. Dadurch kann es passieren, dass deine")
            
say("Rückkehr nicht immer augenblicklich funktioniert.")
            
say("Möchtest du dennoch teleportiert werden?")

            
local main_set select("Ja","Nein")
            if 
main_set == 2 then
                
return
            
end
            
            
if pc.get_level() <= 10 then
                say_title
("Teleporter:")
                
say("Hm… Mit deinem derzeitigen Level bist du noch")
                
say("zu schwach für die Reise durch Zeit und Raum.")
                
say("Komm wieder, wenn du höher als Level 10 bist.")
                return
            
end

            local map 
pc.get_map_index()
            
local empire pc.get_empire()
            
local level pc.get_level()
            
local cost math.floor(level 5) * 1000

            
-- ?? ????
            if 
cost 1000 then
                cost 
1000
            end

            say_title
("Teleporter:")
            
say("Wohin möchtest du teleportiert werden?")
            
say_reward(string.format("Das kostet dich %d Yang."cost))

            -- ?? ?? ???? ?? ?? (? ?? 
1,??)
            if 
map == or map == or map == 21 or map == 23 or map == 41 or map == 43 then

                local guild_map_names 
= {
                    
"Gildenzone",
                    
"Gildenzone",
                    
"Gildenzone",
                }

                
guild_map_name guild_map_names[empire]
                
local empire_castle={
                    
"Burgschlacht",
                    
"Burgschlacht",
                    
"Burgschlacht",
                }
                
empire_castle =empire_castle[empire]
                
local sub_set 0
                
if level 60 then -- 60?? : ?????, ???, ????, ???
                    
sub_set select(guild_map_name"Tal von Seungryong""Yongbi-Wüste""Berg Sohan"empire_castle,"Andere Gebiete")
                    if 
sub_set == 6 then -- ??
                        return
                    
end

                
else -- 61?? : ????, ???, ????, ????
                    
sub_set select(guild_map_name"Tal von Seungryong""Yongbi-Wüste""Berg Sohan",  empire_castle,"Andere Gebiete")
                    if 
sub_set == 6 then -- ??
                        
say_title("Teleporter:")
                        
say("Wohin möchtest du teleportiert werden?")
                        
say_reward(string.format("Das kostet dich %d Yang."cost))
                        
sub_set select("Doyyumhwaji""Dämonenturm""Farm-Map" "Zurück""Abbrechen") + 5
                        
if sub_set == 9 then -- ??
                            return
                        
end
                        
if sub_set == 8 then -- ??
                            
say_title("Teleporter:")
                            
say("Wohin möchtest du teleportiert werden?")
                                                 ---                                                   
l
                            say_reward
(string.format("Das kostet dich %d Yang."cost))
                            
sub_set select(guild_map_name"Tal von Seungryong""Yongbi-Wüste""Berg Sohan",  empire_castle,"Andere Gebiete")
                            if 
sub_set == 6 then -- ??
                                
say_title("Teleporter:")
                                
say("Wohin möchtest du teleportiert werden?")
                                
say_reward(string.format("Das kostet dich %d Yang."cost))
                                
sub_set select("Doyyumhwaji""Dämonenturm""Abbrechen") + 5
                                
if sub_set == 8 then -- ??
                                    return
                                
end
                            end
                        end
                    end
                end

                
if pc.gold cost then
                    say
("Du hast nicht genug Geld,")
                    
say_title("Teleporter:")
                    
say("Ich würde dich auch kostenlos teleportieren,")
                    
say("aber ich habe eine große Familie. Um sie zu")
                    
say("ernähren, muss ich Geld verdienen.")
                    
say_reward(string.format("Es kostet %d Yang."cost))
                    return
                
end

                pc
.changegold(-cost)

                
local warp = {
                    -- 
guild_map
                    
{
                        { 
1285001000 },
                        { 
1795001000 },
                        { 
27180013000 },
                    },
                    -- 
64 map_n_threeway
                    
{
                        { 
402100673900 },
                        { 
270400739900 },
                        { 
321300808000 },
                    },
                    -- 
63 metin2_map_n_desert_01
                    
{
                        { 
217800627200 },
                        { 
221900502700 },
                        { 
344000502500 },
                    },
                    -- 
61 map_n_snowm_01
                    
{
                        { 
434200290600 },
                        { 
375200174900 },
                        { 
491800173600 },
                    },
                    {--
empire_castle
                        
{975200133000},
                        {
977200185000},
                        {
923900183600},
                    
                    } ,
                    -- 
62 metin2_map_n_flame_01
                    
{
                        { 
599400756300 },
                        { 
597800622200 },
                        { 
730700689800 },
                    },
                    -- 
devil_tower
                    
{
                        { 
590500110500 },
                        { 
590500110500 },
                        { 
590500110500 },
                    },
                    -- 
farmmap
                    
{
                        { 
383000640000 }
                        { 
383000640000 }
                        { 
383000640000 }
                    }
                            }
                
test_chat(warp[sub_set][empire][1]..warp[sub_set][empire][2])
                
say_title("Teleporter:")
                
say("Achtung, ich teleportiere dich jetzt. Du wirst")
                
say("an einem gefährlichen Ort landen, also pass auf")
                
say("dich auf. Viel Glück!")
                
wait()
                
pc.warp(warp[sub_set][empire][1], warp[sub_set][empire][2])
            

            else -- ? ?? 
1,? ??? ?????? ? ?? 1,? ??? ?? ??    
                
local sub_set2 3

                
--sub_set2 select(locale.vileage1_name[empire], locale.vileage2_name[empire], locale.cancel)
                if 
empire==1 then    
                    sub_set2 
select("Yongan","Jayang" locale.cancel)
                elseif  
empire ==2 then  
                    sub_set2 
select("Joan","Bokjung" locale.cancel)
                elseif  
empire ==3 then 
                    sub_set2 
select("Pyungmoo","Bakra" locale.cancel)
                
end    
                
if sub_set2 != 3 then
                    
if pc.gold cost then
                        say_title
("Teleporter:")
                        
say("Ich würde dich auch umsonst teleportieren,")
                        
say("aber ich habe eine große Familie. Um sie zu")
                        
say("ernähren, muss ich Geld verdienen.")
                        
say_reward(string.format("Es kostet %d Yang."cost))
                    else
                        if 
sub_set2 == 1 then
                            say_title
("Teleporter:")
                            
say("Ich teleportiere dich dorthin.")
                            
wait()

                            if 
empire == 1 then
                                pc
.warp(474300,954800)
                            elseif 
empire == 2 then
                                pc
.warp(63800,166400)
                            elseif 
empire == 3 then
                                pc
.warp(959900,269200)
                            
end    
                        
elseif sub_set2 == 2 then
                            say_title
("Teleporter:")
                            
say("Ich teleportiere dich dorthin.")

                            
wait()
                            if 
empire == 1 then
                                pc
.warp(353100,882900)
                            elseif 
empire == 2 then
                                pc
.warp(145500,240000)
                            elseif 
empire == 3 then
                                pc
.warp(863900,246000)
                            
end    
                        end

                        pc
.changegold(-cost)
                    
end
                end
            end
        end 
-- end_of_chat
     end 
-- end_of_state
end 
-- end_of_quest 
Leider kann ich mit der Quest den Teleporter nicht mehr anklicken. :(
03/13/2011 16:29 MrOnline#1671
Ja, hab eben nach gesehen, den Befehl gibts tatsächlich nicht -.-
Weiß jemand vllt mit welchem Befehl ich bei einer PvP-quest das Level des Gegners festlegen kann? Sprich: der Gegner muss mindestens level 40 sein, damit er für die quest relevant ist, unter Level 40 zählt es nicht.
03/14/2011 15:45 Endless.#1672
Hab hier eine Quest die einen Bugfixx braucht :<
Die Quests beinhaltet, das ein Spieler mit Lv. 20+
Paar Metinsteine killen muss. Dieser bekommt dann 3 Items..
aber wenn er sie auf dem Weg zu Uriel vielleicht wegwirft oder so
dann hat die Quests nen Knick.. und da tu ich lieber was^^
so werden die anderen 4 Teile der Quests auch ablaufen.

PHP Code:

quest metin2_stone1 begin
    state start begin
        when login 
or levelup with pc.get_level() >= 20 begin
            set_state
(infor)
        
end
    end
    state infor begin
        when letter begin
            send_letter
("Die Metinsteine")
        
end
        when button 
or info begin
            say 
("Gehe zu Uriel um mehr über")
            
say ("diese Metinsteine zu erfahren.")
            
set_state(uri)
        
end
    end
    state uri begin
        when 20011.chat
."Die Metinsteine" begin
            say 
("Sei gegrüsst, "..pc.get_name().." !")
            
say ("Wie ich sehe bist du schon viel stärker")
            
say ("geworden, und kannst mir sogar schon helfen.")
            
say ("Es handelt sich um die Metinsteine die hier")
            
say ("überall in der Welt vertreut sind und Monster")
            
say ("herlocken die andere Besucher plagen.")
            
say ("Laut meiner Studie gibt es in dieser Umgebung")
            
say ("4 Verschiedene Sorten der Steine. Du erkennst diese")
            
say ("an dem farbigen Nebel die von den Steinen kommt.")
            
say ("Bitte zerstöre mir folgende Steine")
            
say ("genau in dieser Reihenfolge und bringe mir alles:")
            
say_reward ("Metin des Kummers, Metin des Kampfes,")
            
say_reward ("Metin der Schlacht und Metin der Gier.")
            
set_state(kill)
        
end
    end
    state kill begin
        when 8001.kill begin
            say 
("Gut, nun zu Metin des Kampfes!")
            
pc.give_item2(30150)
            
set_state(next)
        
end
    end
    state next begin
        when 8002.kill begin
            say 
("Super, weiter zu Metin der Schlacht!")
            
pc.give_item2(30166)
            
set_state(next1)
        
end
    end
    state next1 begin
        when 8003.kill begin
            say 
("Sehr gut, nun zum Letzen!")
            
pc.give_item2(30220)
            
set_state(next2)
        
end
    end
    state next2 begin
        when 8004.kill begin
            say 
("Gut gemacht! Du hast")
            
say ("Alles gefunden, auf zu Uriel!")
            
set_state(back)
        
end
    end
    state back begin
        when 20011.chat
."Habe alles gefunden" begin
--Ab hier brauch ich dann etwas womit man ALLE Items braucht damit es weitergeht!-- 

Würde mich freuen , wenn diese Quest bugfrei läuft ;)
Gebe Thanks.



Gruß

Endless;)
03/14/2011 15:54 .Delta#1673
machs doch mit if, also:
PHP Code:
if pc.count_item(30150) >= and pc.count_item(30166) >= and pc.count_item(30220) >= 1 then 
dürfte doch so gehen oder nicht?
03/14/2011 17:03 Endless.#1674
wusste nicht das dies mit dem "and" geht..
Danke dir^^

geht es auch mit:

when 20011.chat."Text" with pc.count_item(ID) >= and ... usw usw

also direkt mit when?
03/14/2011 17:21 .Delta#1675
ähm bin mir nicht sicher, aber probiers mal aus, kann nicht schaden ;)
Dürfte aber eigentlich damit funktionieren:
PHP Code:
when 20011.chat."Text" with pc.count_item(30150) >= and pc.count_item(30166) >= and pc.count_item(30220) >= 1 begin 
03/15/2011 19:43 BartSimpson9#1676
Schaut ihr auch über die mob_drop_item drüber?

Wenn ja bräuchte ich hier mal ein wenig Hilfe:

PHP Code:
Group    ork                
{                    
    
Type    kill            
    Mob    693            
    kill_drop    400            
    1    Á¶°³    3    100    10

Ich möchte das der Orkführer zu 100% bei jedem Kill 3 Muschlen fallen lässt. Wo liegt mein Fehler?

Ein Danke ist euch auf jedenfall sicher!
Grüße Bart
03/15/2011 19:45 .Delta#1677
Quote:
Originally Posted by BartSimpson9 View Post
Schaut ihr auch über die mob_drop_item drüber?

Wenn ja bräuchte ich hier mal ein wenig Hilfe:

PHP Code:
Group    ork                
{                    
    
Type    kill            
    Mob    693            
    kill_drop    400            
    1    Á¶°³    3    100    10

Ich möchte das der Orkführer zu 100% bei jedem Kill 3 Muschlen fallen lässt. Wo liegt mein Fehler?

Ein Danke ist euch auf jedenfall sicher!
Grüße Bart
hm ich würde sagen du musst 3 Zeilen machen, indenen jeweils eine Muschel gedroppt wird (Muscheln sind nicht stapelbar)
und die Zahl für 100% drop ist glaube ich 400
03/15/2011 20:42 The Bull#1678
Ich hätt da auch was...
2x ein Fehler bei "make"



Fehlercode 1. Quest:
PHP Code:
syntax error : [string "go_to_disciplepc . count_item ( 30224 ) > 0"]:44: <eofexpected near `else'
geheimnis134.quest:152:Abort trap (core dumped) 

Fehlercode 2. Quest:
PHP Code:
syntax error : [string "information"]:31: <eofexpected near `elseif'
offenbarung.quest:68:Abort trap (core dumped) 
Die 1. Ist quasi nur von den Items und vom Text her geänderte Bio Lvl 4 Quest.

Die 2. Ist die Metinebene Quest, die aber auch irwie ne Macke hat.
Weiß einer was ?


MfG Bull
03/15/2011 20:49 .Delta#1679
probier die 1. mal so
03/15/2011 20:54 The Bull#1680
nope.. genau der gleiche fehler.. k.a was du verändert hast

MfG Bull