[SERVICE] Die Questkontrolle

11/04/2012 01:17 ©by Noa#7096
was für ein siegel zu welchem Tier?



Auf Richtigkeit testen bitte
PHP Code:
--------------------------------------
-- 
durchsagen.quest
-- zufall oder gewollte texte
--------------------------------------
quest durchsagen begin
    state start begin
        
        local texte 
= {                        -- Tabelle
        
        
{"Text"},--Nr.1
        
{"Text"},--Nr.2
        
{"Text"},--Nr.3
        
{"Text"},--Nr.4
        
{"Text"},--Nr.5
        
{"Text"},--Nr.6
        
{"Text"},--Nr.7
        
--{"Text"},--Nr.8
        
--...
        }
        
        
local zufall number{17}            -- zufall deklariertwenn mehrere nummern
                                            
-- die 7 erhöhen
        local zufall1 
texte[zufall][1]    -- zufall definiert
        
--local exact zufall[nur 1-7]        -- eine nummer eingeben 1-7 wenn mehrere
                                            
--dan [1][2][3uswfalls es ein text wird.
        
when login or logout begin            -- nur zufallstext
            chat
(""..zufall1.."")
        
end
        
--when login begin
        
--    chat(""..exact.."")                -- wenn logout dann "exact"
        
--end
    end
end 
PHP Code:
quest blabla begin
    state start begin 
        when ID
.take begin                -- ID des Items
        
            local i 
item.get_id()
            
            if 
pc.count_item()(i) > 0 then
                local a 
item.get_count()
                
item_remove(ia)        -- Eins von beiden sollte richtig sein
                pc
.remove_item(ia)    -- 
            else
                
chat("Du ")
            
end
        end
    end
end 
hat es schon jmd getestet?
11/04/2012 12:57 nightstalker112#7097
naja ne erklärung wäre mir schon lieb
bei dem siegel 53001 sollte das erste pet kommen aber es kommt immer das pferd

PHP Code:
quest official_pets begin
    state start begin
        when 53001.
use with pc.getqf("icephoenix") == and pc.getqf("reindeer") == and pc.getqf("pwahuang") == and pc.getqf("dog") == and pc.getqf("lion") == and pc.getqf("pig") == and pc.getqf("tiger") == 0 begin
            
if pc.getqf("firephoenix_use") == 0 then
                local old_horse_name 
horse.get_name() ;
                    if 
string.len(old_horse_name) == 0 then
                        chat
("Dein Haustier hat noch keinen Namen!")
                    
end
                chat
("Dein Haustier wurde gerufen!")
                
local your_horse_level horse.get_level()
                
pc.setqf("horse_level_save"your_horse_level)
                
pc.setqf("firephoenix_use"1)
                
pc.setqf("firephoenix"1)
                
affect.add_collect(apply.ATT_GRADE_BONUS10060*60*8)
                
affect.add_collect(apply.DEF_GRADE_BONUS10060*60*8)
                
affect.add_collect(apply.ATT_MAX_HP10060*60*8)
                
horse.set_level("22")
                
horse.unsummon() horse.summon()
                
                
local horse_settings pc.getqf("horse_level_save")
                
horse.set_level(horse_settings)
            else
                
chat("Dein Haustier verabschiedet sich nun von dir!")
                
affect.remove_collect(apply.ATT_GRADE_BONUS10060*60*8)
                
affect.remove_collect(apply.DEF_GRADE_BONUS10060*60*8
                
affect.remove_collect(apply.ATT_MAX_HP10060*60*8)                 
                
horse.unsummon()
                
pc.setqf("firephoenix_use"0)
                
pc.setqf("firephoenix"0)
                
                
local horse_settings pc.getqf("horse_level_save")
                
horse.set_level(horse_settings)
            
            
end
        end 
11/04/2012 14:48 [ShiizoPhreN]™#7098
hi leute ich hab nen problem mit der wartezeit

Code:
		when 71146.use begin
		
		wartezeit = 60*30 --Zeit abgabe
		maximale_truhen = 10 --Maximale anzahl an truhen
    
        if pc.getqf("anzahl_"..item.get_id().."") >= 1 then
            if pc.getqf("time_"..item.get_id().."") <= get_time() then
            pc.setqf("anzahl_"..item.get_id().."", pc.getqf("anzahl_"..item.get_id().."") -1)
            pc.setqf("time_"..item.get_id().."", get_time() + wartezeit)
            chat("Du kannst noch "..pc.getqf("anzahl_"..item.get_id().."").." mal die Truhe öffnen.")
                if pc.getqf("anzahl_"..item.get_id().."") == 0 then
                pc.delqf("anzahl_"..item.get_id().."")
                pc.delqf("time_"..item.get_id().."")
                item.remove()
                return
                end
            else
            chat("Du kannst die nächste Truhe erst in "..pc.getqf("time_"..item.get_id().."") - get_time().." Minuten öffnen.")
            end
man kann das item alle 30 minuten anklicken klickt man es im cooldown an dann kommt der text "Du kannst die nächste Truhe erst in "..pc.getqf("time_"..item.get_id().."") - get_time().." Minuten öffnen." allerdings zeigt er mir die sekunden an und ich will das er mir die minuten anzeigt kann jemand helfen ?
11/04/2012 15:15 skurto#7099
resolved..
11/04/2012 16:47 Syuki#7100
PHP Code:
quest milligaul begin
    state start begin
        when 20349.chat
."Millitärpferd" with horse.get_grade() == 11 begin
            say_title
("Millitärpferd kaufen")
            
say("")
            
say("Willst du ein Millitärpferd kaufen?")
            
say("Es kostet dich nur 15 Perdemedaillen.")
            
say("")
            
say_reward("Möchtest du eins kaufen?")
            
say("")
                
local b=select("Ja""Abbrechen")
                    if 
1==b then
                
if pc.count_item(50050)>=15 then
                pc
.remove_item("50050"15)
                    
say_title("Stallbursche")
                    
say("Oh danke! Hier kriegst du ein Millitärpferd.")
                    
say("Pass gut drauf auf!")
                        
horse.set_level(21)
                        
horse.summon() 
                        
horse.ride()    
                
pc.give_item2("50053"1)
            else
                
say("Du hast leider nicht genug Medaillen.")
                
say("")
                
say_reward("Komm wieder, wenn du genug hast..")
            
end
                
elseif 2==b then
                
return
                
end
            end
        end
    end
end 
Die quest funktioniert nicht, aber in FreeBSD beim reloaden kommt kein Fehler.
Hilft mir wer? :awesome:
11/04/2012 17:23 nightstalker112#7101
näachste quest probiert aber es kommt immer mein dämliches gaul

PHP Code:
quest phoenix begin 
    state start begin 
        when 53001.
use with pc.getqf("Feuerphoenix") == 0 begin 
            
if pc.getqf("Feuerphoenix") == 0 then 
                local old_horse_name 
horse.get_name() ; 
                    if 
string.len(old_horse_name) == 0 then 
                        say_title
("Feuerphönix-Siegel"
                        
say("Es ist ein Problem beim rufen des Feuerphönix"
                        
say("aufgetreten. Deine Haustiere haben noch nicht"
                        
say("einen Namen erhalten. Du solltest ihnen einen"
                        
say("Namen geben, bevor du solche mächtige Tiere"
                        
say("wie den Feuerphönix rufst. Dafür gibt es einen"
                        
say("ganz besonderen Gegenstand bei der Gemicht-"
                        
say("warenhändlerin zu einem günstigen Preis."
                        return 
                    
end 
                chat
("Dein mächtiger Feuerphönix wurde gerufen!"
                
local your_horse_level horse.get_level() 
                
pc.setqf("horse_level_save"your_horse_level
                
pc.setqf("Feuerphoenix"1
                
pc.setqf("Feuerphoenix"1
                
affect.add_collect(apply.ATT_GRADE_BONUS10060*60*8
                
affect.add_collect(apply.DEF_GRADE_BONUS10060*60*8
                
affect.add_collect(apply.MAX_HP100060*60*8
                
horse.set_level("22"
                
horse.unsummon() horse.summon() 
            else 
                
chat("Dein Feuerphönix verabschiedet sich nun von dir!"
                
affect.remove_collect(apply.ATT_GRADE_BONUS10060*60*8
                
affect.remove_collect(apply.DEF_GRADE_BONUS10060*60*8)    
                
affect.remove_collect(apply.MAX_HP100060*60*8)                    
                
horse.unsummon() 
                
pc.setqf("Feuerphoenix"0
                
pc.setqf("Feuerphoenix"0
                 
                
local horse_settings pc.getqf("horse_level_save"
                
horse.set_level(horse_settings)  
            
end 
        end 
    end 
end 
11/04/2012 18:08 He3o Sippel#7102
Quote:
Originally Posted by Marcely View Post
PHP Code:
quest milligaul begin
    state start begin
        when 20349.chat
."Millitärpferd" with horse.get_grade() == 11 begin
            say_title
("Millitärpferd kaufen")
            
say("")
            
say("Willst du ein Millitärpferd kaufen?")
            
say("Es kostet dich nur 15 Perdemedaillen.")
            
say("")
            
say_reward("Möchtest du eins kaufen?")
            
say("")
                
local b=select("Ja""Abbrechen")
                    if 
1==b then
                
if pc.count_item(50050)>=15 then
                pc
.remove_item("50050"15)
                    
say_title("Stallbursche")
                    
say("Oh danke! Hier kriegst du ein Millitärpferd.")
                    
say("Pass gut drauf auf!")
                        
horse.set_level(21)
                        
horse.summon() 
                        
horse.ride()    
                
pc.give_item2("50053"1)
            else
                
say("Du hast leider nicht genug Medaillen.")
                
say("")
                
say_reward("Komm wieder, wenn du genug hast..")
            
end
                
elseif 2==b then
                
return
                
end
            end
        end
    end
end 
Die quest funktioniert nicht, aber in FreeBSD beim reloaden kommt kein Fehler.
Hilft mir wer? :awesome:
PHP Code:
quest milligaul begin
    state start begin
        when 20349.chat
."Millitärpferd" with horse.get_grade() == 11 begin
            say_title
("Millitärpferd kaufen")
            
say("")
            
say("Willst du ein Millitärpferd kaufen?")
            
say("Es kostet dich nur 15 Perdemedaillen.")
            
say("")
            
say_reward("Möchtest du eins kaufen?")
            
say("")
            
local b=select("Ja""Abbrechen")
            if 
b==1 then
                
if pc.count_item(50050)>=15 then
                    say_title
("Stallbursche")
                    
say("Oh danke! Hier kriegst du ein Millitärpferd.")
                    
say("Pass gut drauf auf!")
                    
horse.set_level(21)
                    
horse.summon() 
                    
horse.ride()    
                    
pc.give_item2(500531)
                    
pc.remove_item(5005015)
                else
                    
say("Du hast leider nicht genug Medaillen.")
                    
say("")
                    
say_reward("Komm wieder, wenn du genug hast..")
                
end
            
elseif b==2 then
                
return
            
end
        end
    end
end 
11/04/2012 20:23 Pаylasici#7103
Quote:
Originally Posted by [ShiizoPhreN]™ View Post
hi leute ich hab nen problem mit der wartezeit

Code:
		when 71146.use begin
		
		wartezeit = 60*30 --Zeit abgabe
		maximale_truhen = 10 --Maximale anzahl an truhen
    
        if pc.getqf("anzahl_"..item.get_id().."") >= 1 then
            if pc.getqf("time_"..item.get_id().."") <= get_time() then
            pc.setqf("anzahl_"..item.get_id().."", pc.getqf("anzahl_"..item.get_id().."") -1)
            pc.setqf("time_"..item.get_id().."", get_time() + wartezeit)
            chat("Du kannst noch "..pc.getqf("anzahl_"..item.get_id().."").." mal die Truhe öffnen.")
                if pc.getqf("anzahl_"..item.get_id().."") == 0 then
                pc.delqf("anzahl_"..item.get_id().."")
                pc.delqf("time_"..item.get_id().."")
                item.remove()
                return
                end
            else
            chat("Du kannst die nächste Truhe erst in "..pc.getqf("time_"..item.get_id().."") - get_time().." Minuten öffnen.")
            end
man kann das item alle 30 minuten anklicken klickt man es im cooldown an dann kommt der text "Du kannst die nächste Truhe erst in "..pc.getqf("time_"..item.get_id().."") - get_time().." Minuten öffnen." allerdings zeigt er mir die sekunden an und ich will das er mir die minuten anzeigt kann jemand helfen ?
Du kannst doch kurz davor eine Funktion festlegen, wo der Wert der Funktion aus der Umrechnung
der Funktion "GET_TIME" in Minuten bildet. Den Wert der Funktion gibst du dann als "String" aus,
das heißt anstelle des "GET_TIME" trägst du dort zum Beispiel "GET_TIME_UMRECHNUNG" ein.
11/05/2012 14:54 DarkNessWorld2#7104
#edit selber rausgefunden
11/05/2012 18:05 ©by Noa#7105
Kann jemand mal auf die Richtigkeit testen?
Die Quest löscht ein item was auf dem Npc gezogen wird

PHP Code:
quest blabla begin
    state start begin 
        when ID
.take begin                -- ID des NPC
        
            local i 
item.get_id()
            
            if 
pc.count_item()(i) > 0 then
                local a 
item.get_count()
                
item_remove(ia)        -- Eins von beiden sollte richtig sein
                
--pc.remove_item(ia)    -- 
            else
                --do 
nothing
            end
        end
    end
end 
wird 50% bei lua so ausgerechnet?
wen man nur die hälfte des lebens hat.

PHP Code:
local tp pc.get_max_hp()
local halb math.abs(2tp)  --1/50
und bei 1/4
PHP Code:
local tp pc.get_max_hp()
local halb math.abs(tp /2)/2   --1/425
11/06/2012 18:22 Sagota#7106
Ich kenne mich gar nicht Questwriter aus!

Kann jemand mir eine Quest erstellen

NPC Konto(mit Pin) quest
- Gildenkonto
- Geldspeicher
- Lager

Danke schon mal
11/06/2012 18:46 ©by Noa#7107
kommt alles hier drauf
[Only registered and activated users can see links. Click Here To Register...]
11/06/2012 18:50 Sagota#7108
Quote:
Originally Posted by ©by Noa View Post
kommt alles hier drauf
[Only registered and activated users can see links. Click Here To Register...]
nein, du hast falsch verstanden!

Ich meine so z.B

1. Npc Klicken
2. PIN erstellen/ändern
3. auswählen
- Gildekonto
- Geldspeicher
- Lager

dann so geht weiter!
11/06/2012 18:57 ©by Noa#7109
ich habe dich richtig Verstanden, die Gildenkonto quest wird bald verbessert.
__________

Auf Richtigkeit testen bitte.

PHP Code:
--------------------------------------
-- 
durchsagen.quest
-- zufall oder gewollte texte
--------------------------------------
quest durchsagen begin
    state start begin
        
--when logout begin
        
--    chat(""..exact.."")                    -- genaue Texte beim logout
        
--end
        when login begin                        
-- nur zufallstexte beim login
            chat
(""..zufall1.."")
        --    
chat(""..warnung.."")
        
        
local zufall number{13}                -- zufall deklariertwenn mehrere nummern
        local vote 
number{67}                -- exacte texte    
        local zufall1 
texte[zufall][1][2][3]    -- zufall definiert
        
        
--local exact texte[vote][6][7]        -- wenn logout dann gibt er den text in Nr.6 7 wieder
                                                
-- eine nummer eingeben 1-7 wenn mehrere
                                                
-- dan [1][2][3uswfalls es ein text wird.
        --
local zufall1 texte[zufall][1][7]
        --
local warnung texte[acc][4][5]
        
        
local name pc.get_name()
        
local texte = {                        -- Tabelle
        
        
{"Willkommen auf Server Name "..name.." "},                                        --Nr.1
        
{"Unsere Adresse zum Forum ist http://www.google.de/forum "},                    --Nr.2
        
{"Unsere Homepage ist http://www.google.de/homepage"},                            --Nr.3
        
{"Gebt niemals eure Accountdaten weiter, einen GameMaster erkennst du an den-"},--Nr.4
        
{"eckigen klammern [GM], ein GM wird euch niemals nach den Accdaten Fagen."},    --Nr.5
        
{"Bevor ihr Schlafen geht vergesst nicht für den Server zu voten"},                --Nr.6
        
{"Voten könnt ihr unter: http:// www.google.de/voten"},                            --Nr.7
        
{"Text"},                                                                        --Nr.8
        
--...
        }

        
end
    end
end 
11/07/2012 16:44 .Chakratos#7110
Bitte einmal prüfen :)

der sinn ist ein item das bei benutzung einen ausgewählten boni +5% gibt aber man es maximal 3x insgesamt benutzen kann (also nicht das das item nach 3benutzungen verschwindet sonder bei dem dritten item funktioniert das ganze nicht mehr)

Code:
quest RolleDerMacht begin
    state start begin
        when XXXXX.use begin
            local count = pc.getqf("anzahl") +1
            if count < 3 then
                pc.setqf("anzahl",count +1)
                say_title("Wähle eine Kategorie:")
				local menu=select ("Stark gegen...","...verteidigung","Sonstiges","Abrechen")
				if menu==1
					say_title("Wähle einen Bonus:")
					local s=select("Stark gegen Monster","Stark gegen Halbmenschen","Stark gegen Untote","Stark gegen Teufel","Abrechen")
						if s==1 then
							affect.add_collect(apply.ATT_BONUS_TO_MONSTER, 5, 60*60*24*365*60)
							chat("Du hast Stark gegen Monster gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==2 then
							affect.add_collect(ATTBONUS_HUMAN, 5, 60*60*24*365*60)
							chat("Du hast Stark gegen Halbmenschen gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==3 then
							affect.add_collect(ATTBONUS_UNDEAD, 5, 60*60*24*365*60)
							chat("Du hast Stark gegen Untote gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==4 then
							affect.add_collect(ATTBONUS_DEVIL, 5, 60*60*24*365*60)
							chat("Du hast Stark gegen Teufel gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==3 then						
							Return
				if menu==2
					say_title("Wähle einen Bonus:")
					local s=select("Schwertverteidigung","Zweihandverteidigung","Dolchverteidigung","Fächerverteidigung","Glockenverteidigung","Pfeilwiderstand","Magiewiderstand","Abrechen")
						if s==1 then
							affect.add_collect(RESIST_SWORD, 5, 60*60*24*365*60)
							chat("Du hast Schwertverteidigung gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==2 then
							affect.add_collect(RESIST_TWOHAND, 5, 60*60*24*365*60)
							chat("Du hast Zweihandverteidigung gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==3 then
							affect.add_collect(RESIST_DAGGER, 5, 60*60*24*365*60)
							chat("Du hast Dolchverteidigung gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==4 then
							affect.add_collect(RESIST_FAN, 5, 60*60*24*365*60)
							chat("Du hast Fächerverteidigung gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==5 then
							affect.add_collect(RESIST_BELL, 5, 60*60*24*365*60)
							chat("Du hast Glockenverteidigung gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==6 then
							affect.add_collect(RESIST_BOW, 5, 60*60*24*365*60)
							chat("Du hast Pfeilwiderstand gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==7 then
							affect.add_collect(RESIST_MAGIC, 5, 60*60*24*365*60)
							chat("Du hast Magiewiderstand gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==8 then						
							Return
				if menu==3
					say_title("Wähle einen Bonus:")
					local s=select("Zaubergeschwindigkeit","Abrechen")
						if s==1 then
							affect.add_collect(CAST_SPEED, 5, 60*60*24*365*60)
							chat("Du hast Zaubergeschwindigkeit gewählt dieser bonus ist nun permanent +5%.")
							set_state(__COMPLETE__)
						if s==2 then						
							Return
						end
					end
				end
			else
				chat("Du hast die Rolle der Macht bereits 3x benutzt")
				pc.delqf("anzahl")
            end
        end
    end
end

LG Chakratos