[ECT] All skill on char create

04/21/2013 12:44 julianjl#1
Put it in TCREATECHAR

Code:
/* CREATE CHARACTER PROCESS

========================================================
PARAMETER
========================================================
@szNAME		VARCHAR(50)
@dwCharID		INT		OUTPUT
@dwUserID		INT
@bSlot			TINYINT
@bClass		TINYINT
@bRace		TINYINT
@bCountry		TINYINT
@bSex			TINYINT
@bHair			TINYINT
@bFace		TINYINT
@bBody		TINYINTd
@bPants		TINYINT
@bHand		TINYINT
@bFoot			TINYINT

========================================================
RETURN VALUE
========================================================
0	: SUCCESS
1	: NO GROUP
2	: DUPLICATE NAME
3	: INVALID SLOT
4	: Non Class ID 

========================================================
PROCESS
========================================================
1. Check duplicate name
2. Check slot
3. Insert character data

*/


ALTER PROCEDURE [dbo].[TCreateChar]
	@bCreateCnt		TINYINT	OUTPUT,
	@szNAME		VARCHAR(50),
	@dwCharID		INT		OUTPUT,
	@dwUserID		INT,
	@bGroup		TINYINT,
	@bSlot			TINYINT,
	@bClass		TINYINT,
	@bRace		TINYINT,
	@bCountry		TINYINT,
	@bSex			TINYINT,
	@bHair			TINYINT,
	@bFace		TINYINT,
	@bBody		TINYINT,
	@bPants		TINYINT,
	@bHand		TINYINT,
	@bFoot			TINYINT
AS
	DECLARE @dwCharSeq INT
	DECLARE @dwMP	INT
	DECLARE @dwHP	INT
	DECLARE @fPosX	FLOAT
	DECLARE @fPosY	FLOAT
	DECLARE @fPosZ	FLOAT
	DECLARE @wDIR	SMALLINT
	DECLARE @wSpawnID SMALLINT
	DECLARE @nCheckGlobal INT
	DECLARE @bRealSex	TINYINT

	SET @bCreateCnt = 0
	SET @dwCharID = 0
	SET @dwMP = 2
	SET @dwHP = 2

	SELECT TOP 1 @dwHP = @dwHP + wCON, @dwMP = @dwMP + wMEN FROM TCLASSCHART WHERE bClassID = @bClass
	SELECT TOP 1 @dwHP = @dwHP + wCON, @dwMP = @dwMP + wMEN FROM TRACECHART WHERE bRaceID = @bRace

	SET @dwHP = 7 * @dwHP + 1
	SET @dwMP = 9 * @dwMP + 1

	IF EXISTS( SELECT TOP 1 dwCharID FROM TCHARTABLE WHERE szNAME = @szNAME)
		RETURN 2
	/*
   	 * Duplicate npc name 
	 */
	IF EXISTS(SELECT TOP 1 * FROM TNPCCHART WHERE szNAME = @szNAME)
		RETURN 2
	/*
	 * Duplicate monster name
	 */
	IF EXISTS(SELECT TOP 1 * FROM TMONSTERCHART WHERE szNAME = @szNAME)
		RETURN 2
	/*
	 * Invalid slot
	 */
	IF EXISTS(SELECT TOP 1 dwCharID FROM TCHARTABLE WHERE dwUserID = @dwUserID AND bSlot = @bSlot AND bDelete = 0)
		RETURN 3
	/*
 	 * Check the country
	 */

	DECLARE @bOriCountry TINYINT
	DECLARE @bLevel	TINYINT
	DECLARE @dwExp	INT
	DECLARE @wSkillPoint	SMALLINT
  DECLARE @dwGold INT
	SET @bOriCountry = 3
	SET @bLevel = [COLOR="Red"]level in create[/COLOR]
	SET @dwExp = 0
	SET @wSpawnID = 15003
	SET @wSkillPoint = 10000
SET @dwGold = 20


	SELECT TOP 1 @bOriCountry = bOriCountry FROM TCHARTABLE WHERE dwUserID=@dwUserID AND bDelete=0 AND bOriCountry < 2
	IF(@bOriCountry < 2)
	BEGIN
		SET @bCountry = @bOriCountry
		SET @bLevel =  [COLOR="Red"]level in create[/COLOR]
		SET @wSkillPoint = 10000
