[SERVICE] Die Questkontrolle

01/29/2011 12:09 cihad2010#1351
habe ein problem mit dieser quest der stallbursche ruft mich nicht zu dieser quest wenn ich lvl 75 oder höher bin was :

PHP Code:
quest horse_lv11 begin
    state start begin
        when 30128.
use with pc.get_level() >= 75 begin
            
if horse.get_level()>=1 then
                set_state
gotostable )
                
pc.remove_item(301281)
            
end
        end
    end
    state gotostable begin
        when letter begin
            local v
=find_npc_by_vnum(20349)
            if 
0==v then
            
else
                
target.vid("__TARGET__"v"Gehe zum Stallbursche")
            
end
        end
        when letter begin
            send_letter
("Gehe zum Stallbursche!")
        
end
        when button 
or info begin
            say_title
("Gehe zum Stallbursche")
            
say("Du hast ein Hufeisen gefunden. Der Stallbursche")
               
say("kann diese immer gebrauchen. Bringe es ihm und")
            
say("frage ihn ob dein Pferd mittlererweile gut")
            
say("genug ist um zusammen mit dir gegen Gegner")
            
say("zu kämpfen.")
            
say("")
        
end
        when __TARGET__
.target.click begin
            target
.delete("__TARGET__")
            
say_title("Stallbursche:")
            
say("")
               
say("Ein Hufeisen?")
            
say("Dankeschön.. ich kann nie genug davon haben..")
            
say("so viele Leute kommen Tag für Tag zu mir, nur weil")
            
say("sie neue Hufeisen brauchen..")
            
say("Aber egal.. warum erzähle ich dir das..")
            
say("")
            
wait()
               
say("Dein Pferd? Du willst wissen ob es stark genug")
            
say("geworden ist? Mhh nunja eigentlich..")
            
wait()
            
say("Ja ich denke es kann es mittlererweile mit")
            
say("einigen Gegnern aufnehmen. Ich gebe dir nun")
            
say("eine Rüstung und bringe deinem Pferd bei,")
            
say("wie es sich verhalten muss, wenn du mit")
               
say("ihm kämpfst.")
            
wait()
            
horse.set_level("11")
            
pc.remove_item(500511)
            
pc.give_item2("50052")
            
horse.unride()
            
horse.summon()
            
horse.ride()
               
say_reward("Kampfpferd erhalten.")
            
say_reward("Waffenpferdebuch erhalten.")
            
setstate__COMPLETE__ )
            
q.done()
        
end
    end
    state __COMPLETE__ begin
    end
end 
__________________________________________________ ________

