[SERVICE] Die Questkontrolle

01/24/2016 18:50 Rofelmau#12136
am ende der when zeile muss ein begin.
01/24/2016 19:04 .UNLTD.#12137
Ich benötige jemanden, der mir diese Quest
So umschreiben kann, dass die Hochzeitsmap nicht benötigt wird.

Man klickt auf die Alte Frau ("Ich möchte Heiraten")
Danach kommt ("Gebe den Namen des Partners ein")
Danach ("Anfrage des Partners annehmen")
Danach ("Du bist nun verheiratet")
Man sollte jedoch dennoch Verlobungsring & Smoking / Brautkleid benötigen..
Wäre lieb
01/24/2016 21:45 IzeBreakzz#12138
Quote:
Originally Posted by Rofelmau View Post
am ende der when zeile muss ein begin.
Die Quest lässt sich jetzt zwar compilen, aber eine Nachricht bekomme ich immer noch nicht wenn ich mich einlogge.
01/25/2016 17:07 Rofelmau#12139
Lade am besten deine jetzige version hier noch mal hoch damit wir sehen wie es genau aussieht
01/25/2016 17:25 IzeBreakzz#12140
Hier meine momentane:

PHP Code:
quest Postfach begin    
    state start begin
        when login with tonumber
(mysql_query("SELECT count(*) FROM account.postfach where gelesen = 0;")) begin
            notice
("Du hast ungelese Nachrichten. Gehe zum Briefkasten um dir die Nachrichten aufzurufen.")
        
end 
Und hier ein anderer Fehler, bin gerade an einer anderen Quest dran. Die lässt er aber nicht compilen... Woran könnte das liegen?

PHP Code:
quest Tutorial1 begin
    state start begin
        when login 
or levelup with pc.level == 5 begin
            set_state
(information)
        
end
    end
            
    state information begin
        when letter begin
            local v 
find_npc_by_vnum(20354)
            if 
!= 0 then
                target
.vid("__TARGET__"v"Stadtwächter")
            
end
            send_letter
("xxx Tutorial Reihe")
        
end
                    
        when button 
or info begin
            say_title
("xxx Tutorial Reihe")
            
say("")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("In dieser kleinen Tutorial Reihe, erfährst du")
            
say("die grundlegenden Dinge über xxx")
            
say("")
            
say("Wenn du unser kleines Tutorial abgeschlossen hast")
            
say("erwartet dich eine kleine Belohnung")
            
say("")
            
say("Gehe jetzt zum Stadtwächter um mit dem Tutorial zu beginnen")
        
end
        
        when __TARGET__
.target.click or 20354.chat."xxx Tutorial" begin
            target
.delete("__TARGET__")
            
say_title("Stadtwächter:")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("")
            
say("Sieh an... Wen haben wir denn da?")
            
say("")
            
say("Du scheinst neu hier zu sein. Wir kennen uns noch nicht")
            
say("Ich bin der Stadtwächter und zuständig für die Neulinge")
            
say("")
            
say("Es gibt einiges was du wissen musst um ein tapferer")
            
say("Krieger zu werden!")
            
say("")
            
say("Bitte gehe zum Schmied, er wird dir erklären")
            
say("wie du dein Equipment aufwerten kannst")
        
end
    end
            
    state information begin
        when letter begin
            local v 
find_npc_by_vnum(20016)
            if 
!= 0 then
                target
.vid("__TARGET__"v"Schmied")
            
end
            send_letter
("xxx Uppsystem")
        
end
                    
        when __TARGET__
.target.click or 20016.chat."Das Uppsystem" begin
            target
.delete("__TARGET__")
            
say_title("Schmied:")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("")
            
say("Willkommen auf xxx, Neuling!")
            
say("")
            
say("Ich bin der Dorfschmied! Bei mir kannst du deine")
            
say("Ausrüstung verbessern!")
            
say("")
            
say("Für deine Ausrüstung mit niedrigem level")
            
say("benötigst du keine Uppitems.")
            
say("")
            
say("Ab einem gewissen Level jedoch brauchst du Uppitems")
            
say("Diese bekommst du von verschiedenen Monstern!")
            