SET @dwGold = 20
		SELECT @dwExp = dwExp FROM TLEVELCHART WHERE bLevel = 8
		IF(@bOriCountry = 0)
			SET @wSpawnID = 15001
		ELSE
			SET @wSpawnID = 15002
	END
	ELSE IF(@bCountry <> 4)
		RETURN 4

	SET @fPosX 	= 587.04
	SET @fPosY 	= 31.33
	SET @fPosZ 	= 603.82
	SET @wDIR = 1640

	EXEC @nCheckGlobal = TGLOBAL_GSP.DBO.TCreateChar
		@dwCharSeq  OUTPUT,
		@bCreateCnt OUTPUT,
		@bRealSex OUTPUT,
		@dwUserID,
		@bGroup,
		@dwCharID,
		@bSlot,
		@szNAME,
		@bClass,
		@bRace,
		@bCountry,
		@bSex,
		@bHair,		-- bHair
		@bFace,	-- bFace
		@bBody,	-- bBody
		@bPants,	-- bPants
		@bHand,	-- bHand
		@bFoot,	-- bFoot		
		@bLevel,
		@dwExp	-- dwExp

	IF(@nCheckGlobal <> 0)
		RETURN @nCheckGlobal

	BEGIN TRAN TCREATECHAR

	INSERT INTO TCHARTABLE
	(
		dwUserID,
		bSlot,
		szNAME,
		bRace,
		bCountry,
		bOriCountry,
		bSex,
		bRealSex,
		bClass,
		bLevel,
		bHair,
		bFace,
		bBody,
		bPants,
		bHand,
		bFoot,
		dwEXP,
		dwHP,
		dwMP,
		wSkillPoint,
		dwGold,
		dwSilver,
		dwCooper,
		wMapID,
		wSpawnID,
		wTemptedMon,
		bAftermath,
		fPosX,
		fPosY,
		fPosZ,
		wDIR
	) 
	VALUES
	(
		@dwUserID,	-- dwUserID
		@bSlot,		-- bSlot
		@szNAME,	-- szNAME
		@bRace,	-- bRace
		@bCountry,	-- bCountry
		@bOriCountry,
		@bSex,		-- bSex
		@bRealSex,	-- bRealSex
		@bClass,	-- bClass
		@bLevel,	-- bLevel
		@bHair,		-- bHair
		@bFace,
		@bBody,
		@bPants,
		@bHand,
		@bFoot,
		@dwExp,
		@dwHP,
		@dwMP,
		@wSkillPoint,
		0,
		0,
		0,
		2010,
		@wSpawnID,
		0,
		0,
		@fPosX,
		@fPosY,
		@fPosZ,
		@wDIR
	)

	SET @dwCharID = @@IDENTITY
	INSERT INTO TINVENTABLE
	(
		dwCharID,
		bInvenID,
		wItemID,
		dEndTime
	) 
	VALUES
	(
		@dwCharID,
		255, 
		3,
		0
	)

	INSERT INTO TINVENTABLE
	(
		dwCharID,
		bInvenID,
		wItemID,
		dEndTime
	) 
	VALUES
	(
		@dwCharID,
		254, 
		2,
		0
	)

	INSERT INTO TCABINETTABLE VALUES(@dwCharID, 0, 1)
	INSERT TSKILLTABLE (dwCharID, wSkillID, bLevel, dwRemainTick) SELECT @dwCharid, wID, bmaxlevel, 0 FROM TSKILLCHART WHERE (dwClassid & power(2,@bClass) <> 0) and bCanLearn =1
	COMMIT TRAN TCREATECHAR

	SELECT TOP 1 @bOriCountry = bOriCountry FROM TCHARTABLE WHERE dwUserID=@dwUserID AND bDelete=0 AND (bOriCountry in (0,1,3))
	BEGIN
		IF(@bOriCountry = 0)
EXEC 4STORYFREEStartstuffV @szNAME
		ELSE IF (@bOriCountry = 1)
EXEC 4STORYFREEStartstuffD @szNAME
		ELSE IF (@bOriCountry = 3)
EXEC 4STORYFREEStartstuffG @szNAME
END



