[SERVICE] Die Questkontrolle

02/25/2012 10:14 Sp0ngeb0b ist cool#4846
PHP Code:
quest vote begin
    state start begin
        when 45678.
use begin
            
if pc get_level ( ) < 85 then 
                say 
("Dein LvL ist zu niedrig, du kanst sie erst mit LvL 85 öffnen")
                return
            
end 
            
if get_time() < pc.getqf("sperre"
                
say("Du musst noch warten!")
                return
            
end    
            say_title
("Votetruhe")
            
say("")
            
say("Du kannst diese Votetruhe tauschen")
            
say("gegen eine Itemtruhe.")
            
say("Aus der Itemtruhe können wertvolle")
            
say("Items herauskommen.")
            
say("Folgende Items kann diese Truhe beinhalten:")
            
say("Gelbe, Blaue und Grüne Diamanten, Rote Schreibfeder")
            
say("Feuer-Blume, Goldener Pilz, Piranha-Planze")
            
say(" 6/7 Boni switchen/einfügen und Regenbogenstein")
            
say("")
            
say_reward("Möchtest du nun eine Itemtruhe?")
            
local s select("Ja""Nein")
            if 
== 2 then
                
return
            
end    
            pc
.setqf("sperre"get_time()+60*60*24)
            
pc.remove_item(456781)
            
pc.give_item2(500111)
        
end
    end
end 
02/25/2012 11:46 [SA]Imbattle#4847
Quote:
Originally Posted by xxalbanxx3 View Post
PHP Code:
quest Reittier begin 
    state start begin 
        when 71900.
use begin  
            pc
.mount(21990)  
            
pc.mount_bonus(apply.MAX_HP,50000,900
            
pc.mount_bonus(apply.DEF_GRADE_BONUS,150,900
        
end 
    end 
end 
kannst du mir damit noch helfen
einfach pc.mount_bonus in die quest_functions eintragen ;)
02/25/2012 12:27 richib135#4848
Quote:
Originally Posted by Sp0ngeb0b ist cool View Post
PHP Code:
quest vote begin
    state start begin
        when 45678.
use begin
            
if pc get_level ( ) < 85 then 
                say 
("Dein LvL ist zu niedrig, du kanst sie erst mit LvL 85 öffnen")
                return
            
end 
            
if get_time() < pc.getqf("sperre"
                
say("Du musst noch warten!")
                return
            
end    
            say_title
("Votetruhe")
            
say("")
            
say("Du kannst diese Votetruhe tauschen")
            
say("gegen eine Itemtruhe.")
            
say("Aus der Itemtruhe können wertvolle")
            
say("Items herauskommen.")
            
say("Folgende Items kann diese Truhe beinhalten:")
            
say("Gelbe, Blaue und Grüne Diamanten, Rote Schreibfeder")
            
say("Feuer-Blume, Goldener Pilz, Piranha-Planze")
            
say(" 6/7 Boni switchen/einfügen und Regenbogenstein")
            
say("")
            
say_reward("Möchtest du nun eine Itemtruhe?")
            
local s select("Ja""Nein")
            if 
== 2 then
                
return
            
end    
            pc
.setqf("sperre"get_time()+60*60*24)
            
pc.remove_item(456781)
            
pc.give_item2(500111)
        
end
    end
end 

Funktioniert nicht :(

Folgende Fehlermeldung kommt:

syntax error : [string "start"]:6: `then' expected near `say'
vote.quest:31:Abort trap (core dumped)
Error occured on compile vote.quest
02/25/2012 13:10 |★|554#4849
PHP Code:
quest pvpsystem begin
    state start begin
        when login 
or levelup with pc.get_level() >= 15 begin
            set_state
(information)
        
end
    end
    
    state information begin
        when letter begin
            send_letter
("PvP Punkte")
        
end
        
        when button 
or info begin
            say_title
("PvP Guard:")
            
say("Hallo, ich bin dein PvP Guard.")
            
say("Ich helfe dir durch das PvP Punkte System.")
            
say("Das Prinzip ist einfach erklärt:")
            
say("Wenn du andere Spieler tötest,")
            
say("bekommst du sogenannte PvP Taler.")
            
say("Für eine bestimmte Anzahl an Punkten kannst du")
            
say("bei mir einige schöne Sachen erstehen.")
            
say("Wenn du Spieler eines anderen Reiches tötest,")
            
say("bekommst du mehr Taler,")
            
say("als wenn du einen Spieler deines Reiches tötest.")
            
say("")
            
wait()
            
say_title("PvP Guard:")
            
say_reward("Töten eines Spielers eines anderen Reiches = +100 Taler")
            
say_reward("Töten eines Spielers deines Reiches = +75 Taler")
            
say_reward("Getötet werden = -50 Taler")
            
pc.setqf("counter"0)
            
set_state(kd)
        
end
    end
    
    state kd begin
        when letter begin
            send_letter
("PvP Panel aktivieren")
        
end
        
        when button 
or info begin
            say_title
("PvP Guard:")
            
say("Hier wirst du in Zukunft verschiedene")
            
say("Auswahlmöglichkeiten zur Verfügung haben,")
            
say("wie zum Beispiel die Anzahl deiner Kills, etc. .")
            
say("Als kleines Startkapital bekommst du 1000 PvP Taler.")
            
say("")
            
say_reward("Du hast 1000 PvP Taler erhalten.")
            
say("")
            
pc.setqf("counter"pc.getqf("counter")+1000)
            
pc.setqf("killcounter"pc.getqf("killcounter")+1)
            
pc.setqf("deathcounter"pc.getqf("deathcounter")+1)
            
set_state(lolol)
        
end
    end
    
    state lolol begin
        when login begin
            cleartimer
("checkDeathTimerMain")
            
timer('checkDeathTimerMain'2
        
end
    
        when letter begin
            send_letter
("PvP Panel")
        
end
    
        when button 
or info begin
            say_title
("PvP Panel:")
            
say("Wähle eine Möglichkeit aus:")
            
local z select("FAQ""Deine Kills""Shop""Abbrechen")
            if 
== 1 then
                say_title
("PvP Panel:")
                
say("Hier findest du häufig gestellte Fragen")
                
say("und selbstverständlich auch ihre Antworten.")
                
say("Entscheide dich für eine der Fragen.")
                
local x select("Wie Taler bekommen?""Was ist K/D?""Minus Taler""Abbrechen")
                if 
== 1 then
                    say_title
("PvP Panel:")
                    
say("Du bekommst Taler,")
                    
say("wenn du andere Spieler tötest.")
                    
say("Es wird unter den Spielern in 2 Kategorien unterschieden.")
                    
say_reward("Töten eines Spielers eines anderen Reiches = +100 Taler")
                    
say_reward("Töten eines Spielers deines Reiches = +75 Taler")
                    
say_reward("Getötet werden = -50 Taler")
                    
say("")
                elseif 
== 2 then
                    say_title
("PvP Panel:")
                    
say("K/D bedeuted Kills per Death.")
                    
say("Das heisst,")
                    
say("wie viele Male du Leute getötet hast")
                    
say("geteilt durch")
                    
say("wie viele Male du gestorben bist.")
                    
say("Je mehr Leute du killst, umso höher")
                    
say("ist deine K/D.")
                    
say_reward("Anzahl Kills / Anzahl Tode")
                    
say("")
                elseif 
== 3 then
                    say_title
("PvP Panel:")
                    
say("Minus Taler bekommst du,")
                    
say("wenn du getötet wirst.")
                    
say("Egal, aus welchem Reich dein Mörder kommt,")
                    
say("werden dir 50 Taler abgezogen.")
                    
say("Diese Minus Taler lassen sich selbstverständlich")
                    
say("Durch normale Taler ausgleichen.")
                    
say_reward("Getötet werden = -50 Taler")
                    
say_reward("Minus Taler lassen sich ausgleichen.")
                
end
            
elseif == 2 then
                say_title
("PvP Panel:")
                
say("Hier kannst du deine wichtigsten PvP Daten einsehen.")
                
say("")
                
local killc pc.getqf("killcounter")
                
local deathc pc.getqf("deathcounter")
                
local kdratio killc/deathc
                say_reward
("Kills: "..killc)
                
say_reward("Tode: "..deathc)
                
say_reward("K/D: "..kdratio)
                
say("")
                return
            elseif 
== 3 then
                say_title
("PvP Panel:")
                
say("Hier kannst du für PvP Punkte einkaufen.")
                
say("")
                
local q select("Rangpunkte""Abbrechen")
                if 
== 1 then
                    local oldAlignment 
pc.get_alignment()
                    
say_title("PvP Panel:")
                    
say("Du willst Rangpunkte kaufen?")
                    
say("Dann bist du hier genau richtig!")
                    
local e select("500 Rang""1000 Rang""2000 Rang""Abbrechen")
                    if 
== 1 then
                        say_title
("PvP Panel:")
                        
say("Du willst also 500 Rangpunkte für 1000 Taler kaufen?")
                        
say("Bist du dir sicher?")
                        
local m select("Ja""Nein")
                        if 
== 2 then return end //hier
                        
say_title("PvP Panel:")
                        
say_reward("Du hast 500 Rangpunkte erhalten!")
                        
say_reward("Dein Kontostand ist um 1000 Taler gesunken!")
                        
pc.change_alignment(oldAlignment+500)
                        
pc.setqf("counter"pc.getqf("counter")-1000)
                    elseif 
== 2 then 
                        say_title
("PvP Panel:")
                        
say("Du willst also 1000 Rangpunkte für 2000 Taler kaufen?")
                        
say("Bist du dir sicher?")
                        
local n select("Ja""Nein")
                        if 
== 2 then return end //hier
                        
say_title("PvP Panel:")
                        
say_reward("Du hast 1000 Rangpunkte erhalten!")
                        
say_reward("Dein Kontostand ist um 2000 Taler gesunken!")
                        
pc.change_alignment(oldAlignment+1000)
                        
pc.setqf("counter"pc.getqf("counter")-2000)                                  
                    elseif 
== 3 then //hier
                        
say_title("PvP Panel:")
                        
say("Du willst also 2000 Rangpunkte für 4000 Taler kaufen?")
                        
say("Bist du dir sicher?")
                        
local o select("Ja""Nein"//hier
                        
if == 1 then
                            say_title
("PvP Panel:")
                            
say_reward("Du hast 2000 Rangpunkte erhalten!")
                            
say_reward("Dein Kontostand ist um 4000 Taler gesunken!")
                            
pc.change_alignment(oldAlignment+2000)
                            
pc.setqf("counter"pc.getqf("counter")-4000)                                        
                        
end //hier fehlt nochn return
                    
end
                end
            end
            
return
        
end
        
        when kill begin
            
if npc.is_pc() then
                
if npc_is_same_empire then
                    pc
.setqf("killcounter",pc.getqf("killcounter")+1)
                    
pc.setqf("counter",pc.getqf("counter")+50)
                    
chat("Du hast 50 PvP Taler erhalten!")
                else
                    
pc.setqf("killcounter",pc.getqf("killcounter")+1)
                    
pc.setqf("counter",pc.getqf("counter")+75)
                    
chat("Du hast 75 PvP Taler erhalten!")
                
end
            end
        end
        
        when checkDeathTimerMain
.timer begin
            cleartimer
("checkDeathTimerSub")
            
pvpsystem.checkDeath()            
            
timer("checkDeathTimerSub"2)
        
end
        
        when checkDeathTimerSub
.timer begin
            cleartimer
("checkDeathTimerMain")
            
pvpsystem.checkDeath()            
            
timer("checkDeathTimerMain"2)
        
end
        
        
function checkDeath()
            if 
pc.is_dead() and npc.is_pc() then
                pc
.setqf("counter"pc.getqf("counter")-50)
                
pc.setqf("deathcounter"pc.getqf("deathcounter")+1)
                
chat("Du bist tot! Du verlierst 50 Taler!")            
            
end
            
return
        
end
    end
end 
Für das Problem mit dem mehrfach kaufen.
Ich würde versuchen an den markierten Stellen noch eine Abfrage einzubauen, ob der Player überhaupt genug PvP Punkte hat, da sonst einfach nur abgezogen wird, mir das aber total wurscht wäre. :P
02/25/2012 13:52 Lеlouch#4850
Die Quest öffnet sich zwar, aber die Ä; Ü; Ö etc sind als andere Buchstaben angezeigt
auch die Aufgabe in "say_gold" erscheint nicht und man weiß nicht wie viele man noch
töten muss und die Quest funzt einfach nicht :D


PHP Code:
quest milligaul begin
    state start begin
        when login with pc
.level >= 70 begin
            set_state
(information)
        
end
    end

    state information begin
        when letter begin
            send_letter
("Millitärs-Pferd")
        
end

        when info 
or button begin
            say_reward
("Millitärs-Pferd")
            
say("Willkommen tapferer Krieger!")
            
say("Es trauen sich nur starke Kämpfer")
            
say("diese Aufgabe zu öffnen. Da du die")
            
say("Aufgabe geöffnet hast, solltest du Stark")
            
say("sein. Du bekommst dein Millitärs-Pferd")
            
say("erst dann, wenn du die Aufgabe erfüllst.")
            
say_gold("Töte 3x Sensenmänner.")
            
say("")
            
pc.setqf("state"3)
            
q.set_counter("Sensenmann"3)
        
end

        when 1093.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 3 then
                pc
.setqf("state"count)
                
q.set_counter("Wildhund"count)
            
end
            
if count == 0 then
                say_title
("Millitärs-Pferd")
                
pc.give_item2(500531)
                
horse set_level(21)
                
clear_letter()
                
set_state(__COMPLETE__)

            
end
        end
    end

    state __COMPLETE__ begin
    end
end 
02/25/2012 14:27 xxalbanxx3#4851
PHP Code:
quest drachenraum begin
state start begin
when 30121.chat
."Drachenraum" begin
say
("")
say(""..mob_name(30121).."")
say("Du willst also die Drachenraum betreten?")
say("Nur wenige koennen die Monster in ihr besiegen,")
say("also sei achtsam!")
say("Ich kann dich dort hinbringen,")
say("Es kostet dich allerdings etwas!")
say_reward("Du benoetigst einen")
say_reward("Seelenstein der Anfuehrer dafuer!")
wait()
say("")
say("")

if 
pc.count_item(30227)>0 then
say
("")
say(""..mob_name(30121).."")
say("Ich bringe dich nun in die Drachenraum!")
say("")
pc.remove_item(30227)

elseif 
pc.count_item(30227) >0 then
say
("")
say(""..mob_name(30121).."")
say("Du besitzt des Seelenstein der Anführer! !")
say("")

else
say("")
say(""..mob_name(30121).."")
say("Du bist nicht im Besitz eines Seelenstein der Anführer!")
say("Ohne einen kannst du die Grotte nicht erreichen.")
say("Du kannst ihn ab Level 100 von allen Monstern bekommen!")
return
end

say
("Du wirst nun teleportiert!")    
say("Aber sei vorsichtig!")    
wait()
pc.warp(8432001066800)

end
end
end 
Ich kann einfach keine quests schreiben ;D-.-"
02/25/2012 14:46 RealMadrid94rk#4852
Weder der eine, noch der andere Mob spawnt nach dem killen.

PHP Code:
quest grotte2bosse begin
    state start begin
    
    
        when 2491.kill begin 
-- Hauptmann Yonghan
            mob
.spawn2492) -- General Yonghan
        end        
        
        when 2494.kill begin 
-- Hauptmann Huanshin
            mob
.spawn2495map_local_x map_local_y 1) -- General Huanshin
        end
    end
end 
02/25/2012 15:42 Retrograd#4853
habe eine frage bzgl. questflags

kann man in 2 verschiedenen quests die gleich questflag abrufen

wenn nein gibt es da eine möglichkeit das anders zu regeln
02/25/2012 16:46 richib135#4854
Quote:
Originally Posted by Sp0ngeb0b ist cool View Post
PHP Code:
quest vote begin
    state start begin
        when 45678.
use begin
            
if pc get_level ( ) < 85 then 
                say 
("Dein LvL ist zu niedrig, du kanst sie erst mit LvL 85 öffnen")
                return
            
end 
            
if get_time() < pc.getqf("sperre"
                
say("Du musst noch warten!")
                return
            
end    
            say_title
("Votetruhe")
            
say("")
            
say("Du kannst diese Votetruhe tauschen")
            
say("gegen eine Itemtruhe.")
            
say("Aus der Itemtruhe können wertvolle")
            
say("Items herauskommen.")
            
say("Folgende Items kann diese Truhe beinhalten:")
            
say("Gelbe, Blaue und Grüne Diamanten, Rote Schreibfeder")
            
say("Feuer-Blume, Goldener Pilz, Piranha-Planze")
            
say(" 6/7 Boni switchen/einfügen und Regenbogenstein")
            
say("")
            
say_reward("Möchtest du nun eine Itemtruhe?")
            
local s select("Ja""Nein")
            if 
== 2 then
                
return
            
end    
            pc
.setqf("sperre"get_time()+60*60*24)
            
pc.remove_item(456781)
            
pc.give_item2(500111)
        
end
    end
end 

Der Timer funktioniert nicht :(

Folgende Fehlermeldung kommt:

syntax error : [string "start"]:6: `then' expected near `say'
vote.quest:31:Abort trap (core dumped)
Error occured on compile vote.quest
02/25/2012 18:35 circles1#4855
So ganz komisch :D ich hab ne quest gemacht für item Rotes Monokel (70030) die geht auch durch ohne fehlermeldung by python make.py aber wenn ich ingame das item anklich geht garnichts :D

02/25/2012 18:46 RealMadrid94rk#4856
Musst in der Item Proto den type auf 18 setzen.
02/25/2012 19:22 .Delta#4857
@ richib135
bei deinem 2. if statement fehlt am ende der Zeile ein then ;)
02/25/2012 19:51 richib135#4858
Delta nimm mich mal bei Skype an.

PHP Code:
quest vote begin
    state start begin
        when 45678.
use begin
            
if pc get_level ( ) < 85 then 
                say 
("Dein LvL ist zu niedrig, du kanst sie erst mit LvL 85 öffnen")
                return
            
end 
            
if get_time() < pc.getqf("sperre"then
                say
("Du musst noch warten!")
                return
            
end    
            say_title
("Votetruhe")
            
say("")
            
say("Du kannst diese Votetruhe tauschen")
            
say("gegen eine Itemtruhe.")
            
say("Aus der Itemtruhe können wertvolle")
            
say("Items herauskommen.")
            
say("Folgende Items kann diese Truhe beinhalten:")
            
say("Gelbe, Blaue und Grüne Diamanten, Rote Schreibfeder")
            
say("Feuer-Blume, Goldener Pilz, Piranha-Planze")
            
say(" 6/7 Boni switchen/einfügen und Regenbogenstein")
            
say("")
            
say_reward("Möchtest du nun eine Itemtruhe?")
            
local s select("Ja""Nein")
            if 
== 2 then
                
return
            
end
            pc
.setqf("sperre"get_time()+60*60*24)
            
pc.remove_item(456781)
            
pc.give_item2(500111)
        
end
    end
end 
So funktioniert die Quest auch nicht :(


Fehlermeldung:

expecting 'when' or 'function'
vote.quest:27:Abort trap (core dumped)
Error occured on compile vote.quest
02/25/2012 21:00 Lеlouch#4859
Die Quest öffnet sich zwar, aber die Ä; Ü; Ö etc sind als andere Buchstaben angezeigt
auch die Aufgabe in "say_gold" erscheint nicht und man weiß nicht wie viele man noch
töten muss und die Quest funzt einfach nicht :D


PHP Code:
quest milligaul begin
    state start begin
        when login with pc
.level >= 70 begin
            set_state
(information)
        
end
    end

    state information begin
        when letter begin
            send_letter
("Millitärs-Pferd")
        
end

        when info 
or button begin
            say_reward
("Millitärs-Pferd")
            
say("Willkommen tapferer Krieger!")
            
say("Es trauen sich nur starke Kämpfer")
            
say("diese Aufgabe zu öffnen. Da du die")
            
say("Aufgabe geöffnet hast, solltest du Stark")
            
say("sein. Du bekommst dein Millitärs-Pferd")
            
say("erst dann, wenn du die Aufgabe erfüllst.")
            
say_gold("Töte 3x Sensenmänner.")
            
say("")
            
pc.setqf("state"3)
            
q.set_counter("Sensenmann"3)
        
end

        when 1093.kill begin
            local count 
pc.getqf("state") - 1
            
if count <= 3 then
                pc
.setqf("state"count)
                
q.set_counter("Wildhund"count)
            
end
            
if count == 0 then
                say_title
("Millitärs-Pferd")
                
pc.give_item2(500531)
                
horse set_level(21)
                
clear_letter()
                
set_state(__COMPLETE__)

            
end
        end
    end

    state __COMPLETE__ begin
    end
end 
02/25/2012 21:25 xxalbanxx3#4860
PHP Code:
quest drachenraum begin 
state start begin 
when 30121.chat
."Drachenraum" begin 
say
(""
say(""..mob_name(30121)..""
say("Du willst also die Drachenraum betreten?"
say("Nur wenige koennen die Monster in ihr besiegen,"
say("also sei achtsam!"
say("Ich kann dich dort hinbringen,"
say("Es kostet dich allerdings etwas!"
say_reward("Du benoetigst einen"
say_reward("Seelenstein der Anfuehrer dafuer!"
wait() 
say(""
say(""

if 
pc.count_item(30227)>0 then 
say
(""
say(""..mob_name(30121)..""
say("Ich bringe dich nun in die Drachenraum!"
say(""
pc.remove_item(30227

elseif 
pc.count_item(30227) >0 then 
say
(""
say(""..mob_name(30121)..""
say("Du besitzt des Seelenstein der Anführer! !"
say(""

else 
say(""
say(""..mob_name(30121)..""
say("Du bist nicht im Besitz eines Seelenstein der Anführer!"
say("Ohne einen kannst du die Grotte nicht erreichen."
say("Du kannst ihn ab Level 100 von allen Monstern bekommen!"
return 
end 

say
("Du wirst nun teleportiert!")     
say("Aber sei vorsichtig!")     
wait() 
pc.warp(8432001066800

end 
end 
end 
??