[SERVICE] Die Questerstellung

02/03/2015 13:53 .Crystal#2101
Hey Leute, gibt es ne Möglichkeit bestimmte Quests über nen Befehl nur für ein Reich zu machen?
z.B Ein Roter erreicht Level 2 und muss 10 wildhunde töten
ein Blauer erreicht ebenfalls Level 2 muss aber 5 Wölfe töten..
War jetzt nur ein Beispiel :D
02/03/2015 14:11 rollback#2102
Quote:
Originally Posted by .Crystal View Post
Hey Leute, gibt es ne Möglichkeit bestimmte Quests über nen Befehl nur für ein Reich zu machen?
z.B Ein Roter erreicht Level 2 und muss 10 wildhunde töten
ein Blauer erreicht ebenfalls Level 2 muss aber 5 Wölfe töten..
War jetzt nur ein Beispiel :D
PHP Code:
quest example begin
    state start begin
        when levelup with pc
.get_level() == 2 begin
            set_state
("example_do")
        
end
    end
    state example_do begin
        when enter begin
            
if pc.get_empire() == 1 then
                pc
.setqf("count"10)
                
pc.setqf("mob"101)
            elseif 
pc.get_empire() == 2 then
                pc
.setqf("count"5)
                
pc.setqf("mob"102)
            elseif 
pc.get_empire() == 3 then
                pc
.setqf("count"5)
                
pc.setqf("mob"103)
            
end
            say
("Du musst "..pc.getqf("count").."x "..npc.get_name(pc.getqf("mob")).." töten.")
        
end
        when kill with npc
