Knight Online - 1299 - Türkçe Karakter Dupe Fixleme - Engelleme
Merhaba, değerli müşterimiz veya okuyucumuz. Bu makalede kullanıcıların oyuna giriş esnasında kullandıkları kullanıcı adlarında Türkçe karakterin nasıl engellenebileceği hakkında bilgi verilmiştir.
Kullanmış olduğunuz anti cheat sisteminiz ne ise ona göre veritabanınızda login prosedürü bulunacaktır. Örneğin bu bir çok oyunda SOACS_LOGIN olabilir. Aşağıda vereceğimiz kodu prosedüre uygulayıp bu sorunu giderebilirsiniz.
Türkçe karakter dupe fixleme için kod :
SOACS_LOGIN VEYA LOGIN PROSEDURUNE AS YAZISINDAN SONRA BU KODU UYGULAYIN :
-- ZirveSunucum || Türkçe Karakter ID kabul etme. -- ZirveSunucum Information - Only English Character Start IF dbo.IsValidCharacters(@AccountID) = 1 BEGIN SET @nRet = 11 -- Please do not use s-g-c-i letters in your Account ID. RETURN END IF dbo.IsValidCharacters(@Password) = 1 BEGIN SET @nRet = 11 -- Please do not use s-g-c-i letters in your Account ID. RETURN END -- ZirveSunucum Information - Only English Character EndCREATE_NEW_CHAR PROSEDURUNE AS YAZISINDAN SONRA BU KODU UYGULAYIN :
-- ZirveSunucum Information - Only English Character IF dbo.IsValidCharacters(@AccountID) = 1 or dbo.IsValidCharacters(@CharID) = 1 BEGIN SET @nRet = 4 -- Please do not use s-g-c-i letters in your Account ID. RETURN END -- ZirveSunucum Information - Only English Character End
SON OLARAK SQL SERVER GIRIP KN_ONLINE VERITABANI DOSYASINA BU PROSEDURU GIRIN :
-- ZirveSunucum Information | Security Insertİşlemler bu kadar, iyi çalışmalar diliyoruz.
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[PROC_INSERT_CURRENTUSER]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[PROC_INSERT_CURRENTUSER] GO CREATE PROCEDURE [dbo].[PROC_INSERT_CURRENTUSER] @AccountID varchar(50), @CharID varchar(50), @ServerNo int, @ServerIP varchar(50), @ClientIP varchar(50), @nret smallint output AS BEGIN INSERT INTO CURRENTUSER (nServerNo, strServerIP, strAccountID, strCharID, strClientIP ) Values (@ServerNo, @ServerIP, @AccountID, @CharID, @ClientIP ) DECLARE @RAccountID char(21) SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID1 = @CharID and strCharID1 IS NOT NULL SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID2 = @CharID and strCharID2 IS NOT NULL SELECT @RAccountID = strAccountID FROM ACCOUNT_CHAR WHERE strCharID3 = @CharID and strCharID3 IS NOT NULL IF @RAccountID IS NULL BEGIN SET @nRet = 0 RETURN END ELSE IF @RAccountID = '' BEGIN SET @nRet = 0 RETURN END ELSE IF @RAccountID <> @AccountID BEGIN SET @nRet = 0 RETURN END ELSE BEGIN SET @nRet = 1 RETURN END RETURN END GO IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[IsValidCharacters]') AND type IN ( N'FN', N'IF', N'TF', N'FS', N'FT' )) DROP FUNCTION [dbo].[IsValidCharacters] GO CREATE FUNCTION [dbo].[IsValidCharacters](@SData varchar(8000)) RETURNS INT AS BEGIN /* Author : AKUMA Edit : ZirveSunucum Information */ DECLARE @SDataLen int DECLARE @Loop int DECLARE @Letter varchar(1) DECLARE @RXLetters varchar(8000) DECLARE @Match tinyint SET @RXLetters = 'qwertyuopasdfghjklizxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890_' SET @SDataLen = LEN(@SData) SET @Loop = 1 SET @Match = 0 WHILE @Loop <= (@SDataLen) BEGIN SET @Letter = RTRIM(LTRIM(SUBSTRING(@SData,@Loop,1))) IF CHARINDEX(@Letter,@RXLetters) = 0 BEGIN SET @Match = 1 BREAK END SET @Loop = @Loop + 1 END RETURN @Match END GO
- 21 Bu dökümanı faydalı bulan kullanıcılar: