Detect edge of area
#1

Hello!

I'm trying to do some objects if player is near of edge of area.


It's mean;


+____+
|.........|
|.........|
|.........|im stay here
|____ |


How to detect these point in range ~10meters about me along to border?


I made this code:

Код:
forward omg(playerid);
public omg(playerid)
{
new Float:asd[3];
GetPlayerPos(playerid,asd[0],asd[1],asd[2]);
for(new id=0; id<MAX_AREAS; id++)
{
new asd1 = floatround(floatsub(Area_Table[id][areamaxX] ,Area_Table[id][areaminX]));
     new asd3 = floatround(floatsub(Area_Table[id][areamaxY] ,Area_Table[id][areaminY]));
for(new i=0; i<asd1/2; i++)
{
   if(IsPlayerInRangeOfPoint(playerid,10.0,Area_Table[id][areaminX]+(i*2),Area_Table[id][areaminY],asd[2])){
   CreateDynamicObject(1318,Area_Table[id][areaminX]+(i*2),Area_Table[id][areaminY],asd[2],0,0,0);
            SendClientMessage(playerid,-1,"Blisko!");}
}
for(new i=0; i<asd3/2; i++)
{
   if(IsPlayerInRangeOfPoint(playerid,10.0,Area_Table[id][areaminX],Area_Table[id][areamaxY]-(i*2),asd[2])){
   CreateDynamicObject(1318,Area_Table[id][areaminX],Area_Table[id][areamaxY]-(i*2),asd[2],0,0,0);
            SendClientMessage(playerid,-1,"Blisko!");}
}
for(new i=0; i<asd1/2; i++)
{
   if(IsPlayerInRangeOfPoint(playerid,10.0,Area_Table[id][areamaxX]-(i*2),Area_Table[id][areamaxY],asd[2])){
   CreateDynamicObject(1318,Area_Table[id][areamaxX]-(i*2),Area_Table[id][areamaxY],asd[2],0,0,0);
            SendClientMessage(playerid,-1,"Blisko!");}
}
for(new i=0; i<asd3/2; i++)
{
   if(IsPlayerInRangeOfPoint(playerid,10.0,Area_Table[id][areamaxX],Area_Table[id][areaminY]+(i*2),asd[2])){
   CreateDynamicObject(1318,Area_Table[id][areamaxX],Area_Table[id][areaminY]+(i*2),asd[2],0,0,0);
            SendClientMessage(playerid,-1,"Blisko!");}
}
}
return 1;
}
But it's not optimally. Is it possible to do that more optymized?
Reply
#2

delete pls
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)