.get_race() == pc.getqf("mob"begin
            
if pc.getqf("count") >= 2 then
                pc
.setqf("count"pc.getqf("count")-1)
            elseif 
pc.getqf("count") == 1 then
                say
("Quest abgeschlossen")
                
set_state("_COMPLETE_")
            
end
        end
    end
    state _COMPLETE_ begin
    end
end 
02/03/2015 14:35 .Crystal#2103
Quote:
Originally Posted by [Sensenmann] View Post
PHP Code:
quest example begin
    state start begin
        when levelup with pc
.get_level() == 2 begin
            set_state
("example_do")
        
end
    end
    state example_do begin
        when enter begin
            
if pc.get_empire() == 1 then
                pc
.setqf("count"10)
                
pc.setqf("mob"101)
            elseif 
pc.get_empire() == 2 then
                pc
.setqf("count"5)
                
pc.setqf("mob"102)
            elseif 
pc.get_empire() == 3 then
                pc
.setqf("count"5)
                
pc.setqf("mob"103)
            
end
            say
("Du musst "..pc.getqf("count").."x "..npc.get_name(pc.getqf("mob")).." töten.")
        
end
        when kill with npc
.get_race() == pc.getqf("mob"begin
            
if pc.getqf("count") >= 2 then
                pc
.setqf("count"pc.getqf("count")-1)
            elseif 
pc.getqf("count") == 1 then
                say
("Quest abgeschlossen")
                
set_state("_COMPLETE_")
            
end
        end
    end
    state _COMPLETE_ begin
    end
end 
Na das ging ja schnell, ich danke dir! :)
02/03/2015 14:49 -=[Moon]=-#2104
Ich habe mir den Schmied seon .. im mob proto angeschaut aber finde irgentwie nichts dazu was die anders haben wisst ihr vllt wo man das einstellt?
02/03/2015 14:51 rollback#2105
Quote:
Originally Posted by -=[Moon]=- View Post
Ich habe mir den Schmied seon .. im mob proto angeschaut aber finde irgentwie nichts dazu was die anders haben wisst ihr vllt wo man das einstellt?
Die Funktion, dass man auf denen Schmieden kann, stellt man nicht in der Datenbank oder so ein. Das ist in der Game festgelegt.
02/03/2015 15:30 VeyZ#2106
[Only registered and activated users can see links. Click Here To Register...]

Morgen Leute,
wenn ich die Quest so einbaue, funktioniert sie nicht..
Was muss ich daran umstellen das ich aus dem Metin (Vnum:8041) zu 100% 3 perlen droppt, und zu 50% das man weiter bis zu max. weiteren 3 Perlen droppen kann?

#Wie schreibe ich die Quest im php Code?..
02/03/2015 15:41 rollback#2107
Quote:
Originally Posted by VeyZ View Post
[Only registered and activated users can see links. Click Here To Register...]

Morgen Leute,
wenn ich die Quest so einbaue, funktioniert sie nicht..
Was muss ich daran umstellen das ich aus dem Metin (Vnum:8041) zu 100% 3 perlen droppt, und zu 50% das man weiter bis zu max. weiteren 3 Perlen droppen kann?

#Wie schreibe ich die Quest im php Code?..
mit eckigen klammern: (php)hier quest rein(/php)




EDIT:

Die Quest aus dem Screen den du gepostet hast hab ich mal angepasst.
PHP Code:
quest 8041drop begin
    state start begin
        when kill with npc
.get_race() == 8041 begin
            local drop 
= { --vnumanzahlchance
            
{828361100},
            {
828371100},
            {
828381100},
            {
82836150},
            {
82837150},
            {
82838150}
            }
            
table.foreach(drop,
            function(
idrop)
                
local drop_or_not number(1100)
                if 
drop_or_not <= drop[3then
                    game
.drop_item_with_ownership(drop[1], drop[2])
                
end
            end
)
        
end
    end
end 
Macht das gleiche wie die Quest dadrüber, ist aber schöner geschrieben und verbraucht weniger Ressourcen.
02/03/2015 16:07 -=[Moon]=-#2108
Sensenmann kannst du mir sagen wo ich das ingame einstelle?
02/03/2015 18:11 G.I Duke#2109
Quote:
Originally Posted by VeyZ View Post
[Only registered and activated users can see links. Click Here To Register...]

Morgen Leute,
wenn ich die Quest so einbaue, funktioniert sie nicht..
Was muss ich daran umstellen das ich aus dem Metin (Vnum:8041) zu 100% 3 perlen droppt, und zu 50% das man weiter bis zu max. weiteren 3 Perlen droppen kann?

#Wie schreibe ich die Quest im php Code?..
oder per mob_drop_item.txt ;)
02/03/2015 18:23 DarkCry96#2110
Quote:
Originally Posted by DarkCry96 View Post
Ich bräuchte eine Quest nach folgendem Muster

Wenn ein bestimmter Mob gespawnt ist, wird eine Ankündigung geschrieben "Mob XY ist erschienen"
Wenn ein Spieler diesen Mob tötet soll eine Ankündigung geschrieben werden "Mob XY wurde getötet"
Vielleicht - aber nur vielleicht - wenn der Mob länger als 2 Stunden lebt "Mob XY lebt immernoch"

Der Mapindex für den Mob, den ich ankündigen möchte ist 73
Ich suche immernoch..
Wenn das überhaupt nicht möglich ist könnt ihr mir das auch sagen :D
02/03/2015 22:44 Dyshaxo#2111
Quote:
Originally Posted by DarkCry96 View Post
Ich suche immernoch..
Wenn das überhaupt nicht möglich ist könnt ihr mir das auch sagen :D
Es ist insofern möglich - wenn du das Mob mit der Quest spawnst.

Das ganze mit einem per regen.txt bereits gespawntes mob zu machen - nö.

Wenn dir das auf die Art passt - kann ich's dir schreiben =)
02/03/2015 23:24 DarkCry96#2112
Quote:
Originally Posted by Dyshaxo View Post
Es ist insofern möglich - wenn du das Mob mit der Quest spawnst.

Das ganze mit einem per regen.txt bereits gespawntes mob zu machen - nö.

Wenn dir das auf die Art passt - kann ich's dir schreiben =)
Oh vielen Dank, eine Antwort - Wenn du mir dazu vielleicht noch eine Quest erstellen könntest, die - so wie die regen.txt einen Mob spawnt und das so alle 60 Minuten? Mapindex 73.

Wäre richtig gut!

#edit - Den Mob natürlich erst nach 60 Minuten nachspawnt, wenn der erste, bzw vorherige getötet wurde
02/04/2015 06:07 G.I Duke#2113
Quote:
Originally Posted by DarkCry96 View Post
Oh vielen Dank, eine Antwort - Wenn du mir dazu vielleicht noch eine Quest erstellen könntest, die - so wie die regen.txt einen Mob spawnt und das so alle 60 Minuten? Mapindex 73.

Wäre richtig gut!

#edit - Den Mob natürlich erst nach 60 Minuten nachspawnt, wenn der erste, bzw vorherige getötet wurde
#untested, mit dem Handy geschrieben kleine Rückmeldung
wenn's nicht gehn oder gehen sollte ^^

PHP Code:
quest event_spawn begin
    state start begin
        when NPC_VALUE
.chat."Spawnevent" or ITEM_VALUE.use with pc.is_gm() begin
            
--Variablen
            local mob_vnum 
591 -- Bsp Monster
            local filename 
"" --derexakte name im mapordner zbeventspawn ohne .txt
            local map_index 
63 --ist jetzt z.B Wüste
            local announcement 
"Mob xy ist erschienen!" --Ankündigunstext
            
            say_title
("Spawnevent")
            
say("Spawnen lassen?")
            
local sselect("Ja, mit Ankündigung""Ja, ohne Ankündigen""Nein")
            if 
s==1 then
                notice_all
(announcement)
                
regen_in_map(map_index"data/dungeon/"..filename..".txt")
                
game.set_event_flag("mob_spawn"1)
                
server_timer("mob_spawn"3600)
            elseif 
== 2 then
                regen_in_map
(map_index"data/dungeon/"..filename..".txt")
                
game.set_event_flag("mob_spawn"1)
            elseif 
== 3 then
            end
        end
        
        when mob_spawn
.server_timer begin
            
if game.get_event_flag("mob_spawn") == 1 then
                notice_all
("Mob xy zieht immernoch durch die Wüste")
            
end
            
if game.get_event_flag("mob_spawn") == 0 then
                regen_in_map
(map_index"data/dungeon/"..filename..".txt")
                
game.set_event_flag("mob_spawn"1)
                
server_timer("mob_spawn"3600)
            
end
        end
        
        when kill with npc
.get_race() == mob_vnum and game.get_event_flag("mob_spawn") == 1 begin
            notice_all
("Mob xy wurde von "..pc.get_name().." getötet!")
            
game.set_event_flag("mob_spawn"0)
            
server_timer("mob_spawn"3600)
        
end
    end
end 
Greetings.
02/04/2015 06:33 rollback#2114
Quote:
Originally Posted by G.I Duke View Post
#untested, mit dem Handy geschrieben kleine Rückmeldung
wenn's nicht gehn oder gehen sollte ^^

PHP Code:
quest event_spawn begin
    state start begin
        when NPC_VALUE
.chat."Spawnevent" or ITEM_VALUE.use with pc.is_gm() begin
            
--Variablen
            local mob_vnum 
591 -- Bsp Monster
            local filename 
"" --derexakte name im mapordner zbeventspawn ohne .txt
            local map_index 
63 --ist jetzt z.B Wüste
            local announcement 
"Mob xy ist erschienen!" --Ankündigunstext
            
            say_title
("Spawnevent")
            
say("Spawnen lassen?")
            
local sselect("Ja, mit Ankündigung""Ja, ohne Ankündigen""Nein")
            if 
s==1 then
                notice_all
(announcement)
                
regen_in_map(map_index"data/dungeon/"..filename..".txt")
                
game.set_event_flag("mob_spawn"1)
                
timer("mob_spawn"3600)
            elseif 
== 2 then
                regen_in_map
(map_index"data/dungeon/"..filename..".txt")
                
game.set_event_flag("mob_spawn"1)
            elseif 
== 3 then
            end
        end
        
        when mob_spawn
.timer begin
            
if game.get_event_flag("mob_spawn") == 1 then
                notice_all
("Mob xy zieht immernoch durch die Wüste")
            
end
            
if game.get_event_flag("mob_spawn") == 0 then
                regen_in_map
(map_index"data/dungeon/"..filename..".txt")
                
game.set_event_flag("mob_spawn"1)
                
timer("mob_spawn"3600)
            
end
        end
        
        when kill with npc
.get_race() == mob_vnum and game.get_event_flag("mob_spawn") == 1 begin
            notice_all
("Mob xy wurde von "..pc.get_name().." getötet!")
            
game.set_event_flag("mob_spawn"0)
            
timer("mob_spawn"3600)
        
end
    end
end 
Greetings.
Server_timer anstatt timer. Ein timer läuft auf einem Spieler und das sollte ja nicht so sein ... ^^
02/04/2015 08:52 MissHitMan#2115
Code:
quest story_shadow  begin
state start begin
when login or levelup with pc.get_level() >= 1 begin
set_state(info)
end
end
state info begin
when letter begin
send_letter(" test ")
local v = find_npc_by_vnum(20091)
if v != 0 then
target.vid("__TARGET__", v, " here any name ? or name in mysql ")
end
end
when info or info begin
say_title(" test ")
set_text_color("dark orange")
say(mob_name(101) .. "   ")
say("test")
say("test")
say("")
end
when __TARGET__.target.click or 20091.chat."test" begin
target.delete("__TARGET__")
say_title(" test: ")
set_text_color("dark orange")
say(" test ")
say(" test ")
say_reward(" test ")
say("")
say("")
wait()
say_title(" test: ")
set_text_color("dark orange")
say(" test ")
say(" test ")
say_reward(" test ")
say(" test ")
wait()
say_title(" test: ")
say("")
say_reward(" test ")
say_reward("test")
say_reward("test")
say_reward("test")
say("")
set_state(__MISION__)
pc.setqf("duration",0)
pc.setqf("collect_count",0)
pc.setqf("drink_drug",0)
end
end
state __MISION__ begin
when letter begin
send_letter(" test ")
end
when button or info begin
say_title("test")
set_text_color("dark orange")
say(" test")
say(" test ")
say("")
say_item_vnum(50300)
say_reward(" test "..pc.getqf("collect_count").." test ")
say("")
end
when 71035.use begin 
if get_time() < pc.getqf("duration") then
syschat(" test ")
return
end
if pc.getqf("drink_drug")==1 then
syschat(" test ")
return
end
if pc.count_item(50300)==0 then
syschat(" test ")
return
end
pc.remove_item(71035 , 1)
pc.setqf("drink_drug",1)
end
when 76020.use with pc.count_item(50300)>=1 and get_time() <= pc.getqf("duration") begin
pc.remove_item(76020 , 1)
pc.setqf("drink_drug",1)
pc.setqf("duration", get_time()-1)
end
when 20091.chat." test " with pc.count_item(50300) >0 begin
if get_time() > pc.getqf("duration") then
if  pc.count_item(50300) >0 then
say_title(" test: ")
set_text_color("dark orange")
say("test")
say("")
pc.remove_item("50300",1)
wait()
local pass_percent
if pc.getqf("drink_drug")==0 then
pass_percent=70
else
pass_percent=100
end
local s= number(1,100)
if s<= pass_percent  then
if pc.getqf("collect_count")< 9 then
local index =pc.getqf("collect_count")+1
pc.setqf("collect_count",index)
say_title(" test: ")
set_text_color("dark orange")
say(" test ")
say(" test  "..10-pc.getqf("collect_count").. " test ")
say_reward(" test ")
say("")
pc.setqf("drink_drug",0)
return
end
say_title(" test: ")
set_text_color("dark orange")
say(" test ")
say("")
pc.setqf("collect_count",0)
pc.setqf("drink_drug",0)
pc.setqf("duration",0)
set_state(__REWARD__)
return
else
say_title(" test: ")
say("test")
say("")
pc.setqf("drink_drug",0)
return
end
else
say_title(" test: ")
set_text_color("dark orange")
say(" test  "..item_name(50300).." ")
return
end
else
say_title(" test: ")
set_text_color("dark orange")
local hoursleft = math.floor((pc.getqf("duration")-get_time())/60)
say(" test  ")
say(" test "..hoursleft.."  test ")
say("")
return
end
end
end
state __REWARD__ begin
when letter begin
send_letter(" ~ test ")
if pc.count_item(50300)>0 then
local v = find_npc_by_vnum(20091)
if v != 0 then
target.vid("__TARGET__", v, "here anyname or name in navicat?")
end
end
end
when button or info begin
if pc.count_item(50300) >0 then
say_title(" test ")
say("")
say_reward(" test ")
say("")
return
end
say_title(" test ")
set_text_color("dark orange")
say(" test ")
say("")
say_item_vnum(50300)
say(" test ")
say(" test  "..mob_name(101)..", ")
say(" "..mob_name(101).." و "..mob_name(101).." ")
say("")
end
when 101.kill or 101.kill or 101.kill  begin
local s = number(1, 100)
if s == 1 and pc.count_item(50300)==0 then
pc.give_item2(50300, 1)
send_letter(" test ")
end
end
when 20091.chat." test " with pc.count_item(50300) > 0  begin
if pc.count_item(50300) > 0 then 
say_title(" test: ")
set_text_color("dark orange")
say("test")
say("")
say("")
pc.remove_item(50300,1)
set_state(__reward)
else
say_title(" test: ")
set_text_color("dark orange")
say(" test "..item_name(50300).." ")
say("")
return
end
end
end
state __reward begin
when letter begin
send_letter(" test ")
local v = find_npc_by_vnum(20091)
if v != 0 then
target.vid("__TARGET__", v, " here anyname or name in navicat ?? ")
end
end
when info or button begin
say_title(" test")
say("test")
say("")
end
say_reward(" test " .. mob_name(20091))
local v = find_npc_by_vnum(20091)
if v != 0 then
target.vid("__TARGET__", k, "here anyname or name in navicat ?? ")
end
end
when __TARGET__.target.click or 20091.chat." test " begin
target.delete("__TARGET__")
say_title(mob_name(20091) .. ":")
say("")
say(" test")
say(" test:")
say_reward(" test ")
say_reward(" test")
say_reward("test")
affect.add_collect(apply.MAX_HP, 2500, 60*60*24*365*60) -- 60Years
pc.give_item2(53022)
pc.give_gold(10000000)
pc.give_gold(10000000)
clear_letter()
set_state(__COMPLETE__)
end
end
state __COMPLETE__ begin
when enter begin
q.done()
end
end
end
:*( section ?

UP