Intrebare compilare quest!

Totalitatea subiectelor care nu respectă regulamentul impus in sectiunea "Probleme şi Întrebări" vor fi stocate aici.
Închis
Avatar utilizator
jumyta
Nivel 2

Nivel 2
Mesaje: 299
Membru din: 06 Ian 2014, 20:41
Regat: Jinno
Aprecieri: 185  
Mulţumiri: 2  
  Rezolvări prob.: 1
Medalii

*Problemă/Întrebare: Ma ajuta cineva cu un tutorial de compilare pentru quest-urile cu "DEFINE"?
Tipologie server:
*Resursă folosită:
quest ork_maze begin
state start begin
function define(key)
local dict = {
["TELEPORT_NPC_ENTRY"] = 30002,
["JOIN_MIN_LEVEL"] = 30,
["JOIN_MAX_LEVEL"] = 60,
["MAP_INDEX"] = 353,
["STONE_MODE"] = 0,
}
return dict[key]
end
function ClearDungeon()
local idx = d.get_map_index()
clear_server_timer("check_monster_count",idx)
clear_server_timer("-cenzurat-_time_1",idx)
clear_server_timer("-cenzurat-_time_2",idx)
clear_server_timer("-cenzurat-_time_3",idx)
clear_server_timer("-cenzurat-_time_4",idx)
clear_server_timer("bossroom",idx)
clear_server_timer("end_timer",idx)
d.setf("portal",0)
d.clear_regen()
d.setf("onlineg", 0)
d.kill_all()
end
function set_next_portal()
if d.getf("portal") == 4 then
d.regen_file("data/dungeon/orkmaze/e"..d.getf("portal")..".txt")
d.set_unique("ork_seal", d.spawn_mob(691,54,1383))
clear_server_timer("check_monster_count",d.get_map_index())
end
if d.getf("portal") == 2 then d.set_unique("s2", d.spawn_mob(695,715,1341))
elseif d.getf("portal") == 3 and d.getf("onlineg") == 3 then d.set_unique("s3", d.spawn_mob(695,483,1376)) end

