- Joined
- Aug 15, 2006
- Messages
- 18
- Reaction score
- 3
Re: [Share] Sql fix for 0 class hacking
Yes. it's work for MSSQL2000, just excute it
so this SQL work right ?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
work on mssql 2000 ?
Yes. it's work for MSSQL2000, just excute it

