stock GetXYBehindVehicle(vehicleid, &Float:x2, &Float:y2, Float:distance)
{
new Float:a;
GetVehiclePos(vehicleid, x2, y2, a);
GetVehicleZAngle(vehicleid, a);
x2 += (distance * floatsin(-a+180, degrees));
y2 += (distance * floatcos(-a+180, degrees));
}
stock GetTrunkPos(vehicleid, &Float: x3, &Float:y3, &Float:z3)
{
new Float: x, Float: y;
new Float: sizeX, Float: sizeY, Float:sizeZ[2];
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, sizeX, sizeY, sizeZ[0]);
GetXYBehindVehicle(vehicleid, x, y, sizeY/2);
x3 = x;
y3 = y;
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_REAR_BUMPER_Z , sizeX, sizeY, sizeZ[1]);
z3 = (sizeZ[1] + sizeZ[0]/2);
}
|
Something like that maybe... but it's hard to know, it's kind of approximate.
pawn Code:
|
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext,"/mytrunkpos")) {
new Float:x, Float:y, Float:z;
GetTrunkPos(GetPlayerVehicleID(playerid), x, y, z);
new string[64]; format(string ,sizeof(string), "%.1f, %.1f, %.1f", x, y, z);
SendClientMessage(playerid, -1, string);
return 1; }
return 0;
}
{
new string[128], done, idx;
new engine, lights, alarm, doors, bonnet, boot, objective;
if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
if(PlayerInfo[playerid][pVeh] || PlayerInfo[playerid][pVeh2] || PlayerInfo[playerid][pVeh3] || PlayerInfo[playerid][pVeh4] || PlayerInfo[playerid][pVeh5])
{
new Float:vx, Float:vy, Float:vz;
// veh 1
GetTrunkPos(PlayerInfo[playerid][pVeh],vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,1.0, vx,vy,vz))
{
...
}
|
so I have something like this:
Code:
{
new string[128], done, idx;
new engine, lights, alarm, doors, bonnet, boot, objective;
if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
if(PlayerInfo[playerid][pVeh] || PlayerInfo[playerid][pVeh2] || PlayerInfo[playerid][pVeh3] || PlayerInfo[playerid][pVeh4] || PlayerInfo[playerid][pVeh5])
{
new Float:vx, Float:vy, Float:vz;
// veh 1
GetTrunkPos(PlayerInfo[playerid][pVeh],vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,1.0, vx,vy,vz))
{
...
}
|
stock GetXYBehindVehicle(vehicleid, &Float:x2, &Float:y2, Float:distance)
{
new Float:a;
GetVehiclePos(vehicleid, x2, y2, a);
GetVehicleZAngle(vehicleid, a);
x2 += (distance * floatsin(-a+180, degrees));
y2 += (distance * floatcos(-a+180, degrees));
}
stock GetTrunkPos(vehicleid, &Float: x3, &Float:y3, &Float:z3)
{
new Float: x, Float: y;
new Float: sizeX, Float: sizeY, Float:sizeZ[2];
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, sizeX, sizeY, sizeZ[0]);
GetXYBehindVehicle(vehicleid, x, y, sizeY/2);
x3 = x;
y3 = y;
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_REAR_BUMPER_Z , sizeX, sizeY, sizeZ[1]);
z3 = (sizeZ[1] + sizeZ[0] + 3.1);
}
if(PlayerInfo[playerid][pVeh] || PlayerInfo[playerid][pVeh2] || PlayerInfo[playerid][pVeh3] || PlayerInfo[playerid][pVeh4] || PlayerInfo[playerid][pVeh5])
{
new Float:vx, Float:vy, Float:vz;
// veh 1
GetTrunkPos(PlayerInfo[playerid][pVeh],vx,vy,vz);
if(IsPlayerInRangeOfPoint(playerid,1.0, vx,vy,vz))
{
idx = PlayerInfo[playerid][pVeh];
if(IsBike(idx)) return SendClientMessage(playerid, COLOR_GREY, "This vehicle does not have trunk.");
GetVehicleParamsEx(idx, engine, lights, alarm, doors, bonnet, boot, objective);
if(!boot)
{
SetVehicleParamsEx(idx, engine, lights, alarm, doors, bonnet, 1, objective);
format(string, sizeof(string), "* %s opens their vehicle's trunk.", RPN(playerid));
SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
}
else
{
SetVehicleParamsEx(idx, engine, lights, alarm, doors, bonnet, 0, objective);
format(string, sizeof(string), "* %s closes their vehicle's trunk.", RPN(playerid));
SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
}
done = 1;
return 1;
}