[SERVICE] Die Questkontrolle

02/05/2012 01:33 Sp0ngeb0b ist cool#4681
PHP Code:
quest horse_getting begin
    state start begin
        when 20349.chat
."Mein Pferd" begin
            
if horse.get_level() >= 21 then
                say
("Dein Pferd hat bereits das maximale Level erreicht.")
                return
            
end    
            local count 
0 local setze 0 local level 0 local vnum 0 local name 0 local weg 0 local item 0
            
if horse.get_level() == 0 then count 1 setze 1 level 1 vnum 50051 name 20101 weg 0 item 50050 end    
            
if horse.get_level() > and horse.get_level() < 11 then count 10 level 35 setze 11 vnum 50052 name 20104 weg 50051 item 50050 end    
            
if horse.get_level() >= 11 then count 1 level 50 setze 21 vnum 50053 name 20107 weg 50052 item 27992 end
            horse_getting
.give_gaul(levelcountsetzevnumnamewegitem)
        
end
        
function give_gaul(levelcountsetzevnumnamewegitem)
            
say_title("Stallbursche")
            
say("Hallo "..pc.get_name())
            
say("Du benötigst "..count.." "..item_name(item))
            
say("für ein "..mob_name(name))
            
say_item_vnum(item
            if 
pc.get_level() < level then
                say
("Du bist zu niedrig!")
                return
            
end    
            
if pc.count_item(item) < count then
                say
("Bitte hole mir "..count.." "..item_name(item)..", dann werde")
                
say("ich dir ein "..mob_name(name).." geben.")
                return
            
end
            say
("Möchtest du die "..item_name(item))
            
say("gegen ein "..mob_name(name).." eintauschen?")
            
local s=select("Ja""Nein")
            if 
s==2 then
                say_title
("Stallbursche")
                
say("Schade, dann geh bitte wieder.")
                return
            
end
            pc
.remove_item(itemcount)
            
pc.give_item2(vnum1)     
            
pc.remove_item(weg1)            
            
say_title("Stallbursche")
            
say("Oh danke! Hier kriegst du ein "..mob_name(name)..".")
            
say("Pass gut drauf auf!")
            
pc.set_skill_level(13110)
            
horse.set_level(setze)
            
horse.summon()    
            
horse.ride()                
        
end
    end
end 
02/05/2012 11:06 [SA]Imbattle#4682
ja danke schonmal aber eigentlich sollte man für einen Militärgaul 1 Blutrote, 1 Blaue und 1 Weiße Perle brauchen und nicht nur eine Weiße Perle, könntest du das noch machen? Oder irgendjemand anderes?
02/05/2012 11:12 derkiler#4683
Ich habe ein problem mit dieser Quest hier:

Die Quest funktioniert.. aber ich möchte dass bei diesem Bereich der Quest:
PHP Code:
                 local q mysql_query('SELECT * FROM player.bug_report')
                
say_gold("Nächster Bugreport")
                
say_blue2('id: '..q.id[1+1])
                
say_blue2('account_id: '..q.account_id[1+1])
                
say_blue2('name: '..q.name[1+1])
                
say_blue2('bug_report: '..q.bug_report[1+1])
                
wait() 
die Quest immer die nächste Seite lädt: say_blue2('id: '..q.id[1+1]) -> lädt immer nur die zweite Seite und meine Frage ist jetzt, wie kann ich die Funktion so umschreiben, dass es immer die nächste Seite lädt.

Ich hoffe meine Frage ist verständlich.
02/05/2012 11:53 Sp0ngeb0b ist cool#4684
@imbattle: jup dachte ich mir allerdings hattest du in deiner angegeben quest nur die weiße perle drin deshalb hab ich es erstmal mit nur einer perle gemacht ;)
..ich werde es gleich mit allen drei perlen machen & editieren
PHP Code:
quest horse_getting begin
    state start begin
        when 20349.chat
."Mein Pferd" begin
            
if horse.get_level() >= 21 then
                say
("Dein Pferd hat bereits das maximale Level erreicht.")
                return
            
end    
            local count 
0 local setze 0 local level 0 local vnum 0 local name 0 local weg 0 local item 0
            
