[SERVICE] Die Questkontrolle

03/04/2015 22:21 MILCHSOCO#11146
Quote:
Originally Posted by Rofelmau View Post
Theoretisch solltest du die Belohnung nach dem 5. Kill automatisch ins Inventar bekommen ohne nochmal was anklicken zu müssen, so ist sie jedenfalls geschrieben, soll das geändert werden?
Nicht unbedingt, Jedoch sollte am Ende wenn man die 5 Metins getötet haben ein Text erscheinen " Herzlichen Glückwunsch du hast es geschafft! Du bekommst als Belohnung eine PVM Rüstung. Viel Spaß"

Jedoch kann man es auch so machen das man nochmal auf die Quest klickt um die Belohnung zu bekommen. Wäre alles beide Gut

Mfg
03/04/2015 22:31 Nick#11147
Quote:
Originally Posted by MILCHSOCO View Post
Nicht unbedingt, Jedoch sollte am Ende wenn man die 5 Metins getötet haben ein Text erscheinen " Herzlichen Glückwunsch du hast es geschafft! Du bekommst als Belohnung eine PVM Rüstung. Viel Spaß"

Jedoch kann man es auch so machen das man nochmal auf die Quest klickt um die Belohnung zu bekommen. Wäre alles beide Gut

Mfg

Diese Quest sollte deinen Anforderungen entsprechen.

lg
03/05/2015 06:46 rollback#11148
Quote:
Originally Posted by .JayZoN View Post

Diese Quest sollte deinen Anforderungen entsprechen.

lg
Bei der Quest ist es aber so, dass man schon mit Lv 1 die Quest abschließen kann. Der Brief würde erst mit Lv 50 darauf hinweisen, die Kills zählen aber schon vorher.

PHP Code:
quest jagd begin 
    state start begin 
        when login 
or levelup with pc.get_level() >= 50 begin 
            send_letter
("Jagd-Quest") 
        
end 
        when button 
or info with pc.get_level() >= 50 begin 
            say_title
("Jagd-Quest") 
            
say("") 
            
say("Töte 5 mal "..mob_name(8020)) 
            
say("Du triffst ihn im SD2") 
            
say("") 
            
say("Du erhälst als Belohnung") 
            
say("etwas nützliches das dich in PVM stärkt")
            if 
s = select("Quest annehmen", "Abbrechen") == 2 then return end
            pc
.setqf("kill_count", 5)
            
set_state(jagd_do)
        
end
    end
    state jagd_do begin
        when letter begin
            send_letter
("Jagd-Quest: Status")
        
end
        when button 
or info begin
            say
("Rest: "..pc.getqf("kill_count").."x "..mob_name(8020))
        
end
        when kill with npc
.get_race() == 8020 begin
            
if pc.getqf("kill_count") >= 2 then
                pc
.setqf("kill_count", pc.getqf("kill_count")-1) 
                
q.set_counter("Verbleibend", pc.getqf("kill_count"))
            else
                
local reward = {42040, 42041, 42042, 42043}
                
pc.give_item2(reward[pc.get_job()+1])
                
pc.delqf("kill_count")
                
syschat("Herzlichen Glückwunsch du hast es geschafft! Du bekommst als Belohnung eine PVM Rüstung.") 
                
set_state(__COMPLETE__) 
            
end 
        end 
    end 
    state __COMPLETE__ begin 
    end 
end 
03/05/2015 16:57 Nick#11149
Quote:
Originally Posted by [Sensenmann] View Post
Bei der Quest ist es aber so, dass man schon mit Lv 1 die Quest abschließen kann. Der Brief würde erst mit Lv 50 darauf hinweisen, die Kills zählen aber schon vorher.
PHP Code:
when kill with pc.get_level() >= 50 and npc.get_race() == 8020 begin 
bzw.
PHP Code:
when kill with npc.get_race() == 8020 begin
    
if pc.get_level() >= 50 then
    
..
.. 
Quote:
Originally Posted by [Sensenmann] View Post
PHP Code:
quest jagd begin 
    state start begin 
        when login 
or levelup with pc.get_level() >= 50 begin 
            send_letter
("Jagd-Quest") 
        
end 
        when button 
or info with pc.get_level() >= 50 begin 
            say_title
("Jagd-Quest") 
            
say("") 
            
say("Töte 5 mal "..mob_name(8020)) 
            
say("Du triffst ihn im SD2") 
            
