⛰️ [VSRO FIX] – Roc Mountain Unique Tepeleri (Otomatik Unique & Reverse Ekleme Paketi)


🎯 Fix Amacı

Bu paketin uygulanma amacı:

  • Roc Mountain tepelerine yeni Unique spawn noktaları eklemek
  • Aynı tepelere oyuncular için Reverse Scroll noktaları tanımlamak
  • Unique ve Reverse koordinatlarını karakter konumuna göre otomatik almak
  • Harita üzerinde görseldeki gibi (tepe iconları/konumları) düzenli bir sistem kurmak

🧠 Problem Açıklaması

Roc Mountain bölgesinde tepe bazlı etkinlik yapmak isteyen sunucularda genellikle şu problemler oluşur:

  • Unique spawn noktası ekleme işlemi manuel olduğu için hata payı yüksektir
  • Reverse noktaları doğru koordinat alınmadığında oyuncular yanlış/boş noktaya ışınlanır
  • Unique ve Reverse noktaları senkron olmadığı için tepe etkinlikleri verimsiz olur

Bu paket, koordinatları belirlediğiniz bir karakter üzerinden çekerek işlemleri otomatikleştirir.


⚙️ Etkilenen Sistemler

  • Unique Spawn Sistemi (Tab_RefNest / Tab_RefHive / Tab_RefTactics)
  • Teleport Sistemi (Reverse) (_RefOptionalTeleport)
  • Karakter Konum Verisi (_Char: LatestRegion / PosX / PosY / PosZ)

⚠️ ÖNEMLİ – Karakter Adı (vSroBlog) Uyarısı

⚠️ Bu pakette koordinatlar, SQL içinde yazılı olan Karakter Adı üzerinden alınır.
Kodlarda varsayılan olarak SET @CHARNAME = 'vSroBlog' yazmaktadır.

Mutlaka kendi karakter adınızı yazın! Aksi halde Reverse noktası ve Unique spawn koordinatları yanlış alınır ve nokta hatalı olur.


🛠️ ÇÖZÜM – 1) Mob / Unique Spawn Ekleme (SQL)

Bu bölüm, seçtiğiniz Unique’yi belirlediğiniz karakterin bulunduğu noktaya spawn eder. Koordinatlar otomatik olarak _Char tablosundan çekilir.

  • @UNIQUE: eklenecek Unique CodeName128
  • @CHARNAME: koordinatı alınacak karakter adı (ZORUNLU DÜZENLE)
  • @mindealy / @maxdelay: respawn süreleri
  • @INITRADIUS / @RADIUS: spawn ve hareket alanı
SQL

USE SRO_VT_SHARD
DECLARE @UNIQUE VARCHAR (129) 
DECLARE @CHARNAME VARCHAR (64) 
DECLARE @mindealy INT 
DECLARE @maxdelay int 
DECLARE @INITRADIUS INT 
DECLARE @RADIUS int 
DECLARE @MAXNEST int = (SELECT MAX (dwNestID) FROM Tab_RefNest)+1 
DECLARE @MAXHIVE int = (SELECT MAX (dwHiveID) FROM Tab_RefHive)+1 
DECLARE @MAXTACTICS int = (SELECT MAX (dwTacticsID) FROM Tab_RefTactics)+1 

SET @UNIQUE = 'MOB_AR_BARUSWOLF_ADONIS1' -- Unique kodu (RefObjCommon > CodeName128)
SET @CHARNAME = 'vSroBlog' -- Karakter Adı (KOORDİNATLAR BURADAN ALINIR - MUTLAKA DEĞİŞTİRİN)
SET @mindealy = 2 -- Min respawn (saniye)
SET @maxdelay = 2 -- Max respawn (saniye)
SET @INITRADIUS = 100 -- Spawn çevresi
SET @RADIUS = 500 -- Hareket alanı çevresi

Declare @MOBID int SET @MOBID = (SELECT ID FROM _RefObjCommon WHERE CodeName128 = @UNIQUE) 
INSERT INTO Tab_RefTactics (dwTacticsID,dwObjID,btAIQoS,nMaxStamina,btMaxStaminaVariance,nSightRange,btAggressType,AggressData,btChangeTarget,btHelpRequestTo,btHelpResponseTo,btBattleStyle,BattleStyleData,btDiversionBasis,DiversionBasisData1,DiversionBasisData2,DiversionBasisData3,DiversionBasisData4,DiversionBasisData5,DiversionBasisData6,DiversionBasisData7,DiversionBasisData8,btDiversionKeepBasis,DiversionKeepBasisData1,DiversionKeepBasisData2,DiversionKeepBasisData3,DiversionKeepBasisData4,DiversionKeepBasisData5,DiversionKeepBasisData6,DiversionKeepBasisData7,DiversionKeepBasisData8,btKeepDistance,KeepDistanceData,btTraceType,btTraceBoundary,TraceData,btHomingType,HomingData,btAggressTypeOnHoming,btFleeType,dwChampionTacticsID,AdditionOptionFlag,szDescString128) VALUES
(@MAXTACTICS,@MOBID,0,500,50,200,0,0,2,2,2,0,0,5,0,0,0,0,0,30,0,0,4,0,0,0,0,0,0,0,0,0,0,0,1,500,0,0,2,0,0,112,@UNIQUE) 

INSERT INTO Tab_RefHive (dwHiveID,btKeepMonsterCountType,dwOverwriteMaxTotalCount,fMonsterCountPerPC,dwSpawnSpeedIncreaseRate,dwMaxIncreaseRate,btFlag,GameWorldID,HatchObjType,szDescString128) VALUES 
(@MAXHIVE,0,1,0,0,0,0,1,1,@UNIQUE) 

