server-re/decomp/schema/RustyHearts/procs/up_create_guild.sql

117 lines
2.7 KiB
Transact-SQL

CREATE PROCEDURE [dbo].[up_create_guild]
@guild_name nvarchar(20),
@character_id [uniqueidentifier],
@guild_id [uniqueidentifier],
@master_name nvarchar(16),
@cost_money int,
@server smallint,
@max_member int,
@group_id smallint
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @my_money int,
@error_code int,
@Class int,
@Level int,
@check_guild_id uniqueidentifier,
@check_character_id uniqueidentifier,
@check_member_id uniqueidentifier
SET @check_guild_id = NULL;
SET @check_character_id = NULL;
SET @check_member_id = NULL;
BEGIN TRY
BEGIN TRAN;
SET @error_code = 1;
SELECT @check_character_id = [character_id], @Class = [Class], @Level = [level], @my_money = [gold] FROM [dbo].[CharacterTable] WITH (READUNCOMMITTED) WHERE [character_id] = @character_id;
SELECT @check_guild_id = [guild_id] FROM GuildTable WITH (READUNCOMMITTED) WHERE [name] = @guild_name;
SELECT @check_member_id = [character_id] FROM GuildMemberTable WITH (READUNCOMMITTED) WHERE [character_id] = @character_id;
IF (@check_character_id IS NOT NULL) AND (@check_guild_id IS NULL) AND (@check_member_id IS NULL)
BEGIN
-- 돈 삭제 및 길드 설정
IF (@my_money - @cost_money) > 0
BEGIN
UPDATE [dbo].[CharacterTable] SET [gold] = (@my_money - @cost_money), [GuildID]=@guild_id WHERE [character_id] = @character_id
END
ELSE
BEGIN
UPDATE [dbo].[CharacterTable] SET [gold] = 0, [GuildID]=@guild_id WHERE [character_id] = @character_id
END
-- INSERT 길드 정보
INSERT INTO GuildTable
VALUES
( @guild_id, --0
@server,
@guild_name, --1
@character_id, --2 Master
0, --3 Exp
10000, --4 Point
4000100, --5 room_id
@max_member, --6 Max Member
'', --7 notice
'url', --8 icon
0, -- block_type
8191, -- permission01
2028, -- permission02
1920, -- permission03
1920, -- permission04
1920, -- permission05
1920, -- permission06
1920, -- permission07
0, -- permission08
1, -- level
@group_id,
0
);
-- INSERT 길드 멤버 정보
INSERT INTO GuildMemberTable
VALUES
( @guild_id,
@character_id,
@master_name,
'',
0,
@Class,
@Level,
GetDate()
);
--길드 창고 정보 추가
-- INSERT INTO tbl_Guild_Storage_Info VALUES (@guild_id, 1, 0, 0, 1)
SELECT ERROR_CODE = @error_code, * FROM GuildTable WITH (READUNCOMMITTED) WHERE guild_id = @guild_id
END
ELSE
BEGIN
SET @error_code = -1
SELECT ERROR_CODE = @error_code;
END
COMMIT TRAN;
END TRY
BEGIN CATCH
ROLLBACK TRAN;
SET @error_code = -1
SELECT ERROR_CODE = @error_code;
END CATCH
END