Files
Client/Server/Database/DBScript/GameDB/GameDB_PROC_CREATE.sql
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

2276 lines
49 KiB
Transact-SQL

CREATE PROC agt_CharDelHistory
AS
SET NOCOUNT ON
DECLARE @ROWID INT
DECLARE @CID INT
DECLARE @GETDATE SMALLDATETIME
DECLARE @Table TABLE
(
ROWID INT IDENTITY(1,1) PRIMARY KEY
, intCID INT
)
SET @GETDATE = GETDATE()
INSERT INTO @Table
SELECT intCID FROM TblCharDelHistory WHERE DateDeleteTime < @GETDATE
SET @ROWID = @@ROWCOUNT
WHILE @ROWID <> 0
BEGIN
SELECT @CID = intCID FROM @Table WHERE ROWID = @ROWID
/* 캐릭터 삭제 */
EXEC DeleteCharInfo @CID
--INSERT INTO CIDStore (UID) VALUES (@CID)
SET @ROWID = @ROWID - 1
END
INSERT INTO CharDelHistory.dbo.TblCharDelHistory_LOG
SELECT * FROM TblCharDelHistory WHERE DateDeleteTime < @GETDATE
DELETE TblCharDelHistory
WHERE DateDeleteTime < @GETDATE
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteAdmin.sql
----------------------------------------------------------------------------------------------------------------------
/*
운영자 삭제 프로시져
*/
CREATE PROCEDURE dbo.DeleteAdmin
@UID AS INT /* 유저 고유 아이디 */
AS
SET NOCOUNT ON
DELETE FROM AdminList WHERE UID = @UID
GO
CREATE PROC DeleteChar @user_uid INT,@user_pos INT,@CID INT
AS
SET NOCOUNT ON
DECLARE @Div INT
/* 유저 정보 테이블 업데이트 */
SET @Div = @user_uid % 4
IF @user_pos = 0
BEGIN
IF @Div = 0
BEGIN
BEGIN TRAN
UPDATE UserInfo_1 SET Char1 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @Div = 1
BEGIN
BEGIN TRAN
UPDATE UserInfo_2 SET Char1 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @Div = 2
BEGIN
BEGIN TRAN
UPDATE UserInfo_3 SET Char1 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @Div = 3
BEGIN
BEGIN TRAN
UPDATE UserInfo_4 SET Char1 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
END
ELSE IF @user_pos = 1
BEGIN
IF @Div = 0
BEGIN
BEGIN TRAN
UPDATE UserInfo_1 SET Char2 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @Div = 1
BEGIN
BEGIN TRAN
UPDATE UserInfo_2 SET Char2 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @Div = 2
BEGIN
BEGIN TRAN
UPDATE UserInfo_3 SET Char2 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @Div = 3
BEGIN
BEGIN TRAN
UPDATE UserInfo_4 SET Char2 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
END
ELSE IF @user_pos = 2
BEGIN
IF @Div = 0
BEGIN
BEGIN TRAN
UPDATE UserInfo_1 SET Char3 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @Div = 1
BEGIN
BEGIN TRAN
UPDATE UserInfo_2 SET Char3 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @Div = 2
BEGIN
BEGIN TRAN
UPDATE UserInfo_3 SET Char3 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @Div = 3
BEGIN
BEGIN TRAN
UPDATE UserInfo_4 SET Char3 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime)
VALUES (@CID,@user_uid,GETDATE() + 30)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
END
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteChar.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 삭제 프로시져
*/
CREATE PROCEDURE dbo.DeleteChar_TEMP_BACKUP
@user_uid AS INT, /* 유저 고유 아이디 */
@user_pos AS INT, /* 캐릭터 위치 (3개의 슬롯) */
@char_uid AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
DECLARE @Div INT
DECLARE @CID INT
/* 고유 아이디 설정 */
SELECT @CID = UID FROM CharInfo WHERE UID = @char_uid
IF @CID IS NOT NULL
BEGIN
/* 캐릭터 삭제 */
EXEC DeleteCharInfo @CID
/* 유저 정보 테이블 업데이트 */
EXEC UpdateCharUID @user_uid, @user_pos, 0
INSERT INTO CIDStore (UID) VALUES (@CID)
END
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteCharEx.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 삭제
*/
CREATE PROCEDURE dbo.DeleteCharEx
@Char_uid AS INT /* 캐릭터 고유 아이디 */
AS
DECLARE @UserID INT, @CharSlot INT
SELECT @UserID = UID, @CharSlot = Char1 FROM UserInfo WHERE Char1 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
EXEC DeleteChar @UserID, 0, @Char_uid
RETURN
END
SELECT @UserID = UID, @CharSlot = Char2 FROM UserInfo WHERE Char2 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
EXEC DeleteChar @UserID, 1, @Char_uid
RETURN
END
SELECT @UserID = UID, @CharSlot = Char2 FROM UserInfo WHERE Char3 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
EXEC DeleteChar @UserID, 2, @Char_uid
RETURN
END
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteCharInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 정보 삭제 프로시져
*/
CREATE PROCEDURE dbo.DeleteCharInfo
@char_uid AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
DECLARE @Div INT
/* 캐릭터 삭제 */
SET @Div = @char_uid % 4
IF @Div = 0
BEGIN
--INSERT BEFORE CHARINFO DELETED
INSERT INTO CharDelHistory.dbo.DelCharInfo_1
SELECT * FROM CharInfo_1 WHERE UID = @char_uid
INSERT INTO CharDelHistory.dbo.DelCharSkill_1
SELECT * FROM CharSkill_1 WHERE UID = @char_uid
DELETE FROM CharInfo_1 WHERE UID = @char_uid
DELETE FROM CharPos_1 WHERE UID = @char_uid
DELETE FROM CharSkill_1 WHERE UID = @char_uid
END
ELSE IF @Div = 1
BEGIN
--INSERT BEFORE CHARINFO DELETED
INSERT INTO CharDelHistory.dbo.DelCharInfo_2
SELECT * FROM CharInfo_2 WHERE UID = @char_uid
INSERT INTO CharDelHistory.dbo.DelCharSkill_2
SELECT * FROM CharSkill_2 WHERE UID = @char_uid
DELETE FROM CharInfo_2 WHERE UID = @char_uid
DELETE FROM CharPos_2 WHERE UID = @char_uid
DELETE FROM CharSkill_2 WHERE UID = @char_uid
END
ELSE IF @Div = 2
BEGIN
--INSERT BEFORE CHARINFO DELETED
INSERT INTO CharDelHistory.dbo.DelCharInfo_3
SELECT * FROM CharInfo_3 WHERE UID = @char_uid
INSERT INTO CharDelHistory.dbo.DelCharSkill_3
SELECT * FROM CharSkill_3 WHERE UID = @char_uid
DELETE FROM CharInfo_3 WHERE UID = @char_uid
DELETE FROM CharPos_3 WHERE UID = @char_uid
DELETE FROM CharSkill_3 WHERE UID = @char_uid
END
ELSE IF @Div = 3
BEGIN
--INSERT BEFORE CHARINFO DELETED
INSERT INTO CharDelHistory.dbo.DelCharInfo_4
SELECT * FROM CharInfo_4 WHERE UID = @char_uid
INSERT INTO CharDelHistory.dbo.DelCharSkill_4
SELECT * FROM CharSkill_4 WHERE UID = @char_uid
DELETE FROM CharInfo_4 WHERE UID = @char_uid
DELETE FROM CharPos_4 WHERE UID = @char_uid
DELETE FROM CharSkill_4 WHERE UID = @char_uid
END
DELETE FROM CharInfoEx WHERE UID = @char_uid
--INSERT BEFORE CHARINFO DELETED
INSERT INTO CharDelHistory.dbo.DelCharItem
SELECT * FROM CharItem WHERE UID = @char_uid
INSERT INTO CharDelHistory.dbo.DelCharItemEx
SELECT * FROM CharItemEx WHERE UID = @char_uid
DELETE FROM CharItem WHERE UID = @char_uid
DELETE FROM CharItemEx WHERE UID = @char_uid
DELETE FROM Friend WHERE UID = @char_uid
DELETE FROM Quest WHERE UID = @char_uid
-- 시간기록삭제
INSERT INTO CharDelHistory.dbo.DelCharInfo_Time VALUES (@char_uid,GETDATE(),GETDATE())
DELETE FROM CharInfo_Time WHERE CID = @char_uid
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteParty.sql
----------------------------------------------------------------------------------------------------------------------
/*
파티 제거 프로시져
*/
CREATE PROCEDURE dbo.DeleteParty
@Party_uid AS INT /* 파티 아이디 */
AS
SET NOCOUNT ON
DECLARE @Div INT
/* 파티 추가 */
SET @Div = @Party_uid % 4
IF @Div = 0
BEGIN
DELETE FROM PartyInfo_1 WHERE UID = @Party_uid
END
ELSE IF @Div = 1
BEGIN
DELETE FROM PartyInfo_2 WHERE UID = @Party_uid
END
ELSE IF @Div = 2
BEGIN
DELETE FROM PartyInfo_3 WHERE UID = @Party_uid
END
ELSE IF @Div = 3
BEGIN
DELETE FROM PartyInfo_4 WHERE UID = @Party_uid
END
INSERT INTO PIDStore (UID) VALUES (@Party_uid)
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteUser.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 삭제 프로시져 ( DeleteCharInfo 정의 되어 있어야 함. )
*/
CREATE PROCEDURE dbo.DeleteUser
@UID INT /* 사용자 아이디 */
AS
SET NOCOUNT ON
DECLARE @Div INT
DECLARE @Char1 AS INT, @Char2 AS INT, @Char3 AS INT
BEGIN TRAN
/* 캐릭터 삭제 */
SELECT @Char1 = Char1, @Char2 = Char2, @Char3 = Char3 FROM UserInfo WHERE UID = @UID
IF(@Char1 <> 0)
BEGIN
EXEC DeleteCharInfo @Char1
END
IF(@Char2 <> 0)
BEGIN
EXEC DeleteCharInfo @Char2
END
IF(@Char3 <> 0)
BEGIN
EXEC DeleteCharInfo @Char3
END
/* 유저 삭제 */
SET @Div = @UID % 4
IF @Div = 0
DELETE FROM UserInfo_1 WHERE UID = @UID
ELSE IF @Div = 1
DELETE FROM UserInfo_2 WHERE UID = @UID
ELSE IF @Div = 2
DELETE FROM UserInfo_3 WHERE UID = @UID
ELSE IF @Div = 3
DELETE FROM UserInfo_4 WHERE UID = @UID
DELETE FROM ItemStore1 WHERE UID = @UID
DELETE FROM ItemStore2 WHERE UID = @UID
COMMIT TRAN
GO
----------------------------------------------------------------------------------------------------------------------
-- FoundSlot.sql
----------------------------------------------------------------------------------------------------------------------
/*
슬롯 찾기
*/
CREATE PROCEDURE dbo.FoundSlot
@Char_uid AS INT /* 캐릭터 고유 아이디 */
AS
DECLARE @UserID INT, @CharSlot INT
SELECT @UserID = UID, @CharSlot = Char1 FROM UserInfo WHERE Char1 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
SELECT @UserID, 0
RETURN
END
SELECT @UserID = UID, @CharSlot = Char2 FROM UserInfo WHERE Char2 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
SELECT @UserID, 1
RETURN
END
SELECT @UserID = UID, @CharSlot = Char2 FROM UserInfo WHERE Char3 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
SELECT @UserID, 2
RETURN
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/* 캐릭터 정보 얻기 프로시져 재 생성 */
CREATE PROCEDURE dbo.GetCharInfo
@UID AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
SELECT UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP, Exp, Chance FROM CharInfo WHERE UID = @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- GetCharInfoEx.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 정보 얻기 프로시져
*/
CREATE PROCEDURE dbo.GetCharInfoEx
@UID AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
SELECT Total, ServerID FROM CharInfoEx WHERE UID = @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- GetCharItem.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 아이템 정보 얻기 프로시져
*/
CREATE PROCEDURE dbo.GetCharItem
@UID AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
SELECT Quick, Equip, Inventory FROM CharItem WHERE UID = @UID
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
----------------------------------------------------------------------------------------------------------------------
-- GetCharPos.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 위치 정보 얻기 프로시져
*/
CREATE PROCEDURE dbo.GetCharPos
@UID AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
SELECT LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ FROM CharPos WHERE UID = @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- GetCharSkill.sql
----------------------------------------------------------------------------------------------------------------------
/*
스킬 정보 보기 프로시져
*/
CREATE PROCEDURE dbo.GetCharSkill
@UID AS INT /* 캐릭터 아이디 */
AS
SET NOCOUNT ON
SELECT Skill FROM CharSkill WHERE UID = @UID
GO
/* 캐릭터 보기 얻기 프로시져 변경 */
CREATE PROCEDURE dbo.GetCharView
@UID AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
SELECT UID, Name, Sex, Hair, Face, Nationality, Class, Fame, Mileage, Guild, Party, Level, Equip FROM CharInfo WHERE UID = @UID
GO
CREATE PROCEDURE dbo.GetItemStore
@UID AS INT /* 유저 고유 아이디 */
AS
SET NOCOUNT ON
SELECT Password, Frag, Gold FROM ItemStore1 WHERE UID = @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- GetPartyInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
파티 정보 보기 프로시져
*/
CREATE PROCEDURE dbo.GetPartyInfo
@Party_uid AS INT /* 파티 아이디 */
AS
SET NOCOUNT ON
SELECT Party FROM PartyInfo WHERE UID = @Party_uid
GO
CREATE Proc GetUIDCIDFromName @Name varchar(16)
as
Declare @CID int
set @CID = 0
Declare @UID int
set @UID = 0
Select @CID = UID from CharInfo where Name = @Name
if @CID = 0
Begin
Select 0, 0
Return
End
Select @UID = UID from UserInfo where Char1 = @CID or Char2 = @CID or Char3 = @CID
if @UID = 0
Begin
Select 0, @CID
Return
End
select @UID, @CID
GO
----------------------------------------------------------------------------------------------------------------------
-- GetUserInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 정보 얻기 프로시져
*/
CREATE PROCEDURE dbo.GetUserInfo
@UID AS INT /* 유저 고유 아이디 */
AS
SET NOCOUNT ON
SELECT Char1, Char2, Char3 FROM UserInfo WHERE UID = @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- InsertAdmin.sql
----------------------------------------------------------------------------------------------------------------------
/*
어드민 추가 프로시져
*/
CREATE PROCEDURE dbo.InsertAdmin
@UID INT /* 사용자 아이디 */
AS
SET NOCOUNT ON
DECLARE @Div INT
INSERT INTO AdminList (UID) VALUES (@UID)
GO
----------------------------------------------------------------------------------------------------------------------
-- InsertChar.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 추가 프로시져
*/
CREATE 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 BINARY(30) /* 장비 (2 * 15 = 30) */
AS
SET NOCOUNT ON
DECLARE @UID INT, @Div INT
DECLARE @C_HP INT, @C_MP INT
/* 캐릭터 이름 확인 */
SELECT @UID = UID FROM CharInfo WHERE Name = @user_name
IF @UID <> 0
BEGIN
SELECT -1 /* 동일 이름 존재 */
RETURN
END
/* 슬롯 확인 */
DECLARE @CharSlot INT
IF @user_pos = 0
BEGIN
SELECT @CharSlot = Char1 FROM UserInfo WHERE UID = @user_uid
END
ELSE IF @user_pos = 1
BEGIN
SELECT @CharSlot = Char2 FROM UserInfo WHERE UID = @user_uid
END
ELSE IF @user_pos = 2
BEGIN
SELECT @CharSlot = Char3 FROM UserInfo WHERE UID = @user_uid
END
IF @CharSlot <> 0
BEGIN
SELECT -2 /* 슬롯이 차있음 */
RETURN
END
/* 고유 아이디 설정 */
SELECT @UID = MIN(UID) FROM CIDStore
IF @UID IS NULL
BEGIN
SELECT @UID = MAX(UID) + 1 FROM CharInfo
IF @UID IS NULL
BEGIN
SET @UID = 1
END
SELECT @UID
END
ELSE
BEGIN
SELECT @UID
DELETE FROM CIDStore WHERE UID = @UID
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
/* 캐릭터 추가 */
SET @Div = @UID % 4
IF @Div = 0
BEGIN
INSERT INTO CharInfo_1 (UID, Name, Sex, Hair, Face, Nationality, Class, Equip, Gold, STR, DEX, CON, Intell, WIS, HP, MP) VALUES (@UID, @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)
INSERT INTO CharPos_1 (UID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ) VALUES (@UID, @PointX, @PointY, @PointZ, @PointX, @PointY, @PointZ)
END
ELSE IF @Div = 1
BEGIN
INSERT INTO CharInfo_2 (UID, Name, Sex, Hair, Face, Nationality, Class, Equip, Gold, STR, DEX, CON, Intell, WIS, HP, MP) VALUES (@UID, @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)
INSERT INTO CharPos_2 (UID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ) VALUES (@UID, @PointX, @PointY, @PointZ, @PointX, @PointY, @PointZ)
END
ELSE IF @Div = 2
BEGIN
INSERT INTO CharInfo_3 (UID, Name, Sex, Hair, Face, Nationality, Class, Equip, Gold, STR, DEX, CON, Intell, WIS, HP, MP) VALUES (@UID, @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)
INSERT INTO CharPos_3 (UID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ) VALUES (@UID, @PointX, @PointY, @PointZ, @PointX, @PointY, @PointZ)
END
ELSE IF @Div = 3
BEGIN
INSERT INTO CharInfo_4 (UID, Name, Sex, Hair, Face, Nationality, Class, Equip, Gold, STR, DEX, CON, Intell, WIS, HP, MP) VALUES (@UID, @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)
INSERT INTO CharPos_4 (UID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ) VALUES (@UID, @PointX, @PointY, @PointZ, @PointX, @PointY, @PointZ)
END
INSERT INTO CharInfoEx (UID) VALUES (@UID)
INSERT INTO CharItem (UID) VALUES (@UID)
INSERT INTO CharItemEx (UID) VALUES (@UID)
INSERT INTO Friend (UID) VALUES (@UID)
INSERT INTO Quest (UID) VALUES (@UID)
-- 캐릭터 생성시간입력
INSERT INTO CharInfo_Time(CID,CreateTime,UpdateTime)
VALUES (@UID,GETDATE(),GETDATE())
/* 유저 정보 테이블 업데이트 */
EXEC UpdateCharUID @user_uid, @user_pos, @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- InsertCharSkill.sql
----------------------------------------------------------------------------------------------------------------------
/*
스킬 추가 프로시져
*/
CREATE PROCEDURE dbo.InsertCharSkill
@UID AS INT, /* 사용자 아이디 */
@Skill AS BINARY(84) /* 스킬 슬롯 */
AS
SET NOCOUNT ON
DECLARE @Div INT
BEGIN TRAN
/* 유저 추가 */
SET @Div = @UID % 4
IF @Div = 0
INSERT INTO CharSkill_1 (UID, Skill) VALUES (@UID, @Skill)
ELSE IF @Div = 1
INSERT INTO CharSkill_2 (UID, Skill) VALUES (@UID, @Skill)
ELSE IF @Div = 2
INSERT INTO CharSkill_3 (UID, Skill) VALUES (@UID, @Skill)
ELSE IF @Div = 3
INSERT INTO CharSkill_4 (UID, Skill) VALUES (@UID, @Skill)
COMMIT TRAN
GO
----------------------------------------------------------------------------------------------------------------------
-- InsertParty.sql
----------------------------------------------------------------------------------------------------------------------
/*
파티 추가 프로시져
*/
CREATE PROCEDURE dbo.InsertParty
@Party AS BINARY(202) /* 친구 리스트 */
AS
SET NOCOUNT ON
DECLARE @UID INT
DECLARE @Div INT
/* 고유 아이디 설정 */
SELECT @UID = MIN(UID) FROM PIDStore
IF @UID IS NULL
BEGIN
SELECT @UID = MAX(UID) + 1 FROM PartyInfo
IF @UID IS NULL
BEGIN
SET @UID = 1
END
SELECT @UID
END
ELSE
BEGIN
SELECT @UID
DELETE FROM PIDStore WHERE UID = @UID
END
/* 파티 추가 */
SET @Div = @UID % 4
IF @Div = 0
BEGIN
INSERT INTO PartyInfo_1 (UID, Party) VALUES (@UID, @Party)
END
ELSE IF @Div = 1
BEGIN
INSERT INTO PartyInfo_2 (UID, Party) VALUES (@UID, @Party)
END
ELSE IF @Div = 2
BEGIN
INSERT INTO PartyInfo_3 (UID, Party) VALUES (@UID, @Party)
END
ELSE IF @Div = 3
BEGIN
INSERT INTO PartyInfo_4 (UID, Party) VALUES (@UID, @Party)
END
/* 고유 아이디 돌려줌 */
SELECT @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- InsertUser.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 추가 프로시져
*/
CREATE PROCEDURE dbo.InsertUser
@UID INT /* 사용자 아이디 */
AS
SET NOCOUNT ON
DECLARE @Div INT
BEGIN TRAN
/* 유저 추가 */
SET @Div = @UID % 4
IF @Div = 0
INSERT INTO UserInfo_1 (UID) VALUES (@UID)
ELSE IF @Div = 1
INSERT INTO UserInfo_2 (UID) VALUES (@UID)
ELSE IF @Div = 2
INSERT INTO UserInfo_3 (UID) VALUES (@UID)
ELSE IF @Div = 3
INSERT INTO UserInfo_4 (UID) VALUES (@UID)
INSERT ItemStore1 (UID) VALUES (@UID)
INSERT ItemStore2 (UID) VALUES (@UID)
COMMIT TRAN
GO
-- 복원프로시져
CREATE PROC RestoreCharInfo @user_uid INT,@CID INT,@user_name VARCHAR(20)
AS
SET NOCOUNT ON
DECLARE @UID INT, @Div INT
DECLARE @C_HP INT, @C_MP INT
/* 캐릭터 이름 확인 */
SELECT @UID = UID FROM CharInfo WHERE Name = @user_name
IF @UID <> 0
BEGIN
SELECT -1 /* 동일 이름 존재 */
RETURN
END
IF EXISTS(SELECT * FROM CharInfo WHERE UID = @CID)
BEGIN
SELECT -2
RETURN
END
/* 슬롯 확인 */
DECLARE @user_pos INT
DECLARE @CharSlot1 INT
SET @CharSlot1 = 0
DECLARE @CharSlot2 INT
SET @CharSlot2 = 0
DECLARE @CharSlot3 INT
SET @CharSlot3 = 0
SELECT @CharSlot1 = Char1,@CharSlot2=Char2,@CharSlot3=Char3
FROM UserInfo WHERE UID = @user_uid
IF @CharSlot1 = 0
SET @user_pos = 0
ELSE IF @CharSlot2 = 0
SET @user_pos = 1
ELSE IF @CharSlot3 = 0
SET @user_pos = 2
ELSE
BEGIN
SELECT -2 /* 슬롯이 차있음 */
RETURN
END
/* 캐릭터 추가 */
SET @Div = @CID % 4
IF @Div = 0
BEGIN
INSERT INTO CharInfo_1
SELECT * FROM CharDelHistory.dbo.DelCharInfo_1 WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharInfo_1 WHERE UID = @CID
INSERT INTO CharSkill_1 (UID, Skill)
SELECT * FROM CharDelHistory.dbo.DelCharSkill_1 WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharSkill_1 WHERE UID = @CID
INSERT INTO CharPos_1 (UID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ)
VALUES (@CID, 0, 0, 0, 0, 0, 0)
END
ELSE IF @Div = 1
BEGIN
INSERT INTO CharInfo_2
SELECT * FROM CharDelHistory.dbo.DelCharInfo_2 WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharInfo_2 WHERE UID = @CID
INSERT INTO CharSkill_2 (UID, Skill)
SELECT * FROM CharDelHistory.dbo.DelCharSkill_2 WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharSkill_2 WHERE UID = @CID
INSERT INTO CharPos_2 (UID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ)
VALUES (@CID, 0, 0, 0, 0, 0, 0)
END
ELSE IF @Div = 2
BEGIN
INSERT INTO CharInfo_3
SELECT * FROM CharDelHistory.dbo.DelCharInfo_3 WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharInfo_3 WHERE UID = @CID
INSERT INTO CharSkill_3 (UID, Skill)
SELECT * FROM CharDelHistory.dbo.DelCharSkill_3 WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharSkill_3 WHERE UID = @CID
INSERT INTO CharPos_3 (UID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ)
VALUES (@CID, 0, 0, 0, 0, 0, 0)
END
ELSE IF @Div = 3
BEGIN
INSERT INTO CharInfo_4
SELECT * FROM CharDelHistory.dbo.DelCharInfo_4 WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharInfo_4 WHERE UID = @CID
INSERT INTO CharSkill_4 (UID, Skill)
SELECT * FROM CharDelHistory.dbo.DelCharSkill_4 WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharSkill_4 WHERE UID = @CID
INSERT INTO CharPos_4 (UID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ)
VALUES (@CID, 0, 0, 0, 0, 0, 0)
END
INSERT INTO CharInfoEx (UID) VALUES (@CID)
INSERT INTO CharItem
SELECT * FROM CharDelHistory.dbo.DelCharItem WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharItem WHERE UID = @CID
INSERT INTO CharItemEx
SELECT * FROM CharDelHistory.dbo.DelCharItemEx WHERE UID = @CID
DELETE CharDelHistory.dbo.DelCharItemEx WHERE UID = @CID
INSERT INTO Friend (UID) VALUES (@CID)
INSERT INTO Quest (UID) VALUES (@CID)
-- 캐릭터 생성시간입력
DELETE CharDelHistory.dbo.DelCharInfo_Time WHERE CID = @CID
INSERT INTO CharInfo_Time(CID,CreateTime,UpdateTime)
VALUES (@CID,GETDATE(),GETDATE())
/* 유저 정보 테이블 업데이트 */
EXEC UpdateCharUID @user_uid, @user_pos, @CID
SELECT 0 AS SUCCESS
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharEquip.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 정보 변경 프로시져
*/
CREATE PROCEDURE dbo.UpdateCharEquip
@char_uid AS INT, /* 캐릭터 고유 아이디 */
@C_Equip AS BINARY(30) /* 장비 (2 * 15 = 30) */
AS
SET NOCOUNT ON
DECLARE @Div INT
BEGIN TRAN
SET @Div = @char_uid % 4
IF @Div = 0
UPDATE CharInfo_1 SET Equip = @C_Equip WHERE UID = @char_uid
ELSE IF @Div = 1
UPDATE CharInfo_2 SET Equip = @C_Equip WHERE UID = @char_uid
ELSE IF @Div = 2
UPDATE CharInfo_3 SET Equip = @C_Equip WHERE UID = @char_uid
ELSE
UPDATE CharInfo_4 SET Equip = @C_Equip WHERE UID = @char_uid
COMMIT TRAN
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 정보 변경 프로시져
*/
CREATE PROCEDURE dbo.UpdateCharInfo
@char_uid AS INT, /* 캐릭터 고유 아이디 */
@char_Class AS SMALLINT, /* 캐릭터 클래스 */
@char_Fame AS INT, /* 캐릭터 명성 */
@char_Mileage AS INT, /* 캐릭터 마일리지 */
@char_Level AS TINYINT, /* 캐릭터 레벨 */
@char_Gold AS INT, /**/
@char_IP AS SMALLINT, /* 캐릭터 증가 포인트 */
@char_STR AS SMALLINT, /* 캐릭터 STR */
@char_DEX AS SMALLINT, /* 캐릭터 DEX */
@char_CON AS SMALLINT, /* 캐릭터 CON */
@char_INT AS SMALLINT, /* 캐릭터 INT */
@char_WIS AS SMALLINT, /* 캐릭터 WIS */
@char_HP AS SMALLINT, /* 캐릭터 HP */
@char_MP AS SMALLINT, /* 캐릭터 MP */
@char_Exp AS BIGINT, /* 캐릭터 경험점 */
@char_Chance AS TINYINT, /* 캐릭터 챈스 */
@char_Equip AS BINARY(30) /* 장비 (2 * 15 = 30) */
AS
SET NOCOUNT ON
DECLARE @Div INT
BEGIN TRAN
SET @Div = @char_uid % 4
IF @Div = 0
UPDATE CharInfo_1 SET Class = @char_Class, Fame = @char_Fame, Mileage = @char_Mileage, Level = @char_Level, Equip = @char_Equip, Gold = @char_Gold, IP = @char_IP, STR = @char_STR, DEX = @char_DEX, CON = @char_CON, Intell = @char_INT, WIS = @char_WIS, HP = @char_HP, MP = @char_MP, Exp = @char_Exp, Chance = @char_Chance WHERE UID = @char_uid
ELSE IF @Div = 1
UPDATE CharInfo_2 SET Class = @char_Class, Fame = @char_Fame, Mileage = @char_Mileage, Level = @char_Level, Equip = @char_Equip, Gold = @char_Gold, IP = @char_IP, STR = @char_STR, DEX = @char_DEX, CON = @char_CON, Intell = @char_INT, WIS = @char_WIS, HP = @char_HP, MP = @char_MP, Exp = @char_Exp, Chance = @char_Chance WHERE UID = @char_uid
ELSE IF @Div = 2
UPDATE CharInfo_3 SET Class = @char_Class, Fame = @char_Fame, Mileage = @char_Mileage, Level = @char_Level, Equip = @char_Equip, Gold = @char_Gold, IP = @char_IP, STR = @char_STR, DEX = @char_DEX, CON = @char_CON, Intell = @char_INT, WIS = @char_WIS, HP = @char_HP, MP = @char_MP, Exp = @char_Exp, Chance = @char_Chance WHERE UID = @char_uid
ELSE
UPDATE CharInfo_4 SET Class = @char_Class, Fame = @char_Fame, Mileage = @char_Mileage, Level = @char_Level, Equip = @char_Equip, Gold = @char_Gold, IP = @char_IP, STR = @char_STR, DEX = @char_DEX, CON = @char_CON, Intell = @char_INT, WIS = @char_WIS, HP = @char_HP, MP = @char_MP, Exp = @char_Exp, Chance = @char_Chance WHERE UID = @char_uid
COMMIT TRAN
IF EXISTS (SELECT CID FROM CharInfo_Time WHERE CID = @char_uid)
BEGIN
UPDATE CharInfo_Time
SET UpdateTime = GETDATE()
WHERE CID = @char_uid
END
ELSE
BEGIN
INSERT INTO CharInfo_Time(CID,CreateTime,UpdateTime)
VALUES (@char_uid,'2003.06.25',GETDATE())
END
GO
/*
유저 정보 변경 프로시져
*/
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharInfoEx.sql
----------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE dbo.UpdateCharInfoEx
@CharID AS INT, /* 캐릭터 아이디 */
@Total AS INT, /* 전체 시간 */
@ServerID AS INT /**/
AS
SET NOCOUNT ON
DECLARE @Div INT
BEGIN TRAN
UPDATE CharInfoEx SET Total = @Total, ServerID = @ServerID WHERE UID = @CharID
COMMIT TRAN
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharItemQuick.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 정보 변경 프로시져
*/
CREATE PROCEDURE dbo.UpdateCharItemQuick
@char_uid AS INT, /* 캐릭터 고유 아이디 */
@C_Quick AS BINARY(40) /* 장비 (2 * 15 = 30) */
AS
SET NOCOUNT ON
DECLARE @Div INT
BEGIN TRAN
UPDATE CharItem SET Quick = @C_Quick WHERE UID = @char_uid
COMMIT TRAN
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharParty.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 파티 관계 업데이트
*/
CREATE PROCEDURE dbo.UpdateCharParty
@UID AS INT, /* 캐릭터 고유 아이디 */
@Party AS INT /* 파티 */
AS
SET NOCOUNT ON
DECLARE @Div INT
SET @Div = @UID % 4
IF @Div = 0
UPDATE CharInfo_1 SET Party = @Party WHERE UID = @UID
ELSE IF @Div = 1
UPDATE CharInfo_2 SET Party = @Party WHERE UID = @UID
ELSE IF @Div = 2
UPDATE CharInfo_3 SET Party = @Party WHERE UID = @UID
ELSE IF @Div = 3
UPDATE CharInfo_4 SET Party = @Party WHERE UID = @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharPos.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 위치 정보 업데이트 프로시져
*/
CREATE PROCEDURE dbo.UpdateCharPos
@UID AS INT, /* 캐릭터 고유 아이디 */
@LastPointX AS REAL, /* 캐릭터 Last Point X 좌표 */
@LastPointY AS REAL, /* 캐릭터 Last Point Y 좌표 */
@LastPointZ AS REAL, /* 캐릭터 Last Point Z 좌표 */
@SavePointX AS REAL, /* 캐릭터 Last Point X 좌표 */
@SavePointY AS REAL, /* 캐릭터 Last Point Y 좌표 */
@SavePointZ AS REAL /* 캐릭터 Last Point Z 좌표 */
AS
SET NOCOUNT ON
DECLARE @Div INT
SET @Div = @UID % 4
IF @Div = 0
UPDATE CharPos_1 SET LastPointX = @LastPointX, LastPointY = @LastPointY, LastPointZ = @LastPointZ, SavePointX = @SavePointX, SavePointY = @SavePointY, SavePointZ = @SavePointZ WHERE UID = @UID
ELSE IF @Div = 1
UPDATE CharPos_2 SET LastPointX = @LastPointX, LastPointY = @LastPointY, LastPointZ = @LastPointZ, SavePointX = @SavePointX, SavePointY = @SavePointY, SavePointZ = @SavePointZ WHERE UID = @UID
ELSE IF @Div = 2
UPDATE CharPos_3 SET LastPointX = @LastPointX, LastPointY = @LastPointY, LastPointZ = @LastPointZ, SavePointX = @SavePointX, SavePointY = @SavePointY, SavePointZ = @SavePointZ WHERE UID = @UID
ELSE IF @Div = 3
UPDATE CharPos_4 SET LastPointX = @LastPointX, LastPointY = @LastPointY, LastPointZ = @LastPointZ, SavePointX = @SavePointX, SavePointY = @SavePointY, SavePointZ = @SavePointZ WHERE UID = @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharSkill.sql
----------------------------------------------------------------------------------------------------------------------
/*
스킬 업데이트
*/
CREATE PROCEDURE dbo.UpdateCharSkill
@UID AS INT, /* 사용자 아이디 */
@Skill AS BINARY(84) /* 스킬 슬롯 */
AS
SET NOCOUNT ON
DECLARE @Div INT
SET @Div = @UID % 4
IF @Div = 0
UPDATE CharSkill_1 SET Skill = @Skill WHERE UID = @UID
ELSE IF @Div = 1
UPDATE CharSkill_2 SET Skill = @Skill WHERE UID = @UID
ELSE IF @Div = 2
UPDATE CharSkill_3 SET Skill = @Skill WHERE UID = @UID
ELSE IF @Div = 3
UPDATE CharSkill_4 SET Skill = @Skill WHERE UID = @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharUID.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 정보 테이블 캐릭터 아이디 업데이트 프로시져
*/
CREATE PROCEDURE dbo.UpdateCharUID
@user_uid AS INT, /* 유저 고유 아이디 */
@user_pos AS INT, /* 캐릭터 위치 (3개의 슬롯) */
@char_uid AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
DECLARE @Div INT
BEGIN TRAN
/* 유저 정보 테이블 업데이트 */
SET @Div = @user_uid % 4
IF @user_pos = 0
BEGIN
IF @Div = 0
BEGIN
UPDATE UserInfo_1 SET Char1 = @char_uid WHERE UID = @user_uid
END
ELSE IF @Div = 1
BEGIN
UPDATE UserInfo_2 SET Char1 = @char_uid WHERE UID = @user_uid
END
ELSE IF @Div = 2
BEGIN
UPDATE UserInfo_3 SET Char1 = @char_uid WHERE UID = @user_uid
END
ELSE IF @Div = 3
BEGIN
UPDATE UserInfo_4 SET Char1 = @char_uid WHERE UID = @user_uid
END
END
ELSE IF @user_pos = 1
BEGIN
IF @Div = 0
BEGIN
UPDATE UserInfo_1 SET Char2 = @char_uid WHERE UID = @user_uid
END
ELSE IF @Div = 1
BEGIN
UPDATE UserInfo_2 SET Char2 = @char_uid WHERE UID = @user_uid
END
ELSE IF @Div = 2
BEGIN
UPDATE UserInfo_3 SET Char2 = @char_uid WHERE UID = @user_uid
END
ELSE IF @Div = 3
BEGIN
UPDATE UserInfo_4 SET Char2 = @char_uid WHERE UID = @user_uid
END
END
ELSE IF @user_pos = 2
BEGIN
IF @Div = 0
BEGIN
UPDATE UserInfo_1 SET Char3 = @char_uid WHERE UID = @user_uid
END
ELSE IF @Div = 1
BEGIN
UPDATE UserInfo_2 SET Char3 = @char_uid WHERE UID = @user_uid
END
ELSE IF @Div = 2
BEGIN
UPDATE UserInfo_3 SET Char3 = @char_uid WHERE UID = @user_uid
END
ELSE IF @Div = 3
BEGIN
UPDATE UserInfo_4 SET Char3 = @char_uid WHERE UID = @user_uid
END
END
COMMIT TRAN
GO
CREATE PROCEDURE dbo.UpdateItemStore
@user_uid AS INT, /* 유저 고유 아이디 */
@Password AS CHAR(5), /* 패스 워드 */
@Frag AS INT, /* 플래그 */
@Gold AS INT /**/
AS
SET NOCOUNT ON
BEGIN TRAN
UPDATE ItemStore1 SET Password = @Password, Frag = @Frag, Gold = @Gold WHERE UID = @user_uid
COMMIT TRAN
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdatePartyInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
파티 맴버 추가 프로시져
*/
CREATE PROCEDURE dbo.UpdatePartyInfo
@Party_uid AS INT, /* 파티 고유 아이디 */
@Party AS BINARY(202) /* 친구 리스트 */
AS
SET NOCOUNT ON
DECLARE @Div INT
/* 파티 정보 테이블 업데이트 */
SET @Div = @Party_uid % 4
IF @Div = 0
BEGIN
UPDATE PartyInfo_1 SET Party = @Party WHERE UID = @Party_uid
END
ELSE IF @Div = 1
BEGIN
UPDATE PartyInfo_2 SET Party = @Party WHERE UID = @Party_uid
END
ELSE IF @Div = 2
BEGIN
UPDATE PartyInfo_3 SET Party = @Party WHERE UID = @Party_uid
END
ELSE IF @Div = 3
BEGIN
UPDATE PartyInfo_4 SET Party = @Party WHERE UID = @Party_uid
END
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateUserInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 정보 변경 프로시져
*/
CREATE PROCEDURE dbo.UpdateUserInfo
@user_uid AS INT, /* 유저 고유 아이디 */
@user_char1 AS INT, /* 캐릭터 고유 아이디 (첫번째) */
@user_char2 AS INT, /* 캐릭터 고유 아이디 (두번째) */
@user_char3 AS INT /* 캐릭터 고유 아이디 (세번째) */
AS
SET NOCOUNT ON
DECLARE @Div INT
BEGIN TRAN
SET @Div = @user_uid % 4
IF @Div = 0
UPDATE UserInfo_1 SET Char1 = @user_char1, Char2 = @user_char2, Char3 = @user_char3 WHERE UID = @user_uid
ELSE IF @Div = 1
UPDATE UserInfo_2 SET Char1 = @user_char1, Char2 = @user_char2, Char3 = @user_char3 WHERE UID = @user_uid
ELSE IF @Div = 2
UPDATE UserInfo_3 SET Char1 = @user_char1, Char2 = @user_char2, Char3 = @user_char3 WHERE UID = @user_uid
ELSE
UPDATE UserInfo_4 SET Char1 = @user_char1, Char2 = @user_char2, Char3 = @user_char3 WHERE UID = @user_uid
COMMIT TRAN
GO
CREATE PROC USP_GUILDORDERBY
AS
SET NOCOUNT ON
CREATE TABLE #ROWTABLE
(
ROWID INT IDENTITY(1,1)
, nGuildID INT
)
DECLARE @ROWID INT
DECLARE @GUILDID INT
INSERT INTO #ROWTABLE (nGuildID)
SELECT DISTINCT nGuildID FROM tblguildmember_temp
SET @ROWID = @@ROWCOUNT
WHILE @ROWID > 0
BEGIN
SELECT @GUILDID = nGuildID FROM #ROWTABLE WHERE ROWID=@ROWID
CREATE TABLE [#tblguildmember_temp] (
[nGuildID] [int] NOT NULL ,
[nCID] [int] NOT NULL ,
[nPosition] [int] NOT NULL ,
[nPositionInGuild] [int] IDENTITY(0,1) ,
[tLeaveGuildTime] [smalldatetime] NULL
)
INSERT INTO #tblguildmember_temp (nGuildID,nCID,nPosition,tLeaveGuildTime)
SELECT nGuildID,nCID,nPosition,tLeaveGuildTime FROM tblguildmember_temp where nGuildID = @GUILDID
ORDER BY nPosition
INSERT INTO tblguildmember_temp2
SELECT * FROM #tblguildmember_temp
DROP TABLE #tblguildmember_temp
SET @ROWID = @ROWID - 1
END
GO
-- 길드 직위변경
CREATE PROC USPGuildChangePos @GuildID INT,@CID INT,@BeforePos INT,@AfterPos INT
AS
SET NOCOUNT ON
DECLARE @RETURN INT
SET @RETURN = 0
IF (@BeforePos < @AfterPos) -- 강등... (1길드마스터 --> 7 일반회원)
BEGIN
BEGIN TRAN
UPDATE TblGuildMember
SET nPositionInGuild = @AfterPos
WHERE nGuildID = @GuildID AND nCID = @CID AND nPositionInGuild = @BeforePos
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
UPDATE TblGuildMember
SET nPositionInGuild = nPositionInGuild - 1
WHERE nGuildID = @GuildID AND nCID <> @CID AND nPositionInGuild BETWEEN @BeforePos AND @AfterPos
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
COMMIT TRAN
END
ELSE IF (@BeforePos > @AfterPos) -- 상승... (8 --> 1 길드마스터)
BEGIN
BEGIN TRAN
UPDATE TblGuildMember
SET nPositionInGuild = @AfterPos
WHERE nGuildID = @GuildID AND nCID = @CID AND nPositionInGuild = @BeforePos
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
UPDATE TblGuildMember
SET nPositionInGuild = nPositionInGuild + 1
WHERE nGuildID = @GuildID AND nCID <> @CID AND nPositionInGuild BETWEEN @AfterPos AND @BeforePos
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
COMMIT TRAN
END
SELECT @RETURN
RETURN
GO
-- 길드 생성 하기
CREATE PROC USPGuildCreate @GuildName VARCHAR(20),@tnNationType TINYINT,@GuildLevel Tinyint,@GuildFame INT,@bRight BINARY(50)
AS
SET NOCOUNT ON
-- 기본길드정보에 값을 입력하기.
DECLARE @RETURN INT
DECLARE @GuildID INT
SET @RETURN = 0
SET @GuildID = 0
IF EXISTS (SELECT strGuildName FROM dbo.TblGuildInfo WHERE strGuildName = @GuildName)
BEGIN
SET @RETURN = 2
SELECT @RETURN,@GuildID-- 중복된 길드명입니다.
RETURN
END
ELSE
BEGIN
BEGIN TRAN
INSERT INTO TblGuildInfo (strGuildName,tnGuildLevel,nGuildFame,bRIGHT,tnNationType)
VALUES (@GuildName,@GuildLevel,@GuildFame,@bRight,@tnNationType)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN,@GuildID
RETURN
END
-- 이미 입력된 길드의 아이디를 얻어온다.
SELECT @GuildID = nGuildID FROM TblGuildInfo WHERE strGuildName = @GuildName
INSERT INTO TblGuildItem VALUES (@GuildID,NULL)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 3
SET @GuildID = 0
SELECT @RETURN,@GuildID
RETURN
END
INSERT INTO TblGuildItem_EX VALUES (@GuildID,NULL)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 4
SET @GuildID = 0
SELECT @RETURN,@GuildID
RETURN
END
COMMIT TRAN
SELECT @RETURN,@GuildID -- SUCCESS
END
GO
CREATE PROC USPGuildDelete @GuildID INT
AS
SET NOCOUNT ON
INSERT INTO TblGuildRestoreData (nGuildID,strGuildName,nGuildGold,bGuildItem,tDeleteTime)
SELECT a.nGuildID,a.strGuildName,a.nGuildGold,b.bGuildItem,Getdate()
FROM TblGuildInfo a JOIN TblGuildItem b ON a.nGuildID = b.nGuildID
WHERE a.nGuildID = @GuildID
INSERT INTO TblGuildRestoreData_EX (nGuildID,bGuildItem_EX)
SELECT nGuildID,bGuildItem FROM TblGuildItem_EX
WHERE nGuildID = @GuildID
DECLARE @ROWID INT
DECLARE @CID INT
DECLARE @TEMPTABLE TABLE
(
ROWID INT IDENTITY(1,1)
, CID INT
)
INSERT INTO @TEMPTABLE (CID)
SELECT nCID FROM TblGuildMember WHERE nGuildID = @GuildID
SET @ROWID = @@ROWCOUNT
WHILE @ROWID > 0
BEGIN
SELECT @CID=CID FROM @TEMPTABLE WHERE ROWID = @ROWID
IF ((@CID % 4) = 0)
BEGIN
UPDATE CHARINFO_1
SET Guild = 0
WHERE UID = @CID
END
ELSE IF ((@CID % 4) = 1)
BEGIN
UPDATE CHARINFO_2
SET Guild = 0
WHERE UID = @CID
END
ELSE IF ((@CID % 4) = 2)
BEGIN
UPDATE CHARINFO_3
SET Guild = 0
WHERE UID = @CID
END
ELSE IF ((@CID % 4) = 3)
BEGIN
UPDATE CHARINFO_4
SET Guild = 0
WHERE UID = @CID
END
SET @ROWID = @ROWID - 1
END
DELETE TblGuildInfo
WHERE nGuildID = @GuildID
IF @@ERROR <> 0
SELECT 1 -- ERROR
ELSE
SELECT 0 -- SUCCESS
GO
CREATE PROC USPGuildGiveMemberGold @GuildID INT,@Gold INT
AS
SET NOCOUNT ON
DECLARE @Position INT
UPDATE CharInfo_1
SET Gold = Gold + @Gold
FROM TblGuildMember a,Charinfo_1 b
WHERE a.nCID = b.UID AND a.nGuildID = @GuildID AND a.nPosition < 4
UPDATE CharInfo_2
SET Gold = Gold + @Gold
FROM TblGuildMember a,Charinfo_2 b
WHERE a.nCID = b.UID AND a.nGuildID = @GuildID AND a.nPosition < 4
UPDATE CharInfo_3
SET Gold = Gold + @Gold
FROM TblGuildMember a,Charinfo_3 b
WHERE a.nCID = b.UID AND a.nGuildID = @GuildID AND a.nPosition < 4
UPDATE CharInfo_4
SET Gold = Gold + @Gold
FROM TblGuildMember a,Charinfo_4 b
WHERE a.nCID = b.UID AND a.nGuildID = @GuildID AND a.nPosition < 4
GO
-- GUILD ITEM 입력
CREATE PROC USPGuildItemEXInsert @GuildID INT,@Item BINARY(7300)
AS
SET NOCOUNT ON
DECLARE @RETURN INT
SET @RETURN = 0
IF EXISTS (SELECT nGuildID FROM TblGuildItem_EX WHERE nGuildID = @GuildID)
BEGIN
UPDATE TblGuildItem_EX
SET bGuildItem = @Item
WHERE nGuildID = @GuildID
IF @@ROWCOUNT <> 1
BEGIN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
ELSE
BEGIN
INSERT TblGuildItem_EX VALUES (@GuildID,@Item)
IF @@ROWCOUNT <> 1
BEGIN
SET @RETURN = 2
SELECT @RETURN
RETURN
END
END
SELECT @RETURN
GO
-- GUILD ITEM 입력
CREATE PROC USPGuildItemInsert @GuildID INT,@Item BINARY(7300)
AS
SET NOCOUNT ON
DECLARE @RETURN INT
SET @RETURN = 0
IF EXISTS (SELECT nGuildID FROM TblGuildItem WHERE nGuildID = @GuildID)
BEGIN
UPDATE TblGuildItem
SET bGuildItem = @Item
WHERE nGuildID = @GuildID
IF @@ROWCOUNT <> 1
BEGIN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
ELSE
BEGIN
INSERT TblGuildItem VALUES (@GuildID,@Item)
IF @@ROWCOUNT <> 1
BEGIN
SET @RETURN = 2
SELECT @RETURN
RETURN
END
END
SELECT @RETURN
GO
-- GUILD MEMBER 입력
CREATE PROC USPGuildMemberInsert @GuildID INT,@CID INT,@Position INT,@PositionInGuild INT
AS
SET NOCOUNT ON
DECLARE @RETURN INT
SET @RETURN = 0
BEGIN TRAN
INSERT INTO TblGuildMember (nGuildID,nCID,nPosition,nPositionInGuild)
VALUES (@GuildID,@CID,@Position,@PositionInGuild)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
IF ((@CID % 4) = 0)
BEGIN
UPDATE CHARINFO_1
SET Guild = @GuildID
WHERE UID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
ELSE IF ((@CID % 4) = 1)
BEGIN
UPDATE CHARINFO_2
SET Guild = @GuildID
WHERE UID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
ELSE IF ((@CID % 4) = 2)
BEGIN
UPDATE CHARINFO_3
SET Guild = @GuildID
WHERE UID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
ELSE IF ((@CID % 4) = 3)
BEGIN
UPDATE CHARINFO_4
SET Guild = @GuildID
WHERE UID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
COMMIT TRAN
SELECT @RETURN
RETURN
GO
--길드탈퇴....
CREATE PROC USPGuildMemberOut @GuildID INT,@CID INT,@Pos INT
AS
SET NOCOUNT ON
DECLARE @RETURN INT
SET @RETURN = 0
-- member 삭제...
BEGIN TRAN
DELETE TblGuildMember
WHERE nGuildID = @GuildID AND nCID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
-- 서열순위
UPDATE TblGuildMember
SET nPositionInGuild = nPositionInGuild - 1
WHERE nGuildID = @GuildID AND nPositionInGuild > @Pos
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
IF ((@CID % 4) = 0)
BEGIN
UPDATE CHARINFO_1
SET Guild = 0
WHERE UID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
ELSE IF ((@CID % 4) = 1)
BEGIN
UPDATE CHARINFO_2
SET Guild = 0
WHERE UID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
ELSE IF ((@CID % 4) = 2)
BEGIN
UPDATE CHARINFO_3
SET Guild = 0
WHERE UID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
ELSE IF ((@CID % 4) = 3)
BEGIN
UPDATE CHARINFO_4
SET Guild = 0
WHERE UID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
END
COMMIT TRAN
SELECT @RETURN
RETURN