DECLARE @REGION INT SET @REGION = (SELECT (LatestRegion) FROM _Char WHERE CharName16 = @CHARNAME) 
DECLARE @POSX INT SET @POSX = (SELECT (POSX) FROM _Char WHERE CharName16 = @CHARNAME) 
DECLARE @POSY INT SET @POSY = (SELECT (POSY) FROM _Char WHERE CharName16 = @CHARNAME) 
DECLARE @POSZ INT SET @POSZ = (SELECT (POSZ) FROM _Char WHERE CharName16 = @CHARNAME) 

INSERT INTO Tab_RefNest (dwNestID,dwHiveID,dwTacticsID,nRegionDBID,fLocalPosX,fLocalPosY,fLocalPosZ,wInitialDir,nRadius,nGenerateRadius,nChampionGenPercentage,dwDelayTimeMin,dwDelayTimeMax,dwMaxTotalCount,btFlag,btRespawn,btType) VALUES 
(@MAXNEST,@MAXHIVE,@MAXTACTICS,@REGION,@POSX,@POSY,@POSZ,0,@RADIUS,@INITRADIUS,0,@mindealy,@maxdelay,1,0,1,0)

print '' 
print '' 
print ''

🛠️ ÇÖZÜM – 2) Reverse Scroll Noktası Ekleme (SQL)

Bu bölüm, belirlediğiniz tepeye oyuncuların Reverse Scroll ile gidebilmesi için teleport noktası ekler. Koordinatlar yine @CHARNAME üzerinden alınır.

  • @Name: Reverse noktası adı (benzersiz önerilir)
  • @CHARNAME: koordinatı alınacak karakter adı (ZORUNLU DÜZENLE)
  • @minlv / @maxlv: Reverse kullanımı için level aralığı
SQL

USE SRO_VT_SHARD

DECLARE @Name VARCHAR (Max)
DECLARE @CHARNAME VARCHAR (64)
DECLARE @minlv INT
DECLARE @maxlv int

SET @Name = 'MUOI_GOK_2' -- REVERSE NOKTASINA VERİLECEK AD
SET @CHARNAME = 'vSroBlog' -- Karakter Adı (KOORDİNATLAR BURADAN ALINIR - MUTLAKA DEĞİŞTİRİN)
SET @minlv = 1  -- Minimum level
SET @maxlv = 999  -- Maximum level

DECLARE @REGION INT SET @REGION = (SELECT (LatestRegion) FROM _Char WHERE CharName16 = @CHARNAME)
DECLARE @POSX INT SET @POSX = (SELECT (POSX) FROM _Char WHERE CharName16 = @CHARNAME)
DECLARE @POSY INT SET @POSY = (SELECT (POSY) FROM _Char WHERE CharName16 = @CHARNAME)
DECLARE @POSZ INT SET @POSZ = (SELECT (POSZ) FROM _Char WHERE CharName16 = @CHARNAME)

INSERT INTO _RefOptionalTeleport
([Service],[ObjName128],[ZoneName128],[RegionID],[Pos_X],[Pos_Y],[Pos_Z],[WorldID],[RegionIDGroup],[MapPoint],[LevelMin],[LevelMax],[Param1],[Param1_Desc_128],[Param2],[Param2_Desc_128],[Param3],[Param3_Desc_128])
VALUES
(1,@Name,'SN_'+ @Name,@REGION,@POSX,@POSY,@POSZ,1,-1,1,@minlv,@maxlv,-1,'xxx',-1,'xxx',-1,'xxx')

PRINT 'Added Sucessfully'

🚀 Uygulama Adımları

  1. İşleme başlamadan önce SRO_VT_SHARD yedeği alın
  2. Oyunda, Unique/Reverse eklemek istediğiniz tepeye gidin
  3. Koordinatı alınacak karakterin adını not edin
  4. Her iki SQL içinde de SET @CHARNAME = 'vSroBlog' satırını kendi karakter adınızla değiştirin
  5. Önce Unique Spawn SQL’ini çalıştırın
  6. Ardından Reverse Noktası SQL’ini çalıştırın
  7. Shard ve GameServer modüllerini yeniden başlatın
  8. Oyundan Reverse listesinde noktanın göründüğünü ve Unique’nin doğru tepede spawn olduğunu test edin

✅ Fix Sonucu

  • ✔️ Roc Mountain tepelere yeni Unique spawn noktaları eklenir
  • ✔️ Aynı tepelere özel Reverse Scroll noktaları tanımlanır
  • ✔️ Koordinatlar otomatik çekildiği için kurulum hızlanır ve hata payı azalır

⚠️ Önemli Uyarılar

  • @CHARNAME yanlış bırakılırsa Unique/Reverse koordinatı yanlış alınır ve nokta hatalı olur
  • @Name değeri benzersiz olmalıdır (aynı isimle çakışma yaşanabilir)
  • Canlı sunucuda uygulamadan önce test DB’de denemeniz önerilir

🧷 Not

Her tepe için aynı işlemi tekrarlayabilirsiniz. Sadece Unique kodunu, Reverse adını ve koordinatı alacağınız karakter adını değiştirmeniz yeterlidir.


🔒 Telif & Paylaşım

Bu konu vSro.Blog için özel olarak hazırlanmıştır. İzinsiz kopyalanması veya başka forumlarda paylaşılması yasaktır.