Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //***** Made by TopAz in 15 minutes.
- //----- Header
- #if defined _getnearest_included
- #endinput
- #endif
- #define _getnearest_included
- #pragma library samp
- //----------------
- //----- External Library(ies)
- #include <a_samp>
- //------------------------
- //----- Constants
- /*#if defined USE_STREAMER
- #include "streamer"
- #endif*/
- #define OBJECT (0)
- #define PLAYER (1)
- #define VEHICLE (2)
- #define DYNAMIC_OBJECT (3)
- #define MAX_DISTANCE (1000.0)
- //----------------
- //------ Variables
- //Floats
- new
- Float:px,
- Float:py,
- Float:pz,
- Float:ox,
- Float:oy,
- Float:oz,
- Float:distance = MAX_DISTANCE
- ;
- //----------------
- GetNearest(playerid, type);
- stock GetNearest(playerid, type)
- {
- new ret;
- switch(type)
- {
- case OBJECT:
- {
- ret = GetNearest_Object(playerid);
- }
- case PLAYER:
- {
- ret = GetNearest_Player(playerid);
- }
- case VEHICLE:
- {
- ret = GetNearest_Vehicle(playerid);
- }
- case DYNAMIC_OBJECT:
- {
- ret = GetNearest_DynObject(playerid);
- }
- }
- return ret;
- }
- stock GetNearest_Object(playerid)
- {
- new currentobject = -1;
- GetPlayerPos(playerid, px, py, pz);
- for(new i = 0; i < MAX_OBJECTS; i++)
- {
- if(!IsValidObject(i)) continue;
- GetDynamicObjectPos(i, ox, oy, oz);
- new Float:odist = floatsqroot(
- floatpower(floatabs(floatsub(ox, px)), 2.0) +
- floatpower(floatabs(floatsub(oy, py)), 2.0) +
- floatpower(floatabs(floatsub(oz, pz)), 2.0)
- );
- if (currentobject == -1)
- {
- currentobject = i;
- distance = odist;
- }
- else if (odist < distance)
- {
- currentobject = i;
- distance = odist;
- }
- }
- return currentobject;
- }
- stock GetNearest_Player(playerid)
- {
- new currentplayer = -1;
- GetPlayerPos(playerid, px, py, pz);
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(i == playerid) continue;
- GetPlayerPos(i, ox, oy, oz);
- new Float:odist = floatsqroot(
- floatpower(floatabs(floatsub(ox, px)), 2.0) +
- floatpower(floatabs(floatsub(oy, py)), 2.0) +
- floatpower(floatabs(floatsub(oz, pz)), 2.0)
- );
- if (currentplayer == -1)
- {
- currentplayer = i;
- distance = odist;
- }
- else if (odist < distance)
- {
- currentplayer = i;
- distance = odist;
- }
- }
- return currentplayer;
- }
- stock GetNearest_Vehicle(playerid)
- {
- new currentvehicle = -1;
- GetPlayerPos(playerid, px, py, pz);
- for(new i = 0; i < MAX_VEHICLES; i++)
- {
- GetVehiclePos(i, ox, oy, oz);
- new Float:odist = floatsqroot(
- floatpower(floatabs(floatsub(ox, px)), 2.0) +
- floatpower(floatabs(floatsub(oy, py)), 2.0) +
- floatpower(floatabs(floatsub(oz, pz)), 2.0)
- );
- if (currentvehicle == -1)
- {
- currentvehicle = i;
- distance = odist;
- }
- else if (odist < distance)
- {
- currentvehicle = i;
- distance = odist;
- }
- }
- return currentvehicle;
- }
- stock GetNearest_DynObject(playerid)
- {
- new currentdynobject = -1;
- GetPlayerPos(playerid, px, py, pz);
- for(new i = 0; i < CountDynamicObjects(); i++)
- {
- if(!IsValidDynamicObject(i)) continue;
- GetDynamicObjectPos(i, ox, oy, oz);
- new Float:odist = floatsqroot(
- floatpower(floatabs(floatsub(ox, px)), 2.0) +
- floatpower(floatabs(floatsub(oy, py)), 2.0) +
- floatpower(floatabs(floatsub(oz, pz)), 2.0)
- );
- if (currentdynobject == -1)
- {
- currentdynobject = i;
- distance = odist;
- }
- else if (odist < distance)
- {
- currentdynobject = i;
- distance = odist;
- }
- }
- return currentdynobject;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement