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; }