Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > 4Story
You last visited: Today at 17:30

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[TUT] Cash/Gold (Charcreate)

Discussion on [TUT] Cash/Gold (Charcreate) within the 4Story forum part of the MMORPGs category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Aug 2011
Posts: 286
Received Thanks: 240
[TUT] Cash/Gold (Charcreate)

EDIT: Aus Performance und Kosmetikgründen, habe ich die Funktion nocheinmal leicht angepasst. Des Weiteren habe ich euch einfach mal die ganze Funktion kopiert.

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 * @dwHP 1
    SET 
@dwMP * @dwMP 1

    
IF EXISTSSELECT 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=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(@dwCharID01)
    
INSERT INTO TSKILLTABLE SELECT @dwCharIDwSkillID10 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 bInvenbSlotbChartTypewItemIDbCount 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

--    &#54200;지보내기    ------------------------------------------------------------------------------------
    
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 OUTPUT0, @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 
@dwCharIDbInvenIDbType1wID1bType2wID2bType3wID3bType4wID4bType5wID5,
              
bType6wID6bType7wID7bType8wID8bType9wID9bType10wID10bType11wID11bType12wID12 
        FROM TSTARTHOTKEY WHERE bClassID
=@bClass

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

    
IF EXISTSSELECT 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 (dwCharIDwMountIDszNamedEndTimeVALUES(@dwCharID1+@bRace, @szMountName0)

    RETURN @@
ERROR 
xXxXHansXxXx is offline  
Thanks
7 Users
Old 03/11/2013, 08:23   #2
 
--N0N€--'s Avatar
 
elite*gold: 1
Join Date: Aug 2011
Posts: 160
Received Thanks: 87
Good job
--N0N€-- is offline  
Old 03/11/2013, 08:39   #3
 
elite*gold: 0
Join Date: Apr 2011
Posts: 219
Received Thanks: 69
Derjenige hieß übrigens "Syntaxfehler" wobei er aber eine Loginboni funktion geschrieben hat, und keine Vergabe an neue chars.
Thx4urWork
randleman is offline  
Old 03/11/2013, 11:16   #4
 
elite*gold: 0
Join Date: Dec 2012
Posts: 16
Received Thanks: 7
Veryyy nice!

Thanks for this bro!!
MCexNelsonSide is offline  
Old 03/11/2013, 11:18   #5
 
elite*gold: 5
Join Date: Jun 2011
Posts: 1,177
Received Thanks: 234
Wie immer gut ! Freue mich auf weitete zusammenarbeit
Bukkit123 is offline  
Old 03/11/2013, 12:36   #6
 
ceriwenz89a's Avatar
 
elite*gold: 6
Join Date: Jan 2009
Posts: 641
Received Thanks: 49
Mag das wer mal bitte genauer erklären ? findenicht mal die tgame_gsp datei ?
ceriwenz89a is offline  
Old 03/11/2013, 14:09   #7
 
elite*gold: 5
Join Date: Jun 2011
Posts: 1,177
Received Thanks: 234
Dazu braucht man auch einen Privat Server
Bukkit123 is offline  
Thanks
1 User
Old 03/11/2013, 14:56   #8
Moderator



 
stotterer09's Avatar
 
elite*gold: 26
Join Date: Dec 2010
Posts: 2,628
Received Thanks: 1,812
Also 2 Dinge:
Das kann jeder schreiben der SQL im Schulunterricht hatte
Das hat glaub ich schonmal Syntaxfehler gepostet also habe ich ein #closerequest gemacht

mfg
stotterer09 is offline  
Old 03/11/2013, 14:58   #9
 
Shyras's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 362
Received Thanks: 182
Quote:
Originally Posted by stotterer09 View Post
Also 2 Dinge:
Das kann jeder schreiben der SQL im Schulunterricht hatte
Das hat glaub ich schonmal Syntaxfehler gepostet also habe ich ein #closerequest gemacht

mfg
1. tut nix zur sache, manche leute können das gebrauchen
2. Nein hat er nicht. Er hat ne Function geshcrieben die beim Login Cash/Gold vergibt. Die hier vergibt einmalig beim Charerstellen.

Greez
Shyras is offline  
Thanks
1 User
Old 03/11/2013, 15:16   #10
 
elite*gold: 0
Join Date: Aug 2011
Posts: 286
Received Thanks: 240
Quote:
Originally Posted by stotterer09 View Post
Also 2 Dinge:
Das kann jeder schreiben der SQL im Schulunterricht hatte
Das hat glaub ich schonmal Syntaxfehler gepostet also habe ich ein #closerequest gemacht

mfg
3 Dinge: Nenn mir bitte auch nur eine Schule, die SQL im Unterricht anbietet. Da kannst du sicherlich lange suchen

2: Wie bereits gesagt, das ist kein WelcomeBack Bonus sondern ein Charcreative bonus.
3. Closequest daher genau so unnötig wie dein Beitrag^^
xXxXHansXxXx is offline  
Thanks
2 Users
Old 03/11/2013, 15:57   #11
 
Syntaxfehler's Avatar
 
elite*gold: 1
Join Date: Jan 2013
Posts: 335
Received Thanks: 292
Zum Festhalten:

- Ich habe ein WelcomeBack-Bonus geschrieben
- Hans hat ein TuT gemacht, wie man bei der Charaktererstellung
Gold und Cash vergeben lässt

Zur Function:

Bei jedem neuen Charakter wird eine neue Zeile in der TCASHTESTTABLE
angelegt. Das dürfte nicht so ganz funktionieren.

Der Cash muss entweder zum Bestehenden hinzugefügt werden,
oder du lässt ihn nur beim 1. Charakter hinzufügen.
Syntaxfehler is offline  
Old 03/11/2013, 16:16   #12
 
elite*gold: 0
Join Date: Aug 2011
Posts: 286
Received Thanks: 240
Quote:
Originally Posted by Syntaxfehler View Post
Zum Festhalten:

- Ich habe ein WelcomeBack-Bonus geschrieben
- Hans hat ein TuT gemacht, wie man bei der Charaktererstellung
Gold und Cash vergeben lässt

Zur Function:

Bei jedem neuen Charakter wird eine neue Zeile in der TCASHTESTTABLE
angelegt. Das dürfte nicht so ganz funktionieren.

Der Cash muss entweder zum Bestehenden hinzugefügt werden,
oder du lässt ihn nur beim 1. Charakter hinzufügen.
Habe die Funktion bereits getestet. Allerdings wird nur für den ersten Account das Geld und der Cash vergeben. Kannst es gerne nocheinmal selbst testen und mich korrigieren
xXxXHansXxXx is offline  
Old 03/11/2013, 16:25   #13
 
Syntaxfehler's Avatar
 
elite*gold: 1
Join Date: Jan 2013
Posts: 335
Received Thanks: 292
Es funktioniert wohl doch. Stichwort: Primary Key

Ich würde trotzdem noch die IF-Bedingung mit drumsetzen.
Einfach wegen der Sauberkeit.
Syntaxfehler is offline  
Old 03/11/2013, 17:45   #14
 
elite*gold: 0
Join Date: Aug 2011
Posts: 286
Received Thanks: 240
Quote:
Originally Posted by Syntaxfehler View Post
Es funktioniert wohl doch. Stichwort: Primary Key

Ich würde trotzdem noch die IF-Bedingung mit drumsetzen.
Einfach wegen der Sauberkeit.
Done
xXxXHansXxXx is offline  
Old 03/23/2013, 14:26   #15
 
elite*gold: 0
Join Date: Mar 2011
Posts: 306
Received Thanks: 156
This is giving unable to find the world error.
jibi1996 is offline  
Reply


Similar Threads Similar Threads
[Source/Resource Release] Mehr Haare/Gesichter + bei CharCreate
01/10/2012 - Flyff PServer Guides & Releases - 12 Replies
Hi Leute, mir kam grad die Idee euch zu zeigen wie man neue Gesichter oder auch neue Haare einfügt :) Öffnet die defineNeuz.h Nicht nur in den Resourcen der Files/des Clients! Sondern auch im Source :)
Selling your RS gold for Cash ,RuneScape gold for Cash. any amount !!
09/10/2011 - Runescape Trading - 2 Replies
HELLO EVERYONE I am looking to buy some RS gold . This is a professional virtual-curreny trading company ,which is in business for years . If you have any amount of game gold for sale , plz contact me or PM me . Games are not limited to RuneScape ,



All times are GMT +2. The time now is 17:30.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.