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>
2276 lines
49 KiB
Transact-SQL
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
|