#define THREAD_INITIATE_PVEHICLES
enum pvinfoE { pvId, pvModel, pvOwnerId, Float: pvVPosition[3], Float: pvVRotation, pvColour[2], pvSpawned, pvScriptID, }
new pvVariables[MAX_VEHICLES][pvinfoE];
CMD:vspawn(playerid, params[]) { if(playerVariables[playerid][pAdminLevel] >= 1) { CreateVehicle(pvVariables[playerid][pvModel], pvVariables[playerid][pvVPosition][0], pvVariables[playerid][pvVPosition][1], pvVariables[playerid][pvVPosition][2], pvVariables[playerid][pvVRotation], pvVariables[playerid][pvColour][0], pvVariables[playerid][pvColour][1], 1); } }
case THREAD_INITIATE_PVEHICLES: { mysql_store_result(); new x, bool: success = true; while(mysql_retrieve_row()) { mysql_get_field("pvId", result); x = strval(result); if(systemVariables[vehicleCounts][0] + systemVariables[vehicleCounts][1] + systemVariables[vehicleCounts][2] < MAX_VEHICLES) { mysql_get_field("pvModel", result); pvVariables[x][pvModel] = strval(result); mysql_get_field("pvOwnerId", result); pvVariables[x][pvOwnerId] = strval(result); mysql_get_field("pvPosX", result); pvVariables[x][pvVPosition][0] = floatstr(result); mysql_get_field("pvPosY", result); pvVariables[x][pvVPosition][1] = floatstr(result); mysql_get_field("pvPosZ", result); pvVariables[x][pvVPosition][2] = floatstr(result); mysql_get_field("pvPosZAngle", result); pvVariables[x][pvVRotation] = floatstr(result); mysql_get_field("pvColour1", result); pvVariables[x][pvColour][0] = strval(result); mysql_get_field("pvColour2", result); pvVariables[x][pvColour][1] = strval(result); } } }
stock initiatePlayerVehicles() { return mysql_query("SELECT * FROM playervehicles", THREAD_INITIATE_PVEHICLES); }
initiatePlayerVehicles();
mysql_get_field("pvId", result);
Are you loading a MySQL database ID with this code?
pawn Код:
You're loading a MySQL database ID and trying to pass that as the playerid, but MySQL database ID's and player ID's are not always the same. Yes, there is an off chance that you load MySQL DB ID 0 and try to pass 0 as the playerid, which would allow player ID 0 to have the information, but that isn't always going to be the case. |
CMD:veh(playerid, params[])
{
new id, Float:pos[4], col[2], string[256], query[500];
if(playerVariables[playerid][pAdminLevel] < 1)
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Error{FFFFFF}: You do not have the authorities to use this command.");
return 1;
}
if(!strcmp(params, "despawn"))
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Error{FFFFFF}: You cannot despawn a vehicle unless you're in the driver seat.");
return 1;
}
for(new i=0; i<MAX_VEHICLES; i++)
{
if(pvVariables[i][pvModel] == cVeh[i])
{
DestroyVehicle(cVeh[i]);
pvVariables[i][pvModel] = 0;
pvVariables[i][pvVPosition][0] = 0;
pvVariables[i][pvVPosition][1] = 0;
pvVariables[i][pvVPosition][2] = 0;
pvVariables[i][pvVRotation] = 0;
pvVariables[i][pvColour][0] = 0;
pvVariables[i][pvColour][1] = 0;
format(query, sizeof(query), "DELETE FROM `Vehicles` WHERE Model = %d", pvVariables[i][pvModel]);
mysql_query(query);
i = MAX_VEHICLES;
return 1;
}
}
SendClientMessage(playerid, COLOR_LIGHTRED, "Error{FFFFFF}: You cannot despawn this vehicle.");
return 1;
}
if(sscanf(params, "iii", id, col[0], col[1]))
{
SendClientMessage(playerid, COLOR_YELLOW, "Usage{FFFFFF}: /veh [vehicle id/despawn] [color 1] [color 2]");
return 1;
}
if(id < 400 || id > 611)
{
SendClientMessage(playerid, COLOR_LIGHTRED, "Error{FFFFFF}: Vehicle ID's are between 400 and 611.");
return 1;
}
GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
GetPlayerFacingAngle(playerid, pos[3]);
for(new i=0; i<MAX_VEHICLES; i++)
{
if(!cVeh[i])
{
pvVariables[i][pvModel] = id;
pvVariables[i][pvVPosition][0] = pos[0];
pvVariables[i][pvVPosition][1] = pos[1];
pvVariables[i][pvVPosition][2] = pos[2];
pvVariables[i][pvVRotation] = pos[3];
pvVariables[i][pvColour][0] = col[0];
pvVariables[i][pvColour][1] = col[1];
format(query, sizeof(query), "INSERT INTO Vehicles (Model, XPos, YPos, ZPos, Angle, Color1, Color2) VALUES(%d, %f, %f, %f, %f, %d, %d)",
pvVariables[i][pvModel],
pvVariables[i][pvVPosition][0],
pvVariables[i][pvVPosition][1],
pvVariables[i][pvVPosition][2],
pvVariables[i][pvVRotation],
pvVariables[i][pvColour][0],
pvVariables[i][pvColour][1],
mysql_query(query);
cVeh[i] = CreateVehicle(pvVariables[i][pvModel], pvVariables[i][pvVPosition][0], pvVariables[i][pvVPosition][1], pvVariables[i][pvVPosition][2], pvVariables[i][pvVRotation], pvVariables[i][pvColour][0], pvVariables[i][pvColour][1], 1200);
i = MAX_VEHICLES;
}
}
return 1;
}
Well, gunna need to change the mysql names of the rows and table.
|
Nah, that's just the unique ID. I'm using pvOwnerId for the players ID which I get by using playerVariables[playerid][pInternalID].
|
case THREAD_INITIATE_PVEHICLES: {
mysql_store_result();
new
x,
rows = mysql_num_rows();
while(mysql_retrieve_row() && x < rows) {
mysql_get_field("pvId", result);
pvVariables[x][pvId]= strval(result);
if(systemVariables[vehicleCounts][0] + systemVariables[vehicleCounts][1] + systemVariables[vehicleCounts][2] < MAX_VEHICLES) {
mysql_get_field("pvModel", result);
pvVariables[x][pvModel] = strval(result);
mysql_get_field("pvOwnerId", result);
pvVariables[x][pvOwnerId] = strval(result);
mysql_get_field("pvPosX", result);
pvVariables[x][pvVPosition][0] = floatstr(result);
mysql_get_field("pvPosY", result);
pvVariables[x][pvVPosition][1] = floatstr(result);
mysql_get_field("pvPosZ", result);
pvVariables[x][pvVPosition][2] = floatstr(result);
mysql_get_field("pvPosZAngle", result);
pvVariables[x][pvVRotation] = floatstr(result);
mysql_get_field("pvColour1", result);
pvVariables[x][pvColour][0] = strval(result);
mysql_get_field("pvColour2", result);
pvVariables[x][pvColour][1] = strval(result);
pvVariables[x][pvScriptID] = CreateVehicle(pvVariables[x][pvModel], pvVariables[x][pvVPosition][0], pvVariables[x][pvVPosition][1], pvVariables[x][pvVPosition][2], pvVariables[x][pvVRotation], pvVariables[x][pvColour][0], pvVariables[x][pvColour][1], 60);
}
x++;
}
printf("%d private vehicles loaded.");
}