say("") 
            
say("Du erhälst als Belohnung") 
            
say("etwas nützliches das dich in PVM stärkt")
            if 
s = select("Quest annehmen", "Abbrechen") == 2 then return end
            pc
.setqf("kill_count", 5)
            
set_state(jagd_do)
        
end
    end
    state jagd_do begin
        when letter begin
            send_letter
("Jagd-Quest: Status")
        
end
        when button 
or info begin
            say
("Rest: "..pc.getqf("kill_count").."x "..mob_name(8020))
        
end
        when kill with npc
.get_race() == 8020 begin
            
if pc.getqf("kill_count") >= 2 then
                pc
.setqf("kill_count", pc.getqf("kill_count")-1) 
                
q.set_counter("Verbleibend", pc.getqf("kill_count"))
            else
                
local reward = {42040, 42041, 42042, 42043}
                
pc.give_item2(reward[pc.get_job()+1])
                
pc.delqf("kill_count")
                
syschat("Herzlichen Glückwunsch du hast es geschafft! Du bekommst als Belohnung eine PVM Rüstung.") 
                
set_state(__COMPLETE__) 
            
end 
        end 
    end 
    state __COMPLETE__ begin 
    end 
end 
PHP Code:
if s = select("Quest annehmen", "Abbrechen") == 2 then return end 
Damit würde ein Fehler beim Kompilieren ausgegeben werden. Korrekt wäre;
PHP Code:
if select("Quest annehmen", "Abbrechen") == 2 then return end 
lg
03/05/2015 17:00 MILCHSOCO#11150
Quote:
Originally Posted by .JayZoN View Post
PHP Code:
when kill with pc.get_level() >= 50 and npc.get_race() == 8020 begin 
bzw.
PHP Code:
when kill with npc.get_race() == 8020 begin
    
if pc.get_level() >= 50 then
    
..
.. 


PHP Code:
if s = select("Quest annehmen", "Abbrechen") == 2 then return end 
Damit würde ein Fehler beim Kompilieren ausgegeben werden. Korrekt wäre;
PHP Code:
if select("Quest annehmen", "Abbrechen") == 2 then return end 
lg

Wie würdest du die Quest machen?

Mdg
03/05/2015 17:41 rollback#11151
Quote:
Originally Posted by .JayZoN View Post
PHP Code:
when kill with pc.get_level() >= 50 and npc.get_race() == 8020 begin 
bzw.
PHP Code:
when kill with npc.get_race() == 8020 begin
    
if pc.get_level() >= 50 then
    
..
.. 


PHP Code:
if s = select("Quest annehmen", "Abbrechen") == 2 then return end 
Damit würde ein Fehler beim Kompilieren ausgegeben werden. Korrekt wäre;
PHP Code:
if select("Quest annehmen", "Abbrechen") == 2 then return end 
lg
stimmt, das mit "if s = select" habe ich komplett übersehen. würde es aber trotzdem in einer 2. state machen :)
03/05/2015 20:18 yodaniyoo#11152
Hello guys, I tried to create a kill quest, but it doesn't work properly ....

The quest works well till set_state(kill_monsters) on line 71 , that state doesn't trigger

Here is the quest :