kann mir jemand helfen :(
01/29/2011 12:12 Gluehbi®ne#1352
Ich wollte bei den Rüssi Händler diese Shops einfügen(mehrere Shops in einem NPC)

Nur leider funktioniert es nicht


Pfad: /usr/rain/channel/share_data/locale/hongkong/quest
Alles richtig oder?
01/29/2011 12:17 cihad2010#1353
Quote:
Originally Posted by Glµehbi®ne View Post
Ich wollte bei den Rüssi Händler diese Shops einfügen(mehrere Shops in einem NPC)

Nur leider funktioniert es nicht


Pfad: /usr/rain/channel/share_data/locale/hongkong/quest
Alles richtig oder?
hast du auch in hongkong_list eingefügt deine quest?
01/29/2011 12:21 Gluehbi®ne#1354
Wo ist denn hongkong_list(habe instand serverfiles)^^
01/29/2011 12:34 CanbiZ#1355
Quote:
Originally Posted by .remiinD View Post
ja, wenn du das siegel nach em klicken entfernen möchtest musst du unter jedes pc.mount(...)
dashier setzten:

pc.remove_item([ItemVnum], [Wieviele])


ne ich will eigentlich
das man es benutzen kann wie Miligaulbuch
also draufklicken, das vieh ist da, siegel bleibt
wieder auf siegel klicken vieh ist weg

_______________________________
"Wo ist denn hongkong_list(habe instand serverfiles)^^"

die hongkong_list ist in den quest ordner...
danach einfach mal ingame /reload q machen oder .. sh make.sh in putty/virtual pc..

Lg
01/29/2011 14:00 ~shaylan~#1356
@ cihad2010

die quest läuft bei mir eigentlich.

hab aber mal paar schönheitsfehler (meiner meinung nach ^^) ausgebessert.
haste den Typ des items auch auf 18 gesetzt und /reload p eingegeben?
hier mal die quest

01/29/2011 14:29 Legend2007#1357
Quote:
Originally Posted by I34SH3R View Post
ne ich will eigentlich
das man es benutzen kann wie Miligaulbuch
also draufklicken, das vieh ist da, siegel bleibt
wieder auf siegel klicken vieh ist weg

_______________________________
"Wo ist denn hongkong_list(habe instand serverfiles)^^"

die hongkong_list ist in den quest ordner...
danach einfach mal ingame /reload q machen oder .. sh make.sh in putty/virtual pc..

Lg
dann musst du eine if verzweigung benutzen. so zum beispiel:

PHP Code:
        when 71113.use begin 
            
if horse.is_riding() then
                chat
("Du hast dein Reittier weggeschickt!")
                
pc.unmount()
            else
                
chat("Du hast dein Reittier gerufen!")
                
horse.summon()
                
horse.ride()
                
pc.mount(20113
            
end
        end 
erweitere deine quest mal durch diesem beispiel und teste es aus
01/29/2011 14:34 Pyramos#1358
hi leute ich weiß nicht wie man zeit einfügt und warum man die quest im spiel nicht sieht also sie halt nicht geht.

quest perlenqu begin
state start begin
when login or levelup with pc.get_level() >= 82 begin
set_state( gotoinfomation )
end
end
state gotoinfomation begin
when letter begin
send_letter("weiße Perle")
end
when button or info begin

say("Geh zum Teleporter!")
say("Denn du hast dich nun zu beweisen.")
say("Beweise dass du deine Ausrüstung wert bist und")
say("beschaffe dir deine Perlen!")
say("Der Teleporter wird dir weitere Informationen und Aufgaben geben.")
say("Achja vergiss nicht dir Tränke und Umhänge mitzunehmen!")

local v = find_npc_by_vnum(20009)

if v != 0 then
target.vid("__TARGET__", v, "weiße Perle")
end
end

when __TARGET__.target.click or
20009.chat."weiße Perle" with pc.level >= 82 begin
target.delete("__TARGET__")

say("? Du? du kleiner HansWurst willst die Quest schaffen?")
say("Du weißt schon das du hier 50 TestWildhunde töten musst,")
say("das auch noch in 10 Minuten?")
say("Falls du einen Hack benutzt dann bist du hier falsch!")
say("GM´s werden dich finden und können dich sehr wohl bannen!")
say("Dann hast du auch nichts mehr von deinen Perlen!")
say("Also drücke bitte auf ::hier aufhören:: .")
say("Falls dich das nicht betrifft dann sorry für die Anschuldigung.")
say("Viel Spaß und fahre fort wenn du möchtest.")
local s=select("Fortfahren.","Hier aufhören.")

s==2 then
return
end

elseif if 1==s then

when 101.kill begin
local count = pc.getqf("state") + 1

if count <= 50 then

pc.setqf("state", count)

q.set_counter("TestWildhunde", 50 - count)

if count == 50 then

set_state( gotoinfomation )

end
end

state gotoinfomation begin
when letter begin
send_letter("weiße Perle")
end
when button or info begin

say("Du hast es also doch geschafft.")
say("Glückwunsch nun geh bitte zum Stadtwächter")
say("und hol dir deine Perle ab.")

local v=find_npc_by_vnum(20354)
if 0==v then
else
target.vid("__TARGET__", v, "weiße Perle")

end
end

when button or info begin
say_title("weiße Perle")
say("Du hast sie dir verdient.")
say("Nimm sie schon ehe ich es mir anders überlege!")
pc.give_item2("27992", 1)
say_reward("have fun in Mt-Realoaded")
say_reward("Quest made by PyramosZ")

end



thx im vorraus
01/29/2011 14:49 CanbiZ#1359
Quote:
Originally Posted by Glµehbi®ne View Post
Wo ist denn hongkong_list(habe instand serverfiles)^^
Quote:
Originally Posted by Legend2007 View Post
dann musst du eine if verzweigung benutzen. so zum beispiel:


erweitere deine quest mal durch diesem beispiel und teste es aus
soll ich den quest so lassen und was weiß ich 11 andere dazu?
oder soll ich alles in einen?..

also immer einzeln mein ich das hier
PHP Code:
when 71113.use begin  
            
if horse.is_riding() then 
                chat
("Du hast dein Reittier weggeschickt!"
                
pc.unmount() 
            else 
                
chat("Du hast dein Reittier gerufen!"
                
horse.summon() 
                
horse.ride() 
                
pc.mount(20113)
            
end
        end
    end 
oder alle zusammen?
01/29/2011 15:18 ~shaylan~#1360
@ Pyramos

Also die quest ist das reinste chaos..
Fangen wir mal an.

Wenn du Quest zur kontrolle postest dann bitte in PHP
[php ] [/PHP ] ---leerzeichen weglassen

wenn du die Quests nach stats und when's einrückst wirst du feststellen das jede menge ends nicht richtig gesetzt waren. -> open-end fehler
der counter war ein bischen falsch geschrieben.
wenn du 2 was zur auswahl stellst
macht man es am besten so
PHP Code:
local s=select ("Ja""Nein")
    if 
s==1 then
        say_title
("Titel:")
        
say("")
        
say("Text")
        
say("Text")
    else
        
say_title("Titel:")
        
say("")
        
say("Text")
        
say("Text")
    
end
end 
oder wenn die 2. antwort unwichtig ist einfach

PHP Code:
local s=select ("Ja""Nein")
    if 
s==1 then
        say_title
("Titel:")
        
say("")
        
say("Text")
        
say("Text")
    
end
end 
du hast mit elseif gearbeitet, das lohnt sich wenn mehr als 2 benötigte antworten vorgegeben werden.
Bsp.:
PHP Code:
local a select ("Text a01","Text a02","Text a03","Text a04","Text a05")
                if 
== 1 then
                    say_title
("NPC-Name:")
                    
say("")
                    
say("Das ist Box:")
                    
say("")
                    
say_reward("Text01")
                    
say("")
                    
say_reward("Text a01")
                
end
                
                
elseif == 2 then 
nach einem if kann kein when stehen.
übersetzt es mal auf deutsch, klingt doof ;)

dann darf in einer quest NIEMALS zwei gleiche state's vorkommen.

Dann ist am ende zwei mal
PHP Code:
when button or info begin 
das bedeutet, wenn man den brief anklickt bekommt man die infos von dem 1. teil und dem 1. gleichzeitig.
dann ist noch ein kleines problemchen in der quest drinne.
Wenn man beim teleporter auswählt das man aufgeben will hängt man in einer endlosschleife fest, die quest geht nie weg.
Da muss ein
PHP Code:
set_state(__AUFGEBEN__
oder so in der art hin. und wenn man die perle bekommen hat noch ein
PHP Code:
set_state(__COMPLETE__
damit verhinderst du das die quest nochmal begonnen wird, bzw. man unendlich viele perlen bekommen kann.

Hier ist die quest mal funktionstüchtig. (ggf. server rebooten)


und zum abschluss noch, du musst aufpassen das du nicht zuviel in eine zeile
schreibst. Sonst geht das, was überstehen würde auf die nächste über und der rest bleibt leer. Das hab ich jetzt noch nicht gemacht.

Grüße
01/29/2011 15:25 CHXMVN#1361
PHP Code:
quest reittiere begin
    state start begin
        when 71118.
use begin 
            
if pc.getqf("newmount")==1 then
                chat
("Du hast dein Reittier gerufen!")
                
pc.mount(20112,300)  
                
pc.remove_item(711181)
            else
                
chat("Du hast dein Reittier gerufen!")
                
horse.ride()
                
pc.setqf("newmount",1)
                
timer("mount",300)
                
pc.mount(20112,300)  
                
pc.remove_item(711181
                
affect.add_collect(apply.DEF_GRADE_BONUS,125,300)
            
end
        end
        when mount
.timer begin
            pc
.setqf("newmount",0)
        
end 
Mein Problem ist es gibt einfach nicht den bestimmten Bonus Wert von Def in diesem Fall 125 wo liegt der Fehler?!
01/29/2011 15:29 ~shaylan~#1362
kurz und schmerzlos

PHP Code:
affect.add_collect(ID,wert,time
beispiel

PHP Code:
affect.add_collect(1,1000,60*60*30
das entspricht dem Boni max TP, es werden 1000 Tp hinzugefügt, der boni hält 30 minuten.
Da es nicht die ganze quest ist lässt es sich schwer beurteilen, falls das problem woanders liegt. Müsste aber das sein :D

Grüße
01/29/2011 15:31 CHXMVN#1363
Quote:
Originally Posted by ~shaylan~ View Post
kurz und schmerzlos

PHP Code:
affect.add_collect(ID,wert,time
beispiel

PHP Code:
affect.add_collect(1,1000,60*60*30
das entspricht dem Boni max TP, es werden 1000 Tp hinzugefügt, der boni hält 30 minuten.
Da es nicht die ganze quest ist lässt es sich schwer beurteilen, falls das problem woanders liegt. Müsste aber das sein :D

Grüße

Jop das ist mir ja klar aber wen die Leute wieder aufs Reittier gehen bekommen sie dieser Werte nochmal! Deshalb hatte ich diesen Timer eingebaut aber das funktioniert ja anscheinend nicht!
01/29/2011 15:52 Gluehbi®ne#1364

Hab es in der Hongkong List, in der DB die Rüssis etc eingetragen aber es will einfach nicht die Kategorien für die jeweiligen items nicht anzeigen...(like Profizocker94 die Shops Gestapelt) Er zeigt nur die Rüssis vom Krieger an...

Könnte mir jemand sagen was falsch daran ist?

€dit: Neues Problem (Altes Fixxed xD)
Der Rüssihändler zeigt garnichts an bei einem klick an ihm:(
01/29/2011 16:09 Legend2007#1365
Quote:
Originally Posted by I34SH3R View Post
soll ich den quest so lassen und was weiß ich 11 andere dazu?
oder soll ich alles in einen?..

also immer einzeln mein ich das hier
PHP Code:
when 71113.use begin  
            
if horse.is_riding() then 
                chat
("Du hast dein Reittier weggeschickt!"
                
pc.unmount() 
            else 
                
chat("Du hast dein Reittier gerufen!"
                
horse.summon() 
                
horse.ride() 
                
pc.mount(20113)
            
end
        end
    end 
oder alle zusammen?
Ja du musst das code stück so oft wiederholen wie du es brauchst.

Beispiel:

PHP Code:
quest siegel begin
    state start begin
        when 71113.
use begin  
            
if horse.is_riding() then 
                chat
("Du hast dein Reittier weggeschickt!"
                
pc.unmount() 
            else 
                
chat("Du hast dein Reittier gerufen!"
                
horse.summon() 
                
horse.ride() 
                
pc.mount(20113)
            
end
        end
        
        when 71114.
use begin  
            
if horse.is_riding() then 
                chat
("Du hast dein Reittier weggeschickt!"
                
pc.unmount() 
            else 
                
chat("Du hast dein Reittier gerufen!"
                
horse.summon() 
                
horse.ride() 
                
pc.mount(20114)
            
end
        end
        
        when 71115.
use begin  
            
if horse.is_riding() then 
                chat
("Du hast dein Reittier weggeschickt!"
                
pc.unmount() 
            else 
                
chat("Du hast dein Reittier gerufen!"
                
horse.summon() 
                
horse.ride() 
                
pc.mount(20115)
            
end
        end
    end
end 
Vergiss nicht die IDs richtig anzupassen..