Tipologie server:-
*Resursă folosită:-
*ServerFiles utilizat:-
*Syserr:-
Poză:-
*Detalii suplimentare:
Am luat un quest simplu pentru un run pe care l-am modificat pentru ceva run-uri simple.
Problema e ca atunci cand esti in grup in dungeon / run si unul isi da logout/disconnect/change character, scoate tot grupul din dungeon/run.
Eu vreau sa il fac normal. Cand cineva din grup isi da logout sa nu mai scoata si restul grupului din dungeon.
Cod: Selectaţi tot
quest DragonLair_dungeon begin
state start begin
when 20090.chat."Dungeon RUN 3 -0" with pc.get_map_index() == 73 begin
if pc.get_level() < 75 then -- Daca jucatorul este sub nivel 15
say_title("DR:")--Text cu nume NPC
say("[ENTER]Nivelul tau este prea scazut")-- Text cu paragraf
elseif pc.get_level() > 105 then--Daca jucatorul este peste nivel 75
say_title("DR:")--Text cu nume NPC
say("[ENTER]Nivelul tau este prea mare")-- Text cu paragraf
--[Camilo's code]
elseif pc.getqf("last_exit_time") > get_time() then
say_title("DR:")
local wait_time = pc.getqf("last_exit_time")-get_time()
say(string.format("Wait time:%s", get_time_format(wait_time)))
elseif party.is_in_dungeon() then
say_title("DR:")
say("Party is in dungeon now")
elseif not party.is_map_member_flag_lt("last_exit_time" , get_time()) then
say_title("DR:")
say("Someone has to wait cooltime")
else
if party.is_party() then-- Daca jucatorul are inter lv 15 si lv 75 ( alles andere )
if party.is_leader() then
d.new_jump_party(207, 8435, 10668) --no 00
DragonLair_dungeon.createDungeon() --new line
else
say("You are not leader group")
end
else
d.new_jump(207, 843500, 1066800)-- Teleport pe harta ( Dungeon Map )
DragonLair_dungeon.createDungeon() --new line
end
--[Camilo's code]
server_timer("timelimit_dungeon_exit", 300, d.get_map_index()) -- Seteaza un timer de 1 minut pentru a termina temnita
end
end
--[STAGE 1] Inceput
when login or enter with DragonLair_dungeon.isInDungeon(207) begin-- Când jucatorul se conecteaza ?i se afla pe indexul har?ii temni?ei
d.set_warp_location(73, 2418, 12750)--Se seteaza locatia
end
when 8031.kill or 8032.kill or 8033.kill or 8034.kill with d.getf("DragonLair_stage01") == 1 begin-- Declan?atorul de ucidere a fost interogat cu semnalizarea misiunii
local count = d.getf("kill_counter01") -1-- Variabila setata sa numere ?i scazând -1 din a treia
d.setf("kill_counter01", count)-- Questflag pentru numarare pe misiune
if count >= 1 then-- Întreba?i daca valoarea numarului este mai mare decât 1
d.notice("Ramas: "..count.."")-- Ie?ire text calculata cu valoarea curenta -1
elseif count == 0 then-- este contorul 0
d.notice("Sarcina 1 finalizata.")-- Ie?ire ca a?i finalizat nivelul
d.setf("DragonLair_stage02", 1)--Indicatorul de cautare nivelul 2 setat pentru interogare
d.setf("kill_counter02", 1)--Contor setat cu valoarea 100
d.regen_file("data/dungeon/dragon_lair/boss.txt")--Regenfile [STAGE 2]
end
end
--[STAGE 1] Sfarsit
-- [STAGE 2] Inceput
when 2493.kill with d.getf("DragonLair_stage02") == 1 begin
local count = d.getf("DragonLair_stage02") -1
d.setf("kill_counter02", count)
if count >= 1 then
d.notice("Ramas: "..count.."")
elseif count == 0 then
d.notice("Sarcina 2 finalizata.")
server_timer("end_dungeon_exit", 20 , d.get_map_index())--Cateva secunde pentru iesire
end
d.setqf("last_exit_time" , get_time()+60*10) --[Camilo's code] 10 minutes
end
--[STAGE 2] Sfarsit
-- Functie terminare limita de timp dungeon
when timelimit_dungeon_exit.server_timer begin
if d.select(get_server_timer_arg()) then
DragonLair_dungeon.clearDungeon()
d.exit_all()
end
end
-- Functie iesire terminare dungeon
when end_dungeon_exit.server_timer begin
if d.select(get_server_timer_arg()) then
DragonLair_dungeon.clearDungeon()
d.exit_all()
end
end
-- Verificare de securitate la deconectare
when logout begin
d.set_warp_location(73, 2418, 12750)
if DragonLair_dungeon.isInDungeon() then
DragonLair_dungeon.clearDungeon()
end
end
end
-- FUNCTIONS BEGIN
state __FUNCTIONS__ begin
function isInDungeon(idx)
return pc.get_map_index() >= (idx * 10000) and pc.get_map_index() < ((idx+1) * 10000)-- Calculul indexului har?ii pentru interogarea de securitate
end
--function IsInDungeon()
--local map_index = 217;
--local player_index = pc.get_map_index();
--return player_index >= map_index*10000 and player_index < (map_index+1)*10000;
--end -- function
function clearDungeon()
d.setf("DragonLair_stage01", 0)
d.setf("DragonLair_stage02", 0)
d.kill_all()
d.clear_regen()
d.clear_regen()
clear_server_timer("end_dungeon_exit", get_server_timer_arg())
end
function createDungeon()
d.regen_file("data/dungeon/dragon_lair/metins.txt")--Regenfile [STAGE 1]
d.notice("Distruge toate pietrele de metin.")-- Text
d.setf("DragonLair_stage01", 1)--Setul de nivel 1 pentru interogare
d.setf("kill_counter01", 4)--Contor setat cu valoarea 3
end
end
-- FUNCTIONS END
end--Quest