01.11.2018, 12:55
Help MySQL
01.11.2018, 13:13
Well there is no "automatic" way, so you have to look for each function's job, then to replace it manually, there's no other way.
01.11.2018, 13:33
I do not sign up for a dealership creation.
Code:
#define MAX_DEALERSHIPS 50
enum dealership_enum
{
dealership_name[32],
dealership_owner[24],
dealership_price,
dealership_id,
dealership_owned,
Text3D:dealership_label,
Float:dealership_x,
Float:dealership_y,
Float:dealership_z,
Float:dealership_radius,
dealership_earnings,
DID
};
new DealershipStatistics[MAX_DEALERSHIPS][dealership_enum];
enum vehicle_stats
{
vehicle_dealership,
vehicle_model,
vehicle_price,
Float:vehicle_position[5],
Text3D:vehicle_label,
vehicle_onsale,
VID
};
new VehicleStatistics[MAX_VEHICLES][vehicle_stats];
new bool:dealership_taken[MAX_DEALERSHIPS];
public OnFilterScriptInit()
{
ConnectMySQL();
SetupDealershipsTable();
SetupVehiclesTable();
return 1;
}
public OnFilterScriptExit()
{
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
if(dealership_taken[i] == true)
{
SaveDealership_MySQL(i);
for(new v = 1; v < MAX_VEHICLES; v++)
{
if(VehicleStatistics[v][vehicle_dealership] == i)
{
VehicleStatistics[v][vehicle_dealership] = 0;
VehicleStatistics[v][vehicle_model] = 0;
VehicleStatistics[v][vehicle_price] = 0;
VehicleStatistics[v][vehicle_position][1] = 0.0;
VehicleStatistics[v][vehicle_position][2] = 0.0;
VehicleStatistics[v][vehicle_position][3] = 0.0;
VehicleStatistics[v][vehicle_position][4] = 0.0;
VehicleStatistics[v][vehicle_onsale] = 0;
Delete3DTextLabel(VehicleStatistics[v][vehicle_label]);
DestroyVehicle(v);
}
}
strmid(DealershipStatistics[i][dealership_name], "None", 0, strlen("None"), 255);
strmid(DealershipStatistics[i][dealership_owner], "No-one", 0, strlen("No-one"), 255);
DealershipStatistics[i][dealership_price] = 0;
DealershipStatistics[i][dealership_owned] = 0;
DealershipStatistics[i][dealership_x] = 0.0;
DealershipStatistics[i][dealership_y] = 0.0;
DealershipStatistics[i][dealership_z] = 0.0;
DealershipStatistics[i][dealership_radius] = 0.0;
DealershipStatistics[i][dealership_earnings] = 0;
dealership_taken[i] = false;
Delete3DTextLabel(DealershipStatistics[i][dealership_label]);
DestroyPickup(DealershipStatistics[i][dealership_id]);
}
}
return 1;
}
stock CreateDealershipVehicle(creator, model, price, Float:carx, Float:cary, Float:carz, Float:carangle)
{
new vehicleid, string[256];
vehicleid = CreateVehicle(model, carx, cary, carz, carangle, 0, 0, -1);
if(vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(creator, -1, "The car couldn't be created !");
VehicleStatistics[vehicleid][vehicle_dealership] = GetPVarInt(creator, "HasDealership");
VehicleStatistics[vehicleid][vehicle_model] = model;
VehicleStatistics[vehicleid][vehicle_price] = price;
VehicleStatistics[vehicleid][vehicle_position][1] = carx;
VehicleStatistics[vehicleid][vehicle_position][2] = cary;
VehicleStatistics[vehicleid][vehicle_position][3] = carz;
VehicleStatistics[vehicleid][vehicle_position][4] = carangle;
VehicleStatistics[vehicleid][vehicle_onsale] = 1;
format(string, sizeof(string), "%s For Sale - Price: $%d", GetVehicleName(vehicleid), price);
VehicleStatistics[vehicleid][vehicle_label] = Create3DTextLabel(string, -1, carx, cary, carz, 10.0, 0);
SaveDealership_MySQL(GetPVarInt(creator, "HasDealership"));
return 1;
}
CMD:createdealer(playerid, params[])
{
new price, dealername[32], Float:radius, dealershipid = -1, bool:assigned = false, string[256], Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, " You are not authorized to use this command !");
if(sscanf(params, "dfs", price, radius, dealername))
return SendClientMessage(playerid, -1, "* [Usage]: /createdealer [price] [radius] [name of dealership]");
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
if(dealership_taken[i] == false)
{
dealershipid = i;
assigned = true;
break;
}
}
if(assigned == false) return SendClientMessage(playerid, -1, " Something went wrong while creating the dealership !");
strmid(DealershipStatistics[dealershipid][dealership_name], dealername, 0, strlen(dealername), 255);
strmid(DealershipStatistics[dealershipid][dealership_owner], "No-one", 0, strlen("No-one"), 255);
DealershipStatistics[dealershipid][dealership_price] = price;
DealershipStatistics[dealershipid][dealership_owned] = 0;
DealershipStatistics[dealershipid][dealership_x] = x;
DealershipStatistics[dealershipid][dealership_y] = y;
DealershipStatistics[dealershipid][dealership_z] = z;
DealershipStatistics[dealershipid][dealership_radius] = radius;
DealershipStatistics[dealershipid][dealership_id] = CreatePickup(1274, 23, x, y, z);
format(string, sizeof(string), "{FF6347}%s{FFFFFF} is for sale!\n\n{FF6347}Price:{FFFFFF} $%d\n\nTo purchase this dealership, type /buydealer.", dealername, price);
DealershipStatistics[dealershipid][dealership_label] = Create3DTextLabel(string, -1, x, y, z, 10.0, 0);
format(string, sizeof(string), " Dealership %d created.", dealershipid);
SendClientMessage(playerid, -1, string);
dealership_taken[dealershipid] = true;
SaveDealership_MySQL(dealershipid);
return 1;
}
stock SaveDealership_MySQL(dealershipid)
{
if(dealership_taken[dealershipid] == true)
{
new query[145];
mysql_format(g_SQL, query, sizeof query, "UPDATE `dealerships` SET `dealership_name` = %s, `dealership_owner` = %s, `dealership_price` = %d, `dealership_owned` = %d, `dealership_x` = %f, `dealership_y` = %f, `dealership_z` = %f, `dealership_radius` = %f, `dealership_earnings` = %d WHERE `did` = %d LIMIT 1",
DealershipStatistics[dealershipid][dealership_name], DealershipStatistics[dealershipid][dealership_owner], DealershipStatistics[dealershipid][dealership_price], DealershipStatistics[dealershipid][dealership_owned],
DealershipStatistics[dealershipid][dealership_x], DealershipStatistics[dealershipid][dealership_y], DealershipStatistics[dealershipid][dealership_z], DealershipStatistics[dealershipid][dealership_radius],
DealershipStatistics[dealershipid][dealership_earnings], DealershipStatistics[dealershipid][DID]);
mysql_tquery(g_SQL, query);
}
for(new i = 1; i < MAX_VEHICLES; i++)
{
if(VehicleStatistics[i][vehicle_dealership] == dealershipid)
{
new query[145];
mysql_format(g_SQL, query, sizeof query, "UPDATE `vehicles` SET `vehicle_dealership` = %d, `vehicle_model` = %d, `vehicle_price` = %d, `vehicle_x` = %f, `vehicle_y` = %f, `vehicle_z` = %f, `vehicle_angle` = %f, `vehicle_onsale` = %d WHERE `vid` = %d LIMIT 1",
VehicleStatistics[i][vehicle_dealership], VehicleStatistics[i][vehicle_model], VehicleStatistics[i][vehicle_price], VehicleStatistics[i][vehicle_position][1],
VehicleStatistics[i][vehicle_position][2], VehicleStatistics[i][vehicle_position][3], VehicleStatistics[i][vehicle_position][4], VehicleStatistics[i][vehicle_onsale], VehicleStatistics[i][VID]);
mysql_tquery(g_SQL, query);
}
}
return 1;
}
SetupDealershipsTable()
{
new mysql_dealership[1000];
strcat(mysql_dealership, "CREATE TABLE IF NOT EXISTS `dealerships` (");
strcat(mysql_dealership, "`did` int(11) NOT NULL AUTO_INCREMENT, ");
strcat(mysql_dealership, "`dealership_name` varchar(24) NOT NULL, ");
strcat(mysql_dealership, "`dealership_owner` varchar(24) NOT NULL, ");
strcat(mysql_dealership, "`dealership_price` int(11) NOT NULL, ");
strcat(mysql_dealership, "`dealership_owned` int(11) NOT NULL DEFAULT '0', ");
strcat(mysql_dealership, "`dealership_x` float NOT NULL DEFAULT '0', ");
strcat(mysql_dealership, "`dealership_y` float NOT NULL DEFAULT '0', ");
strcat(mysql_dealership, "`dealership_z` float NOT NULL DEFAULT '0', ");
strcat(mysql_dealership, "`dealership_radius` float NOT NULL DEFAULT '0', ");
strcat(mysql_dealership, "`dealership_earnings` int(11) NOT NULL DEFAULT '0', ");
strcat(mysql_dealership, "PRIMARY KEY (`did`), ");
strcat(mysql_dealership, "UNIQUE KEY `dealership_name` (`dealership_name`))");
mysql_tquery(g_SQL, mysql_dealership);
return 1;
}
SetupVehiclesTable()
{
new mysql_cars[1000];
strcat(mysql_cars, "CREATE TABLE IF NOT EXISTS `vehicle` (");
strcat(mysql_cars, "`vid` int(11) NOT NULL AUTO_INCREMENT, ");
strcat(mysql_cars, "`vehicle_dealership` int(11) NOT NULL, ");
strcat(mysql_cars, "`vehicle_model` int(11) NOT NULL, ");
strcat(mysql_cars, "`vehicle_price` int(11) NOT NULL, ");
strcat(mysql_cars, "`vehicle_x` float NOT NULL DEFAULT '0', ");
strcat(mysql_cars, "`vehicle_y` float NOT NULL DEFAULT '0', ");
strcat(mysql_cars, "`vehicle_z` float NOT NULL DEFAULT '0', ");
strcat(mysql_cars, "`vehicle_angle` float NOT NULL DEFAULT '0', ");
strcat(mysql_cars, "`vehicle_onsale` int(11) NOT NULL DEFAULT '0', ");
strcat(mysql_cars, "PRIMARY KEY (`vid`), ");
strcat(mysql_cars, "UNIQUE KEY `vehicle_dealership` (`vehicle_dealership`))");
mysql_tquery(g_SQL, mysql_cars);
return 1;
}
01.11.2018, 13:49
01.11.2018, 13:51
I'm not saving it.
01.11.2018, 14:16
You must write WHEN you want to want call SaveDealership_MySQL
I dont think what call it under OnFilterScriptExit is good...
I dont think what call it under OnFilterScriptExit is good...
01.11.2018, 15:07
So what should I do?
01.11.2018, 15:39
Edit
and
as well, they're being called OnPlayerDisconnect to save player's data.
Code:
SavePlayerVehicleData(playerid)
Code:
UnloadVehicles(playerid)
01.11.2018, 15:48
Okay. Thank you. How can I change from SII to the latest MySQL BlueG SavePlayerVehicleData(playerid) ?
01.11.2018, 16:15
Here's an example from my script:
You've got a lot of MYSQL tutorials around the forums, they can and should help you. If you still need help, don't hesitate.
pawn Code:
SavePlayer(playerid)
{
new query[1024];
mysql_format(Database, query, sizeof(query), "UPDATE `users` SET `Cash` = '%d', `Kills` = '%d', `Deaths` = '%d', `PosX` = '%f', `PosY` = '%f', `PosZ` = '%f', `Angle` = '%f', `Health` = '%f', `Armor` = '%f' WHERE `ID` = '%d'",
PlayerInfo[playerid][Cash], PlayerInfo[playerid][Kills], PlayerInfo[playerid][Deaths],
PlayerInfo[playerid][PosX], PlayerInfo[playerid][PosY], PlayerInfo[playerid][PosZ], PlayerInfo[playerid][Angle],
PlayerInfo[playerid][Health], PlayerInfo[playerid][Armor], PlayerInfo[playerid][ID]);
mysql_query(Database, query);
return 1;
}
01.11.2018, 16:43
I know. I only have a problem with CMD dealerships that do not save.
I've done it again.
What am I doing wrong?
I've done it again.
Code:
#define MAX_DEALERSHIPS 50
enum dealership_enum
{
dealership_name[32],
dealership_owner[24],
dealership_price,
dealership_id,
dealership_owned,
Text3D:dealership_label,
Float:dealership_x,
Float:dealership_y,
Float:dealership_z,
Float:dealership_radius,
dealership_earnings
};
new DealershipStatistics[MAX_DEALERSHIPS][dealership_enum];
new bool:dealership_taken[MAX_DEALERSHIPS];
public OnGameModeInit()
{
SetupDealershipsTable();
return 1;
}
SetupDealershipsTable()
{
mysql_tquery(g_SQL, "CREATE TABLE IF NOT EXISTS `dealerships` (\
`dealership_id` int(11) NOT NULL,\
`dealership_name` varchar(25) NOT NULL,\
`dealership_owner` varchar(25) NOT NULL default '-',\
`dealership_price` int(11) NOT NULL,\
`dealership_owned` int(11) NOT NULL,\
`dealership_x` float NOT NULL,\
`dealership_y` float NOT NULL,\
`dealership_z` float NOT NULL,\
`dealership_radius` float NOT NULL,\
`dealership_earnings` int(11) NOT NULL,\
UNIQUE KEY `dealership_id` (`dealership_id`))");
return 1;
}
CMD:createdealer(playerid, params[])
{
new
price,
dealername[32],
Float:radius,
dealershipid = -1,
bool:assigned = false,
string[256],
Float:x,
Float:y,
Float:z;
GetPlayerPos(playerid, x, y, z);
if(sscanf(params, "dfs[32]", price, radius, dealername))
return SendClientMessage(playerid, -1, "* [Usage]: /createdealer [price] [radius] [name of dealership]");
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
if(dealership_taken[i] == false)
{
dealershipid = i;
assigned = true;
break;
}
}
if(assigned == false) return SendClientMessage(playerid, -1, "Something went wrong while creating the dealership !");
strmid(DealershipStatistics[dealershipid][dealership_name], dealername, 0, strlen(dealername), 255);
strmid(DealershipStatistics[dealershipid][dealership_owner], "No-one", 0, strlen("No-one"), 255);
DealershipStatistics[dealershipid][dealership_price] = price;
DealershipStatistics[dealershipid][dealership_owned] = 0;
DealershipStatistics[dealershipid][dealership_x] = x;
DealershipStatistics[dealershipid][dealership_y] = y;
DealershipStatistics[dealershipid][dealership_z] = z;
DealershipStatistics[dealershipid][dealership_radius] = radius;
DealershipStatistics[dealershipid][dealership_id] = CreatePickup(1274, 23, x, y, z);
format(string, sizeof(string), "{FF6347}%s{FFFFFF} is for sale!\n\n{FF6347}Price:{FFFFFF} $%d\n\nTo purchase this dealership, type /buydealer.", dealername, price);
DealershipStatistics[dealershipid][dealership_label] = Create3DTextLabel(string, -1, x, y, z, 10.0, 0);
format(string, sizeof(string), " Dealership %d created.", dealershipid);
SendClientMessage(playerid, -1, string);
dealership_taken[dealershipid] = true;
SaveDealership(dealershipid);
return 1;
}
stock SaveDealership(dealershipid)
{
if(dealership_taken[dealershipid] == true)
{
new query[500];
mysql_format(g_SQL, query, sizeof(query), "UPDATE `dealerships` SET `dealership_name` = '%e', `dealership_owner` = '%e', `dealership_price` = %i, `dealership_owned` = %i,\
`dealership_x` = %f, `dealership_y` = %f, `dealership_z` = %f, `dealership_radius` = %f, `dealership_earnings` = %i WHERE `dealership_id` = %d",
DealershipStatistics[dealershipid][dealership_name], DealershipStatistics[dealershipid][dealership_owner], DealershipStatistics[dealershipid][dealership_price],
DealershipStatistics[dealershipid][dealership_owned], DealershipStatistics[dealershipid][dealership_x], DealershipStatistics[dealershipid][dealership_y],
DealershipStatistics[dealershipid][dealership_z], DealershipStatistics[dealershipid][dealership_radius], DealershipStatistics[dealershipid][dealership_earnings],
DealershipStatistics[dealershipid][dealership_id]);
mysql_tquery(g_SQL, query);
}
return 1;
}
01.11.2018, 16:50
You're creating not editing the dealership, so use "INSERT INTO"
https://www.w3schools.com/sql/sql_insert.asp
https://www.w3schools.com/sql/sql_insert.asp
01.11.2018, 17:11
It works. I used this
I did it correctly?
Code:
new query[200];
mysql_format(g_SQL, query, sizeof query, "INSERT INTO `dealerships` (`dealership_id`) VALUES ('%d')", DealershipStatistics[dealershipid][dealership_id]);
mysql_tquery(g_SQL, query);
01.11.2018, 17:20
Where do you placed that code?
01.11.2018, 17:28
CMD:createdealer(playerid, params[])
Code:
CMD:createdealer(playerid, params[])
{
new
price,
dealername[32],
Float:radius,
dealershipid = -1,
bool:assigned = false,
string[256],
Float:x,
Float:y,
Float:z;
GetPlayerPos(playerid, x, y, z);
if(sscanf(params, "dfs[32]", price, radius, dealername))
return SendClientMessage(playerid, -1, "* [Usage]: /createdealer [price] [radius] [name of dealership]");
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
if(dealership_taken[i] == false)
{
dealershipid = i;
assigned = true;
break;
}
}
if(assigned == false) return SendClientMessage(playerid, -1, "Something went wrong while creating the dealership !");
strmid(DealershipStatistics[dealershipid][dealership_name], dealername, 0, strlen(dealername), 255);
strmid(DealershipStatistics[dealershipid][dealership_owner], "No-one", 0, strlen("No-one"), 255);
DealershipStatistics[dealershipid][dealership_price] = price;
DealershipStatistics[dealershipid][dealership_owned] = 0;
DealershipStatistics[dealershipid][dealership_x] = x;
DealershipStatistics[dealershipid][dealership_y] = y;
DealershipStatistics[dealershipid][dealership_z] = z;
DealershipStatistics[dealershipid][dealership_radius] = radius;
DealershipStatistics[dealershipid][dealership_id] = CreatePickup(1274, 23, x, y, z);
format(string, sizeof(string), "{FF6347}%s{FFFFFF} is for sale!\n\n{FF6347}Price:{FFFFFF} $%d\n\nTo purchase this dealership, type /buydealer.", dealername, price);
DealershipStatistics[dealershipid][dealership_label] = Create3DTextLabel(string, -1, x, y, z, 10.0, 0);
format(string, sizeof(string), " Dealership %d created.", dealershipid);
SendClientMessage(playerid, -1, string);
dealership_taken[dealershipid] = true;
new query[221];
mysql_format(g_SQL, query, sizeof query, "INSERT INTO `dealerships` (`dealership_id`) VALUES ('%d')", DealershipStatistics[dealershipid][dealership_id]);
mysql_tquery(g_SQL, query);
SaveDealership(dealershipid);
return 1;
}
01.11.2018, 17:35
Yes it's correct, but you've saved only the dealership_id, put the same arguments you've done previously with that syntax.
01.11.2018, 18:13
Thank you. One more thing to change into MySQL.
Code:
stock LoadDealerships()
{
new file[100], string[256], name[32], ownr[24];
for(new i = 1; i < MAX_DEALERSHIPS; i++)
{
format(file, sizeof(file), "dealerships/%d.cfg", i);
if(fexist(file) && INI_Open(file))
{
INI_ReadString(name, "dealership_name");
INI_ReadString(ownr, "dealership_owner");
strmid(DealershipStatistics[i][dealership_name], name, 0, strlen(name), 255);
strmid(DealershipStatistics[i][dealership_owner], ownr, 0, strlen(ownr), 255);
DealershipStatistics[i][dealership_price] = INI_ReadInt("dealership_price");
DealershipStatistics[i][dealership_owned] = INI_ReadInt("dealership_owned");
DealershipStatistics[i][dealership_x] = INI_ReadFloat("dealership_x");
DealershipStatistics[i][dealership_y] = INI_ReadFloat("dealership_y");
DealershipStatistics[i][dealership_z] = INI_ReadFloat("dealership_z");
DealershipStatistics[i][dealership_radius] = INI_ReadFloat("dealership_radius");
DealershipStatistics[i][dealership_earnings] = INI_ReadInt("dealership_earnings");
switch(DealershipStatistics[i][dealership_owned])
{
case 0: { format(string, sizeof(string), "{FF6347}%s{FFFFFF} is for sale!\n\n{FF6347}Price:{FFFFFF} $%d\n\nTo purchase this dealership, type /buydealer.", DealershipStatistics[i][dealership_name], DealershipStatistics[i][dealership_price]); }
case 1: { format(string, sizeof(string), "{FF6347}%s{FFFFFF}\n\n{FF6347}Owner:{FFFFFF} %s", DealershipStatistics[i][dealership_name], DealershipStatistics[i][dealership_owner]); }
}
DealershipStatistics[i][dealership_label] = Create3DTextLabel(string, -1, DealershipStatistics[i][dealership_x], DealershipStatistics[i][dealership_y], DealershipStatistics[i][dealership_z], 10.0, 0);
CreatePickup(1274, 23, DealershipStatistics[i][dealership_x], DealershipStatistics[i][dealership_y], DealershipStatistics[i][dealership_z]);
dealership_taken[i] = true;
INI_Close();
}
}
return 1;
}
01.11.2018, 19:18
For that use threaded queries:
pawn Code:
mysql_tquery(Database, "SELECT * FROM `dealerships`, "LoadDealerships", ""); // Call it separately, OnGameModeInit if you want to
pawn Code:
forward LoadDealerships();
public LoadDealerships()
{
for (new i; i < MAX_DEALERSHIPS; i++)
{
/*
cache_get_value_name(row_idx, const column_name[], destination[], max_len = sizeof(destination)
cache_get_value_name_bool(row_idx, column_name[], &bool:destination)
cache_get_value_name_int(row_idx, const column_name[], destination)
cache_get_value_name_float(row_idx, const column_name[], Float:destination)
*/
cache_get_value_name(i, "dealership_name", DealershipStatistics[i][dealership_name]);
// ...
}
return 1;
}
01.11.2018, 20:29
I did. But when I create a dealership with the command, it shows me:
Code:
if(assigned == false) return SendClientMessage(playerid, -1, "Something went wrong while creating the dealership !");
01.11.2018, 20:56
Try another ID, maybe it means that the ID is already taken.
« Next Oldest | Next Newest »
Users browsing this thread: 1 Guest(s)


