[SERVICE] Die Questerstellung

02/04/2015 10:13 G.I Duke#2116
Quote:
Originally Posted by [Sensenmann] View Post
Server_timer anstatt timer. Ein timer läuft auf einem Spieler und das sollte ja nicht so sein ... ^^
Ja stimmt war halt schnell aufm Weg zur Arbeit :D
02/04/2015 12:18 -=[Moon]=-#2117
Hallo liebe elitepvpers user ich hätte eine frage unszwar
suche ich eine Quest die so auschauen sollte : Man klickt auf einem Npc der zeigt dir 3-4 Quests an und man kann halt eins nehmen muss darraufhin halt jmd töten (Mob) nachdem er es getan muss er halt die quest abgeben und bekommt ein item vom Npc ja das halt darraufhin kann man noch halt die anderen quest machen kann mir vllt da jmd weiterhelfen ? oder existiert so eine quest?
02/04/2015 12:37 rollback#2118
Quote:
Originally Posted by -=[Moon]=- View Post
Hallo liebe elitepvpers user ich hätte eine frage unszwar
suche ich eine Quest die so auschauen sollte : Man klickt auf einem Npc der zeigt dir 3-4 Quests an und man kann halt eins nehmen muss darraufhin halt jmd töten (Mob) nachdem er es getan muss er halt die quest abgeben und bekommt ein item vom Npc ja das halt darraufhin kann man noch halt die anderen quest machen kann mir vllt da jmd weiterhelfen ? oder existiert so eine quest?
PHP Code:
quest quest1 begin
    state start begin
        when xxx
.chat."Quest 1" begin
            say
("Text")
            
local accept select("Quest starten""Abbrechen")
            if 
accept == 2 then
                
return
            else
                
say("Du musst 5x bla töten.")
                
pc.setqf("count"5)
                
set_state("quest_do")
            
end
        end
    end
    state quest_do begin
        when kill with npc
.get_race() == xxx begin
            
if pc.getqf("count") >= 2 then
                pc
.setqf("count"pc.getqf("count")-1)
            else
                
say("Quest abgeschlossen, gehe zu dem Npc")
                
set_state("quest_succeed")
            
end
        end
    end
    state quest_succeed begin
        when xxx
.chat."Quest 1 Belohnung" begin
            say
("Hier deine Belohnung")
            
pc.give_item2(vnumanzahl)
            
set_state("_COMPLETE_")
        
end
    end
    state _COMPLETE_ begin
    end
end

quest quest2 begin
    state start begin
        when xxx
.chat."Quest 2" begin
            say
("Text")
            
local accept select("Quest starten""Abbrechen")
            if 
accept == 2 then
                
return
            else
                
say("Du musst 10x bla töten.")
                
pc.setqf("count"10)
                
set_state("quest_do")
            
end
        end
    end
    state quest_do begin
        when kill with npc
.get_race() == xxx begin
            
if pc.getqf("count") >= 2 then
                pc
.setqf("count"pc.getqf("count")-1)
            else
                
say("Quest abgeschlossen, gehe zu dem Npc")
                
set_state("quest_succeed")
            
end
        end
    end
    state quest_succeed begin
        when xxx
.chat."Quest 2 Belohnung" begin
            say
("Hier deine Belohnung")
            
pc.give_item2(vnumanzahl)
            
set_state("_COMPLETE_")
        
end
    end
    state _COMPLETE_ begin
    end
end

quest quest3 begin
    state start begin
        when xxx
.chat."Quest 3" begin
            say
("Text")
            
local accept select("Quest starten""Abbrechen")
            if 
accept == 2 then
                
return
            else
                
say("Du musst 15x bla töten.")
                
pc.setqf("count"15)
                
set_state("quest_do")
            
end
        end
    end
    state quest_do begin
        when kill with npc
.get_race() == xxx begin
            
if pc.getqf("count") >= 2 then
                pc
.setqf("count"pc.getqf("count")-1)
            else
                
