PDA

Просмотр полной версии : [Вопрос] Возможно ли оптимизировать эту функцию?



Just_Fenix
31.05.2014, 21:47
Здравствуйте. Функция PlayerDistance ставит условие в некоторых командах, такие как /pay - передать деньги (игроки должны быть рядом друг с другом). Возможно ли оптимизировать эту функцию?

stock PlayerDistance(Float:radi, playerid, targetid)
{
if(IsPlayerConnected(playerid) && IsPlayerConnected(targetid))
{
new Float:posx, Float:posy, Float:posz;
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
GetPlayerPos(targetid, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
if(((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) return true;
}
return false;
}

Salvacore
31.05.2014, 23:04
По моему всё хорошо.

Just_Fenix
31.05.2014, 23:09
Ну хорошо, когда всё хорошо :good2:

L0ndl3m
31.05.2014, 23:26
Можно например так сделать:


stock PlayerDistance(const Float: radius, const playerid, const targetid)
{
new
Float: p_pos_x,
Float: p_pos_y,
Float: p_pos_z
;

GetPlayerPos(playerid, p_pos_x, p_pos_y, p_pos_z);

return IsPlayerInRangeOfPoint(targetid, radius, p_pos_x, p_pos_y, p_pos_z);
}

Just_Fenix
01.06.2014, 08:32
Можно например так сделать:


stock PlayerDistance(const Float: radius, const playerid, const targetid)
{
new
Float: p_pos_x,
Float: p_pos_y,
Float: p_pos_z
;

GetPlayerPos(playerid, p_pos_x, p_pos_y, p_pos_z);

return IsPlayerInRangeOfPoint(targetid, radius, p_pos_x, p_pos_y, p_pos_z);
}


Спасибо огромное!

OKStyle
02.06.2014, 22:42
http://wiki.sa-mp.com/wiki/GetPlayerDistanceFromPoint