[SERVICE] Die Questkontrolle

01/23/2011 21:45 Mastermonkey#1321
@RealFreak

mach mal die größer vier abfrage in die ifabfrage rein:


und bau noch ein

pc.setqf("gläser",0)

vor
01/24/2011 17:55 .remiinD#1322
Hallo, wo liegt der fehler, ich kirge in VPC diesen Fehler:

Und hier die Quest:
01/24/2011 20:19 ~shaylan~#1323
du hast vergessen die Auswahl zwischen Ja Teleportieren und Ich bleibe hier zu beenden.

sprich da muss noch nen end nach return rein, dann sollte es funktionieren.


grüße

Habs mir mal kurz angeschaut, da is noch was anderes..mein testserver muckt gerade ständig wegen i-was auf..
ich schaus mir morgen nochmal an wenn Mastermonkey nicht schneller ist :)
01/25/2011 11:56 masterschwert#1324
PHP Code:
----------------------------------------------------
-- 
Grotte der Verbannung -- Entry Quest ----90005---
-- @ 
Hwa-Hae eintritt   -- ID 20092 -- Wasserstein --
----------------------------------------------------
quest kristallkammer  begin
    state start begin
        when 20092.chat
."Um Einlass bitten" begin
            
            say_title
("Hwa-Hae")
            
say("")
            
say("Halt! Ich bin Hwa-Hae vom Drachenorden, Hüterin")
            
say("des Portals. Nur mit Erlaubnis des Ordens und")
            
say("wenn du mir ein Wasserstein vorzeigen kannst,")
            
say("darfst du die Kammer von Beran-Setaou betreten!")
            if 
pc.count_item(90005) >= 1 and pc.level >= 75 then
                local s
=select("Wasserstein geben", "Wasserstein behalten")
                    
                    if 
s==1 then
                        pc
.remove_item(90005,1)
                        
pc.warp(1717,12204)
                    else
                        return
                    
end
                
            
else
                
say_reward("Wassersteine kannst du vom Sensenmann bekommen!")
            
end
        end    
    end
end 
Hey leute mein problem ist das wenn ich den Npc anklicke nichts passiert Vpc Fehler habe ich keinen. Hoffe ihr könnt helfen danke im vorraus...
01/25/2011 12:39 .2good4you111#1325
Haha Quest vom Betaserver nachgebaut :D

hat dein NPC in der DB on_click auf 1?
01/25/2011 12:47 masterschwert#1326
Joa hat er aber on_click war doch eigentlich nur für shops ?!
01/25/2011 15:21 'oShet#1327
Was ist daran falsch?

Quote:
quest event_map begin
state start begin
when login or levelup with pc.level >0 begin
set_state(newmap_enter)
end
end

state newmap_enter begin
when 20006.chat."Neue Map" with pc.level >= 95 begin
say(""..mob_name(20006)..":")
say("")
say("Wilkommen Reisender !!")
say("")
say("Wohin soll ich dich denn Teleportieren??")
say("")
local a= select("Shajong Map","Nein Danke")
if 1==a then
say(""..mob_name(20006)..":")
say("")
say("Let's Go")
say("Ich wünsche dir viel spaß :) !!")
wait()
pc.warp(105200 , 10000)
elseif 2==a then
say(""..mob_name(20006)..":")
say("")
say("Ok")
say("Dann bleib hier")
end


end


end

end
01/25/2011 15:40 .2good4you111#1328
PHP Code:
quest event_map begin
    state start begin 
        when 20006.chat
."Neue Map" with pc.level >= 95 begin
            say
(""..mob_name(20006)..":") 
            
say("") 
            
say("Wilkommen Reisender !!") 
            
say("") 
            
say("Wohin soll ich dich denn Teleportieren??") 
            
say("") 
            
local a= select("Shajong Map","Nein Danke") 
            if 
a == 1 then 
                say
(""..mob_name(20006)..":") 
                
say("") 
                
