[SERVICE] Die Questkontrolle

02/28/2012 18:07 RealMadrid94rk#4921
Quote:
Originally Posted by JeeX View Post
Bei, feuersigel.quest kommt das:

PHP Code:
QUEST feuersigel
STATE 
start
WHEN  
20096.chat
say_title 
"Die nächste Ebene:" )
say "" )
say "Guten Tag." )
say "Ziehe das Item Zahn des dunklen Fürste" )
say "auf mich, um in die höhere Ebene zu gelangen!" )
if 
pc count_item 70045 ) == 0 then
return
end
say 
"Also, willst du nun in die nächste Ebene?" )
say_red "Aber Achtung!!" )
say_red "Dort lauert ein böser Drache!" )
local s select "Ja!" "Nein!" )
if 
== 1 then
pc 
remove_item 70045 )
pc warp 460800 1.0496e+06 )
end
if == 2 then
say 
"Ok, bis später" )
return
end

syntax error 
: [string "start"]:4: `)' expected near `Zahn'
feuersigel.quest:24:Error occured on compile feuersigel.quest 
so
02/28/2012 23:49 JeeX#4922
PHP Code:
quest feuersigel begin
    state start begin
        when 20096.chat begin
            say_title
("Die nächste Ebene:")
            
say("")
            
say("Guten Tag.")
            
say("Ziehe das Item Zahn des dunklen Fürste")
            
say("auf mich, um in die höhere Ebene zu gelangen!")
            if 
pc.count_item(70045)==0 then
                
return
            
end    
            say
("Also, willst du nun in die nächste Ebene?")
            
say_red("Aber Achtung!!")
            
say_red("Dort lauert ein böser Drache!")
            
local s select("Ja!""Nein!")
            if 
== 1 then
                pc
.remove_item(700451)
                
pc.warp(460800 1049600)
            
end
            
if == 2 then
                say
("Ok, bis später")
                return  
         
end
        end
    end
end 
Fehler beim make.py
PHP Code:
syntax error : [string "start"]:15: `)' expected near `1.0496e+06'
feuersigel.quest:24:Error occured on compile feuersigel.quest 
Langsam wird die Quest zur Qual.. :/
Is ein wichtiges bestandteil auf meinem Server, bräuchte die wirklich dringend^^
02/28/2012 23:56 .Delta#4923
dir fehlt bei pc.warp n , zwischen den zahlen ;)
02/29/2012 12:08 Night³#4924
Hallo epvp kan mir einer bei der quest helfen

PHP Code:
quest phoenix begin
    state start begin
        when 
*ITEM_VNUM*.use begin  
            local old_horse_name 
horse.get_name() ;
            
say_title("Phönix")
            if 
string.len(old_horse_name) == 0 then
            say_reward
("Dein Phönix besitzt noch keinen Namen.")
            
say_reward("Gebe zuerst deinem Pferd einen Namen.")
            return
            
end
            say
("")
            
say("Hallo mein Herr")
            
say("Willst du mich dabei haben?")
            
say("......")
            
say("Los hol mich!")
            
say("")
            
say_reward("Willst du reiten?")
            
local main_set select("Herholen","Jetzt nicht")
            if 
main_set == 2 then
            
return
            
end
            chat
("Dein Phönix wurde gerufen!")
            
horse.set_level ("28")
            
horse.ride()
            
pc.mount(*Phönix_Vnum*)
            
pc.mount_bonus(apply.ATT_GRADE_BONUS,250,2400)
            
affect.remove_collect()
            
pc.unmount() horse.unsummon() horse.summon()
        
end
    end
end 
für python die geht nicht ihrgend wie bei mir net
03/01/2012 09:11 .HC'Destrox#4925
Ich schätze mal du hast die Item-Vnum
Code:
when *ITEM_VNUM*.use begin
nicht eingetragen & die Phönix-Vnum
Code:
pc.mount(*Phönix_Vnum*)
auch nicht ;)

Wenns stimmt, erst angucken, dann nachfragen :)

Mfg, Destroyer446

€dit: Meine Frage: Wo speichert er "char_log" in der DB ab?
Danke ;)
03/01/2012 10:32 schattenwolf90#4926
Hallo Community,

Folgendes Problem: Ich versuche mich seit kurzen als Questwriter und steh so ziemlich noch sehr am Anfang.. nun habe ich meine 1. Quest geschrieben und irgendwie haut Sie nicht so ganz hin wie ich das will..

PHP Code:
quest Levelquest begin
    state start begin
        when login with pc
