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>
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
|
||||
-- 2005-04-14 정섭에 적용됨
|
||||
|
||||
-- 파티 테이블 수정 --
|
||||
|
||||
ALTER TABLE dbo.PartyInfo
|
||||
Add UserInfo varbinary(70)
|
||||
|
||||
GO
|
||||
-- Friend 테이블 수정 --
|
||||
|
||||
GO
|
||||
|
||||
alter table Friend
|
||||
add FriendInfo varBINARY(704)
|
||||
|
||||
GO
|
||||
|
||||
alter table Friend
|
||||
add BanInfo varBinary(704)
|
||||
|
||||
-- 파티 정보 얻어오기 --
|
||||
|
||||
GO
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
-- GetPartyInfo.sql
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
/*
|
||||
파티 정보 보기 프로시져
|
||||
*/
|
||||
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE dbo.GetPartyInfo_Part2
|
||||
@Party_uid AS INT /* 파티 아이디 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT Party, UserInfo FROM PartyInfo WHERE PID = @Party_uid
|
||||
|
||||
-- 파티 정보 업데이트 --
|
||||
|
||||
GO
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
-- UpdatePartyInfo.sql
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
/*
|
||||
파티 맴버 추가 프로시져
|
||||
*/
|
||||
|
||||
CREATE PROCEDURE dbo.UpdatePartyInfo_Part2
|
||||
@Party_uid AS INT, /* 파티 고유 아이디 */
|
||||
@Party AS varBINARY(202), /* 친구 리스트 */
|
||||
@UserInfo AS varBINARY(72) /* 유저 정보 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
UPDATE PartyInfo SET Party = @Party, UserInfo = @UserInfo WHERE PID = @Party_uid
|
||||
|
||||
-- 파티 추가 --
|
||||
GO
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- InsertParty.sql
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
/*
|
||||
파티 추가 프로시져
|
||||
*/
|
||||
|
||||
CREATE PROCEDURE dbo.InsertParty_Part2
|
||||
@Party AS varBINARY(202), /* 친구 리스트 */
|
||||
@UserInfo AS varBINARY(72) /* 유저 정보 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
|
||||
INSERT INTO PartyInfo (Party, UserInfo) VALUES (@Party, @UserInfo)
|
||||
|
||||
/* 고유 아이디 돌려줌 */
|
||||
SELECT CAST(SCOPE_IDENTITY() AS INT)
|
||||
|
||||
GO
|
||||
@@ -0,0 +1,86 @@
|
||||
ALTER TABLE [TblCampInfo] ADD [tnSiegeCount] [tinyint] NULL
|
||||
GO
|
||||
|
||||
ALTER TABLE [TblCampShopInfo] DROP COLUMN [TransferTime]
|
||||
GO
|
||||
|
||||
DROP TABLE [TblCastleInfo]
|
||||
GO
|
||||
|
||||
CREATE TABLE [TblCastleInfo] (
|
||||
[nCastleID] [int] IDENTITY (1, 1) NOT NULL,
|
||||
[nGuildID] [int] NULL,
|
||||
[tnZone] [tinyint] NULL,
|
||||
[tnChannel] [tinyint] NULL,
|
||||
[tnName] [tinyint] NULL,
|
||||
[tnSiegeCount] [tinyint] NULL,
|
||||
[tnInvincibleCount] [tinyint] NULL,
|
||||
[snTotalSiegeCount] [smallint] NULL,
|
||||
[nTotalTaxMoney] [int] NULL,
|
||||
[bRight] [varbinary] (10) NULL,
|
||||
[fPosInX] [real] NULL,
|
||||
[fPosInY] [real] NULL,
|
||||
[fPosInZ] [real] NULL,
|
||||
[fPosOutX] [real] NULL,
|
||||
[fPosOutY] [real] NULL,
|
||||
[fPosOutZ] [real] NULL,
|
||||
[snItemID] [smallint] NULL,
|
||||
[tnItemNum] [tinyint] NULL
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE TABLE [TblCastleTaxInfo] (
|
||||
[nCastleID] [int] NULL,
|
||||
[tnType] [tinyint] NULL,
|
||||
[tnTax] [tinyint] NULL,
|
||||
[nTempMoney] [int] NULL,
|
||||
[nTaxMoney] [int] NULL,
|
||||
[tnTaxChangable] [tinyint] NULL
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
CREATE TABLE [TblCastleMineralInfo] (
|
||||
[nCastleID] [int] NULL ,
|
||||
[snMineralID] [smallint] NULL ,
|
||||
[snAmount] [smallint] NULL ,
|
||||
[tnFlag] [tinyint] NULL
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
|
||||
DROP PROC USPCastleUpdate
|
||||
GO
|
||||
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
|
||||
CREATE PROC USPCastleUpdate @nCastleID INT,@nGuildID INT,@tnSiegeCount TINYINT,
|
||||
@tnInvincibleCount TINYINT,@snTotalSiegeCount SMALLINT,@nTotalTaxMoney INT,
|
||||
@snItemID SMALLINT,@tnItemNum TINYINT
|
||||
AS
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @RETURN INT
|
||||
|
||||
UPDATE TblCastleInfo
|
||||
SET nGuildID = @nGuildID,tnSiegeCount = @tnSiegeCount,tnInvincibleCount = @tnInvincibleCount,
|
||||
snTotalSiegeCount = @snTotalSiegeCount,nTotalTaxMoney = @nTotalTaxMoney,
|
||||
snItemID = @snItemID,tnItemNum = @tnItemNum
|
||||
WHERE nCastleID = @nCastleID
|
||||
|
||||
SET @RETURN = @@ROWCOUNT
|
||||
|
||||
SELECT @RETURN
|
||||
|
||||
|
||||
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER OFF
|
||||
GO
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
80
Server/Database/DBScript/GameDB/Part2 UPDATE/1460_적아군 식별.sql
Normal file
80
Server/Database/DBScript/GameDB/Part2 UPDATE/1460_적아군 식별.sql
Normal file
@@ -0,0 +1,80 @@
|
||||
/*------------------------------------------------------------------------------//
|
||||
// 적아군 식별 장치 관련 DB 수정. //
|
||||
//------------------------------------------------------------------------------*/
|
||||
|
||||
-- 파티 정보에 길드 정보 추가 --
|
||||
|
||||
ALTER TABLE dbo.PartyInfo
|
||||
ADD GID INT
|
||||
|
||||
|
||||
-- 새로 만들 프로시저 모두 드랍
|
||||
GO
|
||||
|
||||
DROP PROC InsertParty_Part2
|
||||
|
||||
GO
|
||||
|
||||
DROP PROC GetPartyInfo_Part2
|
||||
|
||||
GO
|
||||
|
||||
DROP PROC UpdatePartyInfo_Part2
|
||||
|
||||
GO
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
-- GetPartyInfo.sql
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
/*
|
||||
파티 정보 보기 프로시져
|
||||
*/
|
||||
|
||||
CREATE PROCEDURE dbo.GetPartyInfo_Part2
|
||||
@Party_uid AS INT /* 파티 아이디 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT Party, UserInfo, GID FROM PartyInfo WHERE PID = @Party_uid
|
||||
|
||||
GO
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
-- InsertParty.sql
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
/*
|
||||
파티 추가 프로시져
|
||||
*/
|
||||
|
||||
CREATE PROCEDURE dbo.InsertParty_Part2
|
||||
@Party AS varBINARY(202), /* 친구 리스트 */
|
||||
@UserInfo AS varBINARY(72), /* 유저 정보 */
|
||||
@GID AS int /* 임시 길드원 정보 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
|
||||
INSERT INTO PartyInfo (Party, UserInfo, GID) VALUES (@Party, @UserInfo, @GID)
|
||||
|
||||
/* 고유 아이디 돌려줌 */
|
||||
SELECT CAST(SCOPE_IDENTITY() AS INT)
|
||||
|
||||
|
||||
GO
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
-- UpdatePartyInfo.sql
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
CREATE PROCEDURE dbo.UpdatePartyInfo_Part2
|
||||
@Party_uid AS INT, /* 파티 고유 아이디 */
|
||||
@Party AS varBINARY(202), /* 친구 리스트 */
|
||||
@UserInfo AS varBINARY(72), /* 유저 정보 */
|
||||
@GID AS INT /* 임시 길드 정보 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
UPDATE PartyInfo SET Party = @Party, UserInfo = @UserInfo, GID = @GID WHERE PID = @Party_uid
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
INSERT INTO TblFertilityInfo(nVeinColor, nFertility, tnZone, tnChannel)
|
||||
(SELECT nVeinColor, nFertility, 16, tnChannel FROM TblFertilityInfo WHERE tnZone = 8)
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
Alter Table CharInfoEX
|
||||
Add AdminFlag tinyint NULL
|
||||
105
Server/Database/DBScript/GameDB/Part2 UPDATE/1590_2국체제로 회귀.sql
Normal file
105
Server/Database/DBScript/GameDB/Part2 UPDATE/1590_2국체제로 회귀.sql
Normal file
@@ -0,0 +1,105 @@
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vUserInfo]') and OBJECTPROPERTY(id, N'IsView') = 1)
|
||||
drop view dbo.vUserInfo
|
||||
GO
|
||||
|
||||
create view dbo.vUserInfo
|
||||
AS
|
||||
SELECT UID,OldServerGroupID,Nation,Char1 as CID FROM UserInfo
|
||||
UNION ALL
|
||||
SELECT UID,OldServerGroupID,Nation,Char2 FROM UserInfo
|
||||
UNION ALL
|
||||
SELECT UID,OldServerGroupID,Nation,Char3 FROM UserInfo
|
||||
UNION ALL
|
||||
SELECT UID,OldServerGroupID,Nation,Char4 FROM UserInfo
|
||||
UNION ALL
|
||||
SELECT UID,OldServerGroupID,Nation,Char5 FROM UserInfo
|
||||
GO
|
||||
|
||||
/* 국적이 신의 해적단이면서, 종족이 휴먼인 사람들의 국적을 카르테란트로 바꿔준다. */
|
||||
update UserInfo set UserInfo.Nation = 1 where UserInfo.UID in
|
||||
(select distinct vUserInfo.UID from
|
||||
vUserInfo INNER JOIN CharInfo
|
||||
ON vUserInfo.CID = CharInfo.CID
|
||||
where vUserInfo.Nation = 3 and CharInfo.Race = 0)
|
||||
|
||||
/* 국적이 신의 해적단이면서, 종족이 아칸인 사람들의 국적을 메르카디아로 바꿔준다. */
|
||||
update UserInfo set UserInfo.Nation = 2 where UserInfo.UID in
|
||||
(select distinct vUserInfo.UID from
|
||||
vUserInfo INNER JOIN CharInfo
|
||||
ON vUserInfo.CID = CharInfo.CID
|
||||
where vUserInfo.Nation = 3 and CharInfo.Race = 1)
|
||||
|
||||
/* 길드 국적이 신의 해적단이고, 길드 마스터가 휴먼이면, 길드 국적을 카르테란트로 바꿔준다. */
|
||||
update TblGuildInfo set TblGuildInfo.tnNationType = 1 where TblGuildInfo.nGuildID in
|
||||
(select distinct TblGuildInfo.nGuildID from
|
||||
TblGuildInfo INNER JOIN TblGuildMember
|
||||
ON TblGuildInfo.nGuildID = TblGuildMember.nGuildID
|
||||
INNER JOIN CharInfo
|
||||
ON TblGuildMember.nCID = CharInfo.CID
|
||||
where tnNationType = 3 and TblGuildMember.nPosition = 1 and CharInfo.Race = 0)
|
||||
|
||||
/* 길드 국적이 신의 해적단이고, 길드 마스터가 아칸이면, 길드 국적을 메르카디아로 바꿔준다. */
|
||||
update TblGuildInfo set TblGuildInfo.tnNationType = 2 where TblGuildInfo.nGuildID in
|
||||
(select distinct TblGuildInfo.nGuildID from
|
||||
TblGuildInfo INNER JOIN TblGuildMember
|
||||
ON TblGuildInfo.nGuildID = TblGuildMember.nGuildID
|
||||
INNER JOIN CharInfo
|
||||
ON TblGuildMember.nCID = CharInfo.CID
|
||||
where tnNationType = 3 and TblGuildMember.nPosition = 1 and CharInfo.Race = 1)
|
||||
|
||||
/* 길드에 속한 캐릭터의 종족이, 그 길드에 가입할 수 없는 종족이면 해당 캐릭터를 길드에서 탈퇴시킨다 */
|
||||
|
||||
/* 길드에서 탈퇴시킬 캐릭터 정보 얻어오기 */
|
||||
declare @DeleteInfo table (nCID int)
|
||||
|
||||
insert into @DeleteInfo
|
||||
select distinct TblGuildMember.nCID from
|
||||
TblGuildInfo INNER JOIN TblGuildMember
|
||||
ON TblGuildInfo.nGuildID = TblGuildMember.nGuildID
|
||||
INNER JOIN CharInfo
|
||||
ON TblGuildMember.nCID = CharInfo.CID
|
||||
where TblGuildInfo.tnNationType <> CharInfo.Race + 1
|
||||
|
||||
/* 길드에서 캐릭터 삭제, 캐릭터 정보에서 Guild ID클리어 */
|
||||
delete from TblGuildMember where nCID in (select nCID from @DeleteInfo)
|
||||
update CharInfo set CharInfo.Guild = 0 where CharInfo.CID in (select nCID from @DeleteInfo)
|
||||
|
||||
/* 캠프를 DB에서 전부 제거한다 */
|
||||
delete from TblCampInfo
|
||||
delete from TblCampShopInfo
|
||||
delete from TblCampMineralInfo
|
||||
delete from TblWorldWeaponInfo
|
||||
|
||||
/* 파티를 날려버린다 */
|
||||
delete from PartyInfo
|
||||
|
||||
/* 길드전쟁, 국가전쟁 참여 플래그를 추가한다. */
|
||||
ALTER TABLE [CharInfoEx] ADD [GuildWarFlag] [tinyint] NULL
|
||||
ALTER TABLE [CharInfoEx] ADD [RealmWarFlag] [tinyint] NULL
|
||||
|
||||
/* 게임 시간 값 DB Table 생성 */
|
||||
CREATE TABLE [TblGameTime] (
|
||||
[GuildTime] [tinyint] NULL,
|
||||
[RealmTime] [tinyint] NULL,
|
||||
[SiegeTime] [tinyint] NULL,
|
||||
[MiningTime] [tinyint] NULL
|
||||
) ON [PRIMARY]
|
||||
INSERT INTO TblGameTime(GuildTime, RealmTime, SiegeTime, MiningTime) VALUES (0, 0, 0, 0)
|
||||
|
||||
|
||||
/* 국가 전잰 석상 DB 테이블 추가 */
|
||||
CREATE TABLE [TblStatueInfo] (
|
||||
[nIndex] [int] NULL,
|
||||
[tnChannel] [tinyint] NULL,
|
||||
[snKID] [smallint] NULL,
|
||||
[nLostHP] [int] NULL
|
||||
) ON [PRIMARY]
|
||||
|
||||
/* 국가 전쟁 석상 초기값 추가 */
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (1, 0, 1044, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (2, 0, 1044, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (3, 0, 1049, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (4, 0, 1049, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (5, 0, 1059, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (6, 0, 1059, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (7, 0, 1054, 0)
|
||||
131
Server/Database/DBScript/GameDB/Part2 UPDATE/1620_2국체제로 회귀.sql
Normal file
131
Server/Database/DBScript/GameDB/Part2 UPDATE/1620_2국체제로 회귀.sql
Normal file
@@ -0,0 +1,131 @@
|
||||
-- CharInfoEx 에 컬럼 추가(국가전쟁 훈장 포인트, 로그아웃 시간) --
|
||||
|
||||
alter table CharInfoEx
|
||||
add RealmPoint tinyint NULL
|
||||
|
||||
go
|
||||
|
||||
alter table CharInfoEx
|
||||
add RealmCheckPoint tinyint NULL
|
||||
|
||||
go
|
||||
|
||||
alter table CharInfoEx
|
||||
add RealmMinute tinyint NULL
|
||||
|
||||
go
|
||||
|
||||
alter table CharInfoEx
|
||||
add LogoutTime smalldatetime Not NULL default(getdate())
|
||||
|
||||
go
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vUserInfo]') and OBJECTPROPERTY(id, N'IsView') = 1)
|
||||
drop view dbo.vUserInfo
|
||||
GO
|
||||
|
||||
create view dbo.vUserInfo
|
||||
AS
|
||||
SELECT UID,OldServerGroupID,Nation,Char1 as CID FROM UserInfo
|
||||
UNION ALL
|
||||
SELECT UID,OldServerGroupID,Nation,Char2 FROM UserInfo
|
||||
UNION ALL
|
||||
SELECT UID,OldServerGroupID,Nation,Char3 FROM UserInfo
|
||||
UNION ALL
|
||||
SELECT UID,OldServerGroupID,Nation,Char4 FROM UserInfo
|
||||
UNION ALL
|
||||
SELECT UID,OldServerGroupID,Nation,Char5 FROM UserInfo
|
||||
GO
|
||||
|
||||
/* 국적이 신의 해적단이면서, 종족이 휴먼인 사람들의 국적을 카르테란트로 바꿔준다. */
|
||||
update UserInfo set UserInfo.Nation = 1 where UserInfo.UID in
|
||||
(select distinct vUserInfo.UID from
|
||||
vUserInfo INNER JOIN CharInfo
|
||||
ON vUserInfo.CID = CharInfo.CID
|
||||
where vUserInfo.Nation = 3 and CharInfo.Race = 0)
|
||||
|
||||
/* 국적이 신의 해적단이면서, 종족이 아칸인 사람들의 국적을 메르카디아로 바꿔준다. */
|
||||
update UserInfo set UserInfo.Nation = 2 where UserInfo.UID in
|
||||
(select distinct vUserInfo.UID from
|
||||
vUserInfo INNER JOIN CharInfo
|
||||
ON vUserInfo.CID = CharInfo.CID
|
||||
where vUserInfo.Nation = 3 and CharInfo.Race = 1)
|
||||
|
||||
/* 길드 국적이 신의 해적단이고, 길드 마스터가 휴먼이면, 길드 국적을 카르테란트로 바꿔준다. */
|
||||
update TblGuildInfo set TblGuildInfo.tnNationType = 1 where TblGuildInfo.nGuildID in
|
||||
(select distinct TblGuildInfo.nGuildID from
|
||||
TblGuildInfo INNER JOIN TblGuildMember
|
||||
ON TblGuildInfo.nGuildID = TblGuildMember.nGuildID
|
||||
INNER JOIN CharInfo
|
||||
ON TblGuildMember.nCID = CharInfo.CID
|
||||
where tnNationType = 3 and TblGuildMember.nPosition = 1 and CharInfo.Race = 0)
|
||||
|
||||
/* 길드 국적이 신의 해적단이고, 길드 마스터가 아칸이면, 길드 국적을 메르카디아로 바꿔준다. */
|
||||
update TblGuildInfo set TblGuildInfo.tnNationType = 2 where TblGuildInfo.nGuildID in
|
||||
(select distinct TblGuildInfo.nGuildID from
|
||||
TblGuildInfo INNER JOIN TblGuildMember
|
||||
ON TblGuildInfo.nGuildID = TblGuildMember.nGuildID
|
||||
INNER JOIN CharInfo
|
||||
ON TblGuildMember.nCID = CharInfo.CID
|
||||
where tnNationType = 3 and TblGuildMember.nPosition = 1 and CharInfo.Race = 1)
|
||||
|
||||
/* 길드에 속한 캐릭터의 종족이, 그 길드에 가입할 수 없는 종족이면 해당 캐릭터를 길드에서 탈퇴시킨다 */
|
||||
|
||||
/* 길드에서 탈퇴시킬 캐릭터 정보 얻어오기 */
|
||||
declare @DeleteInfo table (nCID int)
|
||||
|
||||
insert into @DeleteInfo
|
||||
select distinct TblGuildMember.nCID from
|
||||
TblGuildInfo INNER JOIN TblGuildMember
|
||||
ON TblGuildInfo.nGuildID = TblGuildMember.nGuildID
|
||||
INNER JOIN CharInfo
|
||||
ON TblGuildMember.nCID = CharInfo.CID
|
||||
where TblGuildInfo.tnNationType <> CharInfo.Race + 1
|
||||
|
||||
/* 길드에서 캐릭터 삭제, 캐릭터 정보에서 Guild ID클리어 */
|
||||
delete from TblGuildMember where nCID in (select nCID from @DeleteInfo)
|
||||
update CharInfo set CharInfo.Guild = 0 where CharInfo.CID in (select nCID from @DeleteInfo)
|
||||
|
||||
/* 길드간의 관계를 모두 제거한다. */
|
||||
delete from TblGuildOtherList
|
||||
|
||||
/* 캠프를 DB에서 전부 제거한다 */
|
||||
delete from TblCampInfo
|
||||
delete from TblCampShopInfo
|
||||
delete from TblCampMineralInfo
|
||||
delete from TblWorldWeaponInfo
|
||||
|
||||
/* 파티를 날려버린다 */
|
||||
delete from PartyInfo
|
||||
Update CharInfo Set Party = 0
|
||||
|
||||
/* 길드전쟁, 국가전쟁 참여 플래그를 추가한다. */
|
||||
ALTER TABLE [CharInfoEx] ADD [GuildWarFlag] [tinyint] NULL
|
||||
ALTER TABLE [CharInfoEx] ADD [RealmWarFlag] [tinyint] NULL
|
||||
|
||||
/* 게임 시간 값 DB Table 생성 */
|
||||
CREATE TABLE [TblGameTime] (
|
||||
[GuildTime] [tinyint] NULL,
|
||||
[RealmTime] [tinyint] NULL,
|
||||
[SiegeTime] [tinyint] NULL,
|
||||
[MiningTime] [tinyint] NULL
|
||||
) ON [PRIMARY]
|
||||
INSERT INTO TblGameTime(GuildTime, RealmTime, SiegeTime, MiningTime) VALUES (0, 0, 0, 0)
|
||||
|
||||
|
||||
/* 국가 전잰 석상 DB 테이블 추가 */
|
||||
CREATE TABLE [TblStatueInfo] (
|
||||
[nIndex] [int] NULL,
|
||||
[tnChannel] [tinyint] NULL,
|
||||
[snKID] [smallint] NULL,
|
||||
[nLostHP] [int] NULL
|
||||
) ON [PRIMARY]
|
||||
|
||||
/* 국가 전쟁 석상 초기값 추가 */
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (1, 0, 1044, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (2, 0, 1044, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (3, 0, 1049, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (4, 0, 1049, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (5, 0, 1059, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (6, 0, 1059, 0)
|
||||
INSERT INTO TblStatueInfo(nIndex, tnChannel, snKID, nLostHP) VALUES (7, 0, 1054, 0)
|
||||
@@ -0,0 +1,91 @@
|
||||
alter table PartyInfo
|
||||
drop column GID
|
||||
|
||||
go
|
||||
|
||||
alter Table TblGuildMember
|
||||
add Tactics tinyint NULL
|
||||
|
||||
go
|
||||
|
||||
drop proc dbo.InsertParty_Part2
|
||||
|
||||
go
|
||||
|
||||
/*
|
||||
파티 추가 프로시져
|
||||
*/
|
||||
|
||||
CREATE PROCEDURE dbo.InsertParty_Part2
|
||||
@Party AS varBINARY(202), /* 친구 리스트 */
|
||||
@UserInfo AS varBINARY(72) /* 유저 정보 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
|
||||
INSERT INTO PartyInfo (Party, UserInfo) VALUES (@Party, @UserInfo)
|
||||
|
||||
/* 고유 아이디 돌려줌 */
|
||||
SELECT CAST(SCOPE_IDENTITY() AS INT)
|
||||
|
||||
go
|
||||
|
||||
drop proc dbo.GetPartyInfo_Part2
|
||||
|
||||
go
|
||||
|
||||
/*
|
||||
파티 정보 보기 프로시져
|
||||
*/
|
||||
|
||||
CREATE PROCEDURE dbo.GetPartyInfo_Part2
|
||||
@Party_uid AS INT /* 파티 아이디 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT Party, UserInfo FROM PartyInfo WHERE PID = @Party_uid
|
||||
|
||||
go
|
||||
|
||||
drop proc dbo.UpdatePartyInfo_Part2
|
||||
|
||||
go
|
||||
|
||||
CREATE PROCEDURE dbo.UpdatePartyInfo_Part2
|
||||
@Party_uid AS INT, /* 파티 고유 아이디 */
|
||||
@Party AS varBINARY(202), /* 친구 리스트 */
|
||||
@UserInfo AS varBINARY(72) /* 유저 정보 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
UPDATE PartyInfo SET Party = @Party, UserInfo = @UserInfo WHERE PID = @Party_uid
|
||||
|
||||
|
||||
/*
|
||||
길드 관계 DB
|
||||
|
||||
DESC : 옛날 관계 DB 인 TblGuildOtherList 테이블을 삭제하고
|
||||
TblGuildRelation 을 추가한다.
|
||||
*/
|
||||
|
||||
DROP TABLE dbo.TblGuildOtherList
|
||||
|
||||
GO
|
||||
|
||||
CREATE TABLE [TblGuildRelation] (
|
||||
[nGuildID] [int] NOT NULL ,
|
||||
[nTargetGuildID] [int] NOT NULL ,
|
||||
[tnRelation] [tinyint] NOT NULL ,
|
||||
CONSTRAINT [PK_TblGuildRelation_1] PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[nGuildID],
|
||||
[nTargetGuildID]
|
||||
) ON [PRIMARY] ,
|
||||
CHECK ([tnRelation] = 1 or [tnRelation] = 2 or [tnRelation] = 3)
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
Create Table AdminCommandLog
|
||||
(
|
||||
[Index] [int] IDENTITY (1, 1),
|
||||
[ServerGroupID] [int] NULL, -- ServerGroupID
|
||||
[AdminCID] [int] NULL , -- 지금한 Admin UID
|
||||
[CID] [int] NULL, -- 해당 CID
|
||||
[Type] [varchar] (128) NULL, -- 해당 명령어
|
||||
[Time] [datetime] DEFAULT(getdate()),
|
||||
|
||||
PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[Index]
|
||||
) ON [PRIMARY]
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
alter table Quest
|
||||
alter Column History varbinary(404)
|
||||
@@ -0,0 +1,2 @@
|
||||
Alter Table Quest
|
||||
Alter Column History varbinary(404)
|
||||
@@ -0,0 +1,55 @@
|
||||
Create Table CharDeleteData
|
||||
(
|
||||
[Index] [int] IDENTITY (1, 1),
|
||||
[CID] [int] Not NULL,
|
||||
[Name] [varchar] (16) NULL,
|
||||
[Level] [tinyint] NULL,
|
||||
[Class] [smallint] NULL,
|
||||
|
||||
PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[CID]
|
||||
)
|
||||
)
|
||||
|
||||
go
|
||||
|
||||
-- 퀘스트 삭제 --
|
||||
|
||||
Delete From Quest Where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
|
||||
-- 캐릭터 시간 --
|
||||
|
||||
Delete From CharInfo_Time Where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
|
||||
-- 캐릭터 정보 Ex --
|
||||
|
||||
Delete From CharInfoEx Where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
|
||||
-- 캐릭터 아이템 --
|
||||
|
||||
Delete From CharItem Where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
|
||||
-- 캐릭터 아이템 Ex --
|
||||
|
||||
Delete From CharItemEx Where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
|
||||
-- 캐릭터 위치 --
|
||||
|
||||
Delete From CharPos Where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
|
||||
-- 캐릭터 스킬 --
|
||||
|
||||
Delete From CharSkill Where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
|
||||
-- 친구, 거부 리스트 --
|
||||
|
||||
Delete From Friend Where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
|
||||
-- 데이터 저장
|
||||
|
||||
Insert into CharDeleteData Select CID, [Name], [Level], Class From CharInfo where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
|
||||
-- 캐릭터 정보 삭제 --
|
||||
|
||||
Delete From CharInfo Where CID In (Select intCID From TblCharDelHistory where dateDeleteTime < getdate())
|
||||
@@ -0,0 +1,23 @@
|
||||
ALTER TABLE AdminTool..TblRestraintChar
|
||||
ADD idx int IDENTITY(1,1) NOT NULL
|
||||
GO
|
||||
|
||||
ALTER PROC USPDeleteRestraintChar @SeverID tinyint,@nidx INT
|
||||
AS
|
||||
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
|
||||
IF EXISTS (SELECT UID FROM TblRestraintChar WHERE tinyServerID=@SeverID AND idx = @nidx)
|
||||
BEGIN
|
||||
DELETE TblRestraintChar
|
||||
WHERE tinyServerID=@SeverID AND idx = @nidx
|
||||
|
||||
SELECT @@ROWCOUNT
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SELECT -1
|
||||
END
|
||||
GO
|
||||
135
Server/Database/DBScript/GameDB/Part2 UPDATE/1880_공성전 추가.sql
Normal file
135
Server/Database/DBScript/GameDB/Part2 UPDATE/1880_공성전 추가.sql
Normal file
@@ -0,0 +1,135 @@
|
||||
DROP TABLE TblCastleInfo
|
||||
GO
|
||||
|
||||
CREATE TABLE [TblCastleInfo] (
|
||||
[nCastleID] [int] IDENTITY (1, 1) NOT NULL ,
|
||||
[tnNation] [tinyint] NULL ,
|
||||
[tnZone] [tinyint] NULL ,
|
||||
[tnChannel] [tinyint] NULL ,
|
||||
[tnName] [tinyint] NULL ,
|
||||
[tnSiegeCount] [tinyint] NULL ,
|
||||
[tnInvincibleCount] [tinyint] NULL ,
|
||||
[snTotalSiegeCount] [smallint] NULL ,
|
||||
[nTotalTaxMoney] [int] NULL ,
|
||||
[bRight] [varbinary] (10) NULL ,
|
||||
[fPosInX] [real] NULL ,
|
||||
[fPosInY] [real] NULL ,
|
||||
[fPosInZ] [real] NULL ,
|
||||
[fPosOutX] [real] NULL ,
|
||||
[fPosOutY] [real] NULL ,
|
||||
[fPosOutZ] [real] NULL ,
|
||||
[snItemID] [smallint] NULL ,
|
||||
[tnItemNum] [tinyint] NULL
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
|
||||
INSERT INTO TblCastleInfo(tnNation, tnZone, tnChannel, tnName, tnSiegeCount, tnInvincibleCount, snTotalSiegeCount, nTotalTaxMoney, bRight, fPosInX, fPosInY, fPosInZ, fPosOutX, fPosOutY, fPosOutZ, snItemID, tnItemNum)
|
||||
VALUES (0, 16, 0, 1, 0, 0, 0, 0, 0x03030303030303030303, 0.0, 100.0, 0.0, 0.0, 100.0, 0.0, 0, 0)
|
||||
GO
|
||||
INSERT INTO TblCastleInfo(tnNation, tnZone, tnChannel, tnName, tnSiegeCount, tnInvincibleCount, snTotalSiegeCount, nTotalTaxMoney, bRight, fPosInX, fPosInY, fPosInZ, fPosOutX, fPosOutY, fPosOutZ, snItemID, tnItemNum)
|
||||
VALUES (0, 16, 1, 1, 0, 0, 0, 0, 0x03030303030303030303, 0.0, 100.0, 0.0, 0.0, 100.0, 0.0, 0, 0)
|
||||
GO
|
||||
|
||||
|
||||
DROP TABLE TblCastleCreatureInfo
|
||||
GO
|
||||
|
||||
CREATE TABLE [TblCastleCreatureInfo] (
|
||||
[nCreatureID] [int] IDENTITY (1, 1) NOT NULL ,
|
||||
[nCastleID] [int] NULL ,
|
||||
[nOwnerID] [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 ,
|
||||
[LastUseTime] [smalldatetime] NULL,
|
||||
[fPosX] [real] NULL ,
|
||||
[fPosY] [real] NULL ,
|
||||
[fPosZ] [real] NULL ,
|
||||
PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[nCreatureID]
|
||||
) ON [PRIMARY]
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (1, 0, 59973, 5000, 3.1670001, 0, 1, 1, 0, getdate(), getdate(), 2034.0, 138.133, 3004.5)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (1, 0, 100, 5324, 3.1340001, 0, 2, 0, 0, getdate(), getdate(), 2034.5, 100.0, 2956.0)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (1, 0, 100, 5433, 0.76999998, 0, 0, 0, 0, getdate(), getdate(), 1987.5, 118.1, 2952.0)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (1, 0, 100, 5433, 0.0, 0, 0, 0, 0, getdate(), getdate(), 2018.0, 118.1, 2951.5)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (1, 0, 100, 5433, 5.48, 0, 0, 0, 0, getdate(), getdate(), 2080.0, 118.1, 2952.0)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (1, 0, 100, 5433, 0.0, 0, 0, 0, 0, getdate(), getdate(), 2050.0, 118.1, 2952.0)
|
||||
|
||||
GO
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (2, 0, 59973, 5000, 3.1670001, 0, 1, 1, 0, getdate(), getdate(), 2034.0, 138.133, 3004.0)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (2, 0, 100, 5324, 3.1340001, 0, 2, 0, 0, getdate(), getdate(), 2034.0, 100.0, 2956.0)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (2, 0, 100, 5433, 0.76999998, 0, 0, 0, 0, getdate(), getdate(), 1987.5, 118.1, 2952.0)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (2, 0, 100, 5433, 0.0, 0, 0, 0, 0, getdate(), getdate(), 2018.0, 118.1, 2951.5)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (2, 0, 100, 5433, 5.48, 0, 0, 0, 0, getdate(), getdate(), 2080.0, 118.1, 2952.0)
|
||||
|
||||
INSERT INTO TblCastleCreatureInfo(nCastleID, nOwnerID, nHP, snObjectType, fDirection, tnState, tnSubState, tnUpgradeStep, tnUpgradeType, RemainTime, LastUseTime, fPosX, fPosY, fPosZ)
|
||||
VALUES (2, 0, 100, 5433, 0.0, 0, 0, 0, 0, getdate(), getdate(), 2050.0, 118.1, 2952.0)
|
||||
|
||||
|
||||
GO
|
||||
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER PROC USPCastleUpdate @nCastleID INT,@tnNation TINYINT,@tnSiegeCount TINYINT,
|
||||
@tnInvincibleCount TINYINT,@snTotalSiegeCount SMALLINT,@nTotalTaxMoney INT,
|
||||
@snItemID SMALLINT,@tnItemNum TINYINT
|
||||
AS
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE @RETURN INT
|
||||
|
||||
UPDATE TblCastleInfo
|
||||
SET tnNation = @tnNation,tnSiegeCount = @tnSiegeCount,tnInvincibleCount = @tnInvincibleCount,
|
||||
snTotalSiegeCount = @snTotalSiegeCount,nTotalTaxMoney = @nTotalTaxMoney,
|
||||
snItemID = @snItemID,tnItemNum = @tnItemNum
|
||||
WHERE nCastleID = @nCastleID
|
||||
|
||||
SET @RETURN = @@ROWCOUNT
|
||||
|
||||
SELECT @RETURN
|
||||
|
||||
|
||||
|
||||
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER OFF
|
||||
GO
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
@@ -0,0 +1,11 @@
|
||||
Update TblCastleCreatureInfo Set fPosZ = 3004.5 where snObjectType = 5000
|
||||
|
||||
go
|
||||
|
||||
Update TblCastleCreatureInfo Set fPosX = 2033.98, fPosY = 100.5, fPosZ = 2957.3 where snObjectType = 5324
|
||||
|
||||
go
|
||||
|
||||
Update TblCastleInfo Set tnNation = 0 Where tnZone = 16
|
||||
|
||||
go
|
||||
@@ -0,0 +1,2 @@
|
||||
Alter Table Quest
|
||||
Alter Column Quest varbinary(264)
|
||||
@@ -0,0 +1,20 @@
|
||||
CREATE TABLE [dbo].[CharSpell] (
|
||||
[CID] [int] NOT NULL ,
|
||||
[Spell] [varbinary] (270) NULL
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
ALTER TABLE [dbo].[CharSpell] WITH NOCHECK ADD
|
||||
PRIMARY KEY CLUSTERED
|
||||
(
|
||||
[CID]
|
||||
) ON [PRIMARY]
|
||||
GO
|
||||
|
||||
ALTER TABLE [dbo].[CharSpell] ADD
|
||||
CONSTRAINT [FK_CharSpell_CharInfo] FOREIGN KEY
|
||||
(
|
||||
[CID]
|
||||
) REFERENCES [dbo].[CharInfo] (
|
||||
[CID]
|
||||
)
|
||||
@@ -0,0 +1,124 @@
|
||||
|
||||
|
||||
|
||||
|
||||
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 CharSpell (CID) VALUES (@CID)
|
||||
|
||||
INSERT INTO CharPos (CID, LastPointX, LastPointY, LastPointZ, SavePointX, SavePointY, SavePointZ) VALUES (@CID, @PointX, @PointY, @PointZ, @PointX, @PointY, @PointZ)
|
||||
|
||||
INSERT INTO CharInfo_Time(CID,CreateTime,UpdateTime)
|
||||
VALUES (@CID,GETDATE(),GETDATE())
|
||||
|
||||
INSERT INTO Friend (CID) VALUES (@CID)
|
||||
INSERT INTO Quest (CID) VALUES (@CID)
|
||||
|
||||
-- UnifiedCharList정보테이블에 입력하기
|
||||
INSERT TblUnifiedCharList(UID,OldServerGroupID,BeforeCID,NewCID,BeforeCharName)
|
||||
VALUES (@user_uid,@UserInfoType,@CID,@CID,@user_name)
|
||||
|
||||
|
||||
/* 유저 정보 테이블 업데이트 */
|
||||
EXEC UpdateCharUID @user_uid, @user_pos, @CID , @UserInfoType
|
||||
GO
|
||||
@@ -0,0 +1,2 @@
|
||||
UPDATE CharSpell Set Spell = 0xFFFFFFFF35000100050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
WHERE CID IN (SELECT CID FROM CharInfo WHERE Level = 100)
|
||||
@@ -0,0 +1,26 @@
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
-- UpdateCharSpell.sql
|
||||
----------------------------------------------------------------------------------------------------------------------
|
||||
/*
|
||||
캐릭터 스펠 정보 변경 프로시져
|
||||
*/
|
||||
|
||||
|
||||
CREATE PROCEDURE dbo.UpdateCharSpell
|
||||
@char_uid AS INT, /* 캐릭터 고유 아이디 */
|
||||
@C_Spell AS varBINARY(1664) /* 스펠 (128 * 13 = 1664) */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
IF EXISTS (SELECT CID FROM CharSpell WHERE CID = @char_uid)
|
||||
BEGIN
|
||||
UPDATE CharSpell SET Spell = @C_Spell WHERE CID = @char_uid
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
INSERT INTO CharSpell(CID,Spell)
|
||||
VALUES (@char_uid,@C_Spell)
|
||||
END
|
||||
GO
|
||||
스펠
|
||||
@@ -0,0 +1,7 @@
|
||||
1. CharSpell(Table).sql을 실행하여 CharSpell 테이블을 생성한다.
|
||||
2. SELECT CID FROM CharInfo를 수행하여 나온 CID를 정규식을 사용하여 Insert문으로 변형하여 나온 Insert문을 실행한다.
|
||||
- 찾을말 : [0-9]*
|
||||
- 바꿀말 : INSERT INTO CharSpell(CID) VALUES(\0)
|
||||
3. UpdateCharSpell(Procedure).sql UpdateCharSpell 프로시져를 생성한다.
|
||||
4. 기존에 있던 InsertChar 프로시져를 InsertChar(Procedure).sql로 변경한다.
|
||||
5. 이펙트 버그가 사라졌다면 SetSpell(Query)를 실행해서 기존에 100랩이던 유저들에게 만랩이펙트를 부여한다.
|
||||
@@ -0,0 +1,40 @@
|
||||
-- 이미 Part2 파티 관련 프로시저가 있으나 제대로 동작하지 않는 경우 실행!
|
||||
-- 관련 프로시저를 모두 바로 잡는다.
|
||||
|
||||
|
||||
ALTER PROCEDURE dbo.GetPartyInfo_Part2
|
||||
@Party_uid AS INT /* 파티 아이디 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
SELECT Party, UserInfo, GID FROM PartyInfo WHERE PID = @Party_uid
|
||||
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE dbo.InsertParty_Part2
|
||||
@Party AS varBINARY(202), /* 친구 리스트 */
|
||||
@UserInfo AS varBINARY(72), /* 유저 정보 */
|
||||
@GID AS int /* 임시 길드원 정보 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
|
||||
INSERT INTO PartyInfo (Party, UserInfo, GID) VALUES (@Party, @UserInfo, @GID)
|
||||
|
||||
-- 고유 아이디 돌려줌
|
||||
SELECT CAST(SCOPE_IDENTITY() AS INT)
|
||||
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE dbo.UpdatePartyInfo_Part2
|
||||
@Party_uid AS INT, /* 파티 고유 아이디 */
|
||||
@Party AS varBINARY(202), /* 친구 리스트 */
|
||||
@UserInfo AS varBINARY(72), /* 유저 정보 */
|
||||
@GID AS INT /* 임시 길드 정보 */
|
||||
AS
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
UPDATE PartyInfo SET Party = @Party, UserInfo = @UserInfo, GID = @GID WHERE PID = @Party_uid
|
||||
@@ -0,0 +1,48 @@
|
||||
-- 마지막 수정: 파트2 1470
|
||||
|
||||
-- [길마가 없는 길드 바로잡기]
|
||||
|
||||
-- 1. 길마뿐 아니라 길드원이 없으나 존재하는 길드 검색
|
||||
SELECT strGuildName FROM TblGuildInfo
|
||||
WHERE nGuildID NOT IN (SELECT Distinct nGuildID FROM TblGuildMember)
|
||||
|
||||
-- 1-1. 해당 길드들 삭제
|
||||
DELETE TblGuildInfo
|
||||
WHERE nGuildID NOT IN (SELECT Distinct nGuildID FROM TblGuildMember)
|
||||
|
||||
-- 2. 길마가 없는 길드 검색
|
||||
SELECT strGuildName FROM TblGuildInfo
|
||||
WHERE nGuildID NOT IN (SELECT Distinct nGuildID FROM TblGuildMember WHERE nPosition = 1)
|
||||
|
||||
-- 2-1. 길마 만들어 주기 (길마 우선 순위 : 레벨 > 명성치 > 캐릭터명 > 인벤토리 금액)
|
||||
DECLARE @ROW INT
|
||||
DECLARE @GuildID INT
|
||||
DECLARE @TABLE TABLE
|
||||
(
|
||||
nRowID INT IDENTITY(1,1)
|
||||
, nGuildID INT
|
||||
)
|
||||
|
||||
INSERT INTO @TABLE
|
||||
SELECT nGuildID FROM TblGuildInfo
|
||||
WHERE nGuildID NOT IN (SELECT Distinct nGuildID FROM TblGuildMember WHERE nPosition = 1)
|
||||
|
||||
SET @ROW = @@ROWCOUNT
|
||||
|
||||
WHILE (@ROW > 0)
|
||||
BEGIN
|
||||
|
||||
SELECT @GuildID = nGuildID FROM @TABLE WHERE nRowID = @ROW
|
||||
|
||||
UPDATE TblGuildMember
|
||||
SET nPosition = 1
|
||||
FROM (
|
||||
SELECT TOP 1 B.nGuildID,nCID FROM CharInfo A join TblGuildMember B
|
||||
ON A.CID = B.nCID
|
||||
WHERE nGuildID = @GuildID
|
||||
ORDER BY A.Level desc,A.Fame desc) C,TblGuildMember D
|
||||
|
||||
WHERE C.nGuildID = D.nGuildID AND C.nCID = D.nCID
|
||||
|
||||
SET @ROW = @ROW - 1
|
||||
END
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE [TblGameTime] ADD [EnterTime] [tinyint] NULL
|
||||
GO
|
||||
@@ -0,0 +1,3 @@
|
||||
Alter Table UserInfo
|
||||
Add KeyInfo varbinary(137)
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
UPDATE UserFirstLoginInfo
|
||||
SET TransferCharCount = 0
|
||||
Reference in New Issue
Block a user