wait()
            
say_title("Schmied:")
            
say("")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("Allerdings bin ich ein hervorragender Schmied!")
            
say("Deine Ausrüstung, egal welches Level, kann bei mir")
            
say("nicht zerstört werden! Ich Schmiede alles zu 100%")
            
say("")
            
say("Gehe nun zu der netten Gemischtwarenhänderlin")
            
say("neben mir. Sie wird dir etwas über den Handel")
            
say("erzählen.")
            
say("")
        
end
    end
    
    state information begin
        when letter begin
            local v 
find_npc_by_vnum(9003)
            if 
!= 0 then
                target
.vid("__TARGET__"v"Gemischtwarenhändlerin")
            
end
            send_letter
("xxx Handelssystem")
        
end
                    
        when __TARGET__
.target.click or 9003.chat."Das Handelssystem" begin
            target
.delete("__TARGET__")
            
say_title("Gemischtwarenhändlerin:")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("")
            
say("Hallo junger Mann")
            
say("")
            
say("Ich habe euer Gespräch von hier aus mitbekommen")
            
say("Lass mir dir etwas über das Handelssystem erzählen")
            
say("")
            
say("Es gibt da einmal uns Händler")
            
say("Wir stehen im Dienste des jeweiligen Reiches")
            
say("")
            
say("Dann gibt es noch den privaten Handel")
            
say("Dieser wird von Leuten wie dir betrieben")
            
wait()
            
say_title("Gemischtwarenhändlerin:")
            
say("")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("Zu guter Letzt wäre da noch das Auktionshaus")
            
say("Dort kannst du bei Auktionen mitbieten")
            
say("und mit etwas Glück gute Items zu einem billigen")
            
say("Preis ergattern!")
            
say("")
            
say("Jetzt hast du es ja bald geschafft^^")
            
say("Gehe zum Lagerverwalter, er hat noch ein paar")
            
say("nützliche Infos für dich")
        
end
    end
    
    state information begin
        when letter begin
            local v 
find_npc_by_vnum(9005)
            if 
!= 0 then
                target
.vid("__TARGET__"v"Lagerverwalter")
            
end
            send_letter
("Letzter Schritt")
        
end
                    
        when __TARGET__
.target.click or 9005.chat."Letzter Schritt" begin
            target
.delete("__TARGET__")
            
say_title("Lagerverwalter:")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("")
            
say("Du komst von der Gemischtwarenhändlerin oder?")
            
say("...")
            
say("Das habe ich mir doch gleich gedacht")
            
say("Ich bin der Lagerverwalter, bei mir kannst du")
            
say("Gegenstände in deinem persönlichen Lager")
            
say("einlagern.")
            
say("")
            
say("Wenn du in einer Gilde bist, kannst du")
            
say("auch das Gildenlager benutzen. Dort findest")
            
say("du Gegenstände die du und andere eingelagert haben")
            
wait()
            
say_title("Lagerverwalter:")
            
say("")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("Ach... bevor ich es vergesse. Mir wurde gesagt")
            
say("dass du noch über unser Nachrichtensystem")
            
say("aufgeklärt werden musst.")
            
say("")
            
say("Falls eine Spieler mal nicht Online sein sollte")
            
say("kannst du ihm eine Nachricht zukommen lassen")
            
say("Dafür gibt es den ooo. Der steht")
            
say("da vorne, neben der Laterne")
            
say("Natürlich kommen dort auch Nachrichten")
            
say("für dich hin, falls ein Spieler dir schreibt")
            
say("gehe nun wieder zum Stadtwächter, er")
            
say("wird dir sagen wie es weiter geht")
        
end
    end
    
    state information begin
        when letter begin
            local v 
find_npc_by_vnum(20354)
            if 
!= 0 then
                target
.vid("__TARGET__"v"Stadtwächter")
            
end
            send_letter
("xxx Handelssystem")
        
end
                    
        when __TARGET__
.target.click or 20354.chat."Tutorial Abschluss" begin
            target
.delete("__TARGET__")
            
say_title("Stadtwächter:")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("")
            
say("Da bist du ja wieder!")
            
say("")
            
