This Snippet checks if a player is between a rectangular area specified by two opposite corners
Picture (;
PHP Code:
#include <sourcemod>
bool:IsbetweenRect(Float:Pos[3], Float:Corner1[3], Float:Corner2[3], client=0)
{
decl Float:Entity[3];
decl Float:field1[2];
decl Float:field2[2];
decl Float:field3[2];
if (!client)
{
Entity = Pos;
}
else GetClientAbsOrigin(client, Entity);
// Sort Floats...
if (FloatCompare(Corner1[0], Corner2[0]) == -1)
{
field1[0] = Corner1[0];
field1[1] = Corner2[0];
}
else
{
field1[0] = Corner2[0];
field1[1] = Corner1[0];
}
if (FloatCompare(Corner1[1], Corner2[1]) == -1)
{
field2[0] = Corner1[1];
field2[1] = Corner2[1];
}
else
{
field2[0] = Corner2[1];
field2[1] = Corner1[1];
}
if (FloatCompare(Corner1[2], Corner2[2]) == -1)
{
field3[0] = Corner1[2];
field3[1] = Corner2[2];
}
else
{
field3[0] = Corner2[2];
field3[1] = Corner1[2];
}
// Check the Vectors ...
if (Entity[0] < field1[0] || Entity[0] > field1[1]) return false;
if (Entity[1] < field2[0] || Entity[1] > field2[1]) return false;
if (Entity[2] < field3[0] || Entity[2] > field3[1]) return false;
return true;
}
Have fun with it (;