Code:
USE [ND_GAME_0]GO
/****** Object: StoredProcedure [dbo].[GM_Maker] Script Date: 20/06/2014 7:31:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create PROC [dbo].[GM_Maker_ByEmperor]
/* 인자*/
@acc varchar(24), --계정 1 @name varchar(12), --캐릭터 이름 2
@gm smallint, @clan smallint, @class smallint, @class_grade smallint,
@vsex smallint, --성별 3 @Consttitution int, --생기 4 @Zen int, --진기 5 @interlligence int, --영기 6 @dexterity int, --심기 7
@str int, --정기 8
@vhair smallint, --머리모양 9
@vface smallint, --얼굴모양 10
@vluck smallint, -- 운 11 @Vamor smallint, --상의 12
@vpants smallint, --하의 13 @zone smallint,
@x real, @z real, @Max_life_pw int, -- 최대 체력 14 @Max_force_pw int, -- 최대 내력 15 @Max_con_pw int, -- 최대 영력 16 @Null_space1 smallint, -- 최대 심력 17 @Null_space2 smallint, -- 최대 정력 18 @level smallint,
@BK bigint,
@GK int,
@acc_id int, -- 유저의 acc_uid 19
@vunique_id int OUTPUT, --유니크 아이디 20 @Result int OUTPUT --result값 21
AS
DECLARE @Max int, @alreadyName int
DECLARE @table_index INT
SET @alreadyName = 0
/* 캐릭터 이름 @name 을 조건으로 동명의 다른 컬럼이 존재하는지
검사한다.(캐릭터 이름의 고유이성을 지켜주기 위해)*/
SELECT @alreadyName = 1 FROM ND_V01_Charac WHERE chr_name = @name --@@rowcount에 결과컬럼 저장
/* 같은 캐릭터 이름을 같은 컬럼이 이미 존재한다면
작업을 포기하고 @Result = 1을 OUTPUT하고 종료한다.*/
if @alreadyName > 0
BEGIN
SET @Result = 1
RETURN
END
SET @Max = 0
SELECT @Max = count(*) FROM ND_V01_Charac WHERE acc_id = @acc_id AND delete_flag = 0 - @Max ( 계정이 갖고있는 캐릭터수)
if @Max > 2
BEGIN
SET @Result = 2
RETURN
END
SET @Result = 1
--BEGIN TRAN --트랜잭션 처리 시작
INSERT ND_V01_Charac
([user_id],
[chr_name],
[gm],
[party],
[class],
[class_grade],
[sex],
[hair],
[face],
[luck] ,
[acc_id])
VALUES
(@acc,
@name,
@gm,
@clan,
@class,
@class_grade,
@vsex,
@vhair,
@vface,
@vluck,
@acc_id)
/* 캐릭터 이름 @name을 조건으로 SELECT 쿼리를 실행하여
해당 캐릭터의 유티크아이디를 OUTPUT 인수 @vUid 로 얻어진다.*/
SELECT @vunique_id=unique_id FROM ND_V01_Charac WHERE [chr_name] = @name
/* 위 셀렉트 문으로 얻어진 @vUid(유니크아이디값)를 이용해 4개 테이블을 동시 생성 */
-- 인벤토리 버전 2 에서 추가된 사항.
EXEC DSSP_InvenV2_FindTableIndex @vunique_id, @table_index OUTPUT
INSERT ND_V01_Charac_Level
(unique_id, max_life_pw, max_force_pw, max_con_pw, constitution, zen, intelligence, dexterity, [str])
VALUES
(@vunique_id, @Max_life_pw, @Max_force_pw, @Max_con_pw, @Consttitution, @Zen, @interlligence, @dexterity, @str)
INSERT ND_V01_CharacState
(unique_id, inner_level, gong, honor)
VALUES
(@vunique_id, @level, @BK, @GK)
INSERT ND_V01_CurBasicInfo
(unique_id, zone, x, z, vital_power, inner_power, soul_power, heart_power, stamina_power)
VALUES ( @vunique_id, @zone, @x, @z, @Max_life_pw, @Max_force_pw, @Max_con_pw, @Null_space1, @Null_space2)
INSERT ND_V01_Charac_Martial
(unique_id) VALUES ( @vunique_id)
INSERT ND_V01_Charac_Quest_Data
(unique_id) VALUES (@vunique_id)
INSERT ND_V01_FriendList
(unique_id) VALUES (@vunique_id)
INSERT ND_V01_Charac_MailList
(unique_id) VALUES(@vunique_id)
INSERT ND_V01_Charac_Nic
(unique_id) VALUES(@vunique_id)
INSERT ND_V01_Charac_Match
(unique_id) VALUES (@vunique_id)
INSERT ND_V01_Charac_Effect
(unique_id) VALUES (@vunique_id)
/*
INSERT ND_V03_Dismantle_Bag ( cuid, slot ) VALUES ( @vunique_id, 0 )
INSERT ND_V03_Dismantle_Bag ( cuid, slot ) VALUES ( @vunique_id, 1 )
INSERT ND_V03_Dismantle_Bag ( cuid, slot ) VALUES ( @vunique_id, 2 )
INSERT ND_V03_Dismantle_Bag ( cuid, slot ) VALUES ( @vunique_id, 3 )
INSERT ND_V03_Dismantle_Bag ( cuid, slot ) VALUES ( @vunique_id, 4 )
*/
--COMMIT TRAN SET @Result = 0