say("Let's Go") 
                
say("Ich wünsche dir viel spaß  !!") 
                
wait() 
                
pc.warp(105200 , 10000) 
            else
                
say(""..mob_name(20006)..":") 
                
say("") 
                
say("Ok") 
                
say("Dann bleib hier")
            
end
        end 
    end
end 
Da hattest du aber einige Fehler...
01/25/2011 21:10 Mastermonkey#1329
@ .remiinD
Sehr simpler fehler diesmal:

ja ich war schneller shaylan :D

das end wie shaylan schon sagte fehlte und was viele nicht wissen, der erste queststate muss immer start heißen!
Hier bittesehr!

Über thx wäre ich sehr verbunden auch wenn das nichts bringt :D
Vllt stärkt es mein ego^^.
01/25/2011 22:31 RealFreak#1330
Quest sieht jetzt so aus:
PHP Code:
quest blutstein begin
        state start begin
            when login 
or levelup with pc.level >= 75 begin
                set_state
(info)
            
end
        end
        state info begin
            when letter begin
                send_letter
("Geh zum Weisen Mann")
                
local v = find_npc_by_vnum(20095)
                if 
v != 0 then
                    target
.vid("__TARGET__", v, "Der Blutstein")
                
end
            end
            when info 
or button begin
                say_title
("Der Blutstein")
                
say("Der Weise Mann ist der Meinung du bist reif genug")
                
say("um dir einen Blutstein für den Zugang zur Grotte zu verdienen!")
            
end
            
            when __TARGET__
.target.click or 20095.chat."Der Blutstein" with pc.level >= 75 begin
            target
.delete("__TARGET__")        
            
say_title("Weiser Mann:")
            
say("Hallo!")
            
say("Möchtest du dir einen Blutstein verdienen?")
            
say("Ich warne dich!")
            
say("Es ist keine leichte Aufgabe!")
            
say("Willst du beginnen?")
            
local s= select("Auf gehts!","Nein danke")
            if 
s==1 then
                say
("Nungut!")
                
say("Als erstes musst du Vulkanglas besorgen!")
                
say("Dies kriegst du von Tausendkämpfern im Land der Riesen")
                
say_item_vnum(30188)
                
say_reward("4 Vulkanglas")
                
setstate(vulkangas)
                
pc.setqf("gläser",0)
            else
                
say("Eine gute Entscheidung!")
                
say("Auf Wiedersehn")
            
end
        end
    end
    state vulkangas begin
        when letter begin
            send_letter
("Suche das Vulkanglas!")
        
end
        when info 
or button begin
            say
("Besorge 4 Vulkanglas")
            
say("Dies erhälst du von Tausendkämpfern")
        
end
        when 1403.kill begin
            local pct 
= number(1,5)
            if 
pct==1 then
                pc
.give_item2(30188,1)
                
pc.setqf("gläser",pc.getqf("gläser")+1)
            
end
            
if pc.getqf("gläser")>=4 then
                say
("Gut gemacht!")
                
say("Besorge nun noch 6 Versteinerte Tränen!")
                
say("Diese musst du dir erkämpfen.")
                
say_item_vnum(30186)
                
pc.setqf("tränen",0)
                
setstate(rw2)
        
end
        end
    end
    state rw2 begin
        when letter begin
            send_letter
("Erkämpfe dir die Tränen!")
        
end
        when info 
or button begin
            say
("Besorge 6 Versteinerte Tränen")
            
say("Dies erhälst du von Tigergeistern")
        
end
        when 1304.kill begin
            local pct 
= number(1,2)
            if 
pct==1 then
                pc
.give_item2(30186,1)
                
pc.setqf("tränen",pc.getqf("tränen")+1)
            
end
            
if pc.getqf("tränen")>=6 then
                say
("Gut gemacht!")
                
say("Kehre zurück zum Weisen Mann!")
                
setstate(rw)
        
end
        end
    end
    state rw begin
        when letter begin
            local v 
