Sql fix for 0 class hacking

Re: [Share] Sql fix for 0 class hacking

Code:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO




ALTER      PROCEDURE [dbo].[InsertChar]
@user_uid    AS INT,                /* 유저 고유 아이디            */
@user_pos    AS INT,                /* 캐릭터 위치 (3개의 슬롯)        */
@user_name    AS VARCHAR(16),            /* 캐릭터 이름                */
@user_Sex    AS TINYINT,            /* 캐릭터 성                */
@user_Hair    AS TINYINT,            /* 캐릭터 머리 모양            */
@user_Face    AS TINYINT,            /* 캐릭터 얼굴 모양            */
@user_Nation    AS TINYINT,            /* 캐릭터 국가                */
@user_Class    AS SMALLINT,            /* 캐릭터 클래스            */
@C_Gold        AS INT,                /* 캐릭터 소지금            */                    
@C_STR        AS SMALLINT,            /* 캐릭터 STR                */
@C_DEX        AS SMALLINT,            /* 캐릭터 DEX                */
@C_CON        AS SMALLINT,            /* 캐릭터 CON                */
@C_INT        AS SMALLINT,            /* 캐릭터 INT                */
@C_WIS        AS SMALLINT,            /* 캐릭터 WIS                */
@PointX        AS REAL,            /* 캐릭터 Point X 좌표            */
@PointY        AS REAL,            /* 캐릭터 Point Y 좌표            */
@PointZ        AS REAL,            /* 캐릭터 Point Z 좌표            */
@C_Equip    AS varBINARY(30),            /* 장비 (2 * 15 = 30)            */
@Skill        AS varBinary(84),
@UserInfoType    TINYINT,
@CID        INT    OUTPUT
AS

SET NOCOUNT ON

--DECLARE @UID INT
DECLARE @C_HP INT, @C_MP INT

/* 캐릭터 이름 확인 */
SELECT @CID = CID FROM CharInfo WHERE Name = @user_name
IF @CID <> 0
BEGIN
    SET @CID = -1    /* 동일 이름 존재 */
    RETURN
END

/* 슬롯 확인 */
DECLARE @CharSlot INT
IF @user_pos = 0
BEGIN
    SELECT @CharSlot = Char1 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END
ELSE IF @user_pos = 1
BEGIN
    SELECT @CharSlot = Char2 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END
ELSE IF @user_pos = 2
BEGIN
    SELECT @CharSlot = Char3 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END
ELSE IF @user_pos = 3
BEGIN
    SELECT @CharSlot = Char4 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END
ELSE IF @user_pos = 4
BEGIN
    SELECT @CharSlot = Char5 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END

IF @CharSlot <> 0
BEGIN
    SET @CID =  -2    /* 슬롯이 차있음 */
    RETURN
END

-- Hacker check / fix
IF @user_Nation > 1
BEGIN
    SET @user_Nation = 1
END
ELSE IF @user_Nation < 0
BEGIN
    SET @user_Nation = 0
END

IF @user_Sex > 2
BEGIN
    SET @user_Sex = 2
END
ELSE IF @user_Sex < 1
BEGIN
    SET @user_Sex = 1
END

IF @user_Face > 7
BEGIN
    SET @user_Face = 7
END
ELSE IF @user_Face < 1
BEGIN
    SET @user_Face = 1
END

IF @user_Hair < 1
BEGIN
    SET @user_Hair = 1
END

IF @user_Nation = 0
BEGIN
    IF @user_Sex = 1
    BEGIN
        IF @user_Hair > 5
        BEGIN
            SET @user_Hair = 5
        END
    END
    ELSE IF @user_Hair > 7
    BEGIN
        SET @user_Hair = 7
    END

    IF @user_Class < 1
    BEGIN
        SET @user_Class = 1
    END
    ELSE IF @user_Class > 4
    BEGIN
        SET @user_Class = 4
    END
END
ELSE IF @user_Nation = 1
BEGIN
    IF @user_Hair > 7
    BEGIN
        SET @user_Hair = 7
    END
    IF @user_Class < 18
    BEGIN
        SET @user_Class = 18
    END
    ELSE IF @user_Class > 19
    BEGIN
        SET @user_Class = 19
    END
END

SET @C_HP = 100 + @C_CON * 8 + 2
IF @C_INT > @C_WIS
BEGIN
    SET @C_MP = 100 + @C_INT * 8 + 2
