17.12.2014, 11:36
(
Последний раз редактировалось Ox1gEN; 17.12.2014 в 12:40.
)
So after quite a while of me working on this system and asking quite a bit of questions.
I have reached the vehicles command part, now I had the basics of it working, now when I added like vehicle statuses, like the doors, the engine, etc.
It kind of-.. Doesn't work on the first try, I mean if you buy a vehicle and then park it, it'll save everything but when you /v_get it and the server hasn't restarted or anything it'll spawn the vehicle at 0, 0, 0, xyz co-ordinates.
I really don't know why this occurs, and btw I have everything loaded, I checked.
Code:
Here's my 'purchaseVehicle' stock which is used to purchase a vehicle for the player.
I have also checked the logs for mysql and the queries execute correctly without any errors.
I have reached the vehicles command part, now I had the basics of it working, now when I added like vehicle statuses, like the doors, the engine, etc.
It kind of-.. Doesn't work on the first try, I mean if you buy a vehicle and then park it, it'll save everything but when you /v_get it and the server hasn't restarted or anything it'll spawn the vehicle at 0, 0, 0, xyz co-ordinates.
I really don't know why this occurs, and btw I have everything loaded, I checked.
Code:
pawn Код:
YCMD:v_get(playerid, params[], help) {
if(PR[playerid][VehiclesOwned] == 0) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] You don't own any vehicle!");
else if(PR[playerid][PrivateVehSpawned] == true) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] Your vehicle is already spawned!");
else {
PR[playerid][PrivateVeh] = CreateVehicle(PR[playerid][Vehicle], PR[playerid][parkX], PR[playerid][parkY], PR[playerid][parkZ], PR[playerid][Angle], PR[playerid][Color1], PR[playerid][Color2], -1);
PR[playerid][PrivateVehSpawned] = true;
SetVehicleNumberPlate(PR[playerid][PrivateVeh], PR[playerid][Registration]);
UpdateVehicleDamageStatus(PR[playerid][PrivateVeh], PR[playerid][PanelStatus], PR[playerid][DoorStatus], PR[playerid][LightStatus], PR[playerid][TireStatus]);
SetVehicleHealth(PR[playerid][PrivateVeh], PR[playerid][EngineStatus]);
SendClientMessage(playerid, 0xF0F8FFAA, "[ ! ] Successfully spawned the vehicle. Checkpoint is set to its location.");
SendClientMessage(playerid, 0xFF0000FF, "[ ! ] Note: If checkpoint is unreach-able please use /rcp to remove it.");
SetPlayerCheckpoint(playerid, PR[playerid][parkX], PR[playerid][parkY], PR[playerid][parkZ], 10);
}
return 1;
}
YCMD:v_park(playerid, params[], help) {
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] You are not in any vehicle!");
else if(PR[playerid][VehiclesOwned] == 0) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] You don't own any vehicle!");
else if(PR[playerid][PrivateVehSpawned] == false) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] Your vehicle isn't spawned!");
else {
if(IsPlayerInVehicle(playerid, PR[playerid][PrivateVeh])) {
new query[356];
GetVehiclePos(PR[playerid][PrivateVeh], PR[playerid][parkX], PR[playerid][parkY], PR[playerid][parkZ]);
GetVehicleZAngle(PR[playerid][PrivateVeh], PR[playerid][Angle]);
GetVehicleHealth(PR[playerid][PrivateVeh], PR[playerid][EngineStatus]);
GetVehicleDamageStatus(PR[playerid][PrivateVeh], PR[playerid][PanelStatus], PR[playerid][DoorStatus], PR[playerid][LightStatus], PR[playerid][TireStatus]);
mysql_format(dbHandle, query, sizeof(query), "UPDATE `playerrelated` SET `parkX` = %f, `parkY` = %f, `parkZ` = %f, `Angle` = %f, `EngineStatus` = %f, `PanelStatus` = %d, `DoorStatus` = %d, `LightStatus` = %d, `TireStatus` = %d WHERE `Name` = '%s'", PR[playerid][parkX], PR[playerid][parkY], PR[playerid][parkZ], PR[playerid][Angle], PR[playerid][EngineStatus], PR[playerid][PanelStatus], PR[playerid][DoorStatus], PR[playerid][LightStatus], PR[playerid][TireStatus], GetName(playerid));
mysql_tquery(dbHandle, query);
DestroyVehicle(PR[playerid][PrivateVeh]);
PR[playerid][PrivateVehSpawned] = false;
SendClientMessage(playerid, 0xF0F8FFAA, "[ ! ] Successfully parked(Despawned) the vehicle.");
} else {
SendClientMessage(playerid, 0xFF0000FF, "[ ! ] You are not driving your own vehicle. Therefore you can not park it!");
}
}
return 1;
}
pawn Код:
stock purchaseVEHICLE(playerid) {
//Creating Float positions and query size.
new query[356], query2[256];
GetPlayerPos(playerid, PR[playerid][parkX], PR[playerid][parkY], PR[playerid][parkZ]);//Getting the player's position
if(PR[playerid][VehiclesOwned] >= 1) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] You already reach the maximum amount of vehicles you can have!"); //If the player has 1 vehicle then it'd stop him from buying another.
else {
GetPlayerFacingAngle(playerid, PR[playerid][Angle]); //Gets the angle of which the player is looking at.
PR[playerid][PrivateVeh] = CreateVehicle(PR[playerid][VehicleChosen], PR[playerid][parkX]+2, PR[playerid][parkY]+2, PR[playerid][parkZ]+2, PR[playerid][Angle], PR[playerid][ColorSelected1], PR[playerid][ColorSelected2], -1);
GetVehicleHealth(PR[playerid][PrivateVeh], PR[playerid][EngineStatus]);
GetVehicleDamageStatus(PR[playerid][PrivateVeh], PR[playerid][PanelStatus], PR[playerid][DoorStatus], PR[playerid][LightStatus], PR[playerid][TireStatus]);
mysql_format(dbHandle, query, sizeof(query), "UPDATE `playerrelated` SET `Vehicle` = %d, `Registration` = %d, `Color1` = %d, `Color2` = %d, `CurrentVehicles` = %d, `parkX` = %f, `parkY` = %f, `parkZ` = %f, `Angle` = %f",PR[playerid][VehicleChosen], PR[playerid][Registration], PR[playerid][ColorSelected1], PR[playerid][ColorSelected2], PR[playerid][VehiclesOwned] + 1, PR[playerid][parkX], PR[playerid][parkY], PR[playerid][parkZ], PR[playerid][Angle], GetName(playerid));
format(query2, sizeof(query2), ", `EngineStatus` = %d, `PanelStatus` = %d, `DoorStatus` = %d, `LightStatus` = %d, `TireStatus` = %d WHERE Name = '%s'", PR[playerid][EngineStatus], PR[playerid][PanelStatus], PR[playerid][DoorStatus], PR[playerid][LightStatus], PR[playerid][TireStatus], GetName(playerid));
strcat(query, query2, sizeof(query)); //Concatenates two strings together to achieve one execution, I've done this to avoid a 'long msg after subscripts' error which occured to me once.
mysql_tquery(dbHandle, query);//Formating and starting executing the query.
GivePlayerMoney(playerid, -PR[playerid][VehiclePrice]); // Reduces player's money.
SendClientMessage(playerid, 0xF0F8FFAA, "[ ! ] Successfully purchased a vehicle!"); // Sending a message notifying of the purchase.
SendClientMessage(playerid, 0xFF0000FF, "[ ! ] NOTE: IT IS SUGGESTED THAT YOU IMMEDIATLY SET A PARKING SPOT FOR YOUR VEHICLE USING /V_PARK!"); //A helpful notification.
PR[playerid][VehiclesOwned] = 1;
PR[playerid][PrivateVehSpawned] = true;
}
return 1;
}