Yardım Metin2 instance map boss spawn problemi

  • Konuyu açan Konuyu açan Ayaz22
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 8
  • Gösterim Gösterim 118
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

Ayaz22

Üye
Üye
Mesaj
112
Çözümler
4
Beğeni
7
Puan
444
Ticaret Puanı
0
Selamlar,

Metin2 files kullanıyorum. Instance (herkese özel açılan) bir map’im var.
Bu map’e boss sabitlemek istiyorum ancak şu sorunları yaşıyorum:

- GM komutuyla boss spawn oluyor
- Quest içinden spawn etmeye çalışınca boss çıkmıyor
- Aynı map’e NPC de koyamıyorum, görünmüyor
- Map her girişte sıfırlanıyor

Map index: XXX
Boss vnum: XXXX

Sorum şu:
Instance map’lerde boss sabitlemenin bir yolu var mı,
yoksa girişte quest ile spawn etmek mi şart?

Doğru ve stabil yöntem konusunda fikirlerinizi rica ediyorum.
 
Çözüm
İlk olarak private map oluşturma konusunda eşyayı kullandığınız core ile o private mapin bulunduğu core aynı olması gerek, farklı core'larda olursa instance oluşamaz.

Bir de bununla denersin, mantığı anlayıp diğer dungeonlarına uyarlayabilirsin.
Lua (Quest):
Genişlet Daralt Kopyala
quest ticket_map_warp begin
    state start begin
        function is_in_dungeon()
            local idx = pc.get_map_index()
            return idx >= 109*10000 and idx < 110*10000
        end
        when 9021.chat."Azrail Odasina Gir" begin
            sel = select("Evet", "Hayir")
            if sel == 1 then
                pc.setqf("join_ticket_map", 1)
                d.new_jump(109, 1908*100, 7705*100)
            end
        end
        when login begin
            if...
Aldığınız hatalar nedir hocam? Bossu nereden sabitlemeye çalışıyorsunuz? Hangi Quest içinden spawn etmeye çalışıyorsunuz? Questi atabilir misiniz? NPC sabitlemek istediğiniz yer neresi? Map her girişte sıfırlanıyor derken kastınız eklenen slotların olmaması mı?
 
Aldığınız hatalar nedir hocam? Bossu nereden sabitlemeye çalışıyorsunuz? Hangi Quest içinden spawn etmeye çalışıyorsunuz? Questi atabilir misiniz? NPC sabitlemek istediğiniz yer neresi? Map her girişte sıfırlanıyor derken kastınız eklenen slotların olmaması mı?
quest ticket_map_warp begin
state start begin

-- PARŞÖMEN KULLANIMI
when 77777.use begin
if pc.getf("ticket_map_warp", "stage") == 0 then
say_title("Boss Parsomeni")
say("Boss alanina gitmek istiyor musun?")
local s = select("Evet", "Hayir")
if s == 2 then
return
end

d.new_jump(109,(145 + 1280)*100, (315 + 7168)*100)
pc.setf("ticket_map_warp", "stage", 1)

say("Boss alanina geldin.")
say("Bossu cikarmak icin parsomeni tekrar kullan.")
return
end

if pc.getf("ticket_map_warp", "stage") == 1 then
command("m 6191") -- boss cikar

pc.remove_item(77777, 1)
pc.setf("ticket_map_warp", "stage", 0)

say("Boss ortaya cikti! Bol sans!")
return
end
end

-- BOSS OLUNCE
when 6191.kill begin
local killer = pc.get_name()
notice_all("[BOSS] "..killer.." bossu oldurdu!")
timer("boss_exit", 20)
end

-- 20 SANİYE SONRA DISARI AT
when boss_exit.timer begin
pc.warp(960100, 268700)
end

end
end
 
perşomene sag tık yapınca ışınlanıyorum orda tamam odaya 100den fazla kişi girsede bir birlerini görmez ama perşomene bida sag tık yapınca boss çıktı diyor ama boss görünmüyor bossu npc ye sabitim tıkla gelsin diye yapim diye düşündüm dunger oldugu için sürekli kordinat yerleri degişiyor
 