----
	UPDATE TGLOBAL_GSP.DBO.TALLCHARTABLE SET dwCharID = @dwCharID WHERE dwSeq = @dwCharSeq

	INSERT INTO THOTKEYTABLE 
		SELECT @dwCharID, bInvenID, bType1, wID1, bType2, wID2, bType3, wID3, bType4, wID4, bType5, wID5,
			  bType6, wID6, bType7, wID7, bType8, wID8, bType9, wID9, bType10, wID10, bType11, wID11, bType12, wID12 
		FROM TSTARTHOTKEY WHERE bClassID=@bClass

	UPDATE THOTKEYTABLE SET wID12 = 1+@bRace WHERE dwCharID = @dwCharID and bInvenID = 1

	IF EXISTS( SELECT bClassID FROM TSTARTRECALL WHERE bClassID = @bClass AND bCountryID = @bCountry)
	BEGIN
		DECLARE @dwMonID INT
		DECLARE @wMonTemp SMALLINT
		DECLARE @dwATTR INT
		DECLARE @dwMaxHP INT
		DECLARE @dwMaxMP INT
		SET @wMonTemp = 0
		SELECT @wMonTemp = wMonID FROM TSTARTRECALL WHERE bClassID = @bClass AND bCountryID = @bCountry
		IF(@wMonTemp > 0)
		BEGIN
			SELECT @dwATTR = wSummonAttr FROM TMONSTERCHART WHERE wID= @wMonTemp
			SELECT @dwMaxHP=dwMaxHP, @dwMaxMP = dwMaxMP FROM TMONATTRCHART WHERE wID=@dwATTR AND bLevel=1
			UPDATE TCHARTABLE SET wTemptedMon = @wMonTemp WHERE dwCharID = @dwCharID
			SET @dwATTR = @dwATTR + POWER(2,16)
			EXEC TCreateRecallMon 
				@dwMonID OUTPUT, 
				@dwCharID, 
				@wMonTemp, 
				0, 
				@dwATTR, 
				1, 
				@dwMaxHP, 
				@dwMaxMP, 
				1,
				@fPosX, 
				@fPosY,

				@fPosZ,
				0
		END
	END
Replace level in create to lv in create
exemple: 99
04/21/2013 14:30 acooarioom#2
I haven't tried it, but it looks like a good script :)
Just a side note, change [ECT] to [ETC] on the title ;)
04/21/2013 14:36 julianjl#3
thank you ;)
04/21/2013 17:16 EliteTuerie#4
Quote:
Originally Posted by julianjl View Post
Put it in TCREATECHAR

Code:
/* CREATE CHARACTER PROCESS

========================================================
PARAMETER
========================================================
@szNAME		VARCHAR(50)
@dwCharID		INT		OUTPUT
@dwUserID		INT
@bSlot			TINYINT
@bClass		TINYINT
@bRace		TINYINT
@bCountry		TINYINT
@bSex			TINYINT
@bHair			TINYINT
@bFace		TINYINT
@bBody		TINYINTd
@bPants		TINYINT
@bHand		TINYINT
@bFoot			TINYINT

========================================================
RETURN VALUE
========================================================
0	: SUCCESS
1	: NO GROUP
2	: DUPLICATE NAME
3	: INVALID SLOT
4	: Non Class ID 

========================================================
PROCESS
========================================================
1. Check duplicate name
2. Check slot
3. Insert character data

*/


ALTER PROCEDURE [dbo].[TCreateChar]
	@bCreateCnt		TINYINT	OUTPUT,
	@szNAME		VARCHAR(50),
	@dwCharID		INT		OUTPUT,
	@dwUserID		INT,
	@bGroup		TINYINT,
	@bSlot			TINYINT,
	@bClass		TINYINT,
	@bRace		TINYINT,
	@bCountry		TINYINT,
	@bSex			TINYINT,
	@bHair			TINYINT,
	@bFace		TINYINT,
	@bBody		TINYINT,
	@bPants		TINYINT,
	@bHand		TINYINT,
	@bFoot			TINYINT
