Puan
0
Çözümler
0
- Katılım
- 18 Ocak 2025
- Mesajlar
- 52
- Tepkime puanı
- 2
- Konum
- Bursa
- Web sitesi
- ko-turkey.net
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.
SQL Management Studio'da:
Prosedür içerisinde aşağıdaki satırı bulun:
62'lik kısmı 1 olarak güncelleyin. Ayrıca, karakter üzerindeki bazı alanları temizlemek için aşağıdaki sorguyu kullanabilirsiniz:
Kodlar arasında dönüştürme işlemi
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.
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 veyaINSERT INTO USERDATA
satırının hemen altına ekleyebilirsiniz.
Sınıf Kodlarının Master Karşılıkları:
Normal Class | Master Class |
---|---|
101 | 106 (Karus Warrior) |
102 | 108 (Karus Rogue) |
103 | 110 (Karus Mage) |
104 | 112 (Karus Priest) |
201 | 206 (Elmorad Warrior) |
202 | 208 (Elmorad Rogue) |
203 | 210 (Elmorad Mage) |
204 | 212 (Elmorad Priest) |
@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.