31.12.2011, 11:53
Im using vDealer car system, and it saves car pos in file 0.cfg, 1.cfg etc.
How can I perform check for closest vehicle to my position, for example you type /info, it checks closest vehicle to you, and it sends you a message with that vehicle name.
this is what is used to save/load car:
How can I perform check for closest vehicle to my position, for example you type /info, it checks closest vehicle to you, and it sends you a message with that vehicle name.
pawn Код:
name = my-car-custom-name
_z = position-z-here
_x = position-x-here
_y = position-y-here
pawn Код:
stock SaveVehicle(vehicleid)
{
new veh = ConvertVID(vehicleid);
new file[64];
format(file,sizeof file,VEHICLE_PATH,veh);
new INI:handler = INI_Open(file);
INI_WriteString(handler,"_owner",PrivateVehicles[veh][_owner]);
INI_WriteInt(handler,"_modelid",PrivateVehicles[veh][_modelid]);
INI_WriteFloat(handler,"_x",PrivateVehicles[veh][_x]);
INI_WriteFloat(handler,"_y",PrivateVehicles[veh][_y]);
INI_WriteFloat(handler,"_z",PrivateVehicles[veh][_z]);
INI_WriteFloat(handler,"_rot",PrivateVehicles[veh][_rot]);
INI_WriteInt(handler,"_c1",PrivateVehicles[veh][_c1]);
INI_WriteInt(handler,"_c2",PrivateVehicles[veh][_c2]);
INI_WriteInt(handler,"_price",PrivateVehicles[veh][_price]);
INI_WriteInt(handler,"_spawned",PrivateVehicles[veh][_spawned]);
INI_WriteInt(handler,"_locked",PrivateVehicles[veh][_locked]);
new Float:health2;
PrivateVehicles[veh][_health] = health2;
INI_WriteFloat(handler,"_health",PrivateVehicles[veh][_health]);
INI_Close(handler);
return 1;
}
stock LoadVehicles()
{
new counter = 0;
for(new i = 0;i<M_VEHICLES;i++)
{
new file[64];format(file,sizeof file,VEHICLE_PATH,i);
if(fexist(file))
{
new INI:handler = INI_Open(file);
INI_ParseFile(file,"LoadVehicle",.bExtra = true, .extra = i);
PrivateVehicles[i][_vehicleid] = AddStaticVehicle(PrivateVehicles[i][_modelid],PrivateVehicles[i][_x],PrivateVehicles[i][_y],PrivateVehicles[i][_z],PrivateVehicles[i][_rot],PrivateVehicles[i][_c1],PrivateVehicles[i][_c2]);
SetVehicleNumberPlate(PrivateVehicles[i][_vehicleid],PrivateVehicles[i][_owner]);
SetVehicleToRespawn(PrivateVehicles[i][_vehicleid]);
SetVehicleHealth(PrivateVehicles[i][_vehicleid],PrivateVehicles[i][_health]);
SetVehicleParamsEx(PrivateVehicles[i][_vehicleid],engine,lights,alarm,PrivateVehicles[i][_locked],bonnet,boot,objective);
INI_Close(handler);
counter++;
}
}
printf("vDealer: %i vehicle(s) loaded.",counter);
}
forward LoadVehicle(i,name[],value[]);
public LoadVehicle(i,name[],value[])
{
if(!strcmp(name,"_owner")){format(PrivateVehicles[i][_owner],MAX_PLAYER_NAME,"%s",value);}
INI_Int("_modelid",PrivateVehicles[i][_modelid]);
INI_Float("_x",PrivateVehicles[i][_x]);
INI_Float("_y",PrivateVehicles[i][_y]);
INI_Float("_z",PrivateVehicles[i][_z]);
INI_Float("_rot",PrivateVehicles[i][_rot]);
INI_Int("_c1",PrivateVehicles[i][_c1]);
INI_Int("_c2",PrivateVehicles[i][_c2]);
INI_Int("_price",PrivateVehicles[i][_price]);
INI_Int("_spawned",PrivateVehicles[i][_spawned]);
INI_Int("_locked",PrivateVehicles[i][_locked]);
INI_Float("_health",PrivateVehicles[i][_health]);
return 1;
}
stock CreateVehicleDealer(dealername[],Float:x,Float:y,Float:z)
{
new id = GenerateID(1);
format(Dealers[id][_dealername],64,"%s",dealername);
Dealers[id][_x] = x;
Dealers[id][_y] = y;
Dealers[id][_z] = z;
Dealers[id][_active] = true;
#if USE_CP == true
Dealers[id][_pickupid] = CreateDynamicCP(x,y,z,CP_SIZE);
#else
Dealers[id][_pickupid] = CreateDynamicPickup(PICKUP_MODEL,23,x,y,z);
#endif
Dealers[id][_3dtextlabel] = CreateDynamic3DTextLabel(dealername,COLOR_YELLOW,x,y,z +1,STREAMER_DISTANCE);
Dealers[id][_mapicon] = CreateDynamicMapIcon(x,y,z,MAP_ICON,0);
return id;
}