BTW: To make the permament mount system work you have to change your code with this one in TGAME_GSP>dbo>functions>TChangedPetSystemToMountSy stem
PHP Code:
ALTER PROCEDURE [dbo].[TChangedPetSystemToMountSystem]
@dwUserID INT
AS
DECLARE @wCount SMALLINT
--ItemChanged
SET @wCount = 0
SELECT @wCount = COUNT(dlID) FROM TITEMTABLE WHERE dwOwnerID IN(SELECT dwCharID FROM TCHARTABLE WHERE dwUserID = @dwUserID) AND bOwnerType = 0 AND wItemID IN(7549,7550,7551,7552,7553,7554,7555,7556,7557)
SELECT @wCount = @wCount + COUNT(dlID) FROM TGLOBAL_GSP.DBO.TCASHITEMCABINETTABLE WHERE dwUserID = @dwUserID AND wItemID IN(7549,7550,7551,7552,7553,7554,7555,7556,7557)
IF(@wCount > 0)
BEGIN
EXEC TChangedMountItem @dwUserID, 7549, 7709, 7559
EXEC TChangedMountItem @dwUserID, 7550, 7709, 7560
EXEC TChangedMountItem @dwUserID, 7551, 7709, 7561
EXEC TChangedMountItem @dwUserID, 7552, 7530, 7562
EXEC TChangedMountItem @dwUserID, 7553, 7539, 7563
EXEC TChangedMountItem @dwUserID, 7554, 7548, 7564
EXEC TChangedMountItem @dwUserID, 7555, 7518, 7565
EXEC TChangedMountItem @dwUserID, 7556, 7709, 7566
EXEC TChangedMountItem @dwUserID, 7557, 7558, 7567
END
--PetChanged
SET @wCount = 0
SELECT @wCount = COUNT(wPetID) FROM TPETTABLE WHERE dwUserID = @dwUserID
IF(@wCount > 0)
BEGIN
EXEC TChangedPetToMount @dwUserID, 1, 7501, 0
EXEC TChangedPetToMount @dwUserID, 4, 7501, 0
EXEC TChangedPetToMount @dwUserID, 7, 7501, 0
EXEC TChangedPetToMount @dwUserID, 10, 7501, 0
EXEC TChangedPetToMount @dwUserID, 102, 7501, 0
EXEC TChangedPetToMount @dwUserID, 81, 7501, 0
EXEC TChangedPetToMount @dwUserID, 2, 7502, 0
EXEC TChangedPetToMount @dwUserID, 5, 7502, 0
EXEC TChangedPetToMount @dwUserID, 8, 7502, 0
EXEC TChangedPetToMount @dwUserID, 11, 7502, 0
EXEC TChangedPetToMount @dwUserID, 103, 7502, 0
EXEC TChangedPetToMount @dwUserID, 3, 7503, 0
EXEC TChangedPetToMount @dwUserID, 6, 7503, 0
EXEC TChangedPetToMount @dwUserID, 9, 7503, 0
EXEC TChangedPetToMount @dwUserID, 12, 7503, 0
EXEC TChangedPetToMount @dwUserID, 13, 7709, 7559
EXEC TChangedPetToMount @dwUserID, 14, 7709, 7560
EXEC TChangedPetToMount @dwUserID, 15, 7709, 7561
EXEC TChangedPetToMount @dwUserID, 16, 7518, 7565
EXEC TChangedPetToMount @dwUserID, 17, 7709, 7566
END
This function will create you a permament mount on your account and also some cash and gold! if you want to change something just edit!
PS: The function is 100% woking and contains no network errors etc.!
Just copy this code and change it with the old in TGAME_GSP>Dbo>Fuctions>TCreateChar
PHP 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 TINYINT
@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
/*
* Hier könnt ihr die Variablen ändern!
*/
SET @bOriCountry = 3
SET @bLevel = 90
SET @dwExp = 0
SET @wSpawnID = 15003
SET @wSkillPoint = 200
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 = 90
SET @wSkillPoint = 200
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 INTO TSKILLTABLE SELECT @dwCharID, wSkillID, 1, 0 FROM TSTARTSKILL WHERE bClassID=@bClass
COMMIT TRAN TCREATECHAR
DECLARE @bStartInven TINYINT
DECLARE @bStartSlot TINYINT
DECLARE @bStartChartType TINYINT
DECLARE @wStartItemID SMALLINT
DECLARE @bStartCount TINYINT
DECLARE CUR_STARTITEM CURSOR FOR
SELECT bInven, bSlot, bChartType, wItemID, bCount FROM TSTARTITEMCHART WHERE bCountry=@bCountry AND bClass = @bClass
OPEN CUR_STARTITEM
FETCH NEXT FROM CUR_STARTITEM INTO @bStartInven, @bStartSlot, @bStartChartType, @wStartItemID, @bStartCount
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC TPutItemInInven @dwCharID, @bStartInven, @bStartSlot, @bStartChartType, @wStartItemID, @bStartCount
FETCH NEXT FROM CUR_STARTITEM INTO @bStartInven, @bStartSlot, @bStartChartType, @wStartItemID, @bStartCount
END
CLOSE CUR_STARTITEM
DEALLOCATE CUR_STARTITEM
-- 편지보내기 ------------------------------------------------------------------------------------
IF(@bslot = 0)
BEGIN
DECLARE @dwPostID INT
DECLARE @dwRecvID INT
DECLARE @szTitle VARCHAR(256)
DECLARE @szMessage VARCHAR(2048)
DECLARE @bLenTitle BINARY(4)
DECLARE @bLenMessage BINARY(4)
DECLARE @szT VARCHAR(8)
DECLARE @szM VARCHAR(8)
DECLARE @dateCreated SMALLDATETIME
SET @dateCreated = GetDate()
SET @szTitle = 'Welcome On Our Server! '
SET @szMessage = 'Hey ' + @szName +'
Nice to meet you here. We are proud to announce that we offer more chances to new player now. Every new player will get a 175% permanent mount!
Visit us on www.4Story.com
Thank you for playing.'
SET @bLenTitle = DATALENGTH(@szTitle)
SET @bLenMessage = DATALENGTH(@szMessage)
SET @szT = RIGHT(master.dbo.fn_sqlvarbasetostr(@bLenTitle), 8)
SET @szTitle = @szT + @szTitle
SET @szM = RIGHT(master.dbo.fn_sqlvarbasetostr(@bLenMessage), 8)
SET @szMessage = @szM + @szMessage
EXEC TSavePost @dwPostID OUTPUT, @dwRecvID OUTPUT, 0, @dwCharID, @szName, 'Server Announcement',@szTitle,@szMessage,0,0,10,0,0,@dateCreated
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
IF NOT EXISTS(SELECT dwUserID FROM TPETTABLE WHERE dwUserID = @dwUserID)
BEGIN
DECLARE @szMountName VARCHAR(50)
SET @szMountName = @szNAME+'''s Mount'
SET @szMountName = REPLACE(@szMountName, 's''s', 's''')
INSERT INTO TPETTABLE (dwUserID, wPetID, szName, timeuse) VALUES(@dwUserID, 6, @szMountName, 0)
END
IF NOT EXISTS(SELECT dwUserID FROM TGLOBAL_GSP.dbo.TCASHTESTTABLE WHERE dwUserID = @dwUserID)
BEGIN
INSERT INTO TGLOBAL_GSP.dbo.TCASHTESTTABLE (dwUserID, dwCash, dwBonus) VALUES(@dwUserID, 100, 100)
END
RETURN @@ERROR