say("Quest abgeschlossen, gehe zu dem Npc")
                
set_state("quest_succeed")
            
end
        end
    end
    state quest_succeed begin
        when xxx
.chat."Quest 3 Belohnung" begin
            say
("Hier deine Belohnung")
            
pc.give_item2(vnumanzahl)
            
set_state("_COMPLETE_")
        
end
    end
    state _COMPLETE_ begin
    end
end

quest quest4 begin
    state start begin
        when xxx
.chat."Quest 4" begin
            say
("Text")
            
local accept select("Quest starten""Abbrechen")
            if 
accept == 2 then
                
return
            else
                
say("Du musst 20x bla töten.")
                
pc.setqf("count"20)
                
set_state("quest_do")
            
end
        end
    end
    state quest_do begin
        when kill with npc
.get_race() == xxx begin
            
if pc.getqf("count") >= 2 then
                pc
.setqf("count"pc.getqf("count")-1)
            else
                
say("Quest abgeschlossen, gehe zu dem Npc")
                
set_state("quest_succeed")
            
end
        end
    end
    state quest_succeed begin
        when xxx
.chat."Quest 4 Belohnung" begin
            say
("Hier deine Belohnung")
            
pc.give_item2(vnumanzahl)
            
set_state("_COMPLETE_")
        
end
    end
    state _COMPLETE_ begin
    end
end 
Belohnungen etc musste noch anpassen
02/04/2015 14:02 DarkCry96#2119
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)
                
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.
Ich danke dir sehr für deine Mühe! Aber ist es denn auch möglich das Monster automatisch spawnen zu lassen? Also dass es normal spawnt wie in der regen.txt und nicht über ein Item? Es funktioniert nämlich bei mir überhaupt nicht, und da hab ich gehofft, dass man das so umsetzen kann.

Vielleicht über eine Eventflag die dauerhaft aktiv ist? Also schon nach Serverstart? Das könnte man ja dann über eine separate Quest machen.

Hab es ausgetestet und es funktioniert wunderbar! Richtig starkes Ding, vielen Dank!
Wenn es nicht anders geht werde ich das immer über den NPC steuern, ansonsten vielen Dank!
02/04/2015 14:34 rollback#2120
Quote:
Originally Posted by DarkCry96 View Post
Ich danke dir sehr für deine Mühe! Aber ist es denn auch möglich das Monster automatisch spawnen zu lassen? Also dass es normal spawnt wie in der regen.txt und nicht über ein Item? Es funktioniert nämlich bei mir überhaupt nicht, und da hab ich gehofft, dass man das so umsetzen kann.

Vielleicht über eine Eventflag die dauerhaft aktiv ist? Also schon nach Serverstart? Das könnte man ja dann über eine separate Quest machen.
Ich habe fast die gleiche Quest nochmal geschrieben.

Wüsste nicht wie es gehen soll ohne, dass nach einem Reboot ein GM / SA das auslöst...

PHP Code:
quest spawnmob begin
    state start begin
        when xxx
.use begin with pc.get_name() == "[SA]Butzbiba" begin
            
-- CONFIG
            regen_path 
"/usr/.../.txt"
            
map_index 1
            mob_vnum 
1
            mob_name 
"Name"
            
announcement_spawn mob_name.." ist erschienen ..."
            
announcement_killed mob_name.." wurde von "..pc.get_name.." getötet."
            
announcement_not_killed mob_name.." wurde noch nicht getötet ..."
            
-- CONFIG
            say
("Möchtest du "..mob_name.." spawnen?")
            
local spawn select("Mob spawnen""Abbrechen")
            if 
spawn == 2 then
                
return
            else
                
regen_in_map(map_indexregen_path)
                
game.set_event_flag("spawnmob"1)
                
server_timer("spawnmob"3600)
                
notice_all(announcement_spawn)
            
end
        end
        when kill with npc
.get_race() == mob_vnum begin
            game
.set_event_flag("spawnmob"0)
            
notice_all(announcement_killed)
        
end
        when spawnmob
