CMD:test(playerid, params[])
{
if(!IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, -1, "No estбs en ningъn vehнculo");
new
vehicleid,
Float:Pos[3],
Float:pos;
if(sscanf(params,"f", pos))
return SendClientMessage(playerid, -1, "USO: /test [Variable flotante]");
vehicleid = GetPlayerVehicleID(playerid);
GetVehiclePos(vehicleid, Pos[0], Pos[1], Pos[2]);
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid, Pos[0], Pos[1]-pos, Pos[2], 1.0);
return 1;
}
SetPlayerCheckpoint(playerid, Pos[0], Pos[1]-3.2, Pos[2], 1.0);
|
Es sencillo, solo debes obtener la posiciуn del coche el cual ocupas y luego para saber la coordenada de las puertas debes restar el eje Y. Acб te hice un script de ejemplo:
Код:
CMD:test(playerid, params[])
{
if(!IsPlayerInAnyVehicle(playerid))
return SendClientMessage(playerid, -1, "No estбs en ningъn vehнculo");
new
vehicleid,
Float:Pos[3],
Float:pos;
if(sscanf(params,"f", pos))
return SendClientMessage(playerid, -1, "USO: /test [Variable flotante]");
vehicleid = GetPlayerVehicleID(playerid);
GetVehiclePos(vehicleid, Pos[0], Pos[1], Pos[2]);
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid, Pos[0], Pos[1]-pos, Pos[2], 1.0);
return 1;
}
Код:
SetPlayerCheckpoint(playerid, Pos[0], Pos[1]-3.2, Pos[2], 1.0); |
|
Esto serнa suponiendo que el vehiculo estй en direcciуn al norte, lo cual no es adecuado. Si no me equivoco hay includes con funciones que pueden sacar el OffSet del vehнculo, buscalos por el foro.
|
stock GetVehicleBoot(vehicleid, &Float:x, &Float:y, &Float:z)
{
if (!GetVehicleModel(vehicleid) || vehicleid == INVALID_VEHICLE_ID)
return (x = 0.0, y =0.0, z = 0.0), 0;
static
Float:pos[7];
GetVehicleModelInfo(GetVehicleModel(vehicleid), VEHICLE_MODEL_INFO_SIZE, pos[0], pos[1], pos[2]);
GetVehiclePos(vehicleid, pos[3], pos[4], pos[5]);
GetVehicleZAngle(vehicleid, pos[6]);
x = pos[3] - (floatsqroot(pos[1] + pos[1]) * floatsin(-pos[6], degrees));
y = pos[4] - (floatsqroot(pos[1] + pos[1]) * floatcos(-pos[6], degrees));
z = pos[5];
return true;
}
CMD:moneria(playerid, params[])
{
static
Float:fX,
Float:fY,
Float:fZ;
GetVehicleBoot(GetPlayerVehicleID(playerid), fX, fY, fZ);
SetPlayerCheckpoint(playerid, fX, fY, fZ, 1.0);
return true;
}