- #1
Konu Sahibi
: serkankacan
[REHBER & ANALİZ] vSRO Bölgeye (Region) Göre Canavar (Mob) Bulma ve Doğma Noktaları
_RefRegion ve Tab_RefNest Üzerinden Belirli Harita/Bölgelerdeki Mobları veya Mobun Doğduğu Bölgeleri Listeleme
_RefRegion ve Tab_RefNest Üzerinden Belirli Harita/Bölgelerdeki Mobları veya Mobun Doğduğu Bölgeleri Listeleme
Merhaba değerli forum sakinleri,
Sunucu düzenleme (edit) aşamalarında belirli bir haritada (örneğin Jangan, Donwhang, Taklamakan veya özel bir zindan/oda) **hangi canavarların çıktığını, slot yoğunluklarını ve koordinatlarını** incelemek isteyebilirsiniz.
Aşağıda paylaşılan rehberde;
- 1. Yöntem: Bölge Adı veya Region ID vererek o bölgedeki tüm mobları listeleme (Gerçek Bölge Araması),
- 2. Yöntem: Canavar Kodu vererek o canavarın hangi bölge ve koordinatlarda doğduğunu listeleme,
Teknik Bilgilendirme (Bölge & Spawn Zinciri)' Alıntı:Silkroad mimarisinde harita spawn bağlantısı şu şekilde kurulur:
- _RefRegion: Haritanın fiziksel bölge adı (
ContinentName/AreaName) ve benzersizwRegionIDbilgisini tutar.- Tab_RefNest: Mobun bu bölgedeki doğma yuvası (
nRegionDBID), koordinatları (fLocalPosX/Z) ve doğma adetleridir.- Tab_RefTactics & _RefObjCommon: Yuvanın hangi canavara ait olduğunu eşleştirir.
1. YÖNTEM: Bölgeye Göre Canavarları Listeleme (Bölge Bazlı Arama)
Belirlediğiniz bir bölgede (örneğin Jangan kırsalı veya Donwhang) hangi canavarların çıktığını, seviyelerini ve yuva sayılarını görmek için:
SQL:
USE [SRO_VT_SHARD]
GO
-- ===================================================================
-- BÖLGE PARAMETRESİ
-- ===================================================================
DECLARE @RegionName VARCHAR(64) = 'JANG_AN' -- Arama kelimesi: JANG_AN, DONWHANG, HOTAN, TAKLAMAKAN vb.
DECLARE @SpecificRegionID INT = 0 -- Belirli bir RegionID arıyorsanız yazın, yoksa 0 bırakın
SELECT
R.wRegionID AS [Region ID],
R.ContinentName AS [Kıta / Harita],
R.AreaName AS [Bölge Adı],
ROC.CodeName128 AS [Canavar Kodu],
ROCH.Lvl AS [Mob Seviyesi],
COUNT(N.dwNestID) AS [Toplam Yuva/Slot Sayisi],
SUM(N.dwMaxTotalCount) AS [Bölgedeki Toplam Canlı Mob],
MIN(N.dwDelayTimeMin) AS [Min Doğma Süresi (sn)]
FROM dbo.Tab_RefNest N WITH (NOLOCK)
INNER JOIN dbo.Tab_RefTactics T WITH (NOLOCK) ON N.dwTacticsID = T.dwTacticsID
INNER JOIN dbo._RefObjCommon ROC WITH (NOLOCK) ON T.dwObjID = ROC.ID
INNER JOIN dbo._RefObjChar ROCH WITH (NOLOCK) ON ROC.Link = ROCH.ID
INNER JOIN dbo._RefRegion R WITH (NOLOCK) ON N.nRegionDBID = R.wRegionID
WHERE ROC.Service = 1
AND N.dwMaxTotalCount > 0
AND (
(@SpecificRegionID > 0 AND R.wRegionID = @SpecificRegionID)
OR
(@SpecificRegionID = 0 AND (R.ContinentName LIKE '%' + @RegionName + '%' OR R.AreaName LIKE '%' + @RegionName + '%'))
)
GROUP BY
R.wRegionID,
R.ContinentName,
R.AreaName,
ROC.CodeName128,
ROCH.Lvl
ORDER BY
R.wRegionID ASC,
ROCH.Lvl ASC
2. YÖNTEM: Canavar Koduna Göre Bölge ve Koordinatları Bulma
Belirli bir canavarın (örneğin Yeoha, Mangyang, Tiger Girl vb.) haritanın hangi bölgelerinde ve koordinatlarında çıktığını görmek için:
SQL:
USE [SRO_VT_SHARD]
GO
-- ===================================================================
-- ARANACAK CANAVAR KODU
-- ===================================================================
DECLARE @MobCode VARCHAR(128) = 'MOB_CH_YEOHA%' -- Örn: MOB_CH_YEOHA%, MOB_OA_URUCHI vb.
SELECT
ROC.CodeName128 AS [Canavar Kodu],
ROCH.Lvl AS [Seviye],
R.ContinentName AS [Harita],
R.AreaName AS [Bölge],
N.nRegionDBID AS [Region ID],
N.dwNestID AS [Nest ID],
N.fLocalPosX AS [X],
N.fLocalPosY AS [Y],
N.fLocalPosZ AS [Z],
N.nRadius AS [Doğma Yarıçapı],
N.dwMaxTotalCount AS [Slot Başı Canavar Sayısı],
N.dwDelayTimeMin AS [Yenilenme Süresi (sn)]
FROM dbo.Tab_RefNest N WITH (NOLOCK)
INNER JOIN dbo.Tab_RefTactics T WITH (NOLOCK) ON N.dwTacticsID = T.dwTacticsID
INNER JOIN dbo._RefObjCommon ROC WITH (NOLOCK) ON T.dwObjID = ROC.ID
INNER JOIN dbo._RefObjChar ROCH WITH (NOLOCK) ON ROC.Link = ROCH.ID
LEFT JOIN dbo._RefRegion R WITH (NOLOCK) ON N.nRegionDBID = R.wRegionID
WHERE ROC.CodeName128 LIKE @MobCode
AND N.dwMaxTotalCount > 0
ORDER BY N.nRegionDBID ASC, N.dwNestID ASC
Nasıl Uygulanır?
- SQL Server Management Studio (SSMS) programını açın.
- Üst panelden New Query penceresi açın.
- İhtiyacınıza göre 1. Yöntem veya 2. Yöntem sorgusunu yapıştırın.
- Aramak istediğiniz bölge adını (
@RegionName) veya canavar kodunu (@MobCode) ilgili alana yazın. - F5 tuşuna basarak çalıştırın.
- Alt panelde bölge ve slot koordinat detayları anında derli toplu listelenecektir.
Sorularınızı ve takıldığınız noktaları konu altından iletebilirsiniz. Herkese keyifli geliştirmeler!

