26.03.2013, 00:22
Lets say i wanted to check if the closest vehicle next me had its trunk open, How would I do this?
stock IsPlayerNearAnyVehiclewTrunk(playerid)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
if(IsPlayerNearAnyVehicle(playerid, 100.0) && boot == 1)
{
return true;
}
else
{
return false;
}
}
stock IsPlayerNearAnyVehicle(playerid, Float:range=100.0)
{
for(new i; i<MAX_VEHICLES; i++)
{
GetVehiclePos(i, p[0], p[1], p[2]);
if(IsPlayerInRangeOfPoint(playerid, range, p[0], p[1], p[2]))return true;
return false;
}
}
stock IsPlayerNearAnyVehiclewTrunk(playerid, Float:range=100.0)
{
for(new i; i<MAX_VEHICLES; i++)
{
new boot;
GetVehicleParamsEx(i, engine, lights, alarm, doors, bonnet, boot, objective);
#pragma usused engine
#pragma usused lights
#pragma usused alarm
#pragma usused doors
#pragma usused bonnet
#pragma usused objective
GetVehiclePos(i, p[0], p[1], p[2]);
if(IsPlayerInRangeOfPoint(playerid, range, p[0], p[1], p[2]) && boot == 0) return true;
return false;
}
}
CMD:closetrunk(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return 1;
if(IsPlayerNearAnyVehiclewTrunk(playerid, 100.0))
{
new engine, lights, alarm, doors, bonnet, boot, objective;
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, 1, objective); //CLOSING THE TRUNK
SendClientMessage(playerid, red, "You have closed the trunk of the vehicles with trunk open!");
}
return 1;
}
pawn Код:
![]() EDIT: code repaired a bit: pawn Код:
|
stock GetNearestVehicle(playerid, Float:distance = 30.0)
{
new
Float:fPos[3],
Float:sPos[3],
currentvehicle,
engine,
lights,
alarm,
doors,
bonnet,
boot,
objective
;
GetPlayerPos(playerid, fPos[0], fPos[1], fPos[2]);
for(new v = 1; v < MAX_VEHICLES; v++)
{
GetVehicleParamsEx(v, engine, lights, alarm, doors, bonnet, boot, objective);
if(boot == 1)
{
GetVehiclePos(v, sPos[0], sPos[1], sPos[2]);
new Float:odist =
floatsqroot(
floatpower(floatsub(sPos[0], fPos[0]), 2.0) +
floatpower(floatsub(sPos[1], fPos[1]), 2.0) +
floatpower(floatsub(sPos[2], fPos[2]), 2.0)
)
;
if (odist < distance)
{
currentvehicle = v;
distance = odist;
}
}
}
return currentvehicle;
}
#include <a_samp> #include <zcmd> CMD:getcar(playerid, arg[]) { new veh = GetClosestVehicle(playerid, 100.0); if(veh != INVALID_VEHICLE_ID) { if(IsTrunkOpen(veh)) SendClientMessage(playerid, 0xFF00FFFF, "You are near a vehicle with a trunk open!"); else SendClientMessage(playerid, 0xFF00FFFF, "You are not near a vehicle with a trunk open!"); } else SendClientMessage(playerid, 0xFF00FFFF, "You are not near any vehicles"); return 1; } stock IsTrunkOpen(vehicleid) { new engine, lights, alarm, doors, bonnet, boot, objective; GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective); if(boot) return 1; return 0; } stock GetClosestVehicle(playerid, Float:Range = 100.0) { new ClosestVehicle; new Float:ClosestDist = 100000.0; new Float:DistX; new Float:DistY; new Float:DistZ; new Float:px; new Float:py; new Float:pz; new Float:CheckDist; // Get the players position GetPlayerPos(playerid, px, py, pz); // Loop through vehicles to find cloest vehicle for(new i = 0; i < MAX_VEHICLES; i++) { // Vehicle doesn't exist if(!GetVehicleModel(i)) continue; // Get vehicle position GetVehiclePos(i, DistX, DistY, DistZ); // Get the distance CheckDist = floatsqroot( floatpower(floatsub(DistX, px), 2.0) + floatpower(floatsub(DistY, py), 2.0) + floatpower(floatsub(DistZ, pz), 2.0)); // Distance less than range? if(CheckDist <= Range) { // Distance less than cloest distance, new cloest distance! if(CheckDist < ClosestDist) { ClosestDist = CheckDist; ClosestVehicle = i; } } } // Cloest less than or equal to the range return the closest vehicle ID if(ClosestDist <= Range) return ClosestVehicle; // no vehichle? return INVALID_VEHICLE_ID return INVALID_VEHICLE_ID; }
CMD:clv(playerid,params[]){
new vid;
if(!sscanf(params,"K<clv>("#playerid")",vid))
{
new string[128];
format(string,sizeof(string),"closest vehicle: %d.",vid);
SendClientMessage(playerid,MSGSUCC_COLOR,string);
}
return 1;
}