20.08.2012, 17:35
You don't need GetVR unless you need elevation (z) probably E.G for a slope, your missing the 'core value' of this all, which is the z angle.
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
//Test command
if (strcmp("/cap", cmdtext, true, 10) == 0)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(td)
{
Delete3DTextLabel(tdt);
}
new Float:x, Float:y, Float:z, angle;
GetVehicleZAngle(GetPlayerVehicleID(playerid), angle);
GetVehicleInfo(GetPlayerVehicleID(playerid), VEHICLE_MODEL_INFO_PETROLCAP, x,y,z, angle);
tdt = Create3DTextLabel("[x]", 0xFFFFFFFF, x, y, z, 50.0, 0, 0);//Create 3d label
td = 1;
return 1;
}
}
if (strcmp("/capattach", cmdtext, true, 10) == 0)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(td)
{
Delete3DTextLabel(tdt);
}
new Float:mX, Float:mY, Float:mZ, Floatx, Float:y, Float:z
vehicleid = GetPlayerVehicleID(playerid);
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_PETROLCAP, mX, mY, mZ); //Get the model's offset to the infotype
GetVehiclePos(vehicleid, x, y, z);
tdt = Create3DTextLabel("[x]", 0xFFFFFFFF, x, y, z, 50.0, 0, 0);//Create 3d label
td = 1;
Attach3DTextLabelToVehicle(tdt, vehicleid, mX, mY, mZ);
return 1;
}
}
return 0;
}
stock GetVehicleInfo(vehicleid, infotype, &Float:X, &Float:Y, &Float:Z, &Float:Angle)
{
if(!IsValidVehicle(vehicleid)) return false;
new Float:mX, Float:mY, Float:mZ, Float:vX, Float:vY, Float:vZ;
GetVehicleModelInfo(GetVehicleModel(vehicleid), infotype, mX, mY, mZ);//Get the model's offset to the infotype
GetVehiclePos(vehicleid, vX, vY, vZ);
z += mZ;
x += (mY * floatsin(-angle, degrees));
y += (mY * floatcos(-angle, degrees));
angle += 270.0;
x += (mX * floatsin(-angle, degrees));
y += (mX * floatcos(-angle, degrees));
angle -= 270.0;
return true;
}