.level >= 1 begin
            set_state
(Levelquest)
        
end
    end

    state Levelquest begin
        when letter begin
            send_letter
("Töte Monster 1")
        
end

        when info 
or button begin
            say
("Hey du!")
            
say("Suchst du etwas?")
            
say("Eine Lange Aufgabe wartet auf dich!")
            
say_reward("Toete 25 Wildhunde")
            
say_reward("Toete 25 Blauwölfe")
            
say_reward("Toete 25 Braunbaeren")
            
say_reward("Toete 50 Weißer Eid")
            
say_reward("Toete 75 Schwarzer Ork")
            
say_reward("Toete 50 Dunkler Peiniger")
            
say_reward("Toete 150 Roter Boeser Baum")
            
say_reward("Toete 350 Daemonenbogenschuetzen")
            
say_reward("Toete 500 Unterwelt-Eissplitter")
            
say_reward("Toete 750 Saetou-Kaempfer")
            
say_reward("Toete 750 Saetou-Bogenschuetzen")
            
say("")
            
pc.setqf("state"1)
            
q.set_counter("Wildhund"25)
            
pc.setqf("state"1)
            
q.set_counter("Blauwolf"25)
            
pc.setqf("state"1)
            
q.set_counter("Braunbaer"25)
            
pc.setqf("state"1)
            
q.set_counter("Weißer Eid"50)
            
pc.setqf("state"1)
            
q.set_counter("Schwarzer Ork"75)
            
pc.setqf("state"1)
            
q.set_counter("Dunkler Peiniger"50)
            
pc.setqf("state"1)
            
q.set_counter("Plagemann"150)
            
pc.setqf("state"1)
            
q.set_counter("Daemonenbogenschuetzen"350)
            
pc.setqf("state"1)
            
q.set_counter("Buhmann"100)
            
pc.setqf("state"1)
            
q.set_counter("Boeser Baum"150)
            
pc.setqf("state"1)
            
q.set_counter("Geisterbaum"150)
        
end

        when 101.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Wildhund"count)
            
end
        when 104.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Blauwolf"count)
            
end
        when 113.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Braunbaer"count)
            
end
        when 301.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Weißer Eid"count)
            
end
        when 636.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Schwarzer Ork"count)
            
end
        when 706.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Dunkler Peiniger"count)
            
end
        when 903.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Plagemann"count)
            
end
        when 1002.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Daemonenbogenschuetzen"count)
            
end
        when 1303.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Buhmann"count)
            
end
        when 2305.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Boeser Baum"count)
            
end
        when 2301.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 1 then
                pc
.setqf("state"count)
                
q.set_counter("Geisterbaum"count)
            
end
                
            
if count == 0 then
                say_title
("Name")
                
say("WOOOOOW!!!")
                
say("Du hast die Quest erfolgreich abgeschlossen!")
                
say("Du erhälst:")
                
say_reward("Giftschwert+0")
                
say_reward("Grollschwert+0")
                
say_reward("Orchideenglocke+0")
                
say_reward("Loewenschwert+0")
                
say_reward("Teufelfluegelschakrams+0")
                
say_reward("Kraehenstahlbogen+0")
                
say_reward("50 Mio Yang")
                
pc.change_money(50000000)
                
pc.give_item2(1801)
                
pc.give_item2(31601)
                
pc.give_item2(51201)
                
pc.give_item2(1901)
                
pc.give_item2(11391)
                
pc.give_item2(21791)
                
clear_letter()
                
set_state(__COMPLETE__)

            
end
        end
    end

    state __COMPLETE__ begin
    end
end 
Könnte mir eventuell jemand sagen warum meine Quest nicht Funktioniert? -.-

MfG.
03/01/2012 15:40 Sp0ngeb0b ist cool#4927
Probiers mal so :p

PHP Code:
quest Levelquest begin
    state start begin
        when login with pc
.level >= 1 begin
            set_state
(Levelquest)
        
end
    end
    state Levelquest begin
        when letter begin
            send_letter
("Töte Monster 1")
        
end

        when info 
or button begin
            a 
= {
                {
101"Wildhund"25},
                {
104"Blauwolf"25},
                {
113"Braunbaer"25},
                {
301"Weißer Eid"50},
                {
636"Schwarzer Ork"75},
                {
706"Dunkler Peiniger"150},
                {
903"Plagemann"350},
                {
1002"Daemonenbogenschuetzen"500},
                {
1303"Buhmann"750},
                {
2305"Boeser Baum"750},
                {
2301"Geisterbaum"750},
            }    
            