Code:
quest give_basic_weapon begin
    state start begin
        when login begin
            if pc.getqf("basic_weapon") != 0 then
                return
            end
            send_letter("+Welcome to Metin2")
            q.set_icon("scroll_open_purple.tga")
            set_state(give_start_items)
        end
    end
        
    state give_start_items begin
        when login begin
            if pc.getqf("basic_weapon") != 0 then
                return
            end
            local item_vnum = 19

            if pc.job == 3 then     -- shaman
                item_vnum = 7009 
            elseif pc.job == 1 then -- ninja
                item_vnum = 1009
            end
            
            local item_count = pc.countitem(item_vnum)
            local equip_weapon = pc.weapon
            if item_count == 0 and equip_weapon != item_vnum then
                pc.give_item2(item_vnum)    -- jobtype weapon
                pc.give_item2(50187)        -- apprentice chest
                pc.give_item2(27003, 200)    -- red potions
                pc.give_item2(27006, 200)    -- blue potions                
                pc.give_item2(50052)        -- armed horse book
                horse.set_level(11)            -- armed horse
                horse.summon()
                horse.ride()
                set_state(welcome_letter)
            end
        end
    end
            
    state welcome_letter begin
        when button or info begin
            addimage(20, 12, "welcome.tga")
            say("")
            say("")
            say("")
            say("")
            say_title("Warmest welcome from Metin2 Team !")
            say("")
            say("Hello adventurer!")
            say("")
            say("Our Staff gives you a warm welcome to Metin2!")
            say("Do not hesitate to contact a GM if you need support")
            say("and please respect our rules.")
            say("")
            wait()
            addimage(20, 12, "welcome.tga")
            say("")
            say("")
            say("")
            say("")
            say("1) Use of Hack, Bots and Bug Exploits is forbidden.")
            say("2) Use only english when writing in call chat.")
            say("3) Do not insult or harass other players.")
            say("4) Do not steal monsters or drops from players")
            say(" belonging to your own kingdom.")
            say("")
            say_reward("Thanks in advance and enjoy your time with us!")
            say("")
            set_state(kill_monsters)        
        end
    end
    state kill_monsters begin
        when letter begin
            send_letter("Your first task!")
        end
        when button or info begin
            say_title("Your first task!")
            say("Hello adventurer!")
            say("In order to get your level 1 equipment")
            say("you need to kill 10 wild dogs.")
            say("")
            say("Good Luck!")
            
            pc.setqf("state", 10)
            q.set_counter("Wild Dogs", 10)
        end
        when 101.kill begin
            local count = pc.getqf("state") - 1

            if count < 10 then
                pc.setqf("state", count)
                q.set_counter("Wild Dogs:", count)
            end

            if count == 0 then
                say_title("You have finished the task!")
                say_reward("Great Job!")
                say_reward("Here is your reward!")
                pc.give_item2(19)
                clear_letter()
                set_state(__COMPLETE__)
            end
        end
    end
    state __COMPLETE__ begin
    end
end
03/05/2015 22:07 Nick#11153
Quote:
Originally Posted by yodaniyoo View Post
Hello guys, I tried to create a kill quest, but it doesn't work properly ....

The quest works well till set_state(kill_monsters) on line 71 , that state doesn't trigger

Here is the quest :

Replace
PHP Code:
        when 101.kill begin 
with
PHP Code:
        when kill with npc.get_race() == 101 begin 
and try it again.
03/05/2015 23:48 WyppyOne#11154
I receive "Killed" in console ...
PHP Code:
quest lingouriq begin
   state start begin
        when 9005.chat
."Lingouri" begin   
            say_title
("Administratorul depozitului:")
            
say("")
            
say("Salut "..pc.get_name().." aici poti sa cumperi sau sa")
            
say("vinzi lingouri.")
            
say("")
            
say("Pentru ce-ai venit la mine?")
            
say("")
         
            
local canj = select ("Cumpara" , "Vinde" , "Iesire")   
           
            if 
canj == 1 then
                say_title
("Administratorul depozitului:")
                
say("")
                
local elegir = select("Lingou 100kk" , "Lingou 500kk" , "Lingou 1kkk" , "Iesire")   
                if 
elegir == 1 then
                    
if pc.get_gold()>=999999999 then
                        pc
.change_money(-999999999)
                        
pc.give_item2(80007, 1)
                        
say_title("Administratorul depozitului:")
                        
say("Ce miros placut au acesti banuti!")
                        
say("Te mai astept pe la mine!")
                        
say("")
                        
say_reward("Ai primit 1 x Lingou 1kkk!")
                    elseif 
pc.get_gold()<=999999999 then
                        say
("Nu ai suficienti bani!")
                        
say("Incerci sa ma fraieresti?")
                        
say("")
                        
say_reward("Lingoul costa 1kkk!")
                    
end
                
elseif elegir == 2 then
                    
if pc.get_gold()>=499999999 then
                        pc
.change_money(-499999999)
                        
pc.give_item2(80006, 1)
                        
say_title("Administratorul depozitului:")
                        
say("Ce miros placut au acesti banuti!")
                        
say("Te mai astept pe la mine!")
                        
say("")
                        
say_reward("Ai primit 1 x Lingou 500kk!")
                    elseif 
pc.get_gold()<=499999999 then
                        say
("Nu ai suficienti bani!")
                        
say("Incerci sa ma fraieresti?")
                        
say("")
                        
say_reward("Lingoul costa 500kk!")
                    
end
                
elseif elegir == 3 then
                    
if pc.get_gold()>=99999999 then
                        pc
