Проверка на координаты входа
Делаю вход в бизнес через KEY_WALK в OnPlayerKeyStateChange и задался таким вопросом.
Если игрок будет нажимать на L.Alt в любом месте, ему в OnPlayerKeyStateChange, будет циклом прогонять все координаты входа в бизнес, дабы проверить находится ли он возле бизнеса.
Пример:
{
if(newkeys & KEY_WALK)
{
for(new b = 1; b <= gNumberBusiness; b++)
{
if(IsPlayerInRangeOfPoint(playerid
, 2.0, BusinessInfo
[b
][bEnterX
], BusinessInfo
[b
][bEnterY
], BusinessInfo
[b
][bEnterZ
])) {
//Вход
return 1;
}
}
return 1;
}
}
Будет ли лучше, если создать динамическую зону и проверять в ней?
public OnPlayerEnterDynamicArea(playerid, areaid)
{
for(new b = 1; b <= gNumberBusiness; b++)
{
if(areaid == ar_BusinessEnter[b])
{
gPlayerBusinessID[playerid] = b;
return 1;
}
}
return 1;
}
public OnPlayerLeaveDynamicArea(playerid, areaid)
{
for(new b = 1; b <= gNumberBusiness; b++)
{
if(areaid == ar_BusinessEnter[b])
{
gPlayerBusinessID[playerid] = 0;
return 1;
}
}
return 1;
}
{
if(newkeys & KEY_WALK)
{
if(gPlayerBusinessID[playerid] != 0)
{
BusinessInfo[gPlayerBusinessID[playerid]][bEnterX],
BusinessInfo[gPlayerBusinessID[playerid]][bEnterY],
BusinessInfo[gPlayerBusinessID[playerid]][bEnterZ]
);
return 1;
}
return 1;
}
return 1;
}