AS
	DECLARE @dwCharSeq INT
	DECLARE @dwMP	INT
	DECLARE @dwHP	INT
	DECLARE @fPosX	FLOAT
	DECLARE @fPosY	FLOAT
	DECLARE @fPosZ	FLOAT
	DECLARE @wDIR	SMALLINT
	DECLARE @wSpawnID SMALLINT
	DECLARE @nCheckGlobal INT
	DECLARE @bRealSex	TINYINT

	SET @bCreateCnt = 0
	SET @dwCharID = 0
	SET @dwMP = 2
	SET @dwHP = 2

	SELECT TOP 1 @dwHP = @dwHP + wCON, @dwMP = @dwMP + wMEN FROM TCLASSCHART WHERE bClassID = @bClass
	SELECT TOP 1 @dwHP = @dwHP + wCON, @dwMP = @dwMP + wMEN FROM TRACECHART WHERE bRaceID = @bRace

	SET @dwHP = 7 * @dwHP + 1
	SET @dwMP = 9 * @dwMP + 1

	IF EXISTS( SELECT TOP 1 dwCharID FROM TCHARTABLE WHERE szNAME = @szNAME)
		RETURN 2
	/*
   	 * Duplicate npc name 
	 */
	IF EXISTS(SELECT TOP 1 * FROM TNPCCHART WHERE szNAME = @szNAME)
		RETURN 2
	/*
	 * Duplicate monster name
	 */
	IF EXISTS(SELECT TOP 1 * FROM TMONSTERCHART WHERE szNAME = @szNAME)
		RETURN 2
	/*
	 * Invalid slot
	 */
	IF EXISTS(SELECT TOP 1 dwCharID FROM TCHARTABLE WHERE dwUserID = @dwUserID AND bSlot = @bSlot AND bDelete = 0)
		RETURN 3
	/*
 	 * Check the country
	 */

	DECLARE @bOriCountry TINYINT
	DECLARE @bLevel	TINYINT
	DECLARE @dwExp	INT
	DECLARE @wSkillPoint	SMALLINT
  DECLARE @dwGold INT
	SET @bOriCountry = 3
	SET @bLevel = [COLOR="Red"]level in create[/COLOR]
	SET @dwExp = 0
	SET @wSpawnID = 15003
	SET @wSkillPoint = 10000
SET @dwGold = 20


	SELECT TOP 1 @bOriCountry = bOriCountry FROM TCHARTABLE WHERE dwUserID=@dwUserID AND bDelete=0 AND bOriCountry < 2
	IF(@bOriCountry < 2)
	BEGIN
		SET @bCountry = @bOriCountry
		SET @bLevel =  [COLOR="Red"]level in create[/COLOR]
		SET @wSkillPoint = 10000
SET @dwGold = 20
		SELECT @dwExp = dwExp FROM TLEVELCHART WHERE bLevel = 8
		IF(@bOriCountry = 0)
			SET @wSpawnID = 15001
		ELSE
			SET @wSpawnID = 15002
	END
	ELSE IF(@bCountry <> 4)
		RETURN 4

	SET @fPosX 	= 587.04
	SET @fPosY 	= 31.33
	SET @fPosZ 	= 603.82
	SET @wDIR = 1640

	EXEC @nCheckGlobal = TGLOBAL_GSP.DBO.TCreateChar
		@dwCharSeq  OUTPUT,
		@bCreateCnt OUTPUT,
		@bRealSex OUTPUT,
		@dwUserID,
		@bGroup,
		@dwCharID,
		@bSlot,
		@szNAME,
		@bClass,
		@bRace,
		@bCountry,
		@bSex,
		@bHair,		-- bHair
		@bFace,	-- bFace
		@bBody,	-- bBody
		@bPants,	-- bPants
		@bHand,	-- bHand
		@bFoot,	-- bFoot		
		@bLevel,
		@dwExp	-- dwExp

	IF(@nCheckGlobal <> 0)
		RETURN @nCheckGlobal

	BEGIN TRAN TCREATECHAR

	INSERT INTO TCHARTABLE
	(
		dwUserID,
		bSlot,
		szNAME,
		bRace,
		bCountry,
		bOriCountry,
		bSex,
		bRealSex,
		bClass,
		bLevel,
		bHair,
		bFace,
		bBody,
		bPants,
		bHand,
		bFoot,
		dwEXP,
		dwHP,
		dwMP,
		wSkillPoint,
		dwGold,
		dwSilver,
		dwCooper,
		wMapID,
		wSpawnID,
		wTemptedMon,
		bAftermath,
		fPosX,
		fPosY,
		fPosZ,
		wDIR
	) 
	VALUES
	(
		@dwUserID,	-- dwUserID
		@bSlot,		-- bSlot
		@szNAME,	-- szNAME
		@bRace,	-- bRace
		@bCountry,	-- bCountry
		@bOriCountry,
		@bSex,		-- bSex
		@bRealSex,	-- bRealSex
		@bClass,	-- bClass
		@bLevel,	-- bLevel
		@bHair,		-- bHair
		@bFace,
		@bBody,
		@bPants,
		@bHand,
		@bFoot,
		@dwExp,
		@dwHP,
		@dwMP,
		@wSkillPoint,
		0,
		0,
		0,
		2010,
		@wSpawnID,
		0,
		0,
		@fPosX,
		@fPosY,
		@fPosZ,
		@wDIR
	)

	SET @dwCharID = @@IDENTITY
	INSERT INTO TINVENTABLE
	(
		dwCharID,
		bInvenID,
		wItemID,
		dEndTime
	) 
	VALUES
	(
		@dwCharID,
		255, 
		3,
		0
	)

	INSERT INTO TINVENTABLE
	(
		dwCharID,
		bInvenID,
		wItemID,
		dEndTime
	) 
	VALUES
	(
		@dwCharID,
		254, 
		2,
		0
	)

	INSERT INTO TCABINETTABLE VALUES(@dwCharID, 0, 1)
	INSERT TSKILLTABLE (dwCharID, wSkillID, bLevel, dwRemainTick) SELECT @dwCharid, wID, bmaxlevel, 0 FROM TSKILLCHART WHERE (dwClassid & power(2,@bClass) <> 0) and bCanLearn =1
	COMMIT TRAN TCREATECHAR

	SELECT TOP 1 @bOriCountry = bOriCountry FROM TCHARTABLE WHERE dwUserID=@dwUserID AND bDelete=0 AND (bOriCountry in (0,1,3))
	BEGIN
		IF(@bOriCountry = 0)