.timer begin
            
if game.get_event_flag("spawnmob") == 0 then
                regen_in_map
(map_indexregen_path)
                
game.set_event_flag("spawnmob"1)
                
server_timer("spawnmob"3600)
                
notice_all(announcement_spawn)
            else
                
server_timer("spawnmob"3600)
                
notice(announcement_not_killed)
            
end
        end
    end
end 
Ist bis auf kleine Änderungen genauso wie die Quest von Duke.
Ich weiss jetzt nicht wie du das wolltest ... bei der Quest von Duke muss man nachdem das Monster gekillt wurde 1 Std warten, bei der von mir hier oben muss man von Spawn bis Spawn 1 Std warten.
02/04/2015 14:40 DarkCry96#2121
Quote:
Originally Posted by [Sensenmann] View Post
Ich habe fast die gleiche Quest nochmal geschrieben.

Wüsste nicht wie es gehen soll ohne, dass nach einem Reboot ein GM / SA das auslöst...

PHP Code:
quest spawnmob begin
    state start begin
        when xxx
.use begin with pc.get_name() == "[SA]Butzbiba" begin
            
-- CONFIG
            regen_path 
"/usr/.../.txt"
            
map_index 1
            mob_vnum 
1
            mob_name 
"Name"
            
announcement_spawn mob_name.." ist erschienen ..."
            
announcement_killed mob_name.." wurde von "..pc.get_name.." getötet."
            
announcement_not_killed mob_name.." wurde noch nicht getötet ..."
            
-- CONFIG
            say
("Möchtest du "..mob_name.." spawnen?")
            
local spawn select("Mob spawnen""Abbrechen")
            if 
spawn == 2 then
                
return
            else
                
regen_in_map(map_indexregen_path)
                
game.set_event_flag("spawnmob"1)
                
server_timer("spawnmob"3600)
                
notice_all(announcement_spawn)
            
end
        end
        when kill with npc
.get_race() == mob_vnum begin
            game
.set_event_flag("spawnmob"0)
            
notice_all(announcement_killed)
        
end
        when spawnmob
.timer begin
            
if game.get_event_flag("spawnmob") == 0 then
                regen_in_map
(map_indexregen_path)
                
game.set_event_flag("spawnmob"1)
                
server_timer("spawnmob"3600)
                
notice_all(announcement_spawn)
            else
                
server_timer("spawnmob"3600)
                
notice(announcement_not_killed)
            
end
        end
    end
end 
Ist bis auf kleine Änderungen genauso wie die Quest von Duke.
Ich weiss jetzt nicht wie du das wolltest ... bei der Quest von Duke muss man nachdem das Monster gekillt wurde 1 Std warten, bei der von mir hier oben muss man von Spawn bis Spawn 1 Std warten.
Aber der Drache wird nie von alleine spawnen oder? Ist das nicht möglich quasi 3 "spawnmob" Flags zu machen? 0 - Er spawnt nicht 1- Er spawnt 2- Aktiviert 1 stunde nach dem Ablauf von flag 1 diese wieder...

Ich kann das nicht so gut erklären, ich verstehe das ganze Questing bisher noch nicht so ganz, also was es an Möglichkeiten gibt usw.
02/04/2015 14:44 rollback#2122
So wie ich und Duke es jetzt gemacht haben muss das Spawnen nur nach einem Reboot von einem Teamler gemacht werden, alles andere macht die Quest dann alleine.
02/04/2015 14:48 DarkCry96#2123
Quote:
Originally Posted by [Sensenmann] View Post
So wie ich und Duke es jetzt gemacht haben muss das Spawnen nur nach einem Reboot von einem Teamler gemacht werden, alles andere macht die Quest dann alleine.
Das heißt z.B. bei der von Duke, wenn der Drache gestorben ist, dauert es 1 Stunde, bis automatisch ein neuer spawnt?
Ich danke euch sehr für eure Mühen!
02/04/2015 14:56 rollback#2124
Quote:
Originally Posted by DarkCry96 View Post
Das heißt z.B. bei der von Duke, wenn der Drache gestorben ist, dauert es 1 Stunde, bis automatisch ein neuer spawnt?
Ich danke euch sehr für eure Mühen!
Genau. Nach einem Reboot / Serverabsturz, halt immer nachdem der Server gestartet wurde, muss die Quest von einem Teamler gestartet werden.
Danach macht die Quest die spawns von alleine!

