Anti-Hilemiz in özellikleri.
Hilecileri aninda yakalar ve Tabloya aktarir.
Hilecileri oyun içindeyken DC eder ve Aninda banlar.
Dupe yapmak için 1 char ile çift giris yapan kisileri aninda yakalar ve DC eder
ve verileri Tabloya ekler
Ek özellik olarak ise GM leri loglar.
Sizin tek yapmaniz gereken sey hilenin isimlerini buldukca ebenezerinizin içerisindeki Hacktoollist.txt ye eklemektir ve yeni hile isimleri çiktigi zaman procedure eklemektir okadar. Ayrica seri bir sekilde çalismasini istiyorsaniz ACCOUNT_LOGOUT procedürüne EXEC CHEATER_BAN eklemeniz yeterlidir.
Öncelikle Anti-Hile bölümünle basliyalim.
Kod:
CREATE TABLE [dbo].[CHEATER_FORBID](
[UserID] [char](21) NULL,
[Reason] [char](200) NULL,
[Time] [datetime] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[CHEATER_FORBID] ADD CONSTRAINT [DF_CHEATER_FORBID_Time] DEFAULT (getdate()) FOR [Time]
GO
Kod:
CREATE TABLE [dbo].[GAMEMASTER_LOG](
[strNick] [char](21) NULL,
[strAccount] [char](21) NULL,
[strIP] [char](15) NULL,
[strTime] [datetime] NULL
) ON [PRIMARY]
GO
Kod:
CREATE TABLE [dbo].[DISCONNECT_USER](
[UserID] [char](21) NULL
) ON [PRIMARY]
GO
Kod:
CREATE PROCEDURE [dbo].[CHEATER_BAN]
AS
-- TheReallizt@hotmail.com
DECLARE @StrCharID VARCHAR(21)
DECLARE MYCURSOR2 CURSOR
FOR
SELECT StrCharID from HACKTOOL_USERLOG where strHackToolName like '%Myko%' or strHackToolName like '%Hack%' or strHackToolName like '%Koxp%' or strHackToolName like '%Dual Client%' or strHackToolName like '%Hidetoolz%' or strHackToolName like '%Autoloot%' or strHackToolName like '%Auto Loot%' or strHackToolName like '%Cheat%' or strHackToolName like '%Hide%'
OPEN MYCURSOR2
FETCH NEXT FROM MYCURSOR2 INTO @StrCharID
WHILE @@FETCH_STATUS = 0
BEGIN
IF EXISTS (Select * From CHEATER_FORBID where UserID = @StrCharID)
DELETE FROM HACKTOOL_USERLOG where strCharID = @strCharID
INSERT INTO DISCONNECT_USER VALUES (@StrCharID)
INSERT INTO CHEATER_FORBID VALUES (@strCharID,'Cheat',GETDATE())
UPDATE USERDATA SET Authority = 255 where strUserId = @strCharID
FETCH NEXT FROM MYCURSOR INTO @StrCharID
END
CLOSE MYCURSOR2
DEALLOCATE MYCURSOR2
Kod:
ALTER PROCEDURE [dbo].[PROC_INSERT_CURRENTUSER]
@AccountID char(21),
@CharID char(21),
@ServerNo int,
@ServerIP char(15),
@ClientIP char(15),
@nRet smallint output
AS
--Reallizt
DECLARE @GM Char(21)
IF EXISTS ( Select * from CURRENTUSER where strCharID = @CharID)
INSERT INTO CHEATER_FORBID VALUES (@CharID, 'Dual Login',getdate())
INSERT INTO DISCONNECT_USER VALUES (@CharID)
SET @nRet = 0
IF NOT EXISTS ( Select * from CURRENTUSER where strCharID = @CharID)
INSERT INTO CURRENTUSER (nServerNo, strAccountID, strCharID, strServerIP, strClientIP) VALUES (@ServerNo, @AccountID, @CharID,@ServerIP,@ClientIP)
SET @GM = @CharID
SELECT @GM = struserid from USERDATA where authority = 0
INSERT INTO GAMEMASTER_LOG VALUES (@GM, @AccountID, @ClientIP,getdate())
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
Bu bölümde Nicklerde Illegal karakter kullanimi ve Clanlardaki Illegal karakter kullamini engellicez.
Kod:
ALTER PROCEDURE [dbo].[CREATE_NEW_CHAR]
@nRet smallint OUTPUT,
@AccountID char(21),
@index tinyint,
@CharID char(21),
@Race tinyint,
@Class smallint,
@Hair tinyint,
@Face tinyint,
@Str tinyint,
@Sta tinyint,
@Dex tinyint,
@Intel tinyint,
@Cha tinyint
AS
DECLARE @Row tinyint, @Nation tinyint, @Zone tinyint, @PosX int, @PosZ int, @x int, @chr int, @Knights smallint
BEGIN
SET @x = 1
WHILE @x <= LEN(@CharID)
BEGIN
SET @chr = ASCII(SUBSTRING(@CharID, @x, 1))
IF (@chr NOT BETWEEN 48 AND 59) AND (@chr NOT BETWEEN 65 AND 122)
BEGIN
SET @nRet = 3
RETURN
END
SET @x = @x + 1
END
SELECT @Nation = bNation, @Row = bCharNum FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID
IF @Row >= 3 SET @nRet = 1
IF @Nation = 1 AND @Race > 10 SET @nRet = 2
ELSE IF @Nation = 2 AND @Race < 10 SET @nRet = 2
ELSE IF @Nation <>1 AND @Nation <> 2 SET @nRet = 2
IF @nRet > 0
RETURN
SELECT @Row = COUNT(*) FROM USERDATA WHERE strUserId = @CharID
IF @Row > 0
BEGIN
SET @nRet = 3
RETURN
END
SET @Zone = 21
SELECT @PosX = InitX, @PosZ = InitZ FROM ZONE_INFO WHERE ZoneNo = @Zone
BEGIN TRAN
IF @index = 0
UPDATE ACCOUNT_CHAR SET strCharID1 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
ELSE IF @index = 1
UPDATE ACCOUNT_CHAR SET strCharID2 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
ELSE IF @index = 2
UPDATE ACCOUNT_CHAR SET strCharID3 = @CharID, bCharNum = bCharNum + 1 WHERE strAccountID = @AccountID
INSERT INTO USERDATA (strUserId, Nation, Race, Class, HairColor, Face, Strong, Sta, Dex, Intel, Cha, Zone, PX, PZ)
VALUES (@CharID, @Nation, @Race, @Class, @Hair, @Face, @Str, @Sta, @Dex, @Intel, @Cha, @Zone, @PosX, @PosZ)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
SET @nRet = 4
RETURN
END
COMMIT TRAN
SET @nRet = 0
END
Kod:
ALTER PROCEDURE [dbo].[CREATE_KNIGHTS]
@nRet smallint OUTPUT,
@index smallint,
@nation tinyint,
@community tinyint,
@strName char(21),
@strChief char(21)
AS
DECLARE @Row tinyint, @knightsindex smallint, @knightsname char(21), @x int, @chr int
SET @Row = 0 SET @knightsindex = 0 SET @knightsname = ''
SET @x = 1
WHILE @x <= LEN(@strName)
BEGIN
SET @chr = ASCII(SUBSTRING(@strName, @x, 1))
IF (@chr NOT BETWEEN 48 AND 59) AND (@chr NOT BETWEEN 65 AND 122)
BEGIN
SET @nRet = 3
RETURN
END
SET @x = @x + 1
END
SELECT @Row = COUNT(*) FROM KNIGHTS WHERE IDNum = @index or IDName = @strName
IF @Row > 0 or @index = 0
BEGIN
SET @nRet = 3
RETURN
END
--SELECT @Row = COUNT(*) FROM KNIGHTS WHERE IDName = @strName
--IF @Row > 0
-- BEGIN
-- SET @nRet = 3
--RETURN
-- END
BEGIN TRAN
INSERT INTO KNIGHTS ( IDNum, Nation, Flag, IDName, Chief )
VALUES (@index, @nation, @community, @strName, @strChief )
INSERT INTO KNIGHTS_USER ( sIDNum, strUserID )
VALUES (@index, @strChief )
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
SET @nRet = 6
RETURN
END
-- UPDATE USERDATA SET Knights = @index, Fame = 1 WHERE strUserId = @strChief -- 1 == Chief Authority
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
SET @nRet = 6
RETURN
END
COMMIT TRAN
SET @nRet = 0
Yeni dupescanner 1310 Serverlardada sorunsuz çalismaktadir ve daha düzgün ve sorunsuz çalismaktadir.
Tek yapicaginiz Dupescanner programini aujard klasörüne atmak ve aujard iniye bunlari eklemek
Kod:
[ITEM]
LOG=1
1310=0
DUPE_DELAY=1500
1 = Aktif 0 = pasif
ve son olarak LiveDC programimizin ayarlarini yaptigimizdada süper bir server düzeni çikmis olucaktir ortaya.
LiveDC programi DISCONNECT_USER tablosunu okumak zorundadir.
Yapımcı : Realızt