= find_npc_by_vnum(20095)
            if 
v != 0 then
                target
.vid("__TARGET__", v, "Quest")
            
end
            send_letter
("Gehe zurück zum Weisen Mann!")
        
end
        when button 
or info begin
            say
("Gehe zum Weisen Mann zurück!")
        
end
        when __TARGET__
.target.click or
        
20095.chat."Quest" begin
        target
.delete("__TARGET__")        
        
say("..das glaubst du!")
        
say("Aber das ist noch nicht alles!")
        
wait()
        if 
pc.count_item(30186) >= 2 and pc.count_item(30188)>= 4 then
        pc
.remove_item(30186,2)
        
pc.remove_item(30188,4)
        
pc.give_item2(30189,1)
        
say("Gut gemacht")
        
say("Hier hast du Tränen von Baljit-Elvedi")
        
say("Gehe nun in den roten Wald")
        
say("")
        
say_item_vnum(30189)
        
say("")
        
say("Und suche die geheimnisvolle Stimme!")
        
say("Sie wird dir die Tränen zu einem Blutstropfen machen!")
        
setstate(blut)
        else
        
say("Du hast nicht alle benötigten Items!")
        
end
    end
    end
    state blut begin
        when letter begin
            send_letter
("Suche die Stimme")
            
träne = {
            { 
195, 211},
            { 
326, 302},
            { 
527, 90},
            { 
616, 257},
            { 
702, 262},
            { 
674, 38},
        }
        
local r2 =  number(1,6)
        
target.pos("träne", träne[r2][1], träne[r2][2], 68, "")
            
end
        when info 
or button begin
            say
("Suche die geheimnisvolle Stimme im roten Wald!")
        
end
        when träne
.target.arrive begin
            target
.delete("träne")
            
say("Sei gegrüßt!")
            
say("Ich bin die geheimnisvolle Stimme...")
            
wait()
            if 
pc.count_item(30189) >0 then
                pc
.remove_item(30189,1)
                
pc.give_item2(30187,1)
                
say("Ich mache die Tränen von Baljit-Elvedi zu einem Blutstropfen")
                
say("...")
                
say("Hier bitte ein Blutstropfen!")
                
say_item_vnum(30187)
                
say_reward("Blutstropfen erhalten!")
                
setstate(stein)
            else
                
say("Du hast die Träne nicht bei dir!")
                
say("Komm wieder wenn du sie gefunden hast...")
                            
träne = {
            { 
195, 211},
            { 
326, 302},
            { 
527, 90},
            { 
616, 257},
            { 
702, 262},
            { 
674, 38},
        }
        
local r2 =  number(1,6)
        
target.pos("träne", träne[r2][1], träne[r2][2], 68, "")
            
end
        end
    end
    state stein begin
        when letter begin
            local v 
= find_npc_by_vnum(20095)
            if 
v != 0 then
                target
.vid("__TARGET__", v, "Quest2")
            
end
            send_letter
("Kehre zurück zum Weisen Mann")
            
end
            
            when button 
or info begin
                say
("Gehe zu Weisen Mann zurück und gib ihm den Blutstropfen!")
                
say()
            
end
        when __TARGET__
.target.click or
            
20095.chat."Quest2" begin
            target
.delete("__TARGET__")
            if 
pc.count_item(30187) <= 0 then
                    say
("Lüge!")
                else
                    
pc.remove_item(30187,1)
                    
pc.give_item2(30190,1)
                    
say("Gut gemacht!")
                    
say("Hier hast du den Blutstein!")
                    
say("Du hast ihn dir verdient!")
                    
say_reward("Blutstein erhalten")
                    
say_item_vnum(30190)
                    
clear_letter()
                
end
            end
        end
    end 
Falls ich auslogge und wieder einlogge klappen die counts nicht mehr.
Dann kann man bis zu 200 Vulkangläser haben ohne dass irgendwas passiert.

Was muss ich da ergänzen?

mfG RealFreak
01/26/2011 19:38 Legend2007#1331
Hey Com,

Hier mal meine quest womit Ich ein problem hab...

PHP Code:
quest pony_buy_pvp begin
    state start begin
        when 20349.chat
."Horse" with horse.get_grade()==0 and pc.level >= 25 begin
            say
("So you want a Horse to travel faster?")
            
say("Then show me what you can!")
            
say("Prove me that you are worth it by")
            
say("killing 10 Players of another Kingdom!")
            
say_reward("Kill 10 Players of another Kingdom!")
            
say("")
            
set_state(player_kill1)
        
end
    end

    state player_kill1 begin 
        when letter begin
            send_letter
("Kill enemies of other Kingdoms")
        
end

        when button 
or info begin
            say
("So you want a Horse to travel faster?")
            
say("Then show me what you can!")
            
say("Prove me that you are worth it by")
            
say("killing 10 Players of another Kingdom!")
            
say_reward("Kill 10 Players of another Kingdom!")
            
say("")
            
pc.setqf("state", 10)
            
q.set_counter("kills", 10)
            
set_state (kills2)
        
end
    end
      
    state kills2 begin
        when letter begin
            send_letter
("Kill players")
        
end
        
        when button 
or info or letter begin
            say_title
("Stable Boy:")
            
say_reward( "You have "..pc.getqf("state").." Players left to kill.")
            
say("")
        
end

        when kill begin
            
if npc.is_pc() and npc.empire != pc.empire then 
            local count 
= pc.getqf("state") - 1
            
if count <= 10 then
                pc
.setqf("state", count)
                
q.set_counter("kills", -count)
            
end
            
if count == 0 then
                target
.vid("__TARGET__", 20349, "")
                
set_state(reward)
            
end
        end

        when TARGET
.click with horse.get_grade()==0 and pc.level >= 25 begin 
            
if pc.getqf("state") - 1 <= 0 then
                say_title
("Congratulation!")
                
say("You proved to be courageous and strong!")
                
say("You deserve to be rewarded.")
                
say("Here, take this.")
                
say_reward("Level 1 Pony")
                
say_reward("500.000 Gold")
                
say_reward("1.000.000 EXP")
                
pc.change_money(500000)
                
pc.give_item2(50051, 1)
                
pc.give_exp2(1000000)
                
horse.advance()
                
horse.summon()
                
clear_letter()
                
set_state(__COMPLETE__)
            
end
        end
    end 

    state __COMPLETE__ begin
    end
