Yeni Server Sistemi Hilesiz ve Sorunsuz


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
Procedürlerimiz
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
Simdide diger güvenlik bölümüne geçelim. 
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
Clanlar için
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
Ve Son olarak Yepyeni bir Dupescanner V1.06 ve LiveDC programi 

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
Bu kisimi eklemektir 

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

Yorum Gönder

Daha yeni Daha eski