14.11.2011, 00:27
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:
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!
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);
}