EXEC 4STORYFREEStartstuffV @szNAME
		ELSE IF (@bOriCountry = 1)
EXEC 4STORYFREEStartstuffD @szNAME
		ELSE IF (@bOriCountry = 3)
EXEC 4STORYFREEStartstuffG @szNAME
END



----
	UPDATE TGLOBAL_GSP.DBO.TALLCHARTABLE SET dwCharID = @dwCharID WHERE dwSeq = @dwCharSeq

	INSERT INTO THOTKEYTABLE 
		SELECT @dwCharID, bInvenID, bType1, wID1, bType2, wID2, bType3, wID3, bType4, wID4, bType5, wID5,
			  bType6, wID6, bType7, wID7, bType8, wID8, bType9, wID9, bType10, wID10, bType11, wID11, bType12, wID12 
		FROM TSTARTHOTKEY WHERE bClassID=@bClass

	UPDATE THOTKEYTABLE SET wID12 = 1+@bRace WHERE dwCharID = @dwCharID and bInvenID = 1

	IF EXISTS( SELECT bClassID FROM TSTARTRECALL WHERE bClassID = @bClass AND bCountryID = @bCountry)
	BEGIN
		DECLARE @dwMonID INT
		DECLARE @wMonTemp SMALLINT
		DECLARE @dwATTR INT
		DECLARE @dwMaxHP INT
		DECLARE @dwMaxMP INT
		SET @wMonTemp = 0
		SELECT @wMonTemp = wMonID FROM TSTARTRECALL WHERE bClassID = @bClass AND bCountryID = @bCountry
		IF(@wMonTemp > 0)
		BEGIN
			SELECT @dwATTR = wSummonAttr FROM TMONSTERCHART WHERE wID= @wMonTemp
			SELECT @dwMaxHP=dwMaxHP, @dwMaxMP = dwMaxMP FROM TMONATTRCHART WHERE wID=@dwATTR AND bLevel=1
			UPDATE TCHARTABLE SET wTemptedMon = @wMonTemp WHERE dwCharID = @dwCharID
			SET @dwATTR = @dwATTR + POWER(2,16)
			EXEC TCreateRecallMon 
				@dwMonID OUTPUT, 
				@dwCharID, 
				@wMonTemp, 
				0, 
				@dwATTR, 
				1, 
				@dwMaxHP, 
				@dwMaxMP, 
				1,
				@fPosX, 
				@fPosY,

				@fPosZ,
				0
		END
	END
Replace level in create to lv in create
exemple: 99
LOL ---> It can be done manually
04/21/2013 17:30 julianjl#5
oh develop your small server and fool me peace ok