say("Das ging ja schneller als gedacht")
            
say("Ich hoffe du konntest für den Anfang")
            
say("genug Informationen sammeln")
            
say("")
            
say("Jetzt noch kurz etwas wichtiges von meiner")
            
say("Seite. ")
            
say("Es gibt 3 verschiedene Fraktionen")
            
say("Die Händler, die Wachen und den General")
            
wait()
            
say_title("Stadtwächter:")
            
say("")
            ----
"123456789012345678901234567890123456789012345678901234567890"|
            
say("Bei den einzelnen Fraktionen kannst du")
            
say("durch erfüllen von Aufgaben Ruf sammeln")
            
say("")
            
say("Erledige also immer die Quests!")
            
say("Du erhälst gute Belohnungen!")
            
say("")
            
say("Und wenn du den Ruf bei einer Fraktion voll hast")
            
say("bekommst du ein extrem seltenes Geschenk")
            
say("")
            
say("Ich wünsche dir weiterhin viel Spaß")
            
say("Auf xxx!")
            
say("")
            -----------                                                   
l            
            say_reward
("Als Belohnung für den Abschluss des Tutorials erhälst du")
            
say_reward("1x Regenbogenstein")
            
say("")
            
say_reward("30% Permanente Bewegungsgeschwindigkeit")
            
affect.add_collect(apply.MOV_SPEED3060*60*24*365*60)
            
pc.give_item2(50512)
            
clear_letter()
        
end
    end
end 
Vielen Dank für eure Hilfe
01/25/2016 17:37 Rofelmau#12141
vermute mal du musst das noch mit etwas vergleichen
zb

PHP Code:
when login with tonumber(mysql_query("SELECT count(*) FROM account.postfach where gelesen = 0;")) >= 1 begin 
zu der 2. du hast da mehrere states die information heißen, das klappt so nicht
müssen unterschiedliche namen haben und dann müssen die überleiteungen noch rein also das set_state()
01/25/2016 18:28 IzeBreakzz#12142
Quote:
Originally Posted by Rofelmau View Post
vermute mal du musst das noch mit etwas vergleichen
zb

PHP Code:
when login with tonumber(mysql_query("SELECT count(*) FROM account.postfach where gelesen = 0;")) >= 1 begin 
zu der 2. du hast da mehrere states die information heißen, das klappt so nicht
müssen unterschiedliche namen haben und dann müssen die überleiteungen noch rein also das set_state()
Habe jetzt nur mal die 1. Quest ausprobiert. Geht aber immer noch nicht. Hier mal die function:
PHP Code:
function get_ungelesen_message_count()
    return 
tonumber(mysql_query("SELECT count(*) FROM account.postfach where gelesen = 0;")[1][1]) >=1
end 
01/25/2016 18:34 Rofelmau#12143
lol ja wenn du ne function hast musst du die aufrufen
kapier dich gerade nicht,
PHP Code:
quest Postfach begin    
    state start begin
        
function get_ungelesen_message_count() 
            return 
tonumber(mysql_query("SELECT count(*) FROM account.postfach where gelesen = 0;")[1][1]) >=
        end
        when login with Postfach
.get_ungelesen_message_count() begin
            notice
("Du hast ungelese Nachrichten. Gehe zum Briefkasten um dir die Nachrichten aufzurufen.")
        
end 
01/25/2016 20:02 IzeBreakzz#12144
lol ich vollpfosten... die war eigentlich noch drinnen...

Wie kann ich denn bei meiner 2. Quest die Übergänge am besten machen? Bin relativ neu beim Questen.
01/25/2016 20:49 Rofelmau#12145
jeder state braucht nen eigenen namen und dann machst du einfach dort wo der neue state beginnen soll set_state(name)
so ahst du es ganz oben ja auch
01/25/2016 21:02 IzeBreakzz#12146
PHP Code:
    set_state(Uppsystem)
    
end
            
    state Uppsystem begin
        when letter begin
            local v 
find_npc_by_vnum(20016)
            if 
!= 0 then
                target
.vid("__TARGET__"v"Schmied")
            
