Toy System (Not Saving Properly) +Rep
#1

Hi I've built a Toy System for players that want to add accessories to their players. It doesn't save to the file correctly. (Just saves 1 toy and over writes it each time not all 10) Also when it does save the Toy it's not getting any information from the script it's all default as if nothing has been set.

Here's my code for editing & saving.. Let me know if you need to see anything else please!

Editing The Toy:

pawn Code:
public OnPlayerEditAttachedObject( playerid, response, index, modelid, boneid,
                                   Float:fOffsetX, Float:fOffsetY, Float:fOffsetZ,
                                   Float:fRotX, Float:fRotY, Float:fRotZ,
                                   Float:fScaleX, Float:fScaleY, Float:fScaleZ )
{
    new string[128];
    new purchasetoy = PurchaseToy[playerid];
    new modifytoy = ModifyToy[playerid];
    if(response == 1)
    {
        if(purchasetoy >= 0)
        {
            //Set the save info for the Toy
            ToyInfo[playerid][purchasetoy][tCreated] = 1;
            ToyInfo[playerid][purchasetoy][tEquipped] = 1;
            ToyInfo[playerid][purchasetoy][tOffsetX] = fOffsetX;
            ToyInfo[playerid][purchasetoy][tOffsetY] = fOffsetY;
            ToyInfo[playerid][purchasetoy][tOffsetZ] = fOffsetZ;
            ToyInfo[playerid][purchasetoy][tRotX] = fRotX;
            ToyInfo[playerid][purchasetoy][tRotY] = fRotY;
            ToyInfo[playerid][purchasetoy][tRotZ] = fRotZ;
            ToyInfo[playerid][purchasetoy][tScaleX] = fScaleX;
            ToyInfo[playerid][purchasetoy][tScaleY] = fScaleY;
            ToyInfo[playerid][purchasetoy][tScaleZ] = fScaleZ;
            SaveToys(playerid);
            //Remove and then re-attach the saved Toy
            RemovePlayerAttachedObject(playerid, purchasetoy);
            SetPlayerAttachedObject(playerid,
            ToyInfo[playerid][purchasetoy][tIndexID],
            ToyInfo[playerid][purchasetoy][tModelID],
            ToyInfo[playerid][purchasetoy][tBoneID],
            ToyInfo[playerid][purchasetoy][tOffsetX],
            ToyInfo[playerid][purchasetoy][tOffsetY],
            ToyInfo[playerid][purchasetoy][tOffsetZ],
            ToyInfo[playerid][purchasetoy][tRotX],
            ToyInfo[playerid][purchasetoy][tRotY],
            ToyInfo[playerid][purchasetoy][tRotZ],
            ToyInfo[playerid][purchasetoy][tScaleX],
            ToyInfo[playerid][purchasetoy][tScaleY],
            ToyInfo[playerid][purchasetoy][tScaleZ]);
            //Let them know what happened, Set their variables back to default
            format(string, sizeof(string), "[TOYS]: You have purchased the %s for $500 on Index Slot %d", ToyInfo[playerid][purchasetoy][tName], ToyInfo[playerid][purchasetoy][tIndexID]);
            SendClientMessage(playerid, COLOR_ORANGE, string);
            PurchaseToy[playerid] = -1;
            ToyModel[playerid] = -1;
            strdel(ToyName[playerid], 0, 128);
            return 1;
        }
        if(modifytoy >= 0)
        {
            //Save the Toys updated variables
            ToyInfo[playerid][modifytoy][tEquipped] = 1;
            ToyInfo[playerid][modifytoy][tOffsetX] = fOffsetX;
            ToyInfo[playerid][modifytoy][tOffsetY] = fOffsetY;
            ToyInfo[playerid][modifytoy][tOffsetZ] = fOffsetZ;
            ToyInfo[playerid][modifytoy][tRotX] = fRotX;
            ToyInfo[playerid][modifytoy][tRotY] = fRotY;
            ToyInfo[playerid][modifytoy][tRotZ] = fRotZ;
            ToyInfo[playerid][modifytoy][tScaleX] = fScaleX;
            ToyInfo[playerid][modifytoy][tScaleY] = fScaleY;
            ToyInfo[playerid][modifytoy][tScaleZ] = fScaleZ;
            SaveToys(playerid);
            //Remove the modified Toy and replace with updated variables
            RemovePlayerAttachedObject(playerid, modifytoy);
            SetPlayerAttachedObject(playerid,
            ToyInfo[playerid][modifytoy][tIndexID],
            ToyInfo[playerid][modifytoy][tModelID],
            ToyInfo[playerid][modifytoy][tBoneID],
            ToyInfo[playerid][modifytoy][tOffsetX],
            ToyInfo[playerid][modifytoy][tOffsetY],
            ToyInfo[playerid][modifytoy][tOffsetZ],
            ToyInfo[playerid][modifytoy][tRotX],
            ToyInfo[playerid][modifytoy][tRotY],
            ToyInfo[playerid][modifytoy][tRotZ],
            ToyInfo[playerid][modifytoy][tScaleX],
            ToyInfo[playerid][modifytoy][tScaleY],
            ToyInfo[playerid][modifytoy][tScaleZ]);
            //Let the player know what happened
            format(string, sizeof(string), "[TOYS]: You have edited the %s on Index Slot %d", ToyInfo[playerid][modifytoy][tName], ToyInfo[playerid][modifytoy][tIndexID]);
            SendClientMessage(playerid, COLOR_ORANGE, string);
            ModifyToy[playerid] = -1;
            return 1;
        }
    }
    if(response == 0)
    {
        if(purchasetoy >= 0)
        {
            //Remove the players Toy they cancelled the purchase of
            RemovePlayerAttachedObject(playerid, purchasetoy);
            SendClientMessage(playerid, COLOR_ORANGE, "[TOYS]: You have cancelled the purchase of your Toy");
            //Reset the Toys variables to default
            strdel(ToyInfo[playerid][purchasetoy][tName], 0, 128);
            ToyInfo[playerid][purchasetoy][tIndexID] = 0;
            ToyInfo[playerid][purchasetoy][tModelID] = 0;
            ToyInfo[playerid][purchasetoy][tBoneID] = 0;
            ToyInfo[playerid][purchasetoy][tOffsetX] = 0.0;
            ToyInfo[playerid][purchasetoy][tOffsetY] = 0.0;
            ToyInfo[playerid][purchasetoy][tOffsetZ] = 0.0;
            ToyInfo[playerid][purchasetoy][tRotX] = 0.0;
            ToyInfo[playerid][purchasetoy][tRotY] = 0.0;
            ToyInfo[playerid][purchasetoy][tRotZ] = 0.0;
            ToyInfo[playerid][purchasetoy][tScaleX] = 0.0;
            ToyInfo[playerid][purchasetoy][tScaleY] = 0.0;
            ToyInfo[playerid][purchasetoy][tScaleZ] = 0.0;
            PurchaseToy[playerid] = -1;
            ToyModel[playerid] = -1;
            strdel(ToyName[playerid], 0, 128);
            return 1;
        }
        if(modifytoy >= 0)
        {
            //Remove the players Toy they cancelled the editing of
            RemovePlayerAttachedObject(playerid, modifytoy);
            SendClientMessage(playerid, COLOR_ORANGE, "[TOYS]: You have cancelled the editing of your Toy");
            //Reset the Toys variables to default
            SetPlayerAttachedObject(playerid,
            ToyInfo[playerid][modifytoy][tIndexID],
            ToyInfo[playerid][modifytoy][tModelID],
            ToyInfo[playerid][modifytoy][tBoneID],
            ToyInfo[playerid][modifytoy][tOffsetX],
            ToyInfo[playerid][modifytoy][tOffsetY],
            ToyInfo[playerid][modifytoy][tOffsetZ],
            ToyInfo[playerid][modifytoy][tRotX],
            ToyInfo[playerid][modifytoy][tRotY],
            ToyInfo[playerid][modifytoy][tRotZ],
            ToyInfo[playerid][modifytoy][tScaleX],
            ToyInfo[playerid][modifytoy][tScaleY],
            ToyInfo[playerid][modifytoy][tScaleZ]);
            ModifyToy[playerid] = -1;
            return 1;
        }
    }
    return 1;
}
Saving the Toy:

pawn Code:
forward SaveToys(playerid);
public SaveToys(playerid)
{
    for(new x = 0; x < MAX_TOYS; x++)
    {
        if(IsPlayerConnected(playerid))
        {
            if(PLogged[playerid])
            {
                new stringtoy[128];
                format(stringtoy, sizeof(stringtoy), "South-WestRP/PlayerToys/%s.ini", GetPlayerNameEx(playerid));
                new File: hFile = fopen(stringtoy, io_write);
                if (hFile)
                {
                    new var[32];
                    format(var, 32, "tCreated[x]=%d\n", ToyInfo[playerid][x][tCreated]);fwrite(hFile, var);
                    format(var, 32, "tEquipped[x]=%d\n", ToyInfo[playerid][x][tEquipped]);fwrite(hFile, var);
                    format(var, 32, "tName[x]=%s\n", ToyInfo[playerid][x][tName]);fwrite(hFile, var);
                    format(var, 32, "tIndexID[x]=%d\n", ToyInfo[playerid][x][tIndexID]);fwrite(hFile, var);
                    format(var, 32, "tModelID[x]=%d\n", ToyInfo[playerid][x][tModelID]);fwrite(hFile, var);
                    format(var, 32, "tBoneID[x]=%d\n", ToyInfo[playerid][x][tBoneID]);fwrite(hFile, var);
                    format(var, 32, "tOffsetX[x]=%f\n", ToyInfo[playerid][x][tOffsetX]);fwrite(hFile, var);
                    format(var, 32, "tOffsetY[x]=%f\n", ToyInfo[playerid][x][tOffsetY]);fwrite(hFile, var);
                    format(var, 32, "tOffsetZ[x]=%f\n", ToyInfo[playerid][x][tOffsetZ]);fwrite(hFile, var);
                    format(var, 32, "tRotX[x]=%f\n", ToyInfo[playerid][x][tRotX]);fwrite(hFile, var);
                    format(var, 32, "tRotY[x]=%f\n", ToyInfo[playerid][x][tRotY]);fwrite(hFile, var);
                    format(var, 32, "tRotZ[x]=%f\n", ToyInfo[playerid][x][tRotZ]);fwrite(hFile, var);
                    format(var, 32, "tScaleX[x]=%f\n", ToyInfo[playerid][x][tScaleX]);fwrite(hFile, var);
                    format(var, 32, "tScaleY[x]=%f\n", ToyInfo[playerid][x][tScaleY]);fwrite(hFile, var);
                    format(var, 32, "tScaleZ[x]=%f\n", ToyInfo[playerid][x][tScaleZ]);fwrite(hFile, var);
                    fclose(hFile);
                }
            }
        }
    }
    return 1;
}
Here's also my enum for the Toy system:

pawn Code:
enum ToySystem
{
    tCreated,
    tEquipped,
    tName[128], // LINE 1049
    tIndexID,
    tModelID,
    tBoneID,
    Float: tOffsetX,
    Float: tOffsetY,
    Float: tOffsetZ,
    Float: tRotX,
    Float: tRotY,
    Float: tRotZ,
    Float: tScaleX,
    Float: tScaleY,
    Float: tScaleZ
}
new ToyInfo[MAX_PLAYERS][MAX_TOYS][ToySystem];
Reply
#2

pawn Code:
forward SaveToys(playerid);
public SaveToys(playerid)
{
    if(IsPlayerConnected(playerid) && PLogged[playerid])
    {
        new stringtoy[55], var[32];
        format(stringtoy, sizeof(stringtoy), "South-WestRP/PlayerToys/%s.ini", GetPlayerNameEx(playerid));
        new File: hFile = fopen(stringtoy, io_write);
        if(!hFile) return 0;
        for(new x = 0; x < MAX_TOYS; x++)
        {
            format(var, 32, "tCreated[%d]=%d\r\n", x, ToyInfo[playerid][x][tCreated]);
            fwrite(hFile, var);
            format(var, 32, "tEquipped[%d]=%d\r\n", x, ToyInfo[playerid][x][tEquipped]);
            fwrite(hFile, var);
            format(var, 32, "tName[%d]=%s\r\n", x, ToyInfo[playerid][x][tName]);
            fwrite(hFile, var);
            format(var, 32, "tIndexID[%d]=%d\r\n", x, ToyInfo[playerid][x][tIndexID]);
            fwrite(hFile, var);
            format(var, 32, "tModelID[%d]=%d\r\n", x, ToyInfo[playerid][x][tModelID]);
            fwrite(hFile, var);
            format(var, 32, "tBoneID[%d]=%d\r\n", x, ToyInfo[playerid][x][tBoneID]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetX[%d]=%f\r\n", x, ToyInfo[playerid][x][tOffsetX]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetY[%d]=%f\r\n", x, ToyInfo[playerid][x][tOffsetY]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetZ[%d]=%f\r\n", x, ToyInfo[playerid][x][tOffsetZ]);
            fwrite(hFile, var);
            format(var, 32, "tRotX[%d]=%f\r\n", x, ToyInfo[playerid][x][tRotX]);
            fwrite(hFile, var);
            format(var, 32, "tRotY[%d]=%f\r\n", x, ToyInfo[playerid][x][tRotY]);
            fwrite(hFile, var);
            format(var, 32, "tRotZ[%d]=%f\r\n", x, ToyInfo[playerid][x][tRotZ]);
            fwrite(hFile, var);
            format(var, 32, "tScaleX[%d]=%f\r\n", x, ToyInfo[playerid][x][tScaleX]);
            fwrite(hFile, var);
            format(var, 32, "tScaleY[%d]=%f\r\n", x, ToyInfo[playerid][x][tScaleY]);
            fwrite(hFile, var);
            format(var, 32, "tScaleZ[%d]=%f\r\n", x, ToyInfo[playerid][x][tScaleZ]);
            fwrite(hFile, var);
        }
        fclose(hFile);
        return 1;
    }
    return 0;
}
Reply
#3

if(IsPlayerConnected(playerid)) obviously the player is connected if your saving it's really funny to see where people will blindly use IsPlayerConnected() with no sense or reasoning for it.
Reply
#4

Quote:
Originally Posted by Jefff
View Post
pawn Code:
forward SaveToys(playerid);
public SaveToys(playerid)
{
    if(IsPlayerConnected(playerid) && PLogged[playerid])
    {
        new stringtoy[55], var[32];
        format(stringtoy, sizeof(stringtoy), "South-WestRP/PlayerToys/%s.ini", GetPlayerNameEx(playerid));
        new File: hFile = fopen(stringtoy, io_write);
        if(!hFile) return 0;
        for(new x = 0; x < MAX_TOYS; x++)
        {
            format(var, 32, "tCreated[%d]=%d\r\n", x, ToyInfo[playerid][x][tCreated]);
            fwrite(hFile, var);
            format(var, 32, "tEquipped[%d]=%d\r\n", x, ToyInfo[playerid][x][tEquipped]);
            fwrite(hFile, var);
            format(var, 32, "tName[%d]=%s\r\n", x, ToyInfo[playerid][x][tName]);
            fwrite(hFile, var);
            format(var, 32, "tIndexID[%d]=%d\r\n", x, ToyInfo[playerid][x][tIndexID]);
            fwrite(hFile, var);
            format(var, 32, "tModelID[%d]=%d\r\n", x, ToyInfo[playerid][x][tModelID]);
            fwrite(hFile, var);
            format(var, 32, "tBoneID[%d]=%d\r\n", x, ToyInfo[playerid][x][tBoneID]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetX[%d]=%f\r\n", x, ToyInfo[playerid][x][tOffsetX]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetY[%d]=%f\r\n", x, ToyInfo[playerid][x][tOffsetY]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetZ[%d]=%f\r\n", x, ToyInfo[playerid][x][tOffsetZ]);
            fwrite(hFile, var);
            format(var, 32, "tRotX[%d]=%f\r\n", x, ToyInfo[playerid][x][tRotX]);
            fwrite(hFile, var);
            format(var, 32, "tRotY[%d]=%f\r\n", x, ToyInfo[playerid][x][tRotY]);
            fwrite(hFile, var);
            format(var, 32, "tRotZ[%d]=%f\r\n", x, ToyInfo[playerid][x][tRotZ]);
            fwrite(hFile, var);
            format(var, 32, "tScaleX[%d]=%f\r\n", x, ToyInfo[playerid][x][tScaleX]);
            fwrite(hFile, var);
            format(var, 32, "tScaleY[%d]=%f\r\n", x, ToyInfo[playerid][x][tScaleY]);
            fwrite(hFile, var);
            format(var, 32, "tScaleZ[%d]=%f\r\n", x, ToyInfo[playerid][x][tScaleZ]);
            fwrite(hFile, var);
        }
        fclose(hFile);
        return 1;
    }
    return 0;
}
Ahhh brilliant thankyou I was wondering whether it would be something like that. Thanks pal.
Reply
#5

Quote:
Originally Posted by Jefff
View Post
pawn Code:
forward SaveToys(playerid);
public SaveToys(playerid)
{
    if(IsPlayerConnected(playerid) && PLogged[playerid])
    {
        new stringtoy[55], var[32];
        format(stringtoy, sizeof(stringtoy), "South-WestRP/PlayerToys/%s.ini", GetPlayerNameEx(playerid));
        new File: hFile = fopen(stringtoy, io_write);
        if(!hFile) return 0;
        for(new x = 0; x < MAX_TOYS; x++)
        {
            format(var, 32, "tCreated[%d]=%d\r\n", x, ToyInfo[playerid][x][tCreated]);
            fwrite(hFile, var);
            format(var, 32, "tEquipped[%d]=%d\r\n", x, ToyInfo[playerid][x][tEquipped]);
            fwrite(hFile, var);
            format(var, 32, "tName[%d]=%s\r\n", x, ToyInfo[playerid][x][tName]);
            fwrite(hFile, var);
            format(var, 32, "tIndexID[%d]=%d\r\n", x, ToyInfo[playerid][x][tIndexID]);
            fwrite(hFile, var);
            format(var, 32, "tModelID[%d]=%d\r\n", x, ToyInfo[playerid][x][tModelID]);
            fwrite(hFile, var);
            format(var, 32, "tBoneID[%d]=%d\r\n", x, ToyInfo[playerid][x][tBoneID]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetX[%d]=%f\r\n", x, ToyInfo[playerid][x][tOffsetX]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetY[%d]=%f\r\n", x, ToyInfo[playerid][x][tOffsetY]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetZ[%d]=%f\r\n", x, ToyInfo[playerid][x][tOffsetZ]);
            fwrite(hFile, var);
            format(var, 32, "tRotX[%d]=%f\r\n", x, ToyInfo[playerid][x][tRotX]);
            fwrite(hFile, var);
            format(var, 32, "tRotY[%d]=%f\r\n", x, ToyInfo[playerid][x][tRotY]);
            fwrite(hFile, var);
            format(var, 32, "tRotZ[%d]=%f\r\n", x, ToyInfo[playerid][x][tRotZ]);
            fwrite(hFile, var);
            format(var, 32, "tScaleX[%d]=%f\r\n", x, ToyInfo[playerid][x][tScaleX]);
            fwrite(hFile, var);
            format(var, 32, "tScaleY[%d]=%f\r\n", x, ToyInfo[playerid][x][tScaleY]);
            fwrite(hFile, var);
            format(var, 32, "tScaleZ[%d]=%f\r\n", x, ToyInfo[playerid][x][tScaleZ]);
            fwrite(hFile, var);
        }
        fclose(hFile);
        return 1;
    }
    return 0;
}
My Toys aren't loading properly and I'm not sure how to convert the loading to the same way you've replaced my saving mate. Could you show me an example of doing so?

pawn Code:
forward LoadToys(playerid);
public LoadToys(playerid)
{
    new stringtoy[128];
    for(new x = 0; x < MAX_TOYS; x++)
    {
        format(stringtoy, sizeof(stringtoy), "South-WestRP/PlayerToys/%s.ini", GetPlayerNameEx(playerid));
        new File:example = fopen(stringtoy, io_read);
        if(example)
        {
            new key[ 256 ] , val[ 256 ];
            new Data[ 256 ];
            while ( fread( example , Data , sizeof( Data ) ) )
            {
                key = ini_GetKey( Data );
                if( strcmp( key , "tCreated[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tCreated] = strval( val ); }
                if( strcmp( key , "tEquipped[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tEquipped] = strval( val ); }
                if( strcmp( key , "tName[x]" , true ) == 0 ) { val = ini_GetValue( Data ); strmid(ToyInfo[playerid][x][tName], val, 0, strlen(val)-1, 128); }
                if( strcmp( key , "tIndexID[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tIndexID] = strval( val ); }
                if( strcmp( key , "tModelID[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tModelID] = strval( val ); }
                if( strcmp( key , "tBoneID[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tBoneID] = strval( val ); }
                if( strcmp( key , "tOffsetX[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tOffsetX] = floatstr( val ); } // Line 5125
                if( strcmp( key , "tOffsetY[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tOffsetY] = floatstr( val ); }
                if( strcmp( key , "tOffsetZ[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tOffsetZ] = floatstr( val ); }
                if( strcmp( key , "tRotX[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tRotX] = floatstr( val ); }
                if( strcmp( key , "tRotY[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tRotY] = floatstr( val ); }
                if( strcmp( key , "tRotZ[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tRotZ] = floatstr( val ); }
                if( strcmp( key , "tScaleX[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tScaleX] = floatstr( val ); }
                if( strcmp( key , "tScaleY[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tScaleY] = floatstr( val ); }
                if( strcmp( key , "tScaleZ[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tScaleZ] = floatstr( val ); } // Line 5133
            }
            fclose(example);
        }
    }
    return 1;
}
Reply
#6

Remove every '[%d]' and 'x,' from saving and put [x]
Reply
#7

Quote:
Originally Posted by Jefff
View Post
Remove every '[%d]' and 'x,' from saving and put [x]
I'm not sure I'm following you could you explain in a little more detail?
Reply
#8

Change all formats in saving from
pawn Code:
format(var, 32, "tCreated[%d]=%d\r\n", x, ToyInfo[playerid][x][tCreated]);
to

pawn Code:
format(var, 32, "tCreated[x]=%d\r\n", ToyInfo[playerid][x][tCreated]);
all [%d] to [x] and remove all x,

and better loading

pawn Code:
forward LoadToys(playerid);
public LoadToys(playerid)
{
    new stringtoy[55];
    format(stringtoy, sizeof(stringtoy), "South-WestRP/PlayerToys/%s.ini", GetPlayerNameEx(playerid));

    new File:example = fopen(stringtoy, io_read);
    if(!example) return 0;

    new key[ 15 ] , Data[ 256 ];
    for(new x = 0; x < MAX_TOYS; x++)
    {
        while ( fread( example , Data ) )
        {
            strcat( ( key[0] = '\0', key ), ini_GetKey( Data ), sizeof( key ) );
            if( strcmp( key , "tCreated[x]" , true ) == 0 ) ToyInfo[playerid][x][tCreated] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tEquipped[x]" , true ) == 0 ) ToyInfo[playerid][x][tEquipped] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tName[x]" , true ) == 0 ) strcat( ( ToyInfo[playerid][x][tName][0] = '\0', ToyInfo[playerid][x][tName] ), ini_GetValue( Data ), 128 );
            if( strcmp( key , "tIndexID[x]" , true ) == 0 ) ToyInfo[playerid][x][tIndexID] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tModelID[x]" , true ) == 0 ) ToyInfo[playerid][x][tModelID] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tBoneID[x]" , true ) == 0 ) ToyInfo[playerid][x][tBoneID] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tOffsetX[x]" , true ) == 0 ) ToyInfo[playerid][x][tOffsetX] = floatstr( ini_GetValue( Data ) ); // Line 5125
            if( strcmp( key , "tOffsetY[x]" , true ) == 0 ) ToyInfo[playerid][x][tOffsetY] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tOffsetZ[x]" , true ) == 0 ) ToyInfo[playerid][x][tOffsetZ] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tRotX[x]" , true ) == 0 ) ToyInfo[playerid][x][tRotX] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tRotY[x]" , true ) == 0 ) ToyInfo[playerid][x][tRotY] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tRotZ[x]" , true ) == 0 ) ToyInfo[playerid][x][tRotZ] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tScaleX[x]" , true ) == 0 ) ToyInfo[playerid][x][tScaleX] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tScaleY[x]" , true ) == 0 ) ToyInfo[playerid][x][tScaleY] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tScaleZ[x]" , true ) == 0 ) ToyInfo[playerid][x][tScaleZ] = floatstr( ini_GetValue( Data ) ); // Line 5133
        }
    }
    return fclose(example);
}
Reply
#9

So I don't need to use this?

pawn Code:
if( strcmp( key , "tCreated[x]" , true ) == 0 ) { val = ini_GetValue( Data ); ToyInfo[playerid][x][tCreated] = strval( val ); }
I thought all of that was needed but just needed to be altered?

EDIT: Didn't see your edited post.
Reply
#10

Quote:
Originally Posted by Jefff
View Post
Change all formats in saving from
pawn Code:
format(var, 32, "tCreated[%d]=%d\r\n", x, ToyInfo[playerid][x][tCreated]);
to

pawn Code:
format(var, 32, "tCreated[x]=%d\r\n", ToyInfo[playerid][x][tCreated]);
all [%d] to [x] and remove all x,

and better loading

pawn Code:
forward LoadToys(playerid);
public LoadToys(playerid)
{
    new stringtoy[55];
    format(stringtoy, sizeof(stringtoy), "South-WestRP/PlayerToys/%s.ini", GetPlayerNameEx(playerid));

    new File:example = fopen(stringtoy, io_read);
    if(!example) return 0;

    new key[ 15 ] , Data[ 256 ];
    for(new x = 0; x < MAX_TOYS; x++)
    {
        while ( fread( example , Data ) )
        {
            strcat( ( key[0] = '\0', key ), ini_GetKey( Data ), sizeof( key ) );
            if( strcmp( key , "tCreated[x]" , true ) == 0 ) ToyInfo[playerid][x][tCreated] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tEquipped[x]" , true ) == 0 ) ToyInfo[playerid][x][tEquipped] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tName[x]" , true ) == 0 ) strcat( ( ToyInfo[playerid][x][tName][0] = '\0', ToyInfo[playerid][x][tName] ), ini_GetValue( Data ), 128 );
            if( strcmp( key , "tIndexID[x]" , true ) == 0 ) ToyInfo[playerid][x][tIndexID] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tModelID[x]" , true ) == 0 ) ToyInfo[playerid][x][tModelID] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tBoneID[x]" , true ) == 0 ) ToyInfo[playerid][x][tBoneID] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tOffsetX[x]" , true ) == 0 ) ToyInfo[playerid][x][tOffsetX] = floatstr( ini_GetValue( Data ) ); // Line 5125
            if( strcmp( key , "tOffsetY[x]" , true ) == 0 ) ToyInfo[playerid][x][tOffsetY] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tOffsetZ[x]" , true ) == 0 ) ToyInfo[playerid][x][tOffsetZ] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tRotX[x]" , true ) == 0 ) ToyInfo[playerid][x][tRotX] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tRotY[x]" , true ) == 0 ) ToyInfo[playerid][x][tRotY] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tRotZ[x]" , true ) == 0 ) ToyInfo[playerid][x][tRotZ] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tScaleX[x]" , true ) == 0 ) ToyInfo[playerid][x][tScaleX] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tScaleY[x]" , true ) == 0 ) ToyInfo[playerid][x][tScaleY] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tScaleZ[x]" , true ) == 0 ) ToyInfo[playerid][x][tScaleZ] = floatstr( ini_GetValue( Data ) ); // Line 5133
        }
    }
    return fclose(example);
}
I changed like you said but it's still not loading

pawn Code:
forward SaveToys(playerid);
public SaveToys(playerid)
{
    if(IsPlayerConnected(playerid) && PLogged[playerid])
    {
        new stringtoy[55], var[32];
        format(stringtoy, sizeof(stringtoy), "South-WestRP/PlayerToys/%s.ini", GetPlayerNameEx(playerid));
        new File: hFile = fopen(stringtoy, io_write);
        if(!hFile) return 0;
        for(new x = 0; x < MAX_TOYS; x++)
        {
            format(var, 32, "tCreated[x]=%d\r\n", ToyInfo[playerid][x][tCreated]);
            fwrite(hFile, var);
            format(var, 32, "tEquipped[x]=%d\r\n", ToyInfo[playerid][x][tEquipped]);
            fwrite(hFile, var);
            format(var, 32, "tName[x]=%s\r\n", ToyInfo[playerid][x][tName]);
            fwrite(hFile, var);
            format(var, 32, "tIndexID[x]=%d\r\n", ToyInfo[playerid][x][tIndexID]);
            fwrite(hFile, var);
            format(var, 32, "tModelID[x]=%d\r\n", ToyInfo[playerid][x][tModelID]);
            fwrite(hFile, var);
            format(var, 32, "tBoneID[x]=%d\r\n", ToyInfo[playerid][x][tBoneID]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetX[x]=%f\r\n", ToyInfo[playerid][x][tOffsetX]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetY[x]=%f\r\n", ToyInfo[playerid][x][tOffsetY]);
            fwrite(hFile, var);
            format(var, 32, "tOffsetZ[x]=%f\r\n", ToyInfo[playerid][x][tOffsetZ]);
            fwrite(hFile, var);
            format(var, 32, "tRotX[x]=%f\r\n", ToyInfo[playerid][x][tRotX]);
            fwrite(hFile, var);
            format(var, 32, "tRotY[x]=%f\r\n", ToyInfo[playerid][x][tRotY]);
            fwrite(hFile, var);
            format(var, 32, "tRotZ[x]=%f\r\n", ToyInfo[playerid][x][tRotZ]);
            fwrite(hFile, var);
            format(var, 32, "tScaleX[x]=%f\r\n", ToyInfo[playerid][x][tScaleX]);
            fwrite(hFile, var);
            format(var, 32, "tScaleY[x]=%f\r\n", ToyInfo[playerid][x][tScaleY]);
            fwrite(hFile, var);
            format(var, 32, "tScaleZ[x]=%f\r\n", ToyInfo[playerid][x][tScaleZ]);
            fwrite(hFile, var);
        }
        fclose(hFile);
        return 1;
    }
    return 0;
}

forward LoadToys(playerid);
public LoadToys(playerid)
{
    new stringtoy[55];
    format(stringtoy, sizeof(stringtoy), "South-WestRP/PlayerToys/%s.ini", GetPlayerNameEx(playerid));

    new File:example = fopen(stringtoy, io_read);
    if(!example) return 0;

    new key[ 15 ] , Data[ 256 ];
    for(new x = 0; x < MAX_TOYS; x++)
    {
        while ( fread( example , Data ) )
        {
            strcat( ( key[0] = '\0', key ), ini_GetKey( Data ), sizeof( key ) );
            if( strcmp( key , "tCreated[x]" , true ) == 0 ) ToyInfo[playerid][x][tCreated] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tEquipped[x]" , true ) == 0 ) ToyInfo[playerid][x][tEquipped] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tName[x]" , true ) == 0 ) strcat( ( ToyInfo[playerid][x][tName][0] = '\0', ToyInfo[playerid][x][tName] ), ini_GetValue( Data ), 128 );
            if( strcmp( key , "tIndexID[x]" , true ) == 0 ) ToyInfo[playerid][x][tIndexID] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tModelID[x]" , true ) == 0 ) ToyInfo[playerid][x][tModelID] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tBoneID[x]" , true ) == 0 ) ToyInfo[playerid][x][tBoneID] = strval( ini_GetValue( Data ) );
            if( strcmp( key , "tOffsetX[x]" , true ) == 0 ) ToyInfo[playerid][x][tOffsetX] = floatstr( ini_GetValue( Data ) ); // Line 5125
            if( strcmp( key , "tOffsetY[x]" , true ) == 0 ) ToyInfo[playerid][x][tOffsetY] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tOffsetZ[x]" , true ) == 0 ) ToyInfo[playerid][x][tOffsetZ] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tRotX[x]" , true ) == 0 ) ToyInfo[playerid][x][tRotX] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tRotY[x]" , true ) == 0 ) ToyInfo[playerid][x][tRotY] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tRotZ[x]" , true ) == 0 ) ToyInfo[playerid][x][tRotZ] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tScaleX[x]" , true ) == 0 ) ToyInfo[playerid][x][tScaleX] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tScaleY[x]" , true ) == 0 ) ToyInfo[playerid][x][tScaleY] = floatstr( ini_GetValue( Data ) );
            if( strcmp( key , "tScaleZ[x]" , true ) == 0 ) ToyInfo[playerid][x][tScaleZ] = floatstr( ini_GetValue( Data ) ); // Line 5133
        }
    }
    return fclose(example);
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)