- #1
Konu Sahibi
: serkankacan
[REHBER & SİSTEM] vSRO Devil's Spirit (Devil) Cinsiyet Değiştirici Scroll
_AddLogItem Tetikleyicisi Üzerinden Slot 13'teki Devil'ın Cinsiyetini (Male <-> Female) Eşitleme
_AddLogItem Tetikleyicisi Üzerinden Slot 13'teki Devil'ın Cinsiyetini (Male <-> Female) Eşitleme
Merhaba değerli forum sakinleri,
Sunucunuzda oyuncuların yanlış cinsiyet için aldıkları veya karakter cinsiyeti değiştirdiklerinde kullanamaz hale geldikleri **Devil's Spirit (Melek / Şeytan)** eşyalarının cinsiyetini (Erkek <-> Kadın) pratik şekilde çevirebilmeleri için özel bir scroll sistemi hazırlayabilirsiniz.
Aşağıda paylaşılan optimize edilmiş prosedür; oyuncunun çantasının **ilk yuvasına (Slot 13)** koyduğu Devil'ın seviyesini, rengini ve türünü (Event / Item Mall, Grade A / B / S) tespit eder; **artısını (+), kalan süresini ve statlarını bozmadan** karşı cinsiyetine dönüştürür ve bellek çakışmasını engellemek için karakteri güvenle oyundan düşürür (Disconnect).
Kullanım Kuralı & Önemli Uyarı' Alıntı:DİKKAT:
- Oyuncu cinsiyetini değiştirmek istediği Devil'ı çantasının **en sol üst köşesindeki ilk yuvaya (Slot 13)** yerleştirmelidir.
- Scroll basıldığında eşyanın istemcide yeni görünümünü anında alması ve GameServer hafızasıyla DB senkronizasyonunun bozulmaması için oyuncu otomatik olarak oyundan düşürülür (DC edilir).
- İşlem öncesinde SRO_VT_LOG ve SRO_VT_SHARD yedeklerinizi almayı unutmayınız.
Desteklenen Devil Türleri (Male <-> Female Eşleşmeleri)
| Devil Türü | Erkek (Male) ID | Kadın (Female) ID | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Devil Spirit B (Event) | 24414 | 24413 | Devil Spirit A (Kırmızı - Event) | 24972 | 24971 | Devil Spirit A (Sarı - Event) | 24974 | 24973 | Devil Spirit A (Mavi - Event) | 24976 | 24975 | Devil Spirit S (Event) | 24978 | 24977 | Devil Spirit A (Kırmızı - Mall) | 24406 | 24405 | Devil Spirit A (Sarı - Mall) | 24408 | 24407 | Devil Spirit A (Mavi - Mall) | 24410 | 24409 | Devil Spirit S (Mall) | 24412 | 24411 |
</TR>
[TR]
</TR>
[TR]
</TR>
[TR]
</TR>
[TR]
</TR>
[TR]
</TR>
[TR]
</TR>
[TR]
</TR>
[TR]
</TR>
Optimize Edilmiş _AddLogItem Kodu
SRO_VT_LOG veritabanındaki **_AddLogItem** prosedürünü açın (
Modify) ve uygun bir satıra aşağıdaki tekil sorgulu, optimize bloğu ekleyin:
SQL:
-- ===================================================================
-- DEVIL GENDER (CİNSİYET) DEĞİŞTİRİCİ SCROLL SİSTEMİ
-- @Operation = 41 (Eşya Sağ Tıklanarak Tüketildiğinde Tetiklenir)
-- @ItemRefID = 78342 (Kullandığınız Scroll'un RefItemID Değeri)
-- ===================================================================
IF (@Operation = 41 AND @ItemRefID = 78342)
BEGIN
-- 1. Slot 13'teki eşyanın ID64 ve RefItemID bilgisini al
DECLARE @InvID64 BIGINT = NULL
DECLARE @CurRefItemID INT = NULL
SELECT
@InvID64 = INV.ItemID,
@CurRefItemID = IT.RefItemID
FROM SRO_VT_SHARD.dbo._Inventory INV
INNER JOIN SRO_VT_SHARD.dbo._Items IT ON IT.ID64 = INV.ItemID
WHERE INV.CharID = @CharID
AND INV.Slot = 13
AND INV.ItemID > 0
-- 2. Yeni cinsiyet RefItemID değerini belirle (CASE-WHEN ile Tek Seferde)
DECLARE @NewRefItemID INT = NULL
SET @NewRefItemID = CASE @CurRefItemID
-- Erkek -> Kadın Dönüşümleri:
WHEN 24414 THEN 24413 -- Devil B Event
WHEN 24972 THEN 24971 -- Devil A Red Event
WHEN 24974 THEN 24973 -- Devil A Yellow Event
WHEN 24976 THEN 24975 -- Devil A Blue Event
WHEN 24978 THEN 24977 -- Devil S Event
WHEN 24406 THEN 24405 -- Devil A Red Mall
WHEN 24408 THEN 24407 -- Devil A Yellow Mall
WHEN 24410 THEN 24409 -- Devil A Blue Mall
WHEN 24412 THEN 24411 -- Devil S Mall
-- Kadın -> Erkek Dönüşümleri:
WHEN 24413 THEN 24414 -- Devil B Event
WHEN 24971 THEN 24972 -- Devil A Red Event
WHEN 24973 THEN 24974 -- Devil A Yellow Event
WHEN 24975 THEN 24976 -- Devil A Blue Event
WHEN 24977 THEN 24978 -- Devil S Event
WHEN 24405 THEN 24406 -- Devil A Red Mall
WHEN 24407 THEN 24408 -- Devil A Yellow Mall
WHEN 24409 THEN 24410 -- Devil A Blue Mall
WHEN 24411 THEN 24412 -- Devil S Mall
ELSE NULL
END
-- 3. Eğer Slot 13'teki eşya geçerli bir Devil ise güncelle ve karakteri DC et
IF (@NewRefItemID IS NOT NULL AND @InvID64 IS NOT NULL)
BEGIN
-- Eşyanın sadece tür referansını değiştiriyoruz (Artı ve özellikleri korunur)
UPDATE SRO_VT_SHARD.dbo._Items
SET RefItemID = @NewRefItemID
WHERE ID64 = @InvID64
-- Karakteri güvenli şekilde oyundan düşür (Senkronizasyon garantisi)
UPDATE SRO_VT_SHARD.dbo._User
SET Sec_Primary = 1
WHERE CharID = @CharID
END
END
Nasıl Test Edilir?
- SQL kodunu `_AddLogItem` prosedürüne yapıştırıp F5 ile derleyin.
- Herhangi bir erkek veya kadın Devil'ı çantanızın **ilk yuvasına (Slot 13)** yerleştirin.
78342kodlu parşömene sağ tıklayarak kullanın.- Karakter anında oyundan düşecektir (Disconnect).
- Oyuna tekrar girdiğinizde Slot 13'teki Devil'ın cinsiyetinin değiştiğini, artı değerinin ve süresinin ise eksiksiz korunduğunu göreceksiniz.
Sorularınızı ve eklemek istediğiniz özel Devil modellerini konu altından iletebilirsiniz. Herkese keyifli geliştirmeler!