end 
Meintest du so? Weil oben wird ja angegeben dass er den state ausführen soll wenn man level 5 oder höher ist. Bei dem eben nicht mehr.
01/25/2016 21:10 rollback#12147
Quote:
Originally Posted by IzeBreakzz View Post
PHP Code:
    set_state(Uppsystem)
    
end
            
    state Uppsystem begin
        when letter begin
            local v 
find_npc_by_vnum(20016)
            if 
!= 0 then
                target
.vid("__TARGET__"v"Schmied")
            
end 
Meintest du so? Weil oben wird ja angegeben dass er den state ausführen soll wenn man level 5 oder höher ist. Bei dem eben nicht mehr.
Standardstate ist start, da ist jeder Spieler solange er nicht in einen anderen gesetzt wurde. Wenn du im state start einen trigger hast, der erst ab Lv 5 ausgeführt wird und du den Spieler dann in einen anderen state setzt, brauchst die die levelabfrage dort nicht erneut machen, weil er da ja nur reinkommt, wenn er schon lv5 war
01/25/2016 21:14 IzeBreakzz#12148
Folgende Quest will nicht wie ich will...

PHP Code:
quest xxx begin
    state start begin
        when 11002.chat
."xxx" begin
            say_title
("Willkommen im xxx")
            
say("")
            
say("Wie kann ich dir helfen?")
            
local s select("Items""Tränke""Coupons")
            if 
== 3 then
            
return
                elseif 
== and pc.getqf("xxx") >= 50 then
                npc
.open_shop(13)
                else
                
chat("Du hast nicht genügend xxx")
                
chat("Du benötigst mindestens 50 xxx")
                elseif 
== and pc.getqf("xxx") >= 50 then
                npc
.open_shop(14)
                else
                
chat("Du hast nicht genügend xxx")
                
chat("Du benötigst mindestens 50 xxx")
            
end    
        end
    end
end 

Hier der Fehler:
PHP Code:
xxx.quest:21:syntax error : [string "start"]:12: `end' expected (to close `if' at line 5) near `elseif'
Error occured on compile xxx.quest 
01/26/2016 22:41 bzyHac#12149
Diese Quest bekommt beim kompilieren einen Fehler:

Fehler:

Ich komme nicht klar damit Habe einfach meine shopquest von nem anderen pc genommen und darauf basierend erweitert.
Bestimmt ist da einiges falsch also nicht wundern.
So sieht die Shopquest aus (sie funktioniert):

01/26/2016 23:37 Rofelmau#12150
Quote:
Originally Posted by dogan93 View Post
Diese Quest bekommt beim kompilieren einen Fehler:

Fehler:

Ich komme nicht klar damit Habe einfach meine shopquest von nem anderen pc genommen und darauf basierend erweitert.
Bestimmt ist da einiges falsch also nicht wundern.
So sieht die Shopquest aus (sie funktioniert):

PHP Code:
quest rofl begin
    state start begin
        
function buy(vnum,count,cost
                
mysql_query("UPDATE account.account SET cash = cash-'"..cost.."' WHERE id = '"..pc.get_account_id().."' LIMIT 1;"
                
pc.give_item2(vnum,count
        
end 
        when 20092.chat
."Cash or Die" begin
            mysql_query
("UPDATE account.account SET cash = cash+200 WHERE id = '"..pc.get_account_id().."' LIMIT 1;")
            
say("200 Mehr coins bekommen")
            
setskin(NOWINDOW)
        
end
        when 20092.chat
."Gib mir das Schwert für 200" begin
            local cost 
200
            
if mysql_query("SELECT account.account SET cash = cash+20 WHERE id = '"..pc.get_account_id().."' LIMIT 1;")[1][1] > cost then
                rofl
.buy(itemvnum,1,cost)
                
say(say_item(itemvnum).." bought for "..cost.. " Coins!")
            
end
        end
        when 20092.chat
."wv coins hab ich lack" begin
            local cashamount 
= (mysql_query("SELECT account.account SET cash = cash+20 WHERE id = '"..pc.get_account_id().."' LIMIT 1;")[1][1])
            
say(cashamount.." Coins")
            
setskin(NOWINDOW)
        
end
    end
end