Segue abaixo uma imagem de como ficará o personagem



Código:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[cabal_sp_newchar]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[cabal_sp_newchar]
GO

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO


/****** Object:  Stored Procedure dbo.cabal_sp_newchar    Script Date: 2008-4-14 5:52:47 ******/






CREATE  PROCEDURE [dbo].[cabal_sp_newchar] (@charname varchar(16), @characteridx  int, @style int, @stylemast int)
AS
begin
SET NOCOUNT ON
	if( exists ( select * from cabal_badwoard where badword=@charname ) ) select convert(int,0x04)	
	else if( exists ( select * from cabal_character_table where Name=@charname ) ) select convert(int,0x03)
	else if( exists ( select * from cabal_character_table where characteridx=@characteridx ) ) select convert(int,0x02)
	else if( @stylemast < 0x01 or @stylemast > 0x06 ) select convert(int,0x02)
	else 
	begin
		-----------------------------------------------------------------------------------------------
		declare @RegTime dateTime, @userNum int, @serverIdx int, @result int
		set @userNum = @characterIdx/8
		set @serverIdx = dbo.getServerIdx() 
		set @RegTime = getDate()
		set @result = convert(int, 0xA0) + @stylemast
		------------------------------------------------------------------------------------------------

		select charTable.*, etcTable.equipmentData, etcTable.inventoryData, etcTable.skillData,
			   etcTable.quickSlotData, etcTable.questData, etcTable.questFlagsData
		into #tempTable
		from GAMESERVER.account.dbo.cabal_newCharData_table as charTable, 
			 GAMESERVER.account.dbo.cabal_newEtcData_table as etcTable,
			( select top 1 charDataIdx, etcDataIdx from GAMESERVER.account.dbo.cabal_newFlagData_table
			 where channel = @serverIdx + 1 ) as flagTable
		where flagTable.etcDataIdx = etcTable.dataIdx and flagTable.charDataIdx = charTable.dataIdx
			  and charTable.classType = etcTable.classType and charTable.classType = @stylemast
		
		IF( NOT EXISTS ( select * from #tempTable)) 
		BEGIN
			select convert(int, 0x01)
			drop table #tempTable
			return
		END
		-----------------------------------------------------------------------------------------------		
		-- 캐릭터 카운트 증가
		EXEC GAMESERVER.account.dbo.cabal_sp_update_character_count @userNum, @serverIdx, 1
		
		--캐릭터 생성
		insert into cabal_character_table( CharacterIdx, Name, LEV, [EXP], [STR], DEX, [INT], PNT, Rank, Alz,
			WorldIdx, [Position], Style, HP, MP, SP, SwdPNT, MagPNT, RankEXP, Flags, WarpBField, MapsBField, Reputation, Reserved1 )
		select  @characteridx, @charname, LEV, [EXP], [STR], [DEX], [INT], [PNT], Rank, Alz,
				WorldIdx, Position, @style, HP, MP, SP, SwdPNT, MagPNT, RankEXP, Flags, WarpBField, MapsBField, Reputation, Reserved1
		from #TempTable
		
		begin tran 
		insert into cabal_equipment_table (characterIdx, data) select @characteridx, equipmentData from #TempTable
		insert into cabal_inventory_table (characterIdx, data) select @characteridx, inventoryData from #TempTable
		insert into cabal_skilllist_table (characterIdx, data) select @characteridx, skillData from #TempTable
		insert into cabal_quickslot_table (characterIdx, data) select @characteridx, quickSlotData from #TempTable
		insert into cabal_questdata_table (characterIdx, data, flags) select @characteridx, questData, questFlagsData from #TempTable
		commit tran
		----------------------------------------------------------------------------------------------

		-- 리턴값 0xA1 ~ 0xA6
		drop table #tempTable
		select convert(int, @result)
		-----------------------------------------------------------------------------------------------	
	end

SET NOCOUNT OFF
end
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
Créditos: Saly