PS: unten ist auch die erste Nachricht enthalten, die man erhält, wenn man mit dem ersten Character ins Spiel geht. Diese könnt ihr wieder anpassen, ich habe einfach nur nochmal den Spielernamen hinzugefügt, um dich Leute persönlich anzusprechen
An dieser Stelle müsste jetzt eigentlich ein Name auftauchen, der bereits eine kleine Funktion für das Geld vergeben geschrieben hatte, alleridngs finde ich ihn gerade nicht
Wie dem auch sei. Einige von euch wollen ja, wenn man einen neuen Account erstellt demjenigen Geld & Cash vergeben. Da ich für die Cashvergabe noch keine Funktion gesehen habe, will ich meine (funktionierende) einmal für euch reinschreiben.
Das ganze muss in die Funktion unter TGAME_GSP>Funktionen>TCreateChar. Dann Dienste neu Starten und für jeden neuen erstellen Character werden die Menge Gold & Cash gut geschrieben, wie ihr unten in den Variable schreibt.
Wenn ich für einzelne Accounts die Menge ändern wollt, könnt ihr ganz leicht in TGLOBAL_GSP>>TCASHTESTTABLE gehen, dort findet ihr dann die jeweilige Account ID und deren Cash. Hier könnt ihr dann einfach wieder die Zahl ändern abspeichern und fertig ist.
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
SET @bOriCountry = 3
SET @bLevel = 1
SET @dwExp = 0
SET @wSpawnID = 15003
SET @wSkillPoint = 0
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 = 9
SET @wSkillPoint = 8
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
DECLARE @dwStartGold INT = 0
IF(@bSlot = 0)
SET @dwStartGold = 1000
DECLARE @dwCash INT
DECLARE @dwBonus INT
SET @dwCash = 10000
SET @dwBonus = 10000
SELECT szNAME FROM TGLOBAL_GSP.dbo.TGROUP WHERE szNAME = @dwUserID
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,
@dwCash,
@dwBonus
)
END
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,
@dwStartGold,
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
-- 편지보내기 ------------------------------------------------------------------------------------
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 = 'Willkommen, ' +@szName
SET @szMessage = 'Lieber' + @szName +'
Wir freuen uns, dich auf dem Server begüßen zu dürfen!'
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 Team',@szTitle,@szMessage,0,0,0,0,0,@dateCreated
-----------------------------------------------------------------------------------------------------------------------------
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
DECLARE @szMountName VARCHAR(50)
SET @szMountName = @szNAME+'''s Mount'
SET @szMountName = REPLACE(@szMountName, 's''s', 's''')
INSERT TMOUNTTABLE (dwCharID, wMountID, szName, dEndTime) VALUES(@dwCharID, 1+@bRace, @szMountName, 0)
RETURN @@ERROR