Help MySQL
#1

How to convert from SII to the latest MySQL BlueG

https://pastebin.com/raw/zZtLPy4s
Reply
#2

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.
Reply
#3

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;
}
Reply
#4

The code you gave is correct, assuming the plain functions you've added are also correct.

Quote:
Originally Posted by KamilPolska
View Post
I do not sign up for a dealership creation.
What does this mean?
Reply
#5

I'm not saving it.
Reply
#6

You must write WHEN you want to want call SaveDealership_MySQL

I dont think what call it under OnFilterScriptExit is good...
Reply
#7

So what should I do?
Reply
#8

Edit
Code:
SavePlayerVehicleData(playerid)
and
Code:
UnloadVehicles(playerid)
as well, they're being called OnPlayerDisconnect to save player's data.
Reply
#9

Okay. Thank you. How can I change from SII to the latest MySQL BlueG SavePlayerVehicleData(playerid) ?
Reply
#10

Here's an example from my script:

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;
}
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.
Reply
#11

I know. I only have a problem with CMD dealerships that do not save.

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;
}
What am I doing wrong?
Reply
#12

You're creating not editing the dealership, so use "INSERT INTO"

https://www.w3schools.com/sql/sql_insert.asp
Reply
#13

It works. I used this
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);
I did it correctly?
Reply
#14

Quote:
Originally Posted by KamilPolska
View Post
It works. I used this
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);
I did it correctly?
Where do you placed that code?
Reply
#15

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;
}
Reply
#16

Quote:
Originally Posted by KamilPolska
View Post
It works. I used this
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);
I did it correctly?
Yes it's correct, but you've saved only the dealership_id, put the same arguments you've done previously with that syntax.
Reply
#17

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;
}
Reply
#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;
}
Reply
#19

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 !");
Reply
#20

Try another ID, maybe it means that the ID is already taken.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)