if horse.get_level() == 0 then count 1 setze 1 level 1 vnum 50051 name 20101 weg 0 item 50050 item2 0 item3 0 horse_getting.give_gaul(levelcountsetzevnumnamewegitemend    
            
if horse.get_level() > and horse.get_level() < 11 then count 10 level 35 setze 11 vnum 50052 name 20104 weg 50051 item 50050 horse_getting.give_gaul(levelcountsetzevnumnamewegitemend    
            
if horse.get_level() >= 11 then horse_getting.give_milli(50121500532010750052279922799327994end    
        end
        
function give_gaul(levelcountsetzevnumnamewegitem)
            
say_title("Stallbursche")
            
say("Hallo "..pc.get_name())
            
say("Du benötigst "..count.." "..item_name(item))
            
say("für ein "..mob_name(name))
            
say_item_vnum(item
            if 
pc.get_level() < level then
                say
("Du bist zu niedrig!")
                return
            
end    
            
if pc.count_item(item) < count then
                say
("Bitte hole mir "..count.." "..item_name(item)..", dann werde")
                
say("ich dir ein "..mob_name(name).." geben.")
                return
            
end
            say
("Möchtest du die "..item_name(item))
            
say("gegen ein "..mob_name(name).." eintauschen?")
            
local s=select("Ja""Nein")
            if 
s==2 then
                say_title
("Stallbursche")
                
say("Schade, dann geh bitte wieder.")
                return
            
end
            pc
.remove_item(itemcount)
            
pc.give_item2(vnum1)     
            
pc.remove_item(weg1)            
            
say_title("Stallbursche")
            
say("Oh danke! Hier kriegst du ein "..mob_name(name)..".")
            
say("Pass gut drauf auf!")
            
pc.set_skill_level(13110)
            
horse.set_level(setze)
            
horse.summon()    
            
horse.ride()                
        
end
        
function give_milli(levelcountsetzevnumnamewegitemitem2item3)
            
say_title("Stallbursche")
            
say("Hallo "..pc.get_name())
            
say("Du benötigst "..count.." "..item_name(item)..",")
            
say(count.." "..item_name(item2).." und "..count.." "..item_name(item))
            
say("für ein "..mob_name(name))
            
say_item_vnum(item
            
say_item_vnum(item2
            
say_item_vnum(item3
            if 
pc.get_level() < level then
                say
("Du bist zu niedrig!")
                return
            
end   
            
if pc.count_item(item) < count or pc.count_item(item2) < count or pc.count_item(item3) < count then
                say
("Bitte hole mir "..count.." "..item_name(item)..",")
                
say(count.." "..item_name(item2).." und "..count.." "..item_name(item))
                
say("Dann werde ich dir ein "..mob_name(name).." geben.")
                return
            
end
            say
("Möchtest du die "..item_name(item)..",")
            
say(item_name(item2).." und "..item_name(item3))
            
say("gegen ein "..mob_name(name).." eintauschen?")
            
local s=select("Ja""Nein")
            if 
s==2 then
                say_title
("Stallbursche")
                
say("Schade, dann geh bitte wieder.")
                return
            
end
            pc
.remove_item(itemcount)
            
pc.remove_item(item2count)
            
pc.remove_item(item3count)
            
pc.give_item2(vnum1)     
            
pc.remove_item(weg1)            
            
say_title("Stallbursche")
            
say("Oh danke! Hier kriegst du ein "..mob_name(name)..".")
            
say("Pass gut drauf auf!")
            
pc.set_skill_level(13110)
            
horse.set_level(setze)
            
horse.summon()    
            
horse.ride()                
        
end
    end
end 
@derkiler: ich versteh so manchen sinn der quest nicht, wie zum beispiel "5 bugreports" oder "10 bugreports" aber bei der auswahl nur in gold "2" oder "3" geschrieben wird; oder was der erste teil mit der gm list bringen soll^^ aber villeicht kannst du mir das noch erklären :)
jedenfalls habe ich nur den part berichtigt, den du genannt hast aber ich vermute dass du das selbe problem auch beim "letzter report" haben wirst, da auch dort immer nur das 1. angezeigt wird, denn 2-1 = 1 xD
PHP Code:
quest datenbank_controll begin
    state start begin
        when 30192.
use begin
            say_gold
("Datenbank")
            
local datenbank select ("Common","Bug-Report","Schließen")
            if 
datenbank == 1 then
                say_gold
("Common")
                
say_white("Verwalte den gmhost und die gmlist")
                
local common select("gmhost","gmlist","Schließen")
                if 
common == 1 then
                local q 
mysql_query('SELECT * FROM common.gmhost')
                
say_gold("gmhost")
                
say('1: '..q.mIP[1])
                
end
                
if common == 2 then
                local q 
mysql_query('SELECT * FROM common.gmlist')
                
say_gold("gmlist")
                
say("")
                
say_white("mID    mAccount    mName    mContactIP    mServerIP    mAuthority")

                
end
            end
            
if datenbank == 2 then
                say_gold
("Bug-Report")
                
say_white("Hier erhälst du einen Überblick zu den")
                
say_white("gemeldeten Bugs.")
                
say_blue2("Was möchtest du sehen ?")
                
datenbank_controll.bug_report()
            
end    
        end
        
function bug_report()
            
local bug_report select ("1 Bugreport""5 Bugreports""10 Bugreports","Schließen")
            if 
bug_report == 1 then
                local q 
mysql_query('SELECT * FROM player.bug_report')
                
say_gold("1 Bugreport")
                
say_blue2('id: '..q.id[1])
                
say_blue2('account_id: '..q.account_id[1])
                
say_blue2('name: '..q.name[1])
                
say_blue2('bug_report: '..q.bug_report[1])
                
wait()
                
datenbank_controll.bug_report_andere_seite()
            
end
            
if bug_report == 2 then
                say_gold
("2")
            
end
            
if bug_report == 3 then
                say_gold
("3")
            
end
        end
        
function bug_report_andere_seite()
            
local bug select ("Nächster Bugreport""Letzter Bugreport""Schließen")
            if 
bug == 1 then
                local i 
1
                repeat
                    i 
1
                    local q 
mysql_query('SELECT * FROM player.bug_report')
                    
say_gold(i..". Bugreport")
                    
say_blue2('id: '..q.id[i])
                    
say_blue2('account_id: '..q.account_id[i])
                    
say_blue2('name: '..q.name[i])
                    
say_blue2('bug_report: '..q.bug_report[i])
                    
wait()
                
until i >= 10
                say
("Maximum erreicht. Weiteres einsehen nicht möglicht.")
                
say("Ein künftiges Update wird das weitere Einsehen ermöglichen!")
            
end
            
if bug == 2 then
                local q 
mysql_query('SELECT * FROM player.bug_report')
                
say_gold("Letzter Bugreport")
                
say_blue2('id: '..q.id[2-1])
                
say_blue2('account_id: '..q.account_id[2-1])
                
say_blue2('name: '..q.name[2-1])
                
say_blue2('bug_report: '..q.bug_report[2-1])
                
wait()
                
datenbank_controll.bug_report_andere_seite()
            
end
        end    
    end
end 
beim nächsten report kann man momentan nur bis zum 10. gucken (ledigtlich als test, denn ich habe gerade nen befehl vergessen aber insofern das alles klappt werde ich den befehl mal suchen & dann kannste unter "nächster report" jeden report auslesen :)
02/05/2012 11:59 derkiler#4685
@sp0nge: danke für die Hilfe, ist aufjedenfall schonmal besser ;)
02/05/2012 12:29 [SA]Imbattle#4686
vielen dank, jezt funktioniert es gut :D
02/05/2012 22:05 RealMadrid94rk#4687
Meine Quest sollte eigentlich immer oben links bei den anderen Quests sein.
Aber die öffnet sich direkt wenn ich das Level 80 erreiche, ohne das ich oben links die quest zum anklicken bekommen.
Wenn ich schon über 80 bin, bekomme ich die Quest gar nicht mehr.
Auch sehe ich beim Statusfenster unter "Quests" nicht wie viele ich noch killen muss.
Beim neu einloggen ist die Quest ebenfalls nicht obel links zum anklicken dort.
Was mache ich falsch? :/

Ps. Ist meine erste richtige quest^^

PHP Code:
quest metinkill begin
    state start begin
        when levelup with pc
.get_level() == 80 begin
            say_title
("Metin Kill Quest:")
            
say("")
            
say("Die Macht der Metinsteine ist erneut gestiegen.")
            
say("Zahlreiche Metinsteine versuchen den Roten Wald")
            
say("zu erobern. Du bist die einzige Hoffnung!")
            
say("")
            
say("Zerstöre 10 der dunklen Metine mit dem Namen Jeon-Un!")
            
say("Du wirst eine fabelhafte Belohnung erhalten!")
            
pc.setf("jeonun"3)
            
set_state(__COMPLETE__)
        
end
        when 8027.kill with pc
.get_level() >= 80 begin
            pc
.setf("jeonun"pc.getf("jeonun") - 1)
            if 
pc.getf("jeonun") == 0 then
                say_title
("Super!")
                
say("")
                
say("Du hast die dunklen Metine Jeon-Un zerstört")
                
say("und für den ausgleich im Roten Wald gesorgt!")
                
say("Hier deine Belohnung.")
                
say("")
                
pc.give_item2(501281)
                
syschat("Du hast eine Mysteriöse Saphirtruhe erhalten.")
                
set_state(__COMPLETE__)
            
end
        end
    end
    state __COMPLETE__ begin
    end
end 
Habe es mal selbst versucht ob ichs doch hinbekomme und auch gleich mal einen NPC einbinde, daraus wurde aber nichts, so siehts nun aus:

PHP Code:
quest metinkill begin
    state start begin
        when login 
or levelup with pc.get_level()>= 80 begin
            set_state
(info)
        
end
    end
    state info begin
        when letter begin
            send_letter
("Macht der Metinsteine!")
            
local v find_npc_by_vnum(20018)
            if 
!= 0 then
                target
.vid("target1"v"Baek-Go")
            
end
        end
        when button 
or info begin
            say_title
("Macht der Metinsteine!")
            
say("Gehe zu Baek-Go, er verlangt Hilfe")
            
say("von dir.")
        
end
        when target1
.target.click or 20018.chat."Macht der Metinsteine!" begin    
            target
.delete("target1")
            
say_title("Baek-Go")
            
say("")
            
say("Die Macht der Metinsteine ist erneut gestiegen.")
            
say("Zahlreiche Metinsteine versuchen den Roten Wald")
            
say("zu erobern. Du bist die einzige Hoffnung!")
            
say("")
            
say("Zerstöre 10 der dunklen Metine mit dem Namen Jeon-Un!")
            
say("Du wirst eine fabelhafte Belohnung erhalten!")
            
pc.setf("jeonun"10)
            
set_state(__COMPLETE__)
        
end
    end
    state kill begin
        when letter begin
            send_letter
("Macht der Metinsteine!")            
        
end
        when button 
or info begin
            say_title
("Macht der Metinsteine!")
            
say("Zerstöre 10 der dunklen Metine mit dem Namen Jeon-Un!")
            
say("Du wirst eine fabelhafte Belohnung erhalten!")
        
end
        
        when 8027.kill with pc
.get_level() >= 80 begin
            pc
.setf("jeonun"pc.getf("jeonun") - 1)
            if 
pc.getf("jeonun") == 0 then
                say_title
("Super!")
                
say("")
                
say("Du hast die dunklen Metine Jeon-Un zerstört")
                
say ("Gehe zu Baek-Go um diene Belohnung zu erhalten.")
                
set_state(__COMPLETE__)
                
set_state(to_Baek-Go)
            
end
        end
    end

    state to_Baek
-Go begin
        when letter begin
            send_letter
("Macht der Metinsteine!")
            
local v find_npc_by_vnum(20018)
            if 
pc.getf("jeonun") == 0 then
                target
.vid("target2"v"Baek-Go")
            
end
        end
        when button 
or info begin
            say_title
("Macht der Metinsteine!")
            
say("Du hast die dunklen Metine Jeon-Un zerstört")
            
say ("Gehe zu Baek-Go um diene Belohnung zu erhalten.")
        
end
        
        when 8027.kill with pc
.get_level() >= 80 begin
            pc
.setf("jeonun"pc.getf("jeonun") - 1)
            if 
pc.getf("jeonun") == 0 then
                say_title
("Super!")
                
say("")
                
say("Du hast die dunklen Metine Jeon-Un zerstört")
                
say ("Gehe zu Baek-Go um diene Belohnung zu erhalten.")
                
set_state(to_Baek-Go)
            
end
        end
        
        when target2
.target.click or 20018.chat."Macht der Metinsteine!" begin    
            target
.delete("target2")
            
say_title("Beak-Go:")
            
say("")
            
say("Du hast die dunklen Metine Jeon-Un zerstört")
            
say("und für den ausgleich im Roten Wald gesorgt!")
            
say("Hier deine Belohnung.")
            
say("")
            
pc.give_item2(501281)
            
syschat("Du hast eine Mysteriöse Saphirtruhe erhalten.")
            
set_state(__COMPLETE__)
        
end
    end
    state __COMPLETE__ begin
    end
end 
02/06/2012 16:06 .αpeх'#4688
Kann vllt. sich mal wer die Quest anschauen? :)

PHP Code:
quest tutorial_krieger begin
    state start begin
        when pc
.login with pc.get_map_index()==xxx and with pc.get_level() >=1 begin
            say_reward
("Willkommen bei den Kriegern!")
            
say("")
            
say("Oh, da ist ja noch einer von den neuen Kriegern..")
            
say("Ich hoffe du bist nicht so ein schwächling, wie der")
            
say("letzte der hier war! Naja egal, gut das du hier")
            
say("bist. Wir können jeden Krieger brauchen.")
                
wait()
                    
say("Gut, das hätten wir schonmal. Gibt es etwas, was")
                    
say("dich bis nun schon interessiert?")
                    
say("Wenn ja, hast du eine Frage?")
                    
locale s select("Ja""Nein")
                    if 
== 1 then
                wait
()
                    
say("Was interessiert dich denn?")
                    
locale i select("Warum bin ich hier?""Was machst du hier?""Abbrechen")
                    if 
== 1 then
                    say
("Du bist hier im Kriegsgebiet gelandet. Seitdem")
                    
say("die Metinsteine gefallen sind, müssen wir alle")
                    
say("Leute zusammenbekommen, damit wir eine Union aufbauen")
                    
say("können um gemeinsam die Steine und die damit ")
                    
say("verbundenden Streitereien zu besiegen.")
                
end
                    
if == 2 then
                    say
("")
                    
say("Was ich hier mache? Ich sage dir nur, wie")
                    
say("du überlebst, ohne drauf zu gehen. Ist ja nicht grade")
                    
say("wichtig, oder? Nunja..Ich will zum Thema zurückkehren.")
                    
say("Die Dorfbewohner haben stetig Aufgaben für dich, mit denen")
                    
say("du deinen Ruhm und deine Ehre steigern kannst. So kannst")
                    
say("du viel mehr erreichen als du dir erträumen kannst!")
                
end
                    
if == return
                
end
            end
                    
if == 2 then 
                    say
("")
                    
say("Gut, das währe dann ja geklärt. Du solltest")
                    
say("jetzt erstmal Außerhalb des Dorfes ein paar Tiere")
                    
say("jagen, damit ich sehen kann wie start du bist..")
                    
say("Komm wieder, wenn du Level 15 erreicht hast,")
                    
say("denn dann gebe ich dir eine Aufgabe, die sich gewaschen hat.")
                    
say("Los..LOOOOOS! Man, ich sollte meine Pillen nehmen..")
                    
say_reward("Du hast eine Equipment Truhe erhalten.")
                    
pc.give_item2(xxxx,)
                return
                
end
            end
        end
    end
end 
Dankeschöön :>
02/06/2012 16:46 Sp0ngeb0b ist cool#4689
PHP Code:
quest tutorial_krieger begin
    state start begin
        when login with pc
.get_map_index()== xxx and with pc.get_level() >=1 begin
            tutorial_krieger
.menu()
        
end
        
function menu()
            
local char = { [0] = "Krieger",[1] = "Ninja",[2] = "Sura",[3] = "Schamane"}
            
say_reward("Willkommen bei den "..char[pc.job].."!")
            
say("")
            
say("Oh, da ist ja noch einer von den neuen "..char[pc.job].."..")
            
say("Ich hoffe du bist nicht so ein schwächling, wie der")
            
say("letzte der hier war! Naja egal, gut das du hier")
            
say("bist. Wir können jeden "..char[pc.job].." brauchen.")
            
wait()
            
say("Gut, das hätten wir schonmal. Gibt es etwas, was")
            
say("dich bis nun schon interessiert?")
            
say("Wenn ja, hast du eine Frage?")
            
local s select("Ja""Nein")
            if 
== 1 then
                say
("Was interessiert dich denn?")
                
local p select("Warum bin ich hier?""Was machst du hier?""Abbrechen")
                if 
== 1 then
                    say
("Du bist hier im Kriegsgebiet gelandet. Seitdem")
                    
say("die Metinsteine gefallen sind, müssen wir alle")
                    
say("Leute zusammenbekommen, damit wir eine Union aufbauen")
                    
say("können um gemeinsam die Steine und die damit ")
                    
say("verbundenden Streitereien zu besiegen.")
                
end
                
if == 2 then
                    say
("")
                    
say("Was ich hier mache? Ich sage dir nur, wie")
                    
say("du überlebst, ohne drauf zu gehen. Ist ja nicht grade")
                    
say("wichtig, oder? Nunja..Ich will zum Thema zurückkehren.")
                    
say("Die Dorfbewohner haben stetig Aufgaben für dich, mit denen")
                    
say("du deinen Ruhm und deine Ehre steigern kannst. So kannst")
                    
say("du viel mehr erreichen als du dir erträumen kannst!")
                    
local q select("Zurück""Fertig")
                    if 
== 2 then
                        tutorial_krieger
.give_item()
                    
end
                    
if == 1 then
                        tutorial_krieger
.menu()
                    
end    
                end
            end
            
if == 2 then 
                tutorial_krieger
.give_item()
            
end
        end    
        
function give_item()
            
say("")
            
say("Gut, das währe dann ja geklärt. Du solltest")
            
say("jetzt erstmal Außerhalb des Dorfes ein paar Tiere")
            
say("jagen, damit ich sehen kann wie start du bist..")
            
say("Komm wieder, wenn du Level 15 erreicht hast,")
            
say("denn dann gebe ich dir eine Aufgabe, die sich gewaschen hat.")
            
say("Los..LOOOOOS! Man, ich sollte meine Pillen nehmen..")
            
say_reward("Du hast eine Equipment Truhe erhalten.")
            
pc.give_item2(xxxx,)
            return
        
end
    end
end 
pidddöö
02/06/2012 17:07 RealMadrid94rk#4690
Man muss 2 Metins killen, aber sobald 1 Metin down ist bekommt man die Belohnung und die quest ist fertig >.>

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

    state information begin
        when letter begin
            send_letter
("Macht der Metinsteine!")
        
end

        when info 
or button begin
            say_title
("Große Aufgabe!")
            
say("")
            
say("Seit einigen Tagen erhöht sich die Anzahl"
            
say("der Metinsteine in Map1 enorm."
            
say("Sorge für den nötigen ausgleich indem du"
            
say("25 Metine der Schlacht zerstörst."
            
say("Du wirst reichlich belohnt!")
            
say(""
            
say_reward("Zerstöre 2 Metine der Schlacht!"
            
say(""
            
pc.setqf("state"1)
            
q.set_counter("Metine der Schlacht"2)
        
end

        when kill begin
            
if npc.get_race() == 8003 then
                local count 
pc.getqf("state") - 1
                
if count <= 1 then
                    pc
.setqf("state"count)
                    
q.set_counter("Metine der Schlacht"count)
                
end
                    
if count == 0 then
                    say_title
("Macht der Metinsteine!"
                    
say("Super! Du hast für den ausgleich"
                    
say("in Map1 gesorgt!"
                    
syschat("Du hast ein Schwert+9 erhalten."
                    
pc.give_item2(191
                    
set_state(__COMPLETE__)
                
end
            end
        end
    end    
    state __COMPLETE__ begin
    end
end 
02/06/2012 17:17 Sp0ngeb0b ist cool#4691
PHP Code:
quest MetinderSchlacht begin
    state start begin
        when login with pc
.level >= 15 begin
            set_state
(information)
        
end
    end

    state information begin
        when letter begin
            send_letter
("Macht der Metinsteine!")
        
end

        when info 
or button begin
            say_title
("Große Aufgabe!")
            
say("")
            
say("Seit einigen Tagen erhöht sich die Anzahl"
            
say("der Metinsteine in Map1 enorm."
            
say("Sorge für den nötigen ausgleich indem du"
            
say("25 Metine der Schlacht zerstörst."
            
say("Du wirst reichlich belohnt!")
            
say(""
            
say_reward("Zerstöre 2 Metine der Schlacht!"
            
say(""
            
pc.setqf("state"2)
            
q.set_counter("Metine der Schlacht"2)
        
end

        when kill begin
            
if npc.get_race() == 8003 then
                local count 
pc.getqf("state") - 1
                
if count <= 1 then
                    pc
.setqf("state"count)
                    
q.set_counter("Metine der Schlacht"count)
                
end
                    
if count == 0 then
                    say_title
("Macht der Metinsteine!"
                    
say("Super! Du hast für den ausgleich"
                    
say("in Map1 gesorgt!"
                    
syschat("Du hast ein Schwert+9 erhalten."
                    
pc.give_item2(191
                    
set_state(__COMPLETE__)
                
end
            end
        end
    end    
    state __COMPLETE__ begin
    end
end 
02/06/2012 17:30 RealMadrid94rk#4692
Danke Sponge, bist bombe :)

Was muss ich einfügen, damit ich bei der Bio nur jede Stunde einen abgeben kann?

PHP Code:
    state start begin
        when login 
or levelup with pc.level>29 begin
            
if pc.getqf("start") == 0 then
                set_state
(talk_to_disciple_lv30)
                
pc.setqf("start"1)
            else
                
set_state(complete)
            
end    
        end    
    end
    state talk_to_disciple_lv30 begin
        when letter begin
            local v 
find_npc_by_vnum(20084)
            if 
!= 0 then target.vid("__TARGET__"v"Biologe")
            
end
            send_letter
("Die Forschung des Biologen")
        
end
        when button 
or info begin
            say_title
("Die Forschung des Biologen")
            
say("")
            
say("Der Biologe benötigt deine Hilfe.")
            
say("Sprich mit ihm.")
            
say("")
            
say_reward("Sprich mit dem Biologen")
            
say("")
        
end
        when __TARGET__
.target.click or 20084.chat."Orkzähne" begin
            target
.delete("__TARGET__")
            
say("Biologe:")
            
say("")
            
say("Oh, du hilfst mir?")
            
say("Gut ...")
            
say("Ich bin übrigens der Biologe")
            
say("und studiere zahlreiches aus der Pflanzenwelt.")
            
say("Wenn du mir bei meinen Forschungen hilfst,")
            
say("werde ich dich reich belohnen.")
            
say("")
            
wait()
            
say("Biologe:")
            
say("Ich habe vor kurzem wieder angefangen ...")
            
say("Ich Forsche an einer Legende ...")
            
say("Doch habe ich derzeit viel zu tun,")
            
say("es währe also nett, wenn du mir hilfst ...")
            
say("")
            
wait()
            
say("Biologe:")
            
say("Ich benötige zehn Orkzähne für meine Forschungen.")
            
say("Diese sind jedoch sehr zerbrechlich,")
            
say("es kann also sein, dass einige bei")
            
say("meinen Untersuchungen kaputt gehen.")
            
say("Ich benötige alle zehn,")
            
say("um meine Forschungen vollenden zu können.")
            
say("")
            
set_state(collect_orcteeth)
            
pc.setqf("duration",0)
            
pc.setqf("collect_count",0)
        
end
    end
    state collect_orcteeth begin
        when letter begin
            send_letter
("Die Forschung des Biologen")
        
end
        when button 
or info begin
            say_title
("Orkzähne")
            
say("")
            
say("Der Biologe gab euch den Auftrag,")
            
say("zehn Orkzähne zu sammeln.")
            
say("Sammelt und bringt sie dem Biologen.")
            
say("")
            
say_item_vnum(30006
            
say_reward("Du hast derzeit "..pc.getqf("collect_count").." abgegeben!")
            
say("")
        
end
        when 20084.chat
."Orkzähne" with pc.count_item(30006)>0 begin
            
if get_time()>pc.getqf("duration"then
                say
("Einen Moment ...")
                
say("Vielen Dank,")
                
say("lasst mich schnell überprüfen")
                
say("ob dieser Zahn in Ordnung ist ...")
                
say("")
                
pc.remove_item("30006"1)
                
pc.setqf("duration",get_time()+0)
                
wait()
                
local rand number(0,99)
                if 
rand<50 then
                    local count 
pc.getqf("collect_count")+1
                    
if count<10 then
                        pc
.setqf("collect_count"count)
                        
say("Biologe:")
                        
say("Hervorragend, dieser Zahn ist in Ordnung.")
                        
say("Bringt mir noch welche, damit ich meine")
                        
say("Forschungen abschließen kann.")
                        
say("")
                        
say_reward("Ihr habt derzeit "..pc.getqf("collect_count").." abgegeben!")
                        
say("")
                    else 
                        
say("Biologe:")
                        
say("Du hast mir die 10 Stück gebracht...")
                        
say("Nun bitte ich dich noch, mir den")
                        
say("Jinunggyis Seelenstein zu bringen.")
                        
say("Du bekommst ihn von Stolzen Orks ...")    
                        
say("Ich denke, dafür bist du stark genug.")
                        
say("")
                        
pc.setqf("collect_count",0)
                        
pc.setqf("duration",0
                        
set_state(collect_jinunggyis)
                    
end
                
else                                
                    
say("Biologe:")
                    
say("Es tut mir leid, aber der Zahn ist bei")
                    
say("den Untersuchungen zerbrochen.")
                    
say("Bitte hol mir einen neuen Orkzahn!")
                    
say("")
                
end
            
else
                
say("Biologe:")
                
say("Entschuldige, ich habe die letzten")
                
say("Studien noch nicht beendet ...")
                
say("Bitte bring mir den Zahn später.")
                
say("")
            
end
        end
    end
    state collect_jinunggyis begin
        when letter begin
            send_letter
("Jinunggyis Seelenstein")
        
end
        when button 
or info begin
            say_title
("Jinunggyis Seelenstein")
            
say("")
            
say("Ihr habt alle zehn Orkzähne gesammelt.")
            
say("Nun müsst ihr Jinunggyis Seelenstein erbeuten.")
            
say("")
            
say_item_vnum(30220)
            
say("Ob dieser Stein tatsächlich eine Seele enthält?")
            
say("")
        
end
        when 635.kill 
or 636.kill or 637.kill begin
            
if pc.count_item(30220)<1 then
                local rand 
number(0,99)
                if 
rand<5 then pc.give_item2(302201)
                
end
            end    
        end
        when 20084.chat
."Jinunggyis Seelenstein" begin
            
if pc.count_item(30220)>0 then
                say
("Biologe:")
                
say("Dank deiner Hilfe verstehe ich nun")
                
say("die Legende um Jinunggyis Seelenstein.")
                
say("Du hast hart gekämpft.")
                
say("Sprich mit Baek-Go, er wird dir helfen,")
                
say("deine inneren Kräfte zu steigern.")
                
say("")
                
pc.remove_item(30220,1)
                
set_state(jinunggyis_reward)
            else
                
say("Biologe:")
                
say("Du hast mir die 10 Stück gebracht...")
                
say("Nun bitte ich dich noch, mir den")
                
say("Jinunggyis Seelenstein zu bringen.")
                
say("Du bekommst ihn von Stolzen Orks ...")    
                
say("Ich denke, dafür bist du stark genug.")
                
say("")        
            
end
        end
    end    
    state jinunggyis_reward begin
        when letter begin
            send_letter
("Sprich mit Baek-Go")
            
local v find_npc_by_vnum(20018)
            if 
!= 0 then target.vid("__TARGET__"v"Doktor")
            
end
        end
        when button 
or info begin
            say
("Um die Belohnung des Biologen zu erhalten")
            
say("suche mit den Informationen der")
            
say("Orkzähne und des Seelensteins Baek-Go auf.")
            
say("")
        
end
        when __TARGET__
.target.click  or 20018.chat."Belohnung des Biologen" begin
            target
.delete("__TARGET__")
            
say_title("Baek-Go:")
            
say("Ich sehe ...")
            
say("Der Biologe hat dich zu mir geschickt.")
            
say("Hier ist deine Belohnung:")
            
say("")
            
say_reward("Du erhälst:")
            
say_reward("Bewegungsgeschwindigkeit +10% (Dauerhaft)")
            
say("")
            
affect.add_collect(apply.MOV_SPEED1060*60*24*365*60)
            
set_state(complete)
        
end
    end
    state complete begin
    end
end 
02/06/2012 18:54 Sp0ngeb0b ist cool#4693
einfach pc.setqf("duration",get_time()+0) in
pc.setqf("duration",get_time()+60*60) ändern ;)
02/06/2012 20:23 RealMadrid94rk#4694
Okk dann steht das 60*60 wohl für 60 Sekunden und 60 Minuten oder?

Wie ändere ich die Wahrscheinlichkeit, dass der Orkzahn klappt?
02/06/2012 20:39 Sp0ngeb0b ist cool#4695
local rand = number(0,99)
if rand<50 then
entspricht ungefähr 50% also number wählt eine zahl zwischen den zahlen in den klammern
also wenn die zufallszahl unter 50 ist dann klappt der orkzahn andernfalls klappt er nicht