.change_money(-99999999)
                        
pc.give_item2(80005, 1)
                        
say_title("Administratorul depozitului:")
                        
say("Ce miros placut au acesti banuti!")
                        
say("Te mai astept pe la mine!")
                        
say("")
                        
say_reward("Ai primit 1 x Lingou 100kk!")
                    elseif 
pc.get_gold()<=99999999 then
                        say
("Nu ai suficienti bani!")
                        
say("Incerci sa ma fraieresti?")
                        
say("")
                        
say_reward("Lingoul costa 100kk!")
                    
end
                
elseif elegir == 4 then
                    
return
                
end
            
elseif canj == 2 then
                say_title
("Administratorul depozitului:")
                
say("")
                
local elegir2 = select("Lingou 100kk" , "Lingou 500kk" , "Lingou 1kkk" , "Iesire")   
                if 
elegir2 == 1 then
                    
if pc.get_gold()<=999999999 then
                        pc
.change_money(999999999)
                        
pc.remove_item(80007, 1)
                        
say_title("Administratorul depozitului:")
                        
say("Mmm, frumos lingou!")
                        
say("Te mai astept pe la mine!")
                        
say("")
                        
say_reward("Ai primit 1kkk!")
                    elseif 
pc.get_gold()>=999999999 then
                        say
("Ai prea multi bani la tine!")
                        
say("Poti cara doar 2kkk.")
                        
say("")
                        
say_reward("Revino cand ai mai putin.")
                elseif 
elegir2 == 2 then
                    
if pc.get_gold()<=499999999 then
                        pc
.change_money(499999999)
                        
pc.remove_item(80006, 1)
                        
say_title("Administratorul depozitului:")
                        
say("Mmm, frumos lingou!")
                        
say("Te mai astept pe la mine!")
                        
say("")
                        
say_reward("Ai primit 500kk!")
                    elseif 
pc.get_gold()>=1499999999 then
                        say
("Ai prea multi bani la tine!")
                        
say("Poti cara doar 2kkk.")
                        
say("")
                        
say_reward("Revino cand ai mai putin.")
                elseif 
elegir2 == 3 then
                    
if pc.get_gold()<=99999999 then
                        pc
.change_money(99999999)
                        
pc.remove_item(80005, 1)
                        
say_title("Administratorul depozitului:")
                        
say("Mmm, frumos lingou!")
                        
say("Te mai astept pe la mine!")
                        
say("")
                        
say_reward("Ai primit 100kk!")
                    elseif 
pc.get_gold()>=1899999999 then
                        say
("Ai prea multi bani la tine!")
                        
say("Poti cara doar 2kkk.")
                        
say("")
                        
say_reward("Revino cand ai mai putin.")
                elseif 
elegir2 == 4 then
                    
return
                
end
            
elseif canj == 3
                
return
            
end
        end
    end
end 
03/06/2015 16:13 °Ace°#11155
Kann mir einer die Quest so umschreiben, dass wenn man den Dämonenkönig getötet hat, das die Zeit komplett keine Funktion hat, bzw nicht mehr läuft. Denn wenn man weiter in die Sensenmann Ebene teleportiert wird, läuft die Zeit weiter ab und man wird aus DT raus teleportiert.

03/07/2015 16:29 SolWayne#11156
PHP Code:
quest rwelcome begin
    state start begin
        when login begin
            local reich
=pc.get_empire 
                
if reich==1 then 
                    notice_all
"Er/Sie ist im "..pc.get_empire().." blauen Reich" 
                
else reich==2 then 
                    notice_all
"Er/Sie ist im "..pc.get_empire().." roten Reich" 
                
else reich==3 then
                    notice_all
"Er/Sie ist im "..pc.get_empice().." gelbes Reich"
                
end
            end
        end
    end
end 
03/07/2015 16:34 rollback#11157
Quote:
Originally Posted by SolWayne View Post
PHP Code:
quest rwelcome begin
    state start begin
        when login begin
            local reich
=pc.get_empire 
                
if reich==1 then 
                    notice_all
"Er/Sie ist im "..pc.get_empire().." blauen Reich" 
                
else reich==2 then 
                    notice_all
"Er/Sie ist im "..pc.get_empire().." roten Reich" 
                
else reich==3 then
                    notice_all
"Er/Sie ist im "..pc.get_empice().." gelbes Reich"
                
end
            end
        end
    end