say("Hey du!")
            
say("Suchst du etwas?")
            
say("Eine Lange Aufgabe wartet auf dich!")
            for 
1table.getn(a)+1do
                
say_reward("Toete "..a[i][3].." "..a[i][2])
                
pc.setqf(a[i][2], a[i][3])
            
end    
        end
        when kill begin
            a 
= {
                {
101"Wildhund"25},
                {
104"Blauwolf"25},
                {
113"Braunbaer"25},
                {
301"Weißer Eid"50},
                {
636"Schwarzer Ork"75},
                {
706"Dunkler Peiniger"150},
                {
903"Plagemann"350},
                {
1002"Daemonenbogenschuetzen"500},
                {
1303"Buhmann"750},
                {
2305"Boeser Baum"750},
                {
2301"Geisterbaum"750},
            }
            for 
1table.getn(a)+1do
                if 
npc.get_race() == a[i][1then
                    pc
.setqf(a[i][2], pc.getqf(a[i][2])-1)
                
end
            end
            local ende 
0
            
for 112do
                if 
pc.getqf(a[i][2]) == 0 then
                    ende 
ende 1
                    
if ende >= 11 then
                        Levelquest
.give()
                    
end    
                end    
            end    
        end    
        
function give()
            
say("WOOOOOW!!!")
            
say("Du hast die Quest erfolgreich abgeschlossen!")
            
say("Du erhälst:")
            
say_reward("Giftschwert+0")
            
say_reward("Grollschwert+0")
            
say_reward("Orchideenglocke+0")
            
say_reward("Loewenschwert+0")
            
say_reward("Teufelfluegelschakrams+0")
            
say_reward("Kraehenstahlbogen+0")
            
say_reward("50 Mio Yang")
            
pc.change_money(50000000)
            
pc.give_item2(1801)
            
pc.give_item2(31601)
            
pc.give_item2(51201)
            
pc.give_item2(1901)
            
pc.give_item2(11391)
            
pc.give_item2(21791)
            
clear_letter()
            
set_state(__COMPLETE__)
        
end
    end
    state __COMPLETE__ begin
    end
end 
03/01/2012 20:19 schattenwolf90#4928
Quote:
Originally Posted by Sp0ngeb0b ist cool View Post
Probiers mal so :p

PHP Code:
quest Levelquest begin
    state start begin
        when login with pc
.level >= 1 begin
            set_state
(Levelquest)
        
end
    end
    state Levelquest begin
        when letter begin
            send_letter
("Töte Monster 1")
        
end

        when info 
or button begin
            a 
= {
                {
101"Wildhund"25},
                {
104"Blauwolf"25},
                {
113"Braunbaer"25},
                {
301"Weißer Eid"50},
                {
636"Schwarzer Ork"75},
                {
706"Dunkler Peiniger"150},
                {
903"Plagemann"350},
                {
1002"Daemonenbogenschuetzen"500},
                {
1303"Buhmann"750},
                {
2305"Boeser Baum"750},
                {
2301"Geisterbaum"750},
            }    
            
say("Hey du!")
            
say("Suchst du etwas?")
            
say("Eine Lange Aufgabe wartet auf dich!")
            for 
1table.getn(a)+1do
                
say_reward("Toete "..a[i][3].." "..a[i][2])
                
pc.setqf(a[i][2], a[i][3])
            
end    
        end
        when kill begin
            a 
= {
                {
101"Wildhund"25},
                {
104"Blauwolf"25},
                {
113"Braunbaer"25},
                {
301"Weißer Eid"50},
                {
636"Schwarzer Ork"75},
                {
706"Dunkler Peiniger"150},
                {
903"Plagemann"350},
                {
1002"Daemonenbogenschuetzen"500},
                {
1303"Buhmann"750},
                {
2305"Boeser Baum"750},
                {
2301"Geisterbaum"750},
            }
            for 
1table.getn(a)+1do
                if 
npc.get_race() == a[i][1then
                    pc
.setqf(a[i][2], pc.getqf(a[i][2])-1)
                
end
            end
            local ende 
0
            
for 112do
                if 
pc.getqf(a[i][2]) == 0 then
                    ende 
ende 1
                    
if ende >= 11 then
                        Levelquest
.give()
                    
end    
                end    
            end    
        end    
        
function give()
            
say("WOOOOOW!!!")
            
say("Du hast die Quest erfolgreich abgeschlossen!")
            
say("Du erhälst:")
            
say_reward("Giftschwert+0")
            
say_reward("Grollschwert+0")
            
say_reward("Orchideenglocke+0")
            
say_reward("Loewenschwert+0")
            
say_reward("Teufelfluegelschakrams+0")
            
say_reward("Kraehenstahlbogen+0")
            
say_reward("50 Mio Yang")
            
pc.change_money(50000000)
            
pc.give_item2(1801)
            
pc.give_item2(31601)
            
pc.give_item2(51201)
            
pc.give_item2(1901)
            
pc.give_item2(11391)
            
pc.give_item2(21791)
            
clear_letter()
            
set_state(__COMPLETE__)
        
end
    end
    state __COMPLETE__ begin
    end
end 
scheint irgendwo noch ein fehler zu sein, ich habe die quest hochgeladen etc aber ingame kommt sie nicht, also iwas ist immernoch falsch :S
03/01/2012 20:55 Sp0ngeb0b ist cool#4929
der Fehler liegt bei deinem questnamen ;)

machs mal so:
PHP Code:
quest auftrag_1 begin
    state start begin
        when login with pc
.level >= 1 begin
            set_state
(aufgabe)
        
end
    end
    state aufgabe begin
        when letter begin
            send_letter
("Töte Monster 1")
        
end

        when info 
or button begin
            a 
= {
                {
101"Wildhund"25},
                {
104"Blauwolf"25},
                {
113"Braunbaer"25},
                {
301"Weißer Eid"50},
                {
636"Schwarzer Ork"75},
                {
706"Dunkler Peiniger"150},
                {
903"Plagemann"350},
                {
1002"Daemonenbogenschuetzen"500},
                {
1303"Buhmann"750},
                {
2305"Boeser Baum"750},
                {
2301"Geisterbaum"750},
            }    
            
say("Hey du!")
            
say("Suchst du etwas?")
            
say("Eine Lange Aufgabe wartet auf dich!")
            for 
1table.getn(a)+1do
                
say_reward("Toete "..a[i][3].." "..a[i][2])
                
pc.setqf(a[i][2], a[i][3])
            
end    
            pc
.setqf("killed"0)
        
end
        when kill begin
            a 
= {
                {
101"Wildhund"25},
                {
104"Blauwolf"25},
                {
113"Braunbaer"25},
                {
301"Weißer Eid"50},
                {
636"Schwarzer Ork"75},
                {
706"Dunkler Peiniger"150},
                {
903"Plagemann"350},
                {
1002"Daemonenbogenschuetzen"500},
                {
1303"Buhmann"750},
                {
2305"Boeser Baum"750},
                {
2301"Geisterbaum"750},
            }
            for 
1table.getn(a)+1do
                if 
npc.get_race() == a[i][1then
                    pc
.setqf(a[i][2], pc.getqf(a[i][2])-1)
                    if 
pc.getqf(a[i][2]) == 0 then
                        pc
.setqf("killed"pc.getqf("killed")+1)
                        if 
pc.getqf("killed") >= 11 then
                            auftrag_1
.give()
                        
end    
                    end    
                end
            end
        end    
        
function give()
            
say("WOOOOOW!!!")
            
say("Du hast die Quest erfolgreich abgeschlossen!")
            
say("Du erhälst:")
            
say_reward("Giftschwert+0")
            
say_reward("Grollschwert+0")
            
say_reward("Orchideenglocke+0")
            
say_reward("Loewenschwert+0")
            
say_reward("Teufelfluegelschakrams+0")
            
say_reward("Kraehenstahlbogen+0")
            
say_reward("50 Mio Yang")
            
pc.change_money(50000000)
            
pc.give_item2(1801)
            
pc.give_item2(31601)
            
pc.give_item2(51201)
            
pc.give_item2(1901)
            
pc.give_item2(11391)
            
pc.give_item2(21791)
            
clear_letter()
            
set_state(__COMPLETE__)
        
end
    end
    state __COMPLETE__ begin
    end
end 
& nenn auch die datei an sich: auftrag_1.quest (nicht anders, sonst funktionieren die funktionen nicht :D)
03/01/2012 22:43 schattenwolf90#4930
Quote:
Originally Posted by Sp0ngeb0b ist cool View Post
der Fehler liegt bei deinem questnamen ;)

machs mal so:
PHP Code:
quest auftrag_1 begin
    state start begin
        when login with pc
.level >= 1 begin
            set_state
(aufgabe)
        
end
    end
    state aufgabe begin
        when letter begin
            send_letter
("Töte Monster 1")
        
end

        when info 
or button begin
            a 
= {
                {
101"Wildhund"25},
                {
104"Blauwolf"25},
                {
113"Braunbaer"25},
                {
301"Weißer Eid"50},
                {
636"Schwarzer Ork"75},
                {
706"Dunkler Peiniger"150},
                {
903"Plagemann"350},
                {
1002"Daemonenbogenschuetzen"500},
                {
1303"Buhmann"750},
                {
2305"Boeser Baum"750},
                {
2301"Geisterbaum"750},
            }    
            
say("Hey du!")
            
say("Suchst du etwas?")
            
say("Eine Lange Aufgabe wartet auf dich!")
            for 
1table.getn(a)+1do
                
say_reward("Toete "..a[i][3].." "..a[i][2])
                
pc.setqf(a[i][2], a[i][3])
            
end    
            pc
.setqf("killed"0)
        
end
        when kill begin
            a 
= {
                {
101"Wildhund"25},
                {
104"Blauwolf"25},
                {
113"Braunbaer"25},
                {
301"Weißer Eid"50},
                {
636"Schwarzer Ork"75},
                {
706"Dunkler Peiniger"150},
                {
903"Plagemann"350},
                {
1002"Daemonenbogenschuetzen"500},
                {
1303"Buhmann"750},
                {
2305"Boeser Baum"750},
                {
2301"Geisterbaum"750},
            }
            for 
1table.getn(a)+1do
                if 
npc.get_race() == a[i][1then
                    pc
.setqf(a[i][2], pc.getqf(a[i][2])-1)
                    if 
pc.getqf(a[i][2]) == 0 then
                        pc
.setqf("killed"pc.getqf("killed")+1)
                        if 
pc.getqf("killed") >= 11 then
                            auftrag_1
.give()
                        
end    
                    end    
                end
            end
        end    
        
function give()
            
say("WOOOOOW!!!")
            
say("Du hast die Quest erfolgreich abgeschlossen!")
            
say("Du erhälst:")
            
say_reward("Giftschwert+0")
            
say_reward("Grollschwert+0")
            
say_reward("Orchideenglocke+0")
            
say_reward("Loewenschwert+0")
            
say_reward("Teufelfluegelschakrams+0")
            
say_reward("Kraehenstahlbogen+0")
            
say_reward("50 Mio Yang")
            
pc.change_money(50000000)
            
pc.give_item2(1801)
            
pc.give_item2(31601)
            
pc.give_item2(51201)
            
pc.give_item2(1901)
            
pc.give_item2(11391)
            
pc.give_item2(21791)
            
clear_letter()
            
set_state(__COMPLETE__)
        
end
    end
    state __COMPLETE__ begin
    end
end 
& nenn auch die datei an sich: auftrag_1.quest (nicht anders, sonst funktionieren die funktionen nicht :D)
es gibt genau 2 möglichkeiten entweder ich bin nen totaler trottel
oder es ist immernoch nen fehler drinne... xD
habe alles wie gewohnt gemacht die quest in filezilla hochgeladen in locale_list eingefügt und dann
cd /home/xxxxxxxxxx
chmod 777 make.py
python make.py
dann reboot und geschaut ob die quest da ist, sollte ja eigtl ab lvl 1 da sein ... ist sie aber nicht >.<
03/01/2012 22:47 Sp0ngeb0b ist cool#4931
hmm könnte sein, dass dir befehle fehlen oder es einfach an deinen files liegt...

vllt. könnte die quest mal jmd. anders testen? :p
03/02/2012 13:05 .Scratchy.#4932
1. Quest

Mein Problem: Ich möchte einfügen, dass man auf einer bestimmten Map sein muss damit die Kills erst zählen! Jedoch weiß ich nicht genau wie das funktioniert. Habs mal probiert indem ich bei "when kill begin" einfach zusätzlich "with pc.get_map_index()==220 begin" dazugeschrieben hatte aber dann ging gar nichts mehr :-/


2. Quest

Mein Problem, jedes mal wenn ich den NPC anklicke muss ich vorher das Item 1 mal anklicken mit welchem man den Premium Status bekommt!
03/02/2012 13:22 .Delta#4933
1.
PHP Code:
when kill with pc.get_map_index() == 220 begin 
03/02/2012 13:27 .Scratchy.#4934
@Delta das hab ich ja auch so geschrieben, nur wohin muss ich es überall setzen damit die Kills NUR auf dieser Map zählen und nicht überall?
03/02/2012 13:55 RealMadrid94rk#4935
dann machste halt ein if reinhauen nach dem kill begin, so:

If pc.get_map_index() == 220 then
...
end