Krutzo 1
Krutzo
shrpnl 1
shrpnl
Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı Catacomb quest sorun

  • Konuyu başlatan Konuyu başlatan n0x.
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 1
  • Görüntüleme Görüntüleme 101

n0x.

Level 1
Üye
Katılım
11 Eki 2025
Konular
5
Mesajlar
24
Çözüm
2
Online süresi
1d 14h
Reaksiyon Skoru
3
Altın Konu
0
TM Yaşı
7 Ay 25 Gün
Başarım Puanı
17
MmoLira
469
DevLira
0
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Işınlanıyor ama map instance oluşturmuyor, boss spawn olmuyor nasıl çözerim?

[CODE title="Catacomb"]quest catacomb_dungeon begin
state start begin
function get_remaining_cooldown_minutes(flag_name)
local cooldown_end_time = pc.getqf(flag_name)
if cooldown_end_time == 0 then
return 0
end
local remaining_seconds = cooldown_end_time - get_global_time()
if remaining_seconds <= 0 then
return 0
end
return math.ceil(remaining_seconds / 60)
end

when 20367.chat."Catacomb Zindani (Son Kat)" begin
local remain_cd = catacomb_dungeon.get_remaining_cooldown_minutes("catacomb_dungeon.exit_time")
if remain_cd > 0 then
say_title("Bekleme Süresi")
say("Bu zindana tekrar girebilmek için beklemelisin.")
say_reward(string.format("Kalan süre: %d dakika", remain_cd))
return
end



if not pc.can_warp() then
say("Su anda isinlanamazsin.")
return
end

if pc.get_level() < 100 then
say("Bu zindana girebilmek icin seviyen 100 olmali.")
return
end

if pc.count_item(50010) < 7 then
say("Giris icin gerekli Catacomb Biletin yok.")
return
end

say_title("Zindan Bilgilendirmesi:")
say("Zindanda sadece boss vardir ve 15 dakikan olacak. Giris icin 7 Adet Çorap gerekli.")
say("Girmek istiyor musun?")
local s = select("Evet", "Hayir")
if s == 2 then
return
end

pc.remove_item(50010, 7)
-- 216 taban: base(3072,12032); floor7_entry(73,1156) -> (3145,13188)
d.new_jump(216, 3145 * 100, 13188 * 100)
server_timer("cdc_init", 2, d.get_map_index())
end

when cdc_init.server_timer begin
local map_idx = get_server_timer_arg()
if map_idx >= 2160000 and map_idx < 2170000 then
if d.select(map_idx) then
d.set_regen_file("")
d.spawn_mob(2598, 74, 1103)
d.setf("end_time", get_global_time() + 900)
server_loop_timer("cdc_warn_check", 300, map_idx)
else
-- Instance henüz hazır değilse tekrar dene
server_timer("cdc_init", 1, map_idx)
end
end
end

when cdc_warn_check.server_timer begin
local map_idx = get_server_timer_arg()
if not d.select(map_idx) then
clear_server_timer("cdc_warn_check", map_idx)
return
end

local end_time = d.getf("end_time")
if end_time == 0 then
return
end

local remain_time = end_time - get_global_time()
if remain_time <= 0 then
clear_server_timer("cdc_warn_check", map_idx)
notice_all("[Catacomb] Suren doldu. Zindandan cikariliyorsun!")
server_timer("cdc_kick_timeout", 10, map_idx)
elseif remain_time <= 60 then
notice_all("[Catacomb] Son 1 dakika!")
elseif remain_time <= 300 then
notice_all("[Catacomb] Son 5 dakika!")
end
end

when cdc_kick_timeout.server_timer begin
local map_idx = get_server_timer_arg()
if d.select(map_idx) then
local expire = get_global_time() + 900
d.setqf2("catacomb_dungeon", "exit_time", expire)
d.set_warp_location(41, 9601, 2687)
d.exit_all()
end
end

when 2598.kill begin
local map_idx = d.get_map_index()
if map_idx >= 2160000 and map_idx < 2170000 then
pc.setqf("catacomb_dungeon.exit_time", get_global_time() + 900)
clear_server_timer("cdc_warn_check", map_idx)
notice_all("[Catacomb] Boss'u yendin! 60 saniye icinde disari atilacaksin.")
server_timer("cdc_exit_success", 60, map_idx)
end
end

when cdc_exit_success.server_timer begin
local map_idx = get_server_timer_arg()
if d.select(map_idx) then
d.set_warp_location(41, 9601, 2687)
d.exit_all()
end
end

when logout begin
local map_idx = pc.get_map_index()
if map_idx >= 2160000 and map_idx < 2170000 then
pc.setqf("catacomb_dungeon.exit_time", get_global_time() + 900)
end
end
end
end[/CODE]
 
Aşağıdaki kodu direkt quest klasörüne ekleyebilirsin.


Adı: catacomb_dungeon.quest

[CODE title="lua"]quest catacomb_dungeon begin
state start begin

-- ✅ Kalan bekleme süresini hesapla
function get_remaining_cooldown_minutes(flag_name)
local cooldown_end_time = pc.getqf(flag_name)
if cooldown_end_time == 0 then
return 0
end
local remaining_seconds = cooldown_end_time - get_global_time()
if remaining_seconds <= 0 then
return 0
end
return math.ceil(remaining_seconds / 60)
end

-- ✅ Giriş NPC'si (örnek: 20367)
when 20367.chat."Catacomb Zindani (Son Kat)" begin
local remain_cd = catacomb_dungeon.get_remaining_cooldown_minutes("exit_time")
if remain_cd > 0 then
say_title("Bekleme Süresi")
say("Bu zindana tekrar girebilmek için beklemelisin.")
say_reward(string.format("Kalan süre: %d dakika", remain_cd))
return
end

if not pc.can_warp() then
say("Şu anda ışınlanamazsın.")
return
end

if pc.get_level() < 100 then
say("Bu zindana girebilmek için seviyen 100 olmalı.")
return
end

if pc.count_item(50010) < 7 then
say("Giriş için 7 adet Catacomb Bileti gerekiyor.")
return
end

say_title("Catacomb Zindanı")
say("Zindanda sadece Boss bulunur ve 15 dakika süren olacak.")
say("Giriş için 7 adet bilet harcanacak.")
local s = select("Girmek istiyorum", "Vazgeç")
if s == 2 then
return
end

pc.remove_item(50010, 7)
say("Zindana ışınlanıyorsun...")
wait()

-- ✅ Dungeon oluşturma (map216, 7. kat koordinatları)
d.new_jump_all(216, 3145 * 100, 13188 * 100)
end

-- ✅ Oyuncu dungeon'a giriş yaptığında
when login with pc.in_dungeon() and pc.get_map_index() >= 2160000 and pc.get_map_index() < 2170000 begin
d.notice("Catacomb Zindanı'na hoş geldin! 15 dakikan var.")
d.set_regen_file("") -- Harita regeni devre dışı
d.spawn_mob(2598, 74, 1103) -- Boss spawn koordinatı
d.setf("end_time", get_global_time() + 900) -- 15 dakika
server_loop_timer("catacomb_warn_check", 60, d.get_map_index())
end

-- ✅ Süre kontrolü
when catacomb_warn_check.server_timer begin
local map_idx = get_server_timer_arg()
if not d.select(map_idx) then
clear_server_timer("catacomb_warn_check", map_idx)
return
end

local remain_time = d.getf("end_time") - get_global_time()
if remain_time <= 0 then
d.notice("Süren doldu, zindandan çıkarılıyorsun!")
clear_server_timer("catacomb_warn_check", map_idx)
server_timer("catacomb_kick", 5, map_idx)
elseif remain_time == 300 then
d.notice("5 dakikan kaldı!")
elseif remain_time == 60 then
d.notice("Son 1 dakika!")
end
end

-- ✅ Süre dolduğunda çıkış
when catacomb_kick.server_timer begin
local map_idx = get_server_timer_arg()
if d.select(map_idx) then
d.set_warp_location(41, 9601, 2687) -- Çıkış yeri
d.exit_all()
end
end

-- ✅ Boss öldüğünde
when 2598.kill with pc.in_dungeon() and pc.get_map_index() >= 2160000 and pc.get_map_index() < 2170000 begin
local map_idx = d.get_map_index()
d.notice("Boss'u yendin! 1 dakika içinde dışarı atılacaksın.")
pc.setqf("exit_time", get_global_time() + 900) -- Cooldown ayarı
clear_server_timer("catacomb_warn_check", map_idx)
server_timer("catacomb_exit_success", 60, map_idx)
end

-- ✅ Boss öldükten sonra otomatik çıkış
when catacomb_exit_success.server_timer begin
local map_idx = get_server_timer_arg()
if d.select(map_idx) then
d.set_warp_location(41, 9601, 2687)
d.exit_all()
end
end

-- ✅ Oyuncu logout atarsa cooldown setle
when logout begin
local map_idx = pc.get_map_index()
if map_idx >= 2160000 and map_idx < 2170000 then
pc.setqf("exit_time", get_global_time() + 900)
end
end
end
end[/CODE]

Bu dosyayı quest/ içine koy catacomb_dungeon.quest

SSH veya VDI terminalinden:
Kod:
cd /usr/game/share/locale/turkey/quest
./qc catacomb_dungeon.quest

Oyuna girip
Kod:
/reload q


NPC (20367) ile konuş, giriş testini yap.
Boss düzgün spawn edecek ve süreli sistem çalışacak
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst