HELP ME FIND BUGS ANYONE?
#1

Hello everyone. I just re-wrote my gamemode. I only did the basics of it but... I will add more once there are NO bugs in the current version. :P Anyway, the part that I am looking for bugs in is the stats system. The djson and all that... SaveStats UpdateStats SaveAllStats ect... Anyway, heres the code:
pawn Код:
#include <a_samp>
#include <djson>
#include <dudb>

#pragma unused ret_memcpy
#pragma unused strtok

#define DEVELOPER "Matt - fundude.....(sa-mp)"
#define VERSION "v.0.0.1c"
#define VS "[0.3d RC9]Party Time"

#define SERVER_USER_FILE "SERVER/USERS/%s.json"

#undef MAX_PLAYERS
#define MAX_PLAYERS 51

#define COLOR_ALICEBLUE             (0xF0F8FFAA)
#define COLOR_ANTIQUEWHITE          (0xFAEBD7AA)
#define COLOR_AQUA                  (0x00FFFFAA)
#define COLOR_AQUAMARINE            (0x7FFFD4AA)
#define COLOR_AZURE                 (0xF0FFFFAA)
#define COLOR_BEIGE                 (0xF5F5DCAA)
#define COLOR_BISQUE                (0xFFE4C4AA)
#define COLOR_BLACK                 (0x000000AA)
#define COLOR_BLANCHEDALMOND        (0xFFEBCDAA)
#define COLOR_BLUE                  (0x0000FFAA)
#define COLOR_BLUEVIOLET            (0x8A2BE2AA)
#define COLOR_BROWN                 (0xA52A2AAA)
#define COLOR_BURLYWOOD             (0xDEB887AA)
#define COLOR_CADETBLUE             (0x5F9EA0AA)
#define COLOR_CHARTREUSE            (0x7FFF00AA)
#define COLOR_CHOCOLATE             (0xD2691EAA)
#define COLOR_CORAL                 (0xFF7F50AA)
#define COLOR_CORNFLOWERBLUE        (0x6495EDAA)
#define COLOR_CORNSILK              (0xFFF8DCAA)
#define COLOR_CRIMSON               (0xDC143CAA)
#define COLOR_CYAN                  (0x00FFFFAA)
#define COLOR_DARKBLUE              (0x00008BAA)
#define COLOR_DARKCYAN              (0x008B8BAA)
#define COLOR_DARKGOLDENROD         (0xB8860BAA)
#define COLOR_DARKGRAY              (0xA9A9A9AA)
#define COLOR_DARKGREY              (0xA9A9A9AA)
#define COLOR_DARKGREEN             (0x006400AA)
#define COLOR_DARKKHAKI             (0xBDB76BAA)
#define COLOR_DARKMAGENTA           (0x8B008BAA)
#define COLOR_DARKOLIVEGREEN        (0x556B2FAA)
#define COLOR_DARKORANGE            (0xFF8C00AA)
#define COLOR_DARKORCHID            (0x9932CCAA)
#define COLOR_DARKRED               (0x8B0000AA)
#define COLOR_DARKSALMON            (0xE9967AAA)
#define COLOR_DARKSEAGREEN          (0x8FBC8FAA)
#define COLOR_DARKSLATEBLUE         (0x483D8BAA)
#define COLOR_DARKSLATEGRAY         (0x2F4F4FAA)
#define COLOR_DARKSLATEGREY         (0x2F4F4FAA)
#define COLOR_DARKTURQUOISE         (0x00CED1AA)
#define COLOR_DARKVIOLET            (0x9400D3AA)
#define COLOR_DEEPPINK              (0xFF1493AA)
#define COLOR_DEEPSKYBLUE           (0x00BFFFAA)
#define COLOR_DIMGRAY               (0x696969AA)
#define COLOR_DIMGREY               (0x696969AA)
#define COLOR_DODGERBLUE            (0x1E90FFAA)
#define COLOR_FIREBRICK             (0xB22222AA)
#define COLOR_FLORALWHITE           (0xFFFAF0AA)
#define COLOR_FORESTGREEN           (0x228B22AA)
#define COLOR_FUCHSIA               (0xFF00FFAA)
#define COLOR_GAINSBORO             (0xDCDCDCAA)
#define COLOR_GHOSTWHITE            (0xF8F8FFAA)
#define COLOR_GOLD                  (0xFFD700AA)
#define COLOR_GOLDENROD             (0xDAA520AA)
#define COLOR_GRAY                  (0x808080AA)
#define COLOR_GREY                  (0x808080AA)
#define COLOR_GREEN                 (0x008000AA)
#define COLOR_GREENYELLOW           (0xADFF2FAA)
#define COLOR_HONEYDEW              (0xF0FFF0AA)
#define COLOR_HOTPINK               (0xFF69B4AA)
#define COLOR_INDIANRED             (0xCD5C5CAA)
#define COLOR_INDIGO                (0x4B0082AA)
#define COLOR_IVORY                 (0xFFFFF0AA)
#define COLOR_KHAKI                 (0xF0E68CAA)
#define COLOR_LAVENDER              (0xE6E6FAAA)
#define COLOR_LAVENDERBLUSH         (0xFFF0F5AA)
#define COLOR_LAWNGREEN             (0x7CFC00AA)
#define COLOR_LEMONCHIFFON          (0xFFFACDAA)
#define COLOR_LIGHTBLUE             (0xADD8E6AA)
#define COLOR_LIGHTCORAL            (0xF08080AA)
#define COLOR_LIGHTCYAN             (0xE0FFFFAA)
#define COLOR_LIGHTGOLDENRODYELLOW  (0xFAFAD2AA)
#define COLOR_LIGHTGRAY             (0xD3D3D3AA)
#define COLOR_LIGHTGREY             (0xD3D3D3AA)
#define COLOR_LIGHTGREEN            (0x90EE90AA)
#define COLOR_LIGHTPINK             (0xFFB6C1AA)
#define COLOR_LIGHTSALMON           (0xFFA07AAA)
#define COLOR_LIGHTSEAGREEN         (0x20B2AAAA)
#define COLOR_LIGHTSKYBLUE          (0x87CEFAAA)
#define COLOR_LIGHTSLATEGRAY        (0x778899AA)
#define COLOR_LIGHTSLATEGREY        (0x778899AA)
#define COLOR_LIGHTSTEELBLUE        (0xB0C4DEAA)
#define COLOR_LIGHTYELLOW           (0xFFFFE0AA)
#define COLOR_LIME                  (0x00FF00AA)
#define COLOR_LIMEGREEN             (0x32CD32AA)
#define COLOR_LINEN                 (0xFAF0E6AA)
#define COLOR_MAGENTA               (0xFF00FFAA)
#define COLOR_MAROON                (0x800000AA)
#define COLOR_MEDIUMAQUAMARINE      (0x66CDAAAA)
#define COLOR_MEDIUMBLUE            (0x0000CDAA)
#define COLOR_MEDIUMORCHID          (0xBA55D3AA)
#define COLOR_MEDIUMPURPLE          (0x9370D8AA)
#define COLOR_MEDIUMSEAGREEN        (0x3CB371AA)
#define COLOR_MEDIUMSLATEBLUE       (0x7B68EEAA)
#define COLOR_MEDIUMSPRINGGREEN     (0x00FA9AAA)
#define COLOR_MEDIUMTURQUOISE       (0x48D1CCAA)
#define COLOR_MEDIUMVIOLETRED       (0xC71585AA)
#define COLOR_MIDNIGHTBLUE          (0x191970AA)
#define COLOR_MINTCREAM             (0xF5FFFAAA)
#define COLOR_MISTYROSE             (0xFFE4E1AA)
#define COLOR_MOCCASIN              (0xFFE4B5AA)
#define COLOR_NAVAJOWHITE           (0xFFDEADAA)
#define COLOR_NAVY                  (0x000080AA)
#define COLOR_OLDLACE               (0xFDF5E6AA)
#define COLOR_OLIVE                 (0x808000AA)
#define COLOR_OLIVEDRAB             (0x6B8E23AA)
#define COLOR_ORANGE                (0xFFA500AA)
#define COLOR_ORANGERED             (0xFF4500AA)
#define COLOR_ORCHID                (0xDA70D6AA)
#define COLOR_PALEGOLDENROD         (0xEEE8AAAA)
#define COLOR_PALEGREEN             (0x98FB98AA)
#define COLOR_PALETURQUOISE         (0xAFEEEEAA)
#define COLOR_PALEVIOLETRED         (0xD87093AA)
#define COLOR_PAPAYAWHIP            (0xFFEFD5AA)
#define COLOR_PEACHPUFF             (0xFFDAB9AA)
#define COLOR_PERU                  (0xCD853FAA)
#define COLOR_PINK                  (0xFFC0CBAA)
#define COLOR_PLUM                  (0xDDA0DDAA)
#define COLOR_POWDERBLUE            (0xB0E0E6AA)
#define COLOR_PURPLE                (0x800080AA)
#define COLOR_RED                   (0xFF0000AA)
#define COLOR_ROSYBROWN             (0xBC8F8FAA)
#define COLOR_ROYALBLUE             (0x4169E1AA)
#define COLOR_SADDLEBROWN           (0x8B4513AA)
#define COLOR_SALMON                (0xFA8072AA)
#define COLOR_SANDYBROWN            (0xF4A460AA)
#define COLOR_SEAGREEN              (0x2E8B57AA)
#define COLOR_SEASHELL              (0xFFF5EEAA)
#define COLOR_SIENNA                (0xA0522DAA)
#define COLOR_SILVER                (0xC0C0C0AA)
#define COLOR_SKYBLUE               (0x87CEEBAA)
#define COLOR_SLATEBLUE             (0x6A5ACDAA)
#define COLOR_SLATEGRAY             (0x708090AA)
#define COLOR_SLATEGREY             (0x708090AA)
#define COLOR_SNOW                  (0xFFFAFAAA)
#define COLOR_SPRINGGREEN           (0x00FF7FAA)
#define COLOR_STEELBLUE             (0x4682B4AA)
#define COLOR_TAN                   (0xD2B48CAA)
#define COLOR_TEAL                  (0x008080AA)
#define COLOR_THISTLE               (0xD8BFD8AA)
#define COLOR_TOMATO                (0xFF6347AA)
#define COLOR_TURQUOISE             (0x40E0D0AA)
#define COLOR_VIOLET                (0xEE82EEAA)
#define COLOR_WHEAT                 (0xF5DEB3AA)
#define COLOR_WHITE                 (0xFFFFFFAA)
#define COLOR_WHITESMOKE            (0xF5F5F5AA)
#define COLOR_YELLOW                (0xFFFF00AA)
#define COLOR_YELLOWGREEN           (0x9ACD32AA)

#define foreach(%1,%2) for(new %1 = 0; %1 < %2; %1++)
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

new total_vehicles_from_files=0;

enum pInfo
{
    pAdminLevel,
    pCash,
    pScore
}
new PlayerInfo[MAX_PLAYERS][pInfo];
new gPlayerLogged[MAX_PLAYERS];

main()
{
    printf("%s", VS);
    printf("Version: %s", VERSION);
    printf("Developer: %s", DEVELOPER);
}

public OnGameModeInit()
{
    djson_GameModeInit();
    djStyled(true);
    SendRconCommand("mapname CHEDDER");
   
    SetGameModeText("FREEROAM/STUNT/DM");
    AddPlayerClass(299, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(1, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(2, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(22, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(23, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(28, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(29, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(42, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(70, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(71, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(72, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(73, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(86, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(120, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(124, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(163, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(164, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(165, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(166, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(170, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(179, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(253, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(255, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(265, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(266, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(267, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(268, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(274, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(275, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(276, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(277, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(278, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(279, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(280, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(281, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(282, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(283, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(284, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(285, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(286, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(287, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(288, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(289, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(290, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(291, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(292, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(294, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
    AddPlayerClass(295, 2323.6184,1283.2637,97.5524,90.0000, 0, 0, 0, 0, 0, 0);
   
    // SPECIAL
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/trains.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/pilots.txt");

    // LAS VENTURAS
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_law.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_airport.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/lv_gen.txt");

    // SAN FIERRO
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_law.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_airport.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/sf_gen.txt");

    // LOS SANTOS
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_law.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_airport.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_inner.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/ls_gen_outer.txt");

    // OTHER AREAS
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/whetstone.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/bone.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/flint.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/tierra.txt");
    total_vehicles_from_files += LoadStaticVehiclesFromFile("vehicles/red_county.txt");
    return 1;
}

public OnGameModeExit()
{
    SaveAllStats();

    djson_GameModeExit();
    return 1;
}

public OnPlayerConnect(playerid)
{

    gPlayerLogged[playerid] = 0;
    new name[MAX_PLAYER_NAME], file[256];
    GetPlayerName(playerid, name, sizeof(name));
    format(file, sizeof(file), SERVER_USER_FILE, name);
    if(!fexist(file))
    {
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "You are not registered", "Input your password below", "Register", "Leave");
    }
    if(fexist(file))
    {
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "You are registered", "Input your password below", "Login", "Leave");
    }


    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    SaveStats(playerid);
    gPlayerLogged[playerid] = 0;
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, 2323.6184,1283.2637,97.5524);
    SetPlayerFacingAngle(playerid, 90.00);
    SetPlayerCameraPos(playerid, 2318.9031,1283.2516,97.5524);
    SetPlayerCameraLookAt(playerid, 2323.6184,1283.2637,97.5524);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    GivePlayerWeapon(playerid, 16, 99999);
    GivePlayerWeapon(playerid, 24, 99999);
    GivePlayerWeapon(playerid, 26, 99999);
    GivePlayerWeapon(playerid, 29, 99999);
    GivePlayerWeapon(playerid, 31, 99999);
    GivePlayerWeapon(playerid, 34, 99999);
    GivePlayerWeapon(playerid, 35, 99999);
    GivePlayerWeapon(playerid, 46, 99999);
    GivePlayerWeapon(playerid, 4, 99999);
    SetPlayerArmedWeapon(playerid, 0);
   
    SetPlayerPos(playerid, 2019.4993,1342.9958,10.8130);
    SetPlayerFacingAngle(playerid, -90.00);
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    SendDeathMessage(killerid, playerid, reason);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if (dialogid == 1)
    {
        new name[MAX_PLAYER_NAME], file[256], string[128];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "You are not registered", "Welcome, you are not registered. Input your password below", "Register", "Leave");
        djCreateFile(file);
        djSetInt(file, "player/Password", udb_hash(inputtext));
        djSetInt(file, "player/AdminLevel", 0);
        format(string, 128, "[SYSTEM]: You succesfully registered the nickname %s with password %s, you have been auto logged in.", name, inputtext);
        SendClientMessage(playerid, COLOR_YELLOW, string);
        gPlayerLogged[playerid] = 1;
    }
    if (dialogid == 2)
    {
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(!response) return Kick(playerid);
        if (!strlen(inputtext)) return ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "You are registered", "Input your password below", "Login", "Leave");
        new tmp;
        tmp = djInt(file, "player/Password");
        if(udb_hash(inputtext) != tmp)
        {
            SendClientMessage(playerid, COLOR_RED, "Wrong password");
            ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "You are registered", "Input your password below", "Login", "Leave");
        }
        else
        {
            gPlayerLogged[playerid] = 1;
            PlayerInfo[playerid][pAdminLevel] = djInt(file, "player/AdminLevel");
            PlayerInfo[playerid][pScore] = djInt(file, "player/Score");
            PlayerInfo[playerid][pCash] = djInt(file, "player/Money");
            SendClientMessage(playerid,COLOR_RED, "[SYSTEM]: Successfully logged in!");
        }
    }
   
    SaveStats(playerid);
    UpdateStats(playerid);
    return 1;
}

stock SaveAllStats()
{
    for(new slots = GetMaxPlayers(), i; i < slots; i++)
    {
        if(IsPlayerConnected(i))
        {
            SaveStats(i);
        }
    }
    return 1;
}

stock SaveStats(playerid)
{
    if(gPlayerLogged[playerid] == 1)
    {
        UpdateStats(playerid);
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(fexist(file))
        {
            PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
            PlayerInfo[playerid][pScore] = GetPlayerScore(playerid);
       
            djSetInt(file, "player/Score", PlayerInfo[playerid][pScore]);
            djSetInt(file, "player/Money", PlayerInfo[playerid][pCash]);
            djSetInt(file, "player/AdminLevel", PlayerInfo[playerid][pAdminLevel]);
        }
    }
    return 1;
}

stock UpdateStats(playerid)
{
    if(gPlayerLogged[playerid] == 1)
    {
        new name[MAX_PLAYER_NAME], file[256];
        GetPlayerName(playerid, name, sizeof(name));
        format(file, sizeof(file), SERVER_USER_FILE, name);
        if(fexist(file))
        {
            PlayerInfo[playerid][pAdminLevel] = djInt(file, "player/AdminLevel");
            PlayerInfo[playerid][pCash] = djInt(file, "player/Money");
            PlayerInfo[playerid][pScore] = djInt(file, "player/Score");
           
            GivePlayerMoney(playerid, -GetPlayerMoney(playerid));
            GivePlayerMoney(playerid, PlayerInfo[playerid][pCash]);
            SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
        }
    }
    return 1;
}

stock LoadStaticVehiclesFromFile(const filename[])
{
    new File:file_ptr;
    new line[256];
    new var_from_line[64];
    new vehicletype;
    new Float:SpawnX;
    new Float:SpawnY;
    new Float:SpawnZ;
    new Float:SpawnRot;
    new Color1, Color2;
    new index;
    new vehicles_loaded;
    new vid;

    file_ptr = fopen(filename,filemode:io_read);
    if(!file_ptr) return 0;

    vehicles_loaded = 0;

    while(fread(file_ptr,line,256) > 0)
    {
        index = 0;

        // Read type
        index = token_by_delim(line,var_from_line,',',index);
        if(index == (-1)) continue;
        vehicletype = strval(var_from_line);
        if(vehicletype < 400 || vehicletype > 611) continue;

        // Read X, Y, Z, Rotation
        index = token_by_delim(line,var_from_line,',',index+1);
        if(index == (-1)) continue;
        SpawnX = floatstr(var_from_line);

        index = token_by_delim(line,var_from_line,',',index+1);
        if(index == (-1)) continue;
        SpawnY = floatstr(var_from_line);

        index = token_by_delim(line,var_from_line,',',index+1);
        if(index == (-1)) continue;
        SpawnZ = floatstr(var_from_line);

        index = token_by_delim(line,var_from_line,',',index+1);
        if(index == (-1)) continue;
        SpawnRot = floatstr(var_from_line);

        // Read Color1, Color2
        index = token_by_delim(line,var_from_line,',',index+1);
        if(index == (-1)) continue;
        Color1 = strval(var_from_line);

        index = token_by_delim(line,var_from_line,';',index+1);
        Color2 = strval(var_from_line);

        //printf("%d,%d,%f,%f,%f,%f,%d,%d",total_vehicles_from_files+vehicles_loaded+1,vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2);

        vid = AddStaticVehicleEx(vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2,(30*60)); // respawn 30 minutes

        RandomiseNumberPlate(vid,"SSS_idi");

        vehicles_loaded++;
    }

    fclose(file_ptr);
    printf("Loaded %d vehicles from: %s",vehicles_loaded,filename);
    return vehicles_loaded;
}

stock token_by_delim(const string[], return_str[], delim, start_index)
{
    new x=0;
    while(string[start_index] != EOS && string[start_index] != delim) {
        return_str[x] = string[start_index];
        x++;
        start_index++;
    }
    return_str[x] = EOS;
    if(string[start_index] == EOS) start_index = (-1);
    return start_index;
}

stock RandomiseNumberPlate(vehicleid,const format[])
{
    new numstr[8];
    new x = strlen(format);
    if(x > 8) x = 8;
    for(new i;i<x;i++)
    {
        switch(format[i])
        {
            case 'i','d':numstr[i]=random(10)+48;
            case 's':numstr[i]=random(26)+97;
            case 'S':numstr[i]=random(26)+65;
            case '_',' ':numstr[i]=' ';
        }
    }
    SetVehicleNumberPlate(vehicleid,numstr);
}
If you find ANY bugs, please tell me what they are and maybe if its a hard one, how to fix it. :P Also, The things that are not used in the code ect.. #define's will be used later.. like the colors and all that. I will use them later. Anyway, let me know about any bugs or anything you think I should add/remove. Thanks for reading and your time. I do know of one but atm btw. Its this: when you re-spawn, you lose your cash. I do have the script on a live server atm. IP = 24.111.46.103:7777. So, thanks for reading, and see you later!
Reply
#2

i updated the code, but the cash/score of the player reset on spawn... any ideas?
Reply
#3

alright. I have finally been able to conclude that this code doesnt save the cash or score and it resets the cash/score when you connect/disconect/spawn ect... not when u die.. any ideas ppl? I might re-code it tonight.. idk. anyway, lemme know what you think. :P THX!
Reply
#4

What in the hell is this?
Reply
#5

-you have set up several spawn positions (AddPlayerClass), but in the OnPlayerSpawn() theres a SetPlayerPos() and SetPlayerFacingAngle(). i guess you wanted to test something there
-in the OnDialogResponse(), the SaveStats() and UpdateStats() gets called regardless the input (can cause stress later with more dialogs)
-SaveAllStats() checks only if a player is connected, then saves his data. imagine a player just registering, and then server restarts - avoid that by checking gPlayerLogged[playerid] aswell
-shouldnt RandomiseNumberPlate() contain a return 1; in its end?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)