rendered paste bodyIsPlayerInAreaEx(playerid, Float:...)
{
new count = numargs();
if (count < 7 || (count % 2) == 0) return 0; // Check parameters
// You need at least 3 points for an area and an odd number to check
new lines;
new Float:x, Float:y, Float:z;
new Float:x1, Float:x2, Float:y1, Float:y2;
GetPlayerPos(playerid, x, y, z);
new i = 0;
while (i < count)
{
x1 = Float:getarg(++i);
y1 = Float:getarg(++i);
if (i + 1 < count)
{
x2 = Float:getarg(i + 1);
y2 = Float:getarg(i + 2);
}
else
{
x2 = Float:getarg(1);
y2 = Float:getarg(2);
}
if (((y >= y1 && y <= y2) || (y >= y2 && y <= y1))
&& (x1 + ((y - y1) * (x2 - x1) / (y2 - y1))) < x)
lines++;
}
if (lines % 2 == 1)
return 1;
return 0;
}