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: 2 Guest(s)