PROSEDÜR Create_New_Char Ile Master Açık + 62 Level Karakter Başlatma

  • Konuyu Başlatan Konuyu Başlatan Prepective
  • Başlangıç tarihi Başlangıç tarihi
  • Okuma süresi: 3:36

Prepective

Admin
Admin
Moderatör
Puan 0
Çözümler 0
Katılım
18 Ocak 2025
Mesajlar
52
Tepkime puanı
2
Konum
Bursa
Web sitesi
ko-turkey.net
@Prepective
Konu Sahibi
Merhaba değerli KO-TURKEY geliştiricileri,


Bu konuda sizlerle birlikte, yeni karakter oluşturulduğunda otomatik olarak 62/1 seviyede ve Master açık şekilde başlamasını sağlayan CREATE_NEW_CHAR prosedürü nasıl düzenlenir, bunu adım adım göstereceğim.


Bu yöntem sayesinde oyuncular ilk girişte direkt olarak 62 Level + Master sınıfa geçmiş şekilde oyuna başlar. Aynı zamanda, isterseniz karakteri 1 Level olarak başlatabilir ve gerekli alanları elle sıfırlayabilirsiniz.




⚙️ Nereden Ulaşılır?​


SQL Management Studio'da:
NGINX:
Programmability > Stored Procedures > dbo.CREATE_NEW_CHAR


🧩 Kullanım Notları:​


  • Prosedür ALTER edilerek düzenlenir.
  • Veritabanınızdaki USERDATA tablosundaki sütun isimleri değişmişse, sorguları kendi yapınıza göre uyarlayın.
  • İşlem öncesi mutlaka yedek alınız!



📌 1. Karakter 62/1 ve Master Açık Başlatmak İçin​


Prosedür içerisinde aşağıdaki satırı bulun:
SQL:
INSERT INTO USERDATA (strUserID, Nation, Race, Class, HairRGB, Face, Strong, Sta, Dex, Intel, Cha, Level, Points, Hp, Mp, strSkill)
VALUES (@strCharID, @bNation, @bRace, @simdikiClass, @nHair, @bFace, @bStr, @bSta, @bDex, @bIntel, @bCha, 62, 197, 5000, 5000, 'j')

Bu satır sayesinde karakterler direkt 62 level ve master class atanmış şekilde başlar (@simdikiClass master sınıf karşılığıdır).



📌 2. Eğer Karakter 1 Level Başlasın İstiyorsanız​


62'lik kısmı 1 olarak güncelleyin. Ayrıca, karakter üzerindeki bazı alanları temizlemek için aşağıdaki sorguyu kullanabilirsiniz:
SQL:
UPDATE USERDATA
SET [Level] = '1',
    [strSkill] = '',
    [Points] = '',
    [bLevelRebirth] = ''
WHERE strUserID = @strCharID
Bu sorguyu, CREATE_NEW_CHAR prosedürünün sonuna veya INSERT INTO USERDATA satırının hemen altına ekleyebilirsiniz.

🧠 Sınıf Kodlarının Master Karşılıkları:​

Normal ClassMaster Class
101106 (Karus Warrior)
102108 (Karus Rogue)
103110 (Karus Mage)
104112 (Karus Priest)
201206 (Elmorad Warrior)
202208 (Elmorad Rogue)
203210 (Elmorad Mage)
204212 (Elmorad Priest)
Kodlar arasında dönüştürme işlemi @simdikiClass üzerinden otomatik yapılır.

🛠️ Tam CREATE_NEW_CHAR Prosedür Yapısı (Gizli İçerik)​

SQL:
USE [kn_online]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[CREATE_NEW_CHAR]
    @strAccountID varchar(21),
    @index tinyint,
    @strCharID varchar(21),
    @bRace tinyint,
    @sClass smallint,
    @nHair int,
    @bFace tinyint,
    @bStr tinyint,
    @bSta tinyint,
    @bDex tinyint,
    @bIntel tinyint,
    @bCha tinyint
AS

DECLARE @bNation tinyint
DECLARE @bCharCount tinyint
DECLARE @bCount tinyint
DECLARE @simdikiClass smallint

SELECT @bNation = bNation, @bCharCount = bCharNum
FROM ACCOUNT_CHAR WHERE strAccountID = @strAccountID

-- Ulus kontrolü
IF (@bNation = 1 AND @bRace > 10) RETURN 2
ELSE IF (@bNation = 2 AND @bRace < 10) RETURN 2
ELSE IF (@bNation <> 1 AND @bNation <> 2) RETURN 2

-- Kullanıcı adı kontrolü
SELECT @bCount = COUNT(strUserID)
FROM USERDATA WHERE strUserID = @strCharID
IF (@bCount > 0) RETURN 3

BEGIN TRAN

-- Karakter slotu atama
IF (@index = 0)
    UPDATE ACCOUNT_CHAR SET strCharID1 = @strCharID, bCharNum += 1
    WHERE strAccountID = @strAccountID
ELSE IF (@index = 1)
    UPDATE ACCOUNT_CHAR SET strCharID2 = @strCharID, bCharNum += 1
    WHERE strAccountID = @strAccountID
ELSE IF (@index = 2)
    UPDATE ACCOUNT_CHAR SET strCharID3 = @strCharID, bCharNum += 1
    WHERE strAccountID = @strAccountID

IF (@@ERROR <> 0 OR @@ROWCOUNT = 0)
BEGIN
    ROLLBACK TRAN
    RETURN 4
END

-- Master class atama
IF(@sClass = 101) SET @simdikiClass = 106
ELSE IF(@sClass = 102) SET @simdikiClass = 108
ELSE IF(@sClass = 103) SET @simdikiClass = 110
ELSE IF(@sClass = 104) SET @simdikiClass = 112
ELSE IF(@sClass = 201) SET @simdikiClass = 206
ELSE IF(@sClass = 202) SET @simdikiClass = 208
ELSE IF(@sClass = 203) SET @simdikiClass = 210
ELSE IF(@sClass = 204) SET @simdikiClass = 212

-- Karakter verisi oluşturma
INSERT INTO USERDATA (strUserID, Nation, Race, Class, HairRGB, Face, Strong, Sta, Dex, Intel, Cha, Level, Points, Hp, Mp, strSkill)
VALUES (@strCharID, @bNation, @bRace, @simdikiClass, @nHair, @bFace, @bStr, @bSta, @bDex, @bIntel, @bCha, 62, 197, 5000, 5000, 'j')

IF (@@ERROR <> 0)
BEGIN
    ROLLBACK TRAN
    RETURN 4
END

COMMIT TRAN
RETURN 0


💬 Sonuç:​


Bu sistemle, yeni karakterler sunucuda otomatik olarak 62 Level + Master açık şekilde oluşturulabilir. İsteğe bağlı olarak 1 Level olarak başlatabilir ve gerekli temizlemeyi sağlayabilirsiniz.
 
Geri
Üst