END
ELSE
BEGIN
    SET @C_MP = 100 + @C_WIS * 8 + 2
END

BEGIN TRAN

SELECT @CID = MAX(CID) + 1 FROM CharInfo WITH (UPDLOCK)

IF (@CID IS NULL)
    SET @CID = 1

INSERT INTO CharInfo (CID,Name, Sex, Hair, Face, Race, Class, Equip, Gold, STR, DEX, CON, Intell, WIS, HP, MP) 
VALUES (@CID,@user_name, @user_Sex, @user_Hair, @user_Face, @user_Nation, @user_Class, @C_Equip, @C_Gold, @C_STR, @C_DEX, @C_CON, @C_INT, @C_WIS, @C_HP, @C_MP)

IF @@ERROR <> 0
BEGIN
    ROLLBACK TRAN
    SET @CID =  -100
    RETURN
END

COMMIT TRAN

INSERT INTO CharInfoEx (CID) VALUES (@CID)

INSERT INTO CharItem (CID) VALUES (@CID)
INSERT INTO CharItemEx (CID) VALUES (@CID)

INSERT INTO CharSkill (CID, Skill) VALUES (@CID, @Skill)

INSERT INTO CharSpell (CID) VALUES (@CID)

INSERT INTO CharPos (CID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ) VALUES (@CID, @PointX, @PointY, @PointZ, @PointX, @PointY, @PointZ)

INSERT INTO CharInfo_Time(CID,CreateTime,UpdateTime)
VALUES (@CID,GETDATE(),GETDATE())

INSERT INTO Friend (CID) VALUES (@CID)
INSERT INTO Quest (CID) VALUES (@CID)

-- UnifiedCharList정보테이블에 입력하기
INSERT TblUnifiedCharList(UID,OldServerGroupID,BeforeCID,NewCID,BeforeCharName)
VALUES (@user_uid,@UserInfoType,@CID,@CID,@user_name)


/* 유저 정보 테이블 업데이트 */
EXEC UpdateCharUID @user_uid, @user_pos, @CID , @UserInfoType
so this SQL work right ?
work on mssql 2000 ?

Yes. it's work for MSSQL2000, just excute it
 
Re: [Share] Sql fix for 0 class hacking

lol tyfix release got abit bug on character create. find it out urself since ppl help alot in here

woodclaw <---------- pure noob
 
Re: [Share] Sql fix for 0 class hacking

Alpha i have a simple question ...

Do you have a Perfect Ryl Files?

if you have all ..can teach me to try make it

ryl 1 are a imcoplete game..but in jogability is the b
 
Re: [Share] Sql fix for 0 class hacking

Find this:

ELSE IF @user_Nation = 1
BEGIN
IF @user_Hair > 7
BEGIN
SET @user_Hair = 7
END
IF @user_Class < 18
BEGIN
SET @user_Class = 18
END
ELSE IF @user_Class > 19
BEGIN
SET @user_Class = 19
END
END

Replace with:

ELSE IF @user_Nation = 1
BEGIN
IF @user_Hair > 7
BEGIN
SET @user_Hair = 7
END
IF @user_Class < 17
BEGIN
SET @user_Class = 17
END
ELSE IF @user_Class > 18
BEGIN
SET @user_Class = 18
END
END
 
Re: [Share] Sql fix for 0 class hacking

here i share back HackFix.sql..
already test = work 100% & fix error.


=- Credit By : Tyfix..

already change :

Code:
Find this:

ELSE IF @user_Nation = 1
BEGIN
IF @user_Hair > 7
BEGIN
SET @user_Hair = 7
END
IF @user_Class < 18
BEGIN
SET @user_Class = 18
END
ELSE IF @user_Class > 19
BEGIN
SET @user_Class = 19
END
END

Replace with:

ELSE IF @user_Nation = 1
BEGIN
IF @user_Hair > 7
BEGIN
SET @user_Hair = 7
END
IF @user_Class < 17
BEGIN
SET @user_Class = 17
END
ELSE IF @user_Class > 18
BEGIN
SET @user_Class = 18
END
END

Working on Mssql 2000 above :thumbup:
MSSQL2000, just excute it :-
Code:
Part2_Zodiac - Store Procedures -Insert Char
 

Attachments

Last edited:
Back