Bei Dukes Quest ist es so, dass der Drache 1 Std nach dem Kill spawnt.
Bei meiner ist es so, dass der Drache im Stundentakt spawnen kann. Sprich:
Wenn der Drache nach 59 Minuten getötet wurde, spawnt er in 1 Minute wieder. Wenn der Drache nach 1 Std und 1 Minute getötet wurde, spawnt er in 59 Minuten wieder.
02/04/2015 15:03 DarkCry96#2125
Mercí!!!! Suche schon ewig :)
02/04/2015 15:24 .yorliK#2126
Quote:
Originally Posted by DarkCry96 View Post
Mercí!!!! Suche schon ewig :)
Man könnte es auch so lösen, das ein GM wenn er sich einloggt, einen Timer unwissentlich, immer wieder neustartet, dieser würde alle 5 Min checken, wie lang die Ankündigung her ist (falls der Mob nicht getötet wurde) und nach einer Stunde eine Ankündigung raushaut und ggf. den Mob neu spawnt.

02/04/2015 15:30 DarkCry96#2127
Und wenn sich dann 2 Minuten später ein anderer GM einloggt? Wird das dann wieder zurückgesetzt?
02/04/2015 15:54 .yorliK#2128
Quote:
Originally Posted by DarkCry96 View Post
Und wenn sich dann 2 Minuten später ein anderer GM einloggt? Wird das dann wieder zurückgesetzt?
Macht ja nichts, dann wird in den nächsten 5 Minuten gecheckt und solange der 1 Stunden Flag nicht unter der jetzigen Zeit ist, wird keine Meldung kommen.
02/04/2015 16:08 MissHitMan#2129
new try but :*( quest is arabic but i think my problem in set_state() or in TARGET__",v,"name here"
error
02/04/2015 19:41 VeyZ#2130
Irgendwie funktioniert mein Warpring nur manchmal..
Was ist an der Quest den falsch?!



PHP Code:
quest warp_to begin
    state start begin
        when 70007.
use begin --Warpring ID einsetzen!
            
local empire pc.get_empire()
            
say_title("Lieber Spieler von Shining2")
            
say("")
            
say("Ich kann dich Teleportieren wohin du willst, sag mir doch wo du hin willst.")
            
local s select("Map1""Map2""Abbrechen")
            if 
s==4 then
                
return
            elseif 
s==1 then
                say_title
("Wohin genau?")
                
say("")
                
local a select("Rotes Reich""Gelbes Reich""Blaues Reich""Abbrechen")
                if 
== 4 then return end
                local map 
={
                        {
474300954800},
                        {
63800166400},
                        {
959900269200}
                    }
                
pc.warp(map[a][1], map[a][2])
            elseif 
s==2 then
                say_title
("Wohin genau?")
                
say("")
                
local a select("Rotes Reich""Gelbes Reich""Blaues Reich""Abbrechen")
                if 
== 4 then return end
                local map 
={
                        {
353100882900},
                        {
145500240000},
                        {
863900246000}
                    }
                
pc.warp(map[a][1], map[a][2])
            elseif 
s==3 then
                say_title
("Wohin genau?")
                
say("")
                
local a select("Mitte","Abbrechen")
                if 
== 2 then return end
                
if == 1 then
                    local map 
={
                            (
296800547100),
                            (
296800547100)
                        }
                    
pc.warp(map[empire][1], map[empire][2])
                elseif 
== 1 then
                    pc
.warp(296800547100)
                
end
            end
        end
    end
end 
Vielleicht könnt jemand meine mal korrigieren ..