end 
[Only registered and activated users can see links. Click Here To Register...]
03/08/2015 12:40 iXN'22#11158
PHP Code:
quest blumensystem begin
    state start begin

        when login with pc
.getqf("primero") != 1 begin
            pc
.setqf("primero", 1)
            
pc.setqf("plantas_recogidas", 0)
            
pc.set_skill_level(7,59)
        
end
        
        when 20083.click 
or 20086.click with pc.getqf("primero") == 1 begin
            
if pc.is_mount() != true then
                cmdchat
("Sistema_Objetos")
                
cmdchat("flower")
                
pc.give_item2(70012,1)
                
timer("Hierbas", 0.5)
            
end
        end
        
        when Hierbas
.timer begin
            npc
.purge()
            
pc.setqf("plantas_recogidas",pc.getqf("plantas_recogidas")+1)
            
chat("Gratulation, hast einen Pilz gesammelt!")
        
end
        
        
--when xxx.use or xxx.use begin
        
--    item.remove()
        --    
affect.add_collect(apply.MAX_HP, 500, 60*12) --500 hp 12 horas    
        
--    affect.add_collect(apply.CRITICAL_PCT, 10, 60*12) --10% criticos 12 horas
        
--end
    end
end 
Statt pc.give_item2(70012,1) könnte man es so machen dass man es z.b nur 10% bekommt?
03/08/2015 13:13 rollback#11159
if number(1, 10) == 1 then pc.give_item2(70012, 1) end
03/08/2015 17:36 Bullrihgter#11160
PHP Code:
quest Jagdquest2 begin
    state start begin
        when login 
or levelup with pc.get_level() == 105 begin
            send_letter
("Jagdauftrag#2")
        
end
        when button 
or info begin
            say_title
("Jagdauftrag#2")
            
say("")
            
say("BLA "..pc.get_name().." BLA") 
            
say("BLA") 
            
say("BLA") 
            
say("BLA") 
            
say("BLA")  
            
say_reward("Töte: 10x Senseman,5 Wassdrachen,2 Rote Drachen, 5 Sycomor töten") 
            
say_reward("Du musst sie selber finden!") 
            
say_reward("Wenn du es geschafft hast bekommst du eine Belohnung!")
            
pc.setqf("state", 5)
            
q.set_counter("Wasserdrache", 5)
            
pc.setqf("state2", 2)
            
q.set_counter("Rote Drachen", 2)
            
pc.setqf("state3", 10)
            
q.set_counter("Sensemann", 10)
            
pc.setqf("state4", 5)
            
q.set_counter("Sycomor", 5)
            
setstate(killing)
        
end
    end
    
    state killing begin
        when letter begin
            send_letter
("Jagdauftrag#2")
        
end
    
        when info 
or button begin
            say_title
("Jagdauftrag#2")
            
say("Staus:")
            
say_reward("Du hast schon "..pc.getqf("state").." von 2 Rote Drachen getötet.")
            
say_reward("Du hast schon "..pc.getqf("state").." von 5 Wassdrache getötet.")
            
say_reward("Du hast schon "..pc.getqf("state").." von 5 Sycomor getötet.")
            
say_reward("Du hast schon "..pc.getqf("state").." von 10 Sensemann getötet.")
        
end
        
    when 1093.kill 
or 2493.kill or 2291.kill or 3913.kill begin
            local count 
= pc.getqf("state") - 1
            
if count >= 0 then
                pc
.setqf("state", count)
                
q.set_counter("Wasserdrache", count)
                
pc.setqf("state2", count)
                
q.set_counter("Rote Drachen", count)
                
pc.setqf("state3", count)
                
q.set_counter("Sensemann", count)
                
pc.setqf("state4", count)
                
q.set_counter("Sycomor", count)
            
end
            
if count == 0 then
            set_state
(killing2)
            
end
        end
    end
    
state killing2 begin
        when letter begin
            send_letter
("Jagdauftrag#2")
            
        
end
        
        when info 
or button begin
            say_title
("BLA")
            
say("")
            
say("BLA")
            
say("BLA")
            
say("BLA")
            
wait()
            
say("BLA")
            
say_item_vnum(50513)
            
say_item_vnum(39045)
            
pc.give_item2(39045, 25)
            
pc.give_item2(50513, 10)
            
set_state(__COMPLETE__)
        
end
    end
    state __COMPLETE__ begin
    end
end