Files
Client/Server/Database/DBScript/GameDB/통합용스크립트_real/CreateRYLDB_20041201.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

2444 lines
56 KiB
Transact-SQL

/************************************************
*
* PART 2
*
* 추가작업
- 2005-01-06 pm 4:00 : UserFirstLoginInfo 테이블에 TransferCharCount
- 2005-01-11 pm 4:50 : TblUnifiedItemStore1_TransferLOG
TblUnifiedItemStore2_TransferLOG 로그테이블 추가
TransferStore 프로시져 변경
- 2005-01-12 pm 3:30 : USPCampCreate 프로시져 변경 - @snObjectType 인자 추가
- 2005-01-17 : USPCampCreate 프로시져 변경 - @snObjectType 인자 순서수정
*************************************************/
GO
CREATE TABLE [TblUnifiedItemStore1_TransferLOG] (
InsertTime SMALLDATETIME NULL,
[UID] [int] NULL ,
[OldServerGroupID] [tinyint] NULL ,
[Password] [char] (5),
[Frag] [int] NULL ,
[Gold] [int] NULL ,
[Store] [varbinary] (7300) NULL
)
GO
CREATE TABLE [TblUnifiedItemStore2_TransferLOG] (
InsertTime SMALLDATETIME NULL,
[UID] [int] NOT NULL ,
[OldServerGroupID] [tinyint] NOT NULL ,
[Store] [varbinary] (7300) NULL
)
GO
CREATE TABLE dbo.UserFirstLoginInfo
(
UID INT NOT NULL PRIMARY KEY
, FirstLogin TINYINT
, TransferCharCount TINYINT DEFAULT(0)
)
GO
CREATE TABLE [TblUnifiedItemStore1] (
[UID] [int] NOT NULL ,
[OldServerGroupID] [tinyint] NOT NULL ,
[Password] [char] (5) NULL default('0000'),
[Frag] [int] NULL ,
[Gold] [int] NULL ,
[Store] [varbinary] (7300) NULL,
CONSTRAINT PK_TblUnifiedItemStore1_UID_SERID PRIMARY KEY (UID,OldServerGroupID)
) ON [PRIMARY]
GO
CREATE TABLE [TblUnifiedItemStore2] (
[UID] [int] NOT NULL ,
[OldServerGroupID] [tinyint] NOT NULL ,
[Store] [varbinary] (7300) NULL ,
CONSTRAINT PK_TblUnifiedItemStore2_UID_SERID PRIMARY KEY (UID,OldServerGroupID)
) ON [PRIMARY]
GO
CREATE TABLE [TblUnifiedCharList] (
[UID] [int] NOT NULL ,
[OldServerGroupID] [tinyint] NOT NULL ,
[BeforeCID] [int] NOT NULL ,
[NewCID] [int] NOT NULL PRIMARY KEY,
[BeforeCharName] [varchar] (20) NOT NULL
) ON [PRIMARY]
GO
CREATE INDEX Idx_TblUnifiedCharList_U_Old ON [TblUnifiedCharList] (UID,OldServerGroupID)
GO
CREATE TABLE [dbo].[AdminList] (
[UID] [int] NOT NULL ,
[Level] [smallint] NULL ,
[IP_S] [varchar] (16) NULL ,
[IP_E] [varchar] (16) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CharInfo] (
[CID] [int] NOT NULL ,
[Name] [varchar] (16) NULL UNIQUE,
[Sex] [tinyint] NULL ,
[Hair] [tinyint] NULL ,
[Face] [tinyint] NULL ,
[Race] [tinyint] NULL ,
[Class] [smallint] NULL ,
[Fame] [int] NULL ,
[Mileage] [int] NULL ,
[Guild] [int] NULL ,
[Party] [int] NULL ,
[Level] [tinyint] NULL ,
[Equip] [varbinary] (30) NULL ,
[Gold] [int] NULL ,
[IP] [smallint] NULL ,
[STR] [smallint] NULL ,
[DEX] [smallint] NULL ,
[CON] [smallint] NULL ,
[Intell] [smallint] NULL ,
[WIS] [smallint] NULL ,
[HP] [smallint] NULL ,
[MP] [smallint] NULL ,
[Exp] [bigint] NULL ,
[Chance] [tinyint] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CharInfoEx] (
[CID] [int] NOT NULL ,
[Total] [int] NULL ,
[ServerID] [int] NULL ,
[Config] [varbinary] (50) NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.[CharInfoEx]
ADD NameChangeCount TINYINT
GO
CREATE TABLE [dbo].[CharInfo_Time] (
[CID] [int] NOT NULL ,
[CreateTime] [smalldatetime] NULL ,
[UpdateTime] [smalldatetime] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CharItem] (
[CID] [int] NOT NULL ,
[Quick] [varbinary] (100) NULL ,
[Equip] [varbinary] (1440) NULL ,
[Inventory] [varbinary] (5120) NULL ,
[Extra] [varbinary] (512) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CharItemEx] (
[CID] [int] NOT NULL ,
[Exchange] [varbinary] (1284) NULL ,
[TempInven] [varbinary] (1440) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CharPos] (
[CID] [int] NOT NULL ,
[LastPointX] [real] NULL ,
[LastPointY] [real] NULL ,
[LastPointZ] [real] NULL ,
[SavePointX] [real] NULL ,
[SavePointY] [real] NULL ,
[SavePointZ] [real] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CharSkill] (
[CID] [int] NOT NULL ,
[Skill] [varbinary] (84) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Friend] (
[CID] [int] NOT NULL ,
[Friend] [varbinary] (2404) NULL ,
[Ban] [varbinary] (2004) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[ItemUID] (
[Server] [int] NOT NULL ,
[Item] [bigint] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[PartyInfo] (
[PID] [int] IDENTITY (1, 1) NOT NULL ,
[Party] [varbinary] (200) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Quest] (
[CID] [int] NOT NULL ,
[Quest] [varbinary] (134) NULL ,
[History] [varbinary] (204) NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TblCampInfo] (
[nCampID] [int] IDENTITY (1, 1) NOT NULL ,
[nGuildID] [int] NULL ,
[nHP] [int] NULL ,
[tnZone] [tinyint] NULL ,
[tnChannel] [tinyint] NULL ,
[snObjectType] [smallint] NULL ,
[tnState] [tinyint] NULL ,
[tnSubState] [tinyint] NULL ,
[tnUpgradeStep] [tinyint] NULL ,
[RemainTime] [smalldatetime] NULL ,
[LastUseTime] [smalldatetime] NULL ,
[bRight] [varbinary] (10) NULL ,
[fPosX] [real] NULL ,
[fPosY] [real] NULL ,
[fPosZ] [real] NULL
) ON [PRIMARY]
GO
CREATE TABLE dbo.TblCampMineralInfo
(
nCampID INT
, snMineralID SMALLINT
, snAmount SMALLINT
, tnFlag TINYINT
)
GO
CREATE INDEX IDX_TblCampMineralInfo_nCampID ON dbo.TblCampMineralInfo(nCampID)
GO
CREATE TABLE dbo.TblFertilityInfo
(
nVeinColor int
, nFertility int
, tnZone TINYINT
, tnChannel TINYINT
)
GO
CREATE TABLE [dbo].[TblCastleCreatureInfo] (
[nCreatureID] [int] IDENTITY (1, 1) NOT NULL ,
[nCastleID] [int] NULL ,
[nHP] [int] NULL ,
[snObjectType] [smallint] NULL ,
[fDirection] [real] NULL ,
[tnState] [tinyint] NULL ,
[tnSubState] [tinyint] NULL ,
[tnUpgradeStep] [tinyint] NULL ,
[tnUpgradeType] [tinyint] NULL ,
[RemainTime] [smalldatetime] NULL ,
[fPosX] [real] NULL ,
[fPosY] [real] NULL ,
[fPosZ] [real] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TblCastleInfo] (
[nCastleID] [int] IDENTITY (1, 1) NOT NULL ,
[nGuildID] [int] NULL ,
[snTax] [smallint] NULL ,
[nTaxMoney] [int] NULL ,
[tnZone] [tinyint] NULL ,
[tnTaxIncomeRemainDay] [tinyint] NULL ,
[tnInvincibleDay] [tinyint] NULL ,
[LastSiegeTime] [smalldatetime] NULL ,
[bRight] [varbinary] (10) NULL ,
[strCastleName] [varchar] (50) NULL ,
[fPosInX] [real] NULL ,
[fPosInY] [real] NULL ,
[fPosInZ] [real] NULL ,
[fPosOutX] [real] NULL ,
[fPosOutY] [real] NULL ,
[fPosOutZ] [real] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TblCharDelHistory] (
[intCID] [int] NOT NULL ,
[intUID] [int] NOT NULL ,
[dateInsertTime] [smalldatetime] NOT NULL ,
[dateDeleteTime] [smalldatetime] NOT NULL ,
[NewServerGroupID] TINYINT,
[OldServerGroupID] TINYINT
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TblEventItem] (
[nItemIndex] [int] NULL ,
[nItemAmount] [int] NULL ,
[nMaxAmount] [int] NULL ,
[StartTime] [smalldatetime] NULL ,
[EndTime] [smalldatetime] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TblGuildInfo] (
[nGuildID] [int] IDENTITY (10001, 1) NOT NULL ,
[strGuildName] [varchar] (20) NOT NULL ,
[tnGuildLevel] [tinyint] NOT NULL ,
[nGuildFame] [int] NOT NULL ,
[nGuildGold] [int] NOT NULL ,
[tLastLogout] [smalldatetime] NOT NULL ,
[tCheckMember] [smalldatetime] NOT NULL ,
[tGMLastLogout] [smalldatetime] NULL ,
[bGuildMark] [varbinary] (433) NULL ,
[bRight] [varbinary] (50) NULL ,
[tnNationType] [tinyint] NULL ,
[tChangeState] [smalldatetime] NULL ,
[OldServerGroupID] TINYINT NULL --ADD
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TblGuildMember] (
[nGuildID] [int] NOT NULL ,
[nCID] [int] NOT NULL ,
[nPosition] [int] NOT NULL ,
[nPositionInGuild] [int] NULL ,
[tLeaveGuildTime] [smalldatetime] NULL ,
[nCampID] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TblGuildOtherList] (
[nGuildID] [int] NOT NULL ,
[nOtherGuildID] [int] NOT NULL ,
[tnRelation] [tinyint] NOT NULL ,
[tnState] [tinyint] NOT NULL ,
[waitTime] [smalldatetime] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TblGuildRestoreData] (
[nGuildID] [int] NULL ,
[strGuildName] [varchar] (20) NULL ,
[nGuildGold] [int] NULL ,
[tDeleteTime] [smalldatetime] NULL ,
[nGuildMCID] int NULL ,
[OldServerGroupID] tinyint
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TblItemLog] (
[InsertTime] [datetime] NULL ,
[UpdateTime] [datetime] NULL ,
[UID] [int] NULL ,
[CID] [int] NULL ,
[ItemSerial] [bigint] NULL ,
[CharName] [varchar] (20) NULL ,
[Qty] [int] NULL ,
[CheckField] [bit] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[UserInfo] (
[UID] [int] NOT NULL ,
[OldServerGroupID] [tinyint] NOT NULL,
[Nation] [tinyint] NOT NULL DEFAULT(0) ,
[Char1] [int] NULL ,
[Char2] [int] NULL ,
[Char3] [int] NULL ,
[Char4] [int] NULL ,
[Char5] [int] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[AdminList] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[UID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CharInfo] WITH NOCHECK ADD
CONSTRAINT [PK__CharInfo_7A8729A3] PRIMARY KEY CLUSTERED
(
[CID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CharInfoEx] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[CID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CharInfo_Time] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[CID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CharItem] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[CID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CharItemEx] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[CID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CharPos] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[CID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CharSkill] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[CID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Friend] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[CID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ItemUID] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[Server]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PartyInfo] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[PID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Quest] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[CID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TblCampInfo] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[nCampID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TblCastleCreatureInfo] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[nCreatureID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TblCharDelHistory] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[intCID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TblGuildInfo] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[nGuildID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TblGuildMember] WITH NOCHECK ADD
CONSTRAINT [PK_GuildMember_Guildid_nCid] PRIMARY KEY CLUSTERED
(
[nGuildID],
[nCID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TblGuildOtherList] WITH NOCHECK ADD
CONSTRAINT [PK_TblGuildOtherList_1] PRIMARY KEY CLUSTERED
(
[nGuildID],
[nOtherGuildID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[UserInfo] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[UID],[OldServerGroupID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[AdminList] ADD
CONSTRAINT [DF__AdminList__Level__150615B5] DEFAULT (0) FOR [Level]
GO
ALTER TABLE [dbo].[CharInfo] ADD
CONSTRAINT [DF__CharInfo_1__Sex__7C6F7215] DEFAULT (0) FOR [Sex],
CONSTRAINT [DF__CharInfo_1__Hair__7D63964E] DEFAULT (0) FOR [Hair],
CONSTRAINT [DF__CharInfo_1__Face__7E57BA87] DEFAULT (0) FOR [Face],
CONSTRAINT [DF__CharInfo___race__7F4BDEC0] DEFAULT (0) FOR [Race],
CONSTRAINT [DF__CharInfo___Class__004002F9] DEFAULT (1) FOR [Class],
CONSTRAINT [DF__CharInfo___Merit__01342732] DEFAULT (0) FOR [Fame],
CONSTRAINT [DF__CharInfo_1__Fame__02284B6B] DEFAULT (0) FOR [Mileage],
CONSTRAINT [DF__CharInfo___Guild__031C6FA4] DEFAULT (0) FOR [Guild],
CONSTRAINT [DF__CharInfo___Party__041093DD] DEFAULT (0) FOR [Party],
CONSTRAINT [DF__CharInfo___Level__0504B816] DEFAULT (1) FOR [Level],
CONSTRAINT [DF__CharInfo_1__IP__05F8DC4F] DEFAULT (0) FOR [IP],
CONSTRAINT [DF__CharInfo_1__STR__06ED0088] DEFAULT (0) FOR [STR],
CONSTRAINT [DF__CharInfo_1__DEX__07E124C1] DEFAULT (0) FOR [DEX],
CONSTRAINT [DF__CharInfo_1__CON__08D548FA] DEFAULT (0) FOR [CON],
CONSTRAINT [DF__CharInfo___Intel__09C96D33] DEFAULT (0) FOR [Intell],
CONSTRAINT [DF__CharInfo_1__WIS__0ABD916C] DEFAULT (0) FOR [WIS],
CONSTRAINT [DF__CharInfo_1__HP__0BB1B5A5] DEFAULT (0) FOR [HP],
CONSTRAINT [DF__CharInfo_1__MP__0CA5D9DE] DEFAULT (0) FOR [MP],
CONSTRAINT [DF__CharInfo_1__Exp__0D99FE17] DEFAULT (0) FOR [Exp],
CONSTRAINT [DF__CharInfo___Chanc__7CF981FA] DEFAULT (0) FOR [Chance]
GO
ALTER TABLE [dbo].[CharInfoEx] ADD
CONSTRAINT [DF__CharInfoE__Total__5CC1BC92] DEFAULT (0) FOR [Total],
CONSTRAINT [DF__CharInfoE__Serve__5DB5E0CB] DEFAULT (0) FOR [ServerID]
GO
ALTER TABLE [dbo].[ItemUID] ADD
CONSTRAINT [DF__ItemUID__Item__70C8B53F] DEFAULT (0) FOR [Item]
GO
ALTER TABLE [dbo].[TblCharDelHistory] ADD
CONSTRAINT [DF__TblCharDe__dateI__0C3BC58A] DEFAULT (getdate()) FOR [dateInsertTime]
GO
ALTER TABLE [dbo].[TblGuildInfo] ADD
CONSTRAINT [DF__TblGuildI__nGuil__13DCE752] DEFAULT (0) FOR [nGuildGold],
CONSTRAINT [DF__TblGuildI__tLast__14D10B8B] DEFAULT ('2010.12.31') FOR [tLastLogout],
CONSTRAINT [DF__TblGuildI__tChec__15C52FC4] DEFAULT (getdate()) FOR [tCheckMember],
CONSTRAINT [DF__TblGuildI__tGMLa__16B953FD] DEFAULT ('2010.12.31') FOR [tGMLastLogout],
CONSTRAINT [uk_TblGuildInfo_strGuildName] UNIQUE NONCLUSTERED
(
[strGuildName]
) ON [PRIMARY] ,
CHECK ([strGuildName] <> null)
GO
ALTER TABLE [dbo].[TblGuildMember] ADD
CONSTRAINT [DF__TblGuildM__nCamp__36470DEF] DEFAULT (0) FOR [nCampID]
GO
ALTER TABLE [dbo].[TblGuildOtherList] ADD
CHECK ([tnRelation] = 0 or [tnRelation] = 1 or [tnRelation] = 2)
GO
ALTER TABLE [dbo].[TblItemLog] ADD
CONSTRAINT [DF__TblItemLo__Inser__4A4E069C] DEFAULT (getdate()) FOR [InsertTime],
CONSTRAINT [DF__TblItemLo__Updat__4B422AD5] DEFAULT (getdate()) FOR [UpdateTime],
CONSTRAINT [DF__TblItemLo__Check__4D2A7347] DEFAULT (0) FOR [CheckField],
CHECK ([Qty] > 0)
GO
CREATE INDEX [nidx_TblItemLog_UidCidItemSerial] ON [dbo].[TblItemLog]([UID], [CID], [ItemSerial]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Quest] ADD
CONSTRAINT [FK_Quest_CharInfo] FOREIGN KEY
(
[CID]
) REFERENCES [dbo].[CharInfo] (
[CID]
)
GO
ALTER TABLE [dbo].[CharSkill] ADD
CONSTRAINT [FK_CharSkill_CharInfo] FOREIGN KEY
(
[CID]
) REFERENCES [dbo].[CharInfo] (
[CID]
)
GO
ALTER TABLE [dbo].[CharPos] ADD
CONSTRAINT [FK_CharPos_CharInfo] FOREIGN KEY
(
[CID]
) REFERENCES [dbo].[CharInfo] (
[CID]
)
GO
ALTER TABLE [dbo].[CharInfoEx] ADD
CONSTRAINT [FK_CharInfoEx_CharInfo] FOREIGN KEY
(
[CID]
) REFERENCES [dbo].[CharInfo] (
[CID]
)
GO
ALTER TABLE [dbo].[CharItem] ADD
CONSTRAINT [FK_CharItem_CharInfo] FOREIGN KEY
(
[CID]
) REFERENCES [dbo].[CharInfo] (
[CID]
)
GO
ALTER TABLE [dbo].[CharInfo_Time] ADD
CONSTRAINT [FK_CharInfo_Time_CharInfo] FOREIGN KEY
(
[CID]
) REFERENCES [dbo].[CharInfo] (
[CID]
)
GO
ALTER TABLE [dbo].[CharItemEx] ADD
CONSTRAINT [FK_CharItemEx_CharInfo] FOREIGN KEY
(
[CID]
) REFERENCES [dbo].[CharInfo] (
[CID]
)
GO
ALTER TABLE [dbo].[Friend] ADD
CONSTRAINT [FK_Friend_CharInfo] FOREIGN KEY
(
[CID]
) REFERENCES [dbo].[CharInfo] (
[CID]
)
GO
ALTER TABLE [dbo].[TblGuildMember] ADD
CONSTRAINT [FK_TblGuildInfo_TblGuildMember] FOREIGN KEY
(
[nGuildID]
) REFERENCES [dbo].[TblGuildInfo] (
[nGuildID]
) ON DELETE CASCADE
GO
ALTER TABLE [dbo].[TblGuildOtherList] ADD
CONSTRAINT [FK_TblGuildInfo_TblGuildOtherList] FOREIGN KEY
(
[nGuildID]
) REFERENCES [dbo].[TblGuildInfo] (
[nGuildID]
) ON DELETE CASCADE
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharUID.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 정보 테이블 캐릭터 아이디 업데이트 프로시져
*/
CREATE PROCEDURE dbo.UpdateCharUID
@user_uid AS INT, /* 유저 고유 아이디 */
@user_pos AS INT, /* 캐릭터 위치 (3개의 슬롯) */
@char_uid AS INT , /* 캐릭터 고유 아이디 */
@UserInfoType TINYINT
AS
SET NOCOUNT ON
IF @user_pos = 0
UPDATE UserInfo SET Char1 = @char_uid WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
ELSE IF @user_pos = 1
UPDATE UserInfo SET Char2 = @char_uid WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
ELSE IF @user_pos = 2
UPDATE UserInfo SET Char3 = @char_uid WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
ELSE IF @user_pos = 3
UPDATE UserInfo SET Char4 = @char_uid WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
ELSE IF @user_pos = 4
UPDATE UserInfo SET Char5 = @char_uid WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
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,@NewServerGroupID TINYINT,@UserInfoType TINYINT
AS
SET NOCOUNT ON
DECLARE @ColumnIndex INT
DECLARE @QUERY NVARCHAR(1000)
IF @user_pos = 0
SET @ColumnIndex = 1
ELSE IF @user_pos = 1
SET @ColumnIndex = 2
ELSE IF @user_pos = 2
SET @ColumnIndex = 3
ELSE IF @user_pos = 3
SET @ColumnIndex = 4
ELSE IF @user_pos = 4
SET @ColumnIndex = 5
SET @QUERY = 'Begin Tran' +
' UPDATE UserInfo SET Char' + CAST(@ColumnIndex AS CHAR(1)) + ' = 0 WHERE UID = @User_Uid AND OldServerGroupID = @UserInfoType' +
' IF @@ROWCOUNT <> 1' +
' BEGIN' +
' ROLLBACK TRAN' +
' RETURN' +
' END' +
' DELETE TblUnifiedCharList WHERE UID = @User_Uid AND NewCID = @CID ' +
' INSERT INTO TblCharDelHistory (intCID,intUID,dateDeleteTime,NewServerGroupID,OldServerGroupID)' +
' VALUES (@CID,@User_Uid,GETDATE() + 90,@NewServerGroupID,@UserInfoType)' +
' IF @@ROWCOUNT <> 1' +
' BEGIN' +
' ROLLBACK TRAN' +
' RETURN' +
' END' +
' COMMIT TRAN' +
' RETURN'
Exec sp_executesql @QUERY,N'@User_Uid int,@CID int,@NewServerGroupID TINYINT,@UserInfoType TINYINT',
@user_uid,@CID,@NewServerGroupID,@UserInfoType
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteCharEx.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 삭제
*/
CREATE PROCEDURE dbo.DeleteCharEx
@Char_uid AS INT,@NewServerGroupID TINYINT,@UserInfoType TINYINT
AS
DECLARE @UserID INT, @CharSlot INT
SELECT @UserID = UID, @CharSlot = Char1 FROM UserInfo WHERE Char1 = @Char_uid AND OldServerGroupID = @UserInfoType
IF @UserID IS NOT NULL
BEGIN
EXEC DeleteChar @UserID, 0, @Char_uid ,@NewServerGroupID , @UserInfoType
RETURN
END
SELECT @UserID = UID, @CharSlot = Char2 FROM UserInfo WHERE Char2 = @Char_uid AND OldServerGroupID = @UserInfoType
IF @UserID IS NOT NULL
BEGIN
EXEC DeleteChar @UserID, 1, @Char_uid,@NewServerGroupID , @UserInfoType
RETURN
END
SELECT @UserID = UID, @CharSlot = Char3 FROM UserInfo WHERE Char3 = @Char_uid AND OldServerGroupID = @UserInfoType
IF @UserID IS NOT NULL
BEGIN
EXEC DeleteChar @UserID, 2, @Char_uid,@NewServerGroupID , @UserInfoType
RETURN
END
SELECT @UserID = UID, @CharSlot = Char4 FROM UserInfo WHERE Char4 = @Char_uid AND OldServerGroupID = @UserInfoType
IF @UserID IS NOT NULL
BEGIN
EXEC DeleteChar @UserID, 3, @Char_uid,@NewServerGroupID , @UserInfoType
RETURN
END
SELECT @UserID = UID, @CharSlot = Char5 FROM UserInfo WHERE Char5 = @Char_uid AND OldServerGroupID = @UserInfoType
IF @UserID IS NOT NULL
BEGIN
EXEC DeleteChar @UserID, 4, @Char_uid,@NewServerGroupID , @UserInfoType
RETURN
END
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteCharInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 정보 삭제 프로시져
*/
CREATE PROCEDURE dbo.DeleteCharInfo @char_uid AS INT,@NewServerGroupID TINYINT
AS
SET NOCOUNT ON
DELETE FROM CharInfoEx WHERE CID = @char_uid
--INSERT BEFORE CHARINFO DELETED
INSERT INTO CharDelHistory.dbo.DelCharItem
SELECT @NewServerGroupID,* FROM CharItem WHERE CID = @char_uid
DELETE FROM CharItem WHERE CID = @char_uid
INSERT INTO CharDelHistory.dbo.DelCharItemEx
SELECT @NewServerGroupID,* FROM CharItemEx WHERE CID = @char_uid
DELETE FROM CharItemEx WHERE CID = @char_uid
INSERT INTO CharDelHistory.dbo.DelCharSkill
SELECT @NewServerGroupID,* FROM CharSkill WHERE CID = @char_uid
DELETE FROM CharSkill WHERE CID = @char_uid
DELETE FROM CharPos WHERE CID = @char_uid
DELETE FROM CharInfo_Time WHERE CID = @char_uid
DELETE FROM Friend WHERE CID = @char_uid
DELETE FROM Quest WHERE CID = @char_uid
--INSERT BEFORE CHARINFO DELETED
INSERT INTO CharDelHistory.dbo.DelCharInfo
SELECT @NewServerGroupID,* FROM CharInfo WHERE CID = @char_uid
DELETE FROM CharInfo WHERE CID = @char_uid
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteParty.sql
----------------------------------------------------------------------------------------------------------------------
/*
파티 제거 프로시져
*/
CREATE PROCEDURE dbo.DeleteParty
@Party_uid AS INT /* 파티 아이디 */
AS
SET NOCOUNT ON
DELETE FROM PartyInfo WHERE PID = @Party_uid
GO
----------------------------------------------------------------------------------------------------------------------
-- DeleteUser.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 삭제 프로시져 ( DeleteCharInfo 정의 되어 있어야 함. )
*/
CREATE PROCEDURE dbo.DeleteUser
@UID INT , @NewServerGroupID TINYINT , @UserInfoType TINYINT
AS
SET NOCOUNT ON
-- in korea = @NewServerGroupID = 0
-- in china = @NewServerGroupID = { 1 , 3 , 4 .....}
DECLARE @Char1 AS INT, @Char2 AS INT, @Char3 AS INT,@Char4 INT,@Char5 INT
/* 캐릭터 삭제 */
SELECT @Char1 = Char1, @Char2 = Char2, @Char3 = Char3,@Char4 =Char4,@Char5 = Char5
FROM UserInfo WHERE UID = @UID AND OldServerGroupID = @UserInfoType
IF(@Char1 <> 0)
BEGIN
EXEC DeleteCharInfo @Char1,@NewServerGroupID
END
IF(@Char2 <> 0)
BEGIN
EXEC DeleteCharInfo @Char2,@NewServerGroupID
END
IF(@Char3 <> 0)
BEGIN
EXEC DeleteCharInfo @Char3,@NewServerGroupID
END
IF(@Char4 <> 0)
BEGIN
EXEC DeleteCharInfo @Char4,@NewServerGroupID
END
IF(@Char5 <> 0)
BEGIN
EXEC DeleteCharInfo @Char5,@NewServerGroupID
END
DELETE FROM UserInfo WHERE UID = @UID AND OldServerGroupID = @UserInfoType
DELETE FROM TblUnifiedItemStore1 WHERE UID = @UID
DELETE FROM TblUnifiedItemStore2 WHERE UID = @UID
GO
----------------------------------------------------------------------------------------------------------------------
-- FoundSlot.sql
----------------------------------------------------------------------------------------------------------------------
/*
슬롯 찾기
*/
CREATE PROCEDURE dbo.FoundSlot
@Char_uid AS INT /* 캐릭터 고유 아이디 */
AS
DECLARE @UserID INT
SELECT @UserID = UID FROM UserInfo WHERE Char1 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
SELECT @UserID, 0
RETURN
END
SELECT @UserID = UID FROM UserInfo WHERE Char2 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
SELECT @UserID, 1
RETURN
END
SELECT @UserID = UID FROM UserInfo WHERE Char3 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
SELECT @UserID, 2
RETURN
END
SELECT @UserID = UID FROM UserInfo WHERE Char4 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
SELECT @UserID, 3
RETURN
END
SELECT @UserID = UID FROM UserInfo WHERE Char5 = @Char_uid
IF @UserID IS NOT NULL
BEGIN
SELECT @UserID, 4
RETURN
END
GO
-- ADD Equip column
CREATE PROCEDURE dbo.GetCharInfo
@CID AS INT
AS
SET NOCOUNT ON
SELECT CID, Name, Sex, Hair, Face, Race, Class, Fame, Mileage, Guild, Party, Level, Gold, IP, STR, DEX, CON, Intell, WIS, HP, MP,
Exp , Chance,Equip
FROM CharInfo WHERE CID = @CID
GO
----------------------------------------------------------------------------------------------------------------------
-- GetCharItem.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 아이템 정보 얻기 프로시져
*/
CREATE PROCEDURE dbo.GetCharItem
@CID AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
SELECT Quick, Equip, Inventory FROM CharItem WHERE CID = @CID
GO
----------------------------------------------------------------------------------------------------------------------
-- GetCharPos.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 위치 정보 얻기 프로시져
*/
CREATE PROCEDURE dbo.GetCharPos
@CID AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
SELECT LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ FROM CharPos WHERE CID = @CID
GO
----------------------------------------------------------------------------------------------------------------------
-- GetCharSkill.sql
----------------------------------------------------------------------------------------------------------------------
/*
스킬 정보 보기 프로시져
*/
CREATE PROCEDURE dbo.GetCharSkill
@CID AS INT /* 캐릭터 아이디 */
AS
SET NOCOUNT ON
SELECT Skill FROM CharSkill WHERE CID = @CID
GO
/* 캐릭터 보기 얻기 프로시져 변경 */
CREATE PROCEDURE dbo.GetCharView
@CID AS INT /* 캐릭터 고유 아이디 */
AS
SET NOCOUNT ON
SELECT CID, Name, Sex, Hair, Face, Race, Class, Fame, Mileage, Guild, Party, Level, Equip FROM CharInfo WHERE CID = @CID
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 PID = @Party_uid
GO
CREATE Proc GetUIDCIDFromName @Name varchar(16)
as
Declare @CID int
set @CID = 0
Declare @UID int
set @UID = 0
Select @CID = CID 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 or Char4 = @CID or Char5 = @CID
if @UID = 0
Begin
Select 0, @CID
Return
End
select @UID, @CID
GO
----------------------------------------------------------------------------------------------------------------------
-- GetUserInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 정보 얻기 프로시져
*/
CREATE PROCEDURE dbo.GetUserInfo @UID AS INT,@OldServerGroupID TINYINT
AS
SET NOCOUNT ON
SELECT Char1, Char2, Char3 ,Char4 , Char5 , Nation , OldServerGroupID ,FirstLogin
FROM UserInfo A JOIN UserFirstLoginInfo B ON A.UID = B.UID
WHERE A.UID = @UID AND OldServerGroupID = @OldServerGroupID
GO
----------------------------------------------------------------------------------------------------------------------
-- InsertAdmin.sql
----------------------------------------------------------------------------------------------------------------------
/*
어드민 추가 프로시져
*/
CREATE PROCEDURE dbo.InsertAdmin
@UID INT /* 사용자 아이디 */
AS
SET NOCOUNT ON
DECLARE @Div INT
INSERT INTO AdminList (UID) VALUES (@UID)
GO
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 varBINARY(30), /* 장비 (2 * 15 = 30) */
@Skill AS varBinary(84),
@UserInfoType TINYINT,
@CID INT OUTPUT
AS
SET NOCOUNT ON
--DECLARE @UID INT
DECLARE @C_HP INT, @C_MP INT
/* 캐릭터 이름 확인 */
SELECT @CID = CID FROM CharInfo WHERE Name = @user_name
IF @CID <> 0
BEGIN
SET @CID = -1 /* 동일 이름 존재 */
RETURN
END
/* 슬롯 확인 */
DECLARE @CharSlot INT
IF @user_pos = 0
BEGIN
SELECT @CharSlot = Char1 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END
ELSE IF @user_pos = 1
BEGIN
SELECT @CharSlot = Char2 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END
ELSE IF @user_pos = 2
BEGIN
SELECT @CharSlot = Char3 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END
ELSE IF @user_pos = 3
BEGIN
SELECT @CharSlot = Char4 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END
ELSE IF @user_pos = 4
BEGIN
SELECT @CharSlot = Char5 FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
END
IF @CharSlot <> 0
BEGIN
SET @CID = -2 /* 슬롯이 차있음 */
RETURN
END
SET @C_HP = 100 + @C_CON * 8 + 2
IF @C_INT > @C_WIS
BEGIN
SET @C_MP = 100 + @C_INT * 8 + 2
END
ELSE
BEGIN
SET @C_MP = 100 + @C_WIS * 8 + 2
END
BEGIN TRAN
SELECT @CID = MAX(CID) + 1 FROM CharInfo WITH (UPDLOCK)
IF (@CID IS NULL)
SET @CID = 1
INSERT INTO CharInfo (CID,Name, Sex, Hair, Face, Race, Class, Equip, Gold, STR, DEX, CON, Intell, WIS, HP, MP)
VALUES (@CID,@user_name, @user_Sex, @user_Hair, @user_Face, @user_Nation, @user_Class, @C_Equip, @C_Gold, @C_STR, @C_DEX, @C_CON, @C_INT, @C_WIS, @C_HP, @C_MP)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
SET @CID = -100
RETURN
END
COMMIT TRAN
INSERT INTO CharInfoEx (CID) VALUES (@CID)
INSERT INTO CharItem (CID) VALUES (@CID)
INSERT INTO CharItemEx (CID) VALUES (@CID)
INSERT INTO CharSkill (CID, Skill) VALUES (@CID, @Skill)
INSERT INTO CharPos (CID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ) VALUES (@CID, @PointX, @PointY, @PointZ, @PointX, @PointY, @PointZ)
INSERT INTO CharInfo_Time(CID,CreateTime,UpdateTime)
VALUES (@CID,GETDATE(),GETDATE())
INSERT INTO Friend (CID) VALUES (@CID)
INSERT INTO Quest (CID) VALUES (@CID)
-- UnifiedCharList정보테이블에 입력하기
INSERT TblUnifiedCharList(UID,OldServerGroupID,BeforeCID,NewCID,BeforeCharName)
VALUES (@user_uid,@UserInfoType,@CID,@CID,@user_name)
/* 유저 정보 테이블 업데이트 */
EXEC UpdateCharUID @user_uid, @user_pos, @CID , @UserInfoType
GO
----------------------------------------------------------------------------------------------------------------------
-- InsertParty.sql
----------------------------------------------------------------------------------------------------------------------
/*
파티 추가 프로시져
*/
CREATE PROCEDURE dbo.InsertParty
@Party AS varBINARY(202) /* 친구 리스트 */
AS
SET NOCOUNT ON
INSERT INTO PartyInfo (Party) VALUES (@Party)
/* 고유 아이디 돌려줌 */
SELECT CAST(SCOPE_IDENTITY() AS INT)
GO
----------------------------------------------------------------------------------------------------------------------
-- InsertUser.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 추가 프로시져
*/
CREATE PROCEDURE dbo.InsertUser @UID INT,@UserInfoType TINYINT
AS
SET NOCOUNT ON
BEGIN TRAN
INSERT INTO UserInfo (UID,OldServerGroupID) VALUES (@UID,@UserInfoType)
IF NOT EXISTS (SELECT * FROM UserFirstLoginInfo WHERE UID = @UID)
INSERT INTO UserFirstLoginInfo(UID) VALUES (@UID)
INSERT TblUnifiedItemStore1(UID,OldServerGroupID,Frag) VALUES (@UID,@UserInfoType,1)
INSERT TblUnifiedItemStore2(UID,OldServerGroupID) VALUES (@UID,@UserInfoType)
COMMIT TRAN
GO
/**********************************************
-- 복원프로시져
CREATE PROC RestoreCharInfo @user_uid INT,@CID INT,@user_name VARCHAR(20),@NewServerGroupID TINYINT,@UserInfoType TINYINT = 0
AS
DECLARE @UID INT
DECLARE @C_HP INT, @C_MP INT
-- 캐릭터 이름 확인
SELECT @UID = CID FROM CharInfo WHERE Name = @user_name
IF @UID <> 0
BEGIN
SELECT -1 -- 동일 이름 존재
RETURN
END
-- 슬롯 확인
DECLARE @user_pos INT
DECLARE @CharSlot1 INT
SET @CharSlot1 = 0
DECLARE @CharSlot2 INT
SET @CharSlot2 = 0
DECLARE @CharSlot3 INT
SET @CharSlot3 = 0
DECLARE @CharSlot4 INT
SET @CharSlot4 = 0
DECLARE @CharSlot5 INT
SET @CharSlot5 = 0
SELECT @CharSlot1 = Char1,@CharSlot2=Char2,@CharSlot3=Char3,@CharSlot4=Char4,@CharSlot5=Char5
FROM UserInfo WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
IF @CharSlot1 = 0
SET @user_pos = 0
ELSE IF @CharSlot2 = 0
SET @user_pos = 1
ELSE IF @CharSlot3 = 0
SET @user_pos = 2
ELSE IF @CharSlot4 = 0
SET @user_pos = 3
ELSE IF @CharSlot5 = 0
SET @user_pos = 4
ELSE
BEGIN
SELECT -2 -- 슬롯이 차있음
RETURN
END
INSERT INTO CharInfo (UID,Name,Sex,Hair,Face,Nationality,Class,Fame,Mileage,Guild,Party,Level,Equip,Gold,IP,STR,DEX,CON,Intell,WIS,HP,MP,Exp,Chance)
SELECT UID,Name,Sex,Hair,Face,Race,Class,Fame,Mileage,Guild,Party,Level,Equip,Gold,IP,STR,DEX,CON,Intell,WIS,HP,MP,Exp,Chance
FROM CharDelHistory.dbo.DelCharInfo
WHERE UID = @CID and NewServerGroupID = @NewServerGroupID
IF @@ERROR <> 0
BEGIN
SELECT -100
RETURN
END
DELETE CharDelHistory.dbo.DelCharInfo WHERE UID = @CID and NewServerGroupID = @NewServerGroupID
INSERT INTO CharSkill (UID, Skill)
SELECT UID,Skill FROM CharDelHistory.dbo.DelCharSkill WHERE UID = @CID and NewServerGroupID = @NewServerGroupID
DELETE CharDelHistory.dbo.DelCharSkill WHERE UID = @CID and NewServerGroupID = @NewServerGroupID
INSERT INTO CharPos (UID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ)
VALUES (@CID, 0, 0, 0, 0, 0, 0)
INSERT INTO CharInfoEx (UID) VALUES (@CID)
INSERT INTO CharItem
SELECT UID,Quick,Equip,Inventory,Extra FROM CharDelHistory.dbo.DelCharItem WHERE UID = @CID and NewServerGroupID = @NewServerGroupID
DELETE CharDelHistory.dbo.DelCharItem WHERE UID = @CID and NewServerGroupID = @NewServerGroupID
INSERT INTO CharItemEx (UID,Exchange)
SELECT UID,Exchange FROM CharDelHistory.dbo.DelCharItemEx WHERE UID = @CID and NewServerGroupID = @NewServerGroupID
DELETE CharDelHistory.dbo.DelCharItemEx WHERE UID = @CID and NewServerGroupID = @NewServerGroupID
INSERT INTO Friend (UID) VALUES (@CID)
INSERT INTO Quest (UID) VALUES (@CID)
INSERT INTO CharInfo_Time(CID,CreateTime,UpdateTime)
VALUES (@CID,GETDATE(),GETDATE())
-- 유저 정보 테이블 업데이트
--EXEC UpdateCharUID @user_uid, @user_pos, @CID
exec UpdateCharUID @user_uid, @user_pos, @UID , @NewServerGroupID
select 0 as success
*******************************************************/
GO
CREATE PROC USPCampCreate @nGuildID INT,@snObjectType SMALLINT,@tnZone TINYINT,@tnChannel TINYINT,@fPosX FLOAT,@fPosY FLOAT,@fPosZ FLOAT
AS
SET NOCOUNT ON
DECLARE @nCampID INT
SET @nCampID = 0
BEGIN TRAN
INSERT INTO TblCampInfo (nGuildID,nHP,tnZone,tnChannel,snObjectType,
tnState,tnSubState,tnUpgradeStep,RemainTime,LastUseTime,bRight,fPosX,fPosY,fPosZ)
VALUES (@nGuildID,10,@tnZone,@tnChannel,@snObjectType,4,0,0,GETDATE(),GETDATE(),0x01030101010101010101,@fPosX,@fPosY,@fPosZ)
IF @@ERROR <> 0
BEGIN
SELECT @nCampID
ROLLBACK TRAN
RETURN
END
SET @nCampID = CAST(SCOPE_IDENTITY() AS INT)
COMMIT TRAN
SELECT @nCampID
GO
CREATE PROC USPCampDelete @CampID INT
AS
SET NOCOUNT ON
DECLARE @RETURN INT
DELETE TblCampInfo
WHERE nCampID = @CampID
SET @RETURN = @@ROWCOUNT
SELECT @RETURN
GO
CREATE PROC USPCastleUpdate @nCastleID INT,@nGuildID INT,@snTax SMALLINT,@nTaxMoney INT,
@tnTaxIncomeRemainDay TINYINT,@tnInvincibleDay TINYINT
AS
SET NOCOUNT ON
DECLARE @RETURN INT
UPDATE TblCastleInfo
SET nGuildID = @nGuildID,snTax = @snTax,nTaxMoney=@nTaxMoney,
tnTaxIncomeRemainDay=@tnTaxIncomeRemainDay,tnInvincibleDay = @tnInvincibleDay
WHERE nCastleID = @nCastleID
SET @RETURN = @@ROWCOUNT
SELECT @RETURN
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 varBINARY(50), @OldServerGroupID TINYINT
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,OldServerGroupID)
VALUES (@GuildName,@GuildLevel,@GuildFame,@bRight,@tnNationType,@OldServerGroupID)
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN,@GuildID
RETURN
END
COMMIT TRAN
-- 이미 입력된 길드의 아이디를 얻어온다.
SELECT @GuildID = nGuildID FROM TblGuildInfo WHERE strGuildName = @GuildName
SELECT @RETURN,@GuildID -- SUCCESS
END
GO
CREATE PROC USPGuildDelete @GuildID INT
AS
SET NOCOUNT ON
INSERT INTO TblGuildRestoreData (nGuildID,strGuildName,nGuildGold,tDeleteTime,nGuildMCID,OldServerGroupID)
SELECT TOP 1 a.nGuildID,a.strGuildName,a.nGuildGold,Getdate(),nCID,OldServerGroupID
FROM TblGuildInfo a Left OUTER JOIN TblGuildMember c ON a.nGuildID = c.nGuildID
WHERE a.nGuildID = @GuildID
ORDER BY c.nPositionInGuild ASC
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
UPDATE CharInfo
SET Guild = 0
WHERE CID = @CID
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
SET Gold = Gold + @Gold
FROM TblGuildMember a,Charinfo b
WHERE a.nCID = b.CID AND a.nGuildID = @GuildID AND a.nPosition < 5
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
UPDATE CharInfo
SET Guild = @GuildID
WHERE CID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
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
UPDATE CharInfo
SET Guild = 0
WHERE CID = @CID
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
SET @RETURN = 1
SELECT @RETURN
RETURN
END
COMMIT TRAN
SELECT @RETURN
RETURN
GO
CREATE PROC USP_InsertItemLog
(
@UID INT,
@CID INT,
@ItemSerial BIGINT,
@CharName VARCHAR(20),
@Qty INT
)
AS
SET NOCOUNT ON
DECLARE @bQty INT
SET @bQty = 0
SELECT @bQty = Qty FROM TblItemLog
WHERE UID = @UID AND CID = @CID AND ItemSerial = @ItemSerial AND CheckField = 0
IF (@bQty > 0 )
BEGIN
IF (@bQty >= @Qty)
BEGIN
UPDATE TblItemLog
SET UpdateTime = GETDATE()
WHERE UID = @UID AND CID = @CID
AND ItemSerial = @ItemSerial AND CheckField = 0
END
ELSE
BEGIN
UPDATE TblItemLog
SET UpdateTime = GETDATE(),Qty = @Qty
WHERE UID = @UID AND CID = @CID
AND ItemSerial = @ItemSerial AND CheckField = 0
END
END
ELSE
BEGIN
INSERT INTO TblItemLog (UID,CID,ItemSerial,CharName,Qty)
Values (@UID, @CID, @ItemSerial, @CharName, @Qty)
END
GO
CREATE PROC USP_UpdateCheckField_ItemLog
(
@UID INT,
@CID INT,
@ItemSerial BIGINT
)
AS
SET NOCOUNT ON
UPDATE TblItemLog
SET CheckField = 1,UpdateTime = Getdate()
WHERE UID = @UID AND CID = @CID AND ItemSerial = @ItemSerial AND CheckField = 0
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharEquip.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 정보 변경 프로시져
*/
CREATE PROCEDURE dbo.UpdateCharEquip
@char_uid AS INT, /* 캐릭터 고유 아이디 */
@C_Equip AS varBINARY(30) /* 장비 (2 * 15 = 30) */
AS
SET NOCOUNT ON
UPDATE CharInfo SET Equip = @C_Equip WHERE CID = @char_uid
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 varBINARY(30) /* 장비 (2 * 15 = 30) */
AS
SET NOCOUNT ON
UPDATE CharInfo
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 CID = @char_uid
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,GETDATE(),GETDATE())
END
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharItemQuick.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 정보 변경 프로시져
*/
CREATE PROCEDURE dbo.UpdateCharItemQuick
@char_uid AS INT, /* 캐릭터 고유 아이디 */
@C_Quick AS varBINARY(100) /* 장비 (2 * 15 = 30) */
AS
SET NOCOUNT ON
UPDATE CharItem SET Quick = @C_Quick WHERE CID = @char_uid
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharParty.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 파티 관계 업데이트
*/
CREATE PROCEDURE dbo.UpdateCharParty
@CID AS INT, /* 캐릭터 고유 아이디 */
@Party AS INT /* 파티 */
AS
SET NOCOUNT ON
UPDATE CharInfo SET Party = @Party WHERE CID = @CID
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharPos.sql
----------------------------------------------------------------------------------------------------------------------
/*
캐릭터 위치 정보 업데이트 프로시져
*/
CREATE PROCEDURE dbo.UpdateCharPos
@CID 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
UPDATE CharPos
SET LastPointX = @LastPointX, LastPointY = @LastPointY, LastPointZ = @LastPointZ, SavePointX = @SavePointX, SavePointY = @SavePointY, SavePointZ = @SavePointZ
WHERE CID = @CID
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateCharSkill.sql
----------------------------------------------------------------------------------------------------------------------
/*
스킬 업데이트
*/
CREATE PROCEDURE dbo.UpdateCharSkill
@CID AS INT, /* 사용자 아이디 */
@Skill AS varBINARY(84) /* 스킬 슬롯 */
AS
SET NOCOUNT ON
UPDATE CharSkill SET Skill = @Skill WHERE CID = @CID
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdatePartyInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
파티 맴버 추가 프로시져
*/
CREATE PROCEDURE dbo.UpdatePartyInfo
@Party_uid AS INT, /* 파티 고유 아이디 */
@Party AS varBINARY(202) /* 친구 리스트 */
AS
SET NOCOUNT ON
UPDATE PartyInfo SET Party = @Party WHERE PID = @Party_uid
GO
----------------------------------------------------------------------------------------------------------------------
-- UpdateUserInfo.sql
----------------------------------------------------------------------------------------------------------------------
/*
유저 정보 변경 프로시져
*/
CREATE PROCEDURE dbo.UpdateUserInfo
@user_uid AS INT,
@UserInfoType TINYINT,
@nation TINYINT,
@user_char1 AS INT,
@user_char2 AS INT,
@user_char3 AS INT,
@user_char4 AS INT,
@user_char5 AS INT
AS
SET NOCOUNT ON
BEGIN TRAN
UPDATE UserInfo
SET Char1 = @user_char1, Char2 = @user_char2, Char3 = @user_char3 , Char4 = @user_char4 , Char5 = @user_char5 ,
Nation = @nation
WHERE UID = @user_uid AND OldServerGroupID = @UserInfoType
COMMIT TRAN
GO
CREATE PROC WEB_SelectCharName @UID INT, @UserInfoType TINYINT, @CharName1 VARCHAR(20) OUTPUT,@CharName2 VARCHAR(20) OUTPUT,
@CharName3 VARCHAR(20) OUTPUT,@CharName4 VARCHAR(20) OUTPUT,@CharName5 VARCHAR(20) OUTPUT
AS
SET NOCOUNT ON
DECLARE @Char1 INT,@Char2 INT,@Char3 INT,@Char4 INT,@Char5 INT
SELECT @Char1 = (CASE WHEN Char1 IS NULL THEN 0 ELSE Char1 END),
@Char2 = (CASE WHEN Char2 IS NULL THEN 0 ELSE Char2 END),
@Char3= (CASE WHEN Char3 IS NULL THEN 0 ELSE Char3 END),
@Char4= (CASE WHEN Char4 IS NULL THEN 0 ELSE Char4 END),
@Char5= (CASE WHEN Char5 IS NULL THEN 0 ELSE Char5 END)
FROM UserInfo WHERE UID = @UID AND OldServerGroupID = @UserInfoType
IF (@Char1 <> 0 )
SELECT @CharName1 = Name FROM CharInfo WHERE CID = @Char1
IF (@Char2 <> 0 )
SELECT @CharName2 = Name FROM CharInfo WHERE CID = @Char2
IF (@Char3 <> 0 )
SELECT @CharName3 = Name FROM CharInfo WHERE CID = @Char3
IF (@Char4 <> 0 )
SELECT @CharName4 = Name FROM CharInfo WHERE CID = @Char4
IF (@Char5 <> 0 )
SELECT @CharName5 = Name FROM CharInfo WHERE CID = @Char5
GO
CREATE PROC agt_CharDelHistory
AS
SET NOCOUNT ON
DECLARE @ROWID INT
DECLARE @CID INT
DECLARE @NewServerGroupID TINYINT
DECLARE @GETDATE SMALLDATETIME
DECLARE @Table TABLE
(
ROWID INT IDENTITY(1,1) PRIMARY KEY
, intCID INT
, NewServerGroupID TINYINT
)
SET @GETDATE = GETDATE()
INSERT INTO @Table
SELECT intCID,NewServerGroupID FROM TblCharDelHistory WHERE dateDeleteTime < @GETDATE
SET @ROWID = @@ROWCOUNT
WHILE @ROWID <> 0
BEGIN
SELECT @CID = intCID,@NewServerGroupID = NewServerGroupID FROM @Table WHERE ROWID = @ROWID
/* 캐릭터 삭제 */
EXEC DeleteCharInfo @CID,@NewServerGroupID
SET @ROWID = @ROWID - 1
END
INSERT INTO CharDelHistory.dbo.TblCharDelHistory_LOG
SELECT * FROM TblCharDelHistory WHERE dateDeleteTime < @GETDATE
DELETE TblCharDelHistory
WHERE dateDeleteTime < @GETDATE
GO
-- 새로추가될 내용
CREATE PROC dbo.UpdateUserInfoNation @UID INT,@Nation TINYINT,@UserInfoType TINYINT
AS
SET NOCOUNT ON
UPDATE UserInfo SET Nation = @Nation WHERE UID = @UID AND OldServerGroupID = @UserInfoType
GO
CREATE PROC dbo.UpdateUserFirstLogin @UID INT,@FirstLogin TINYINT
AS
SET NOCOUNT ON
UPDATE UserFirstLoginInfo SET FirstLogin = @FirstLogin WHERE UID = @UID
GO
CREATE PROC dbo.GetUnifiedCharList @UID INT
AS
SET NOCOUNT ON
SELECT Name,BeforeCharName,NewCID,BeforeCID,Class,Level,OldServerGroupID
FROM TblUnifiedCharList A JOIN CharInfo B
ON A.NewCID = B.CID
WHERE A.UID = @UID
GO
-- 배틀로한용 캐릭터 삭제 스크립트
-- 캐릭터 3개로 세팅되어있음.
CREATE PROC DeleteChar_BattleServer @user_uid INT,@user_pos INT,@CID INT,@OldServerGroupID TINYINT,@servergroupid TINYINT
AS
SET NOCOUNT ON
IF @user_pos = 0
BEGIN
BEGIN TRAN
UPDATE UserInfo SET Char1 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
/* 캐릭터 삭제 */
EXEC DeleteCharInfo @CID,@OldServerGroupID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @user_pos = 1
BEGIN
BEGIN TRAN
UPDATE UserInfo SET Char2 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
/* 캐릭터 삭제 */
EXEC DeleteCharInfo @CID,@OldServerGroupID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @user_pos = 2
BEGIN
BEGIN TRAN
UPDATE UserInfo SET Char3 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
/* 캐릭터 삭제 */
EXEC DeleteCharInfo @CID,@OldServerGroupID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @user_pos = 3
BEGIN
BEGIN TRAN
UPDATE UserInfo SET Char4 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
/* 캐릭터 삭제 */
EXEC DeleteCharInfo @CID,@OldServerGroupID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
ELSE IF @user_pos = 4
BEGIN
BEGIN TRAN
UPDATE UserInfo SET Char5 = 0 WHERE UID = @user_uid
IF @@ROWCOUNT <> 1
BEGIN
ROLLBACK TRAN
RETURN
END
/* 캐릭터 삭제 */
EXEC DeleteCharInfo @CID,@OldServerGroupID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
RETURN
END
GO
CREATE PROC TransferStore @UID INT , @SourceSrvID TINYINT , @DestSrvID TINYINT
AS
SET NOCOUNT ON
IF EXISTS (SELECT * FROM dbo.TblUnifiedItemStore1 WHERE UID = @UID AND OldServerGroupID = @SourceSrvID)
BEGIN
IF EXISTS (SELECT * FROM dbo.TblUnifiedItemStore2 WHERE UID = @UID AND OldServerGroupID = @SourceSrvID)
BEGIN
DECLARE @GETDATE SMALLDATETIME
SET @GETDATE = GETDATE()
BEGIN TRAN
IF EXISTS (SELECT * FROM dbo.TblUnifiedItemStore1
WHERE UID = @UID AND OldServerGroupID = @DestSrvID
AND ( (ISNULL(Frag,0) not in (0,1)) OR (ISNULL(Gold,0) <>0 ) OR (Store IS NOT NULL)) )
BEGIN
INSERT INTO TblUnifiedItemStore1_TransferLOG
SELECT @GETDATE,* FROM dbo.TblUnifiedItemStore1 WHERE UID = @UID AND OldServerGroupID = @DestSrvID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
END
DELETE dbo.TblUnifiedItemStore1 WHERE UID = @UID AND OldServerGroupID = @DestSrvID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
UPDATE dbo.TblUnifiedItemStore1 SET OldServerGroupID = @DestSrvID
WHERE UID = @UID AND OldServerGroupID = @SourceSrvID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO dbo.TblUnifiedItemStore1(UID, OldServerGroupID) VALUES (@UID, @SourceSrvID)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
IF EXISTS (SELECT * FROM dbo.TblUnifiedItemStore2 WHERE UID = @UID AND OldServerGroupID = @DestSrvID
AND Store IS NOT NULL)
BEGIN
INSERT INTO TblUnifiedItemStore2_TransferLOG
SELECT @GETDATE,* FROM dbo.TblUnifiedItemStore2 WHERE UID = @UID AND OldServerGroupID = @DestSrvID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
END
DELETE dbo.TblUnifiedItemStore2 WHERE UID = @UID AND OldServerGroupID = @DestSrvID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
UPDATE dbo.TblUnifiedItemStore2 SET OldServerGroupID = @DestSrvID
WHERE UID = @UID AND OldServerGroupID = @SourceSrvID
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
INSERT INTO dbo.TblUnifiedItemStore2(UID, OldServerGroupID) VALUES (@UID, @SourceSrvID)
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
END
END
GO
CREATE TABLE dbo.TblWebItemInfo
(
CreateID INT IDENTITY(1,1) PRIMARY KEY
, UID INT
, CID INT
, ItemPrototypeID SMALLINT
, Amount TINYINT
, MIN_DAMAGE TINYINT CHECK (MIN_DAMAGE IN (1,2,3,4,5,6,7))
, MAX_DAMAGE TINYINT CHECK (MAX_DAMAGE IN (1,2,3,4,5,6,7))
, ARMOR TINYINT CHECK (ARMOR IN (1,2,3,4,5,6,7))
, HIT_RATE TINYINT CHECK (HIT_RATE IN (1,2,3,4,5,6,7))
, EVADE TINYINT CHECK (EVADE IN (1,2,3,4,5,6,7))
, MAX_HP TINYINT CHECK (MAX_HP IN (1,2,3,4,5,6,7))
, HP_REGEN TINYINT CHECK (HP_REGEN IN (1,2,3,4,5,6,7))
, MAX_MP TINYINT CHECK (MAX_MP IN (1,2,3,4,5,6,7))
, MP_REGEN TINYINT CHECK (MP_REGEN IN (1,2,3,4,5,6,7))
, CRITICAL TINYINT CHECK (CRITICAL IN (1,2,3,4,5,6,7))
, BLOCK TINYINT CHECK (BLOCK IN (1,2,3,4,5,6,7))
, SPEED TINYINT CHECK (SPEED IN (1,2,3,4,5,6,7))
, MAGIC_POWER TINYINT CHECK (MAGIC_POWER IN (1,2,3,4,5,6,7))
, MAGIC_RESIST TINYINT CHECK (MAGIC_RESIST IN (1,2,3,4,5,6,7))
, ItemUID BIGINT NOT NULL DEFAULT(0)
)
GO
CREATE INDEX IDX_TblWebItemInfo_U_CID ON dbo.TblWebItemInfo (UID,CID)
GO
CREATE INDEX IDX_TblWebItemInfo_ItemUID ON dbo.TblWebItemInfo (ItemUID)
GO
CREATE Proc dbo.GetUserCharInfo_Web @UID INT
AS
SET NOCOUNT ON
--출력 예전 서버군ID / CID / 이름 / 클래스 / 레벨 / 명성 / 마일리지
DECLARE @TblReports TABLE
(
OldServerGroupID INT
, CID INT
)
INSERT INTO @TblReports
SELECT OldServerGroupID,Char1 FROM UserInfo WHERE UID = @UID and Char1 > 0
INSERT INTO @TblReports
SELECT OldServerGroupID,Char2 FROM UserInfo WHERE UID = @UID and Char2 > 0
INSERT INTO @TblReports
SELECT OldServerGroupID,Char3 FROM UserInfo WHERE UID = @UID and Char3 > 0
INSERT INTO @TblReports
SELECT OldServerGroupID,Char4 FROM UserInfo WHERE UID = @UID and Char4> 0
INSERT INTO @TblReports
SELECT OldServerGroupID,Char5 FROM UserInfo WHERE UID = @UID and Char5 > 0
SELECT OldServerGroupID,A.CID,Name,Class,Level,Fame,Mileage
FROM @TblReports A JOIN CharInfo B ON A.CID = B.CID
ORDER BY OldServerGroupID