if d.getf("portal") < 4 then
d.regen_file("data/dungeon/orkmaze/e"..d.getf("portal")..".txt")
d.setf("portal",d.getf("portal")+1)
end
d.notice(gameforge.ork_maze.portal_open_notice) --Die Portale wurden geöffnet.
end
function CheckParty()
local pids = {party.get_member_pids()}
if not party.is_party() then say(gameforge.ork_maze.say_2_party_fail) return false
elseif not party.is_leader() then say(gameforge.ork_maze.say_1_party_fail) return false -- Nur der Gruppenleiter kann euch zum Labyrinth Teleportieren.
elseif pc.get_level() < JOIN_MIN_LEVEL then say(string.format(gameforge.ork_maze.say_1_level_fail,JOIN_MIN_LEVEL)) return false -- Dein Level ist niedrig komm wieder wenn du %u bist.
elseif pc.get_level() > JOIN_MAX_LEVEL then say(string.format(gameforge.ork_maze.say_2_level_fail,JOIN_MIN_LEVEL,JOIN_MAX_LEVEL)) return false -- Dein Level ist zu hoch, dieser Run ist nur von Level %u bis %u erlaubt.
elseif table.getn(pids) > 3 then say(gameforge.ork_maze.full_party) return false --Deine Gruppe ist zu groß, es sind maximal 3 erlaubt.
elseif table.getn(pids) <= 1 then say(gameforge.ork_maze.empty_party) return false -- Deine Gruppe ist unvollständig. Mindestens ein Gruppen Mitglied muss Online sein.
elseif ork_maze.CheckPartyLevel() then return true
end
end
function CheckPartyLevel()
local pids = {party.get_member_pids()}
local user_fail_level = {}
for i=1, table.getn(pids), 1 do
q.begin_other_pc_block(pids)
pc.setqf("orksiegel", 0)
if pc.get_level() < JOIN_MIN_LEVEL or pc.get_level() > JOIN_MAX_LEVEL then
table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name())
end
q.end_other_pc_block(pids)
end
for x = 1, table.getn(user_fail_level), 1 do
say(user_fail_level[x])
end
if table.getn(user_fail_level) >= 1 then
say_title(gameforge.ork_maze.title1)
say(gameforge.ork_maze.say_3_party_fail)
for x = 1, table.getn(user_fail_level), 1 do
say(user_fail_level[x])
end
else return true
end
end
when TELEPORT_NPC_ENTRY.chat.gameforge.ork_maze.title1 begin -- Das Ork Labyrinth
if ork_maze.CheckParty() then
say(gameforge.ork_maze.say_1) --Willst du das Labyrinth mit deiner Gruppe betreten?(Bearbeiten)
if select(locale.yes, locale.no) == 2 then return end
timer("warp_delay", 2)
end
end
when warp_delay.timer begin
d.new_jump_party(MAP_INDEX,12137,7274)
ork_maze.ClearDungeon()
local pids = {party.get_member_pids()}
d.setf("onlineg", table.getn(pids))
server_loop_timer("check_monster_count",10, d.get_map_index())
server_timer("-cenzurat-_time_1", 60*10, d.get_map_index())
server_timer("notice1", 3, d.get_map_index())
if STONE_MODE == 1 then d.regen_file("data/dungeon/orkmaze/e_start.txt") end
end
when notice1.server_timer begin
if d.select(get_server_timer_arg()) then
notice_multiline(gameforge.ork_maze.notice_min_time,d.notice) -- Ihr habt 30 Minuten Zeit den richtigen weg zu finden und den Oberork zu töten. Um die Portale der jeweiligen Ebenen zu Öffnen müsst ihr alle Monster töten.
if STONE_MODE == 0 then
d.set_unique("s1", d.spawn_mob(695,585,886))
d.regen_file("data/dungeon/orkmaze/e"..d.getf("portal")..".txt")
d.setf("portal",d.getf("portal")+1)
end
end
end
when -cenzurat-_time_1.server_timer begin
if d.select(get_server_timer_arg()) and d.getf("finish_portal") == 0 then
d.notice(gameforge.ork_maze.time_20_min) -- Ihr habt noch 20 Minuten Zeit!
server_timer("-cenzurat-_time_2", 60*10, d.get_map_index())
end
end
when -cenzurat-_time_2.server_timer begin
if d.select(get_server_timer_arg()) and d.getf("finish_portal") == 0 then
d.notice(gameforge.ork_maze.time_10_min) -- Ihr habt noch 10 Minuten Zeit!
server_timer("-cenzurat-_time_3", 60*5, d.get_map_index())
end
end
when -cenzurat-_time_3.server_timer begin
if d.select(get_server_timer_arg()) and d.getf("finish_portal") == 0 then
d.notice(gameforge.ork_maze.time_5_min) -- Ihr habt noch 5 Minuten Zeit!
server_timer("-cenzurat-_time_4", 60*5, d.get_map_index())
end
end
when -cenzurat-_time_4.server_timer begin
if d.select(get_server_timer_arg()) and d.getf("finish_portal") == 0 then
d.notice(gameforge.ork_maze.time_fail_min) -- Ihr habt es leider nicht geschaft.
server_timer("end_timer", 10, d.get_map_index())
end
end
when end_timer.server_timer begin
if d.select(get_server_timer_arg()) then
ork_maze.ClearDungeon()
d.exit_all_to_start_position()
end
end
when check_monster_count.server_timer begin
if d.select(get_server_timer_arg()) then
if d.count_monster() <= 0 and d.getf("portal") < 5 then
ork_maze.set_next_portal()
end
end
end
when 691.kill with d.get_unique_vid("ork_seal") begin
d.setf("finish_portal", 1)
notice_multiline(gameforge.ork_maze.ork_seal_dead,d.notice) -- Herzlichen Glückwunsch, ihr habt den Oberork getötet. Zieht nun eure Schlüssel auf die Siegel.
local tab =
{
[1] = {57, 1396},
[2] = {53, 1396},
[3] = {49, 1396},
}
local pids = {party.get_member_pids()}
local a = table.getn(pids)
for i = 1,a do
d.spawn_mob(20100, tab[1],tab[2])
end
end
when 695.kill with npc.get_vid() == d.get_unique_vid("s1") or npc.get_vid() == d.get_unique_vid("s2") or npc.get_vid() == d.get_unique_vid("s3") begin
game.drop_item(30107,1)
end
when 693.kill with d.get_unique_vid("ork_verfl") begin
notice_multiline(gameforge.ork_maze.verfl_kill,d.notice) -- Ihr habt den Verfl. Oberork getötet und werdet in 60 Sekunden in den Boss Raum Teleportiert.
server_timer("bossroom", 60, d.get_map_index())
d.kill_all()
end
when bossroom.server_timer begin
if d.select(get_server_timer_arg()) then
d.jump_all(12170,8100) -- zum boss raum
d.spawn_mob(694,136,894)
d.regen_file("data/dungeon/orkmaze/bossroom.txt")
end
end
when 694.kill with pc.in_dungeon() begin
d.notice(gameforge.ork_maze.finish_warp) -- Ihr werdet in 60 Sekunden raus Teleportiert.
server_timer("end_timer", 60, d.get_map_index())
d.kill_all()
end
-- when login begin
-- chat(pc.getqf("orksiegel"))
-- end
when 30121.chat.gameforge.ork_maze.get_last_bossroom begin -- Nächste Runde
say_title(gameforge.ork_maze.maze_title)
if not party.is_leader() then say_reward(gameforge.ork_mae_say_fail_next_step) return end
say(gameforge.ork_maze.say_last_boss)
if select(gameforge.ork_maze.ready,locale.cancel) == 2 then return end
d.jump_all(12150,7562) -- stehen geblieben bei neuer jump posi, siegel dropp fehlt
d.set_unique("ork_verfl", d.spawn_mob(693,400,200))
d.regen_file("data/dungeon/orkmaze/last.txt")
d.notice(gameforge.ork_maze.notice_destroy_seals_next) -- Findet den Verfl. Oberork und tötet ihn.
end
when 20100.take with item.get_vnum() == 30107 begin
-- chat(pc.getqf("orksiegel"))
if pc.getqf("orksiegel") == 1 then say(gameforge.ork_maze.have_take_seal) return end -- Du hast bereits ein Siegel abgeben.
npc.purge()
item.remove()
d.setf("seal",d.getf("seal")+1)
pc.setqf("orksiegel", 1)
local pids = {party.get_member_pids()}
if d.getf("seal") == table.getn(pids) then
d.purge()
d.spawn_mob(30121,54,1383)
end
end
end
end

*ServerFiles utilizat:
*Syserr:
Poză:
*Detalii suplimentare:
Avatar utilizator
assembly
Membru Club

Membru Club
Mesaje: 502
Membru din: 23 Feb 2015, 10:53
Regat: Chunjo
Aprecieri: 99  
Mulţumiri: 203  
Medalii

Nu e nici un tutorial, questurile de genul au si ele un lib de care depind pentru a fi puse in functiune.

- Arhiva.
Engineer at CNH Industrial
Afișează semnătura
Închis
Răspunsuri
1
Vizualizări
120
Răspunsuri
3
Vizualizări
181
Răspunsuri
1
Vizualizări
203
Răspunsuri
1
Vizualizări
202

Înapoi la “Arhivă Probleme şi Întrebări”

  • Informaţie
  • Cine este conectat

    Utilizatori ce ce navighează pe acest forum: Google [Bot] și 65 vizitatori