end 
Beim compilen dieser quest bekomme Ich diesen Fehler:
PHP Code:
syntax error : [string "kills2"]:12: unexpected symbol near `when´
pony_buy_pvp.quest:74:Abort trap (core dumped)
Error occured on compile pony_buy_pvp.quest 
Was ist falsch? Ich sehe da keine falsche "symbole" neben kein "when"..

Danke im voraus.
Legend
01/27/2011 15:11 .remiinD#1332
€: Diehier klappt immernoch nicht, auch nachdem ich sie von monkey "richtig" bekommen habe, aber da kommt immernoch im VPC :

syntax erorr : [string "start"]:17: `=´ expected near `pc´
high.quest:47:Abort trap (core dumped)

PHP Code:
quest high begin
    state start begin
        when 80010.
use begin
            say_title
("Ein neues Gebiet")
            
say("")
            
say("Mit Hilfe dieses magischen Amuletts")
            
say("bietet sich dir die Möglichkeit dich")
            
say("in ein neues Gebietzu teleportieren.")
            
say("")
            
say("")
            
say("Möchtest du dich in das neu entdeckte")
            
say("Gebiet Teleportieren?")
            
say("")
            
say("")
            
say_reward("Information:")
            
say("Das Item verschwindet nach dem teleportieren.")
            
say("")
            
            
local s = select ("Ja Teleportieren", "Nein, ich bleibe hier")
            if 
s == 1 then
                
If pc.get_level() >= 80 then
                
                    say_title
("Du wirst teleportiert")
                    
say("")
                    
say("Du wirst nun teleportiert, das Amulett des Nebels")
                    
say("verschwindet nun.")
                    
say("Viel Glück!")
                    
say("")
                    
pc.warp (823900, 823900)
                    
pc.remove_item(80010, 1)
                else
                    
say_title("Du wurst nicht teleportiert")
                    
say("")
                    
say("Leider bist du noch nicht stark genug")
                    
say("um dich mit diesem Amulett zu teleportieren!")
                    
say("Kommespäter wieder.")
                    
say("")
                    return
                
end
            
else
                
say_title("Du wirst nicht teleportiert")
                
say("")
                
say("Die Göttin der Nacht aktzeptiert deine Entscheidung.")
                
say("Du bleibst in diesem Gebiet.")
                
say("")
                return
                
end
            end
        end
    end
end 
01/27/2011 16:49 Legend2007#1333
Quote:
Originally Posted by .remiinD View Post
€: Diehier klappt immernoch nicht, auch nachdem ich sie von monkey "richtig" bekommen habe, aber da kommt immernoch im VPC :

syntax erorr : [string "start"]:17: `=´ expected near `pc´
high.quest:47:Abort trap (core dumped)
PHP Code:
quest high begin
    state start begin
        when 80010.
use begin
            say_title
("Ein neues Gebiet")
            
say("")
            
say("Mit Hilfe dieses magischen Amuletts")
            
say("bietet sich dir die Möglichkeit dich")
            
say("in ein neues Gebietzu teleportieren.")
            
say("")
            
say("")
            
say("Möchtest du dich in das neu entdeckte")
            
say("Gebiet Teleportieren?")
            
say("")
            
say("")
            
say_reward("Information:")
            
say("Das Item verschwindet nach dem teleportieren.")
            
say("")
            
            
local s = select ("Ja Teleportieren", "Nein, ich bleibe hier")
            if 
s == 1 then
                
If pc.get_level() >= 80 then
                
                    say_title
("Du wirst teleportiert")
                    
say("")
                    
say("Du wirst nun teleportiert, das Amulett des Nebels")
                    
say("verschwindet nun.")
                    
say("Viel Glück!")
                    
say("")
                    
pc.warp (823900, 823900)
                    
pc.remove_item(80010, 1)
                else
                    
say_title("Du wurst nicht teleportiert")
                    
say("")
                    
say("Leider bist du noch nicht stark genug")
                    
say("um dich mit diesem Amulett zu teleportieren!")
                    
say("Kommespäter wieder.")
                    
say("")
                    return
                
end
            
else
                
say_title("Du wirst nicht teleportiert")
                
say("")
                
say("Die Göttin der Nacht aktzeptiert deine Entscheidung.")
                
say("Du bleibst in diesem Gebiet.")
                
say("")
                return
            
end
        end
    end
end 
Da war ein "end" zu viel. Außerdem muss das Item auch in der DB auf "ankilckbar" eingestellt werden sonst wirst du die Quest nicht ans laufen kriegen.
Benutz mal für dein quest item die antiflag, type, flag usw vom z.b. Seelenstein oder irgendeinen anderen item was anklickbar ist.
Müsste funktionieren.. zumindest hab ich es so gemacht mit einer meiner quests.

Gruß
Legend
01/27/2011 17:08 .remiinD#1334
Das itm ist anklickbar, und entbuggt, aber das end zuvuiel weiss ich, warn fehlern aber auch ohne das 5. end kommt der gleiche fehler, es muss ja iwas nicht mit dem state und dem end vom state nicht stimmen, sagt vpc ja
01/27/2011 18:26 Legend2007#1335
Haste versucht die beiden "return" zu entfernen? Sind eigentlich überflüßig weil das skript eh nichts weiter ausführen kann wegen den if-else statements..