d.spawn bunla çevirdim zaten m ile sadece gm ile çagrılıyor normal oyuncuyla olmuyor d.spawn yaptım ama sorun aynı
say("Bossu cikarmak icin parsomeni tekrar kullan.")

Şundan sonra kullanın hocam d.spawnı

EDit: aynı item kullanıp girilip içerde aynı eşya ilr çağrılıyormuş bu dediğim de yemeyebilir. Map index kordinatı vs kontrolden sonra yeni bir döngü lazım olabilir çağırmak için
 
say("Bossu cikarmak icin parsomeni tekrar kullan.")

Şundan sonra kullanın hocam d.spawnı

EDit: aynı item kullanıp girilip içerde aynı eşya ilr çağrılıyormuş bu dediğim de yemeyebilir. Map index kordinatı vs kontrolden sonra yeni bir döngü lazım olabilir çağırmak için
yok ya ne yaptıysam ne etiysem bi türlü bossu çıkaramadım questi ben size atim bi bakarmısnız




quest ticket_map_warp begin
state start begin

-- NPC GIRIS
when 9021.chat."Azrail Odasina Gir" begin
say("Azrail odasina girmek istiyor musun?")
if select("Evet","Hayir") == 2 then return end

-- MAP 109 DUNGEON OLARAK ACILIR
d.new_jump(109, 1908*100, 7705*100)
d.setf("boss", 0)

say("Azrail odasina girdin.")
say("Parsomene sag tikla.")
end

-- PARSOMEN
when 77771.use begin
if d.get_map_index() == 0 then
say("Burasi dungeon degil.")
return
end

if d.getf("boss") == 1 then
say("Boss zaten cikti.")
return
end

d.setf("boss", 1)
pc.remove_item(77771, 1)

-- AZRAIL SPAWN (AYNI KOORDINAT)
d.spawn_mob_dir(2598, 1908, 7705, 1)

notice_all("Azrail ortaya cikti!")
end

-- AZRAIL OLUNCE
when 2598.kill begin
d.notice("Azrail olduruldu! 20 saniye sonra cikis.")
timer("cikis", 20)
end

when cikis.timer begin
d.exit_all()
end

end
end
 
İlk olarak private map oluşturma konusunda eşyayı kullandığınız core ile o private mapin bulunduğu core aynı olması gerek, farklı core'larda olursa instance oluşamaz.

Bir de bununla denersin, mantığı anlayıp diğer dungeonlarına uyarlayabilirsin.
Lua (Quest):
Genişlet Daralt Kopyala
quest ticket_map_warp begin
    state start begin
        function is_in_dungeon()
            local idx = pc.get_map_index()
            return idx >= 109*10000 and idx < 110*10000
        end
        when 9021.chat."Azrail Odasina Gir" begin
            sel = select("Evet", "Hayir")
            if sel == 1 then
                pc.setqf("join_ticket_map", 1)
                d.new_jump(109, 1908*100, 7705*100)
            end
        end
        when login begin
            if ticket_map_warp.is_in_dungeon() then
                if pc.getqf("join_ticket_map") > 0 then
                    pc.setqf("join_ticket_map", 0)
                    d.notice("Azrail odasina geldin, bilete sag tikla")
                    d.setf("can_spawn", 1)
                end
            end
        end
        when 77771.use with ticket_map_warp.is_in_dungeon() and d.getf("can_spawn") == 1 begin
            if d.select(pc.get_map_index()) then
                if d.getf("can_spawn") == 1 then
                    d.spawn_mob(2598, 1908, 7705)
                    d.setf("can_spawn", 0)
                end
            end
        end
        when 2598.kill with ticket_map_warp.is_in_dungeon() and d.getf("can_spawn") == 0 begin
            d.notice("Azrail olduruldu! 20 saniye sonra odadan cikacaksin!")
            server_timer('ticket_map_warp_exit', 20, d.get_map_index())
        end
        when ticket_map_warp_exit.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.exit_all()
            end
        end
    end
end
 
Çözüm
Geri
Üst