Описание:
Функция отправляет сообщение ближайшим игрокам вычисляя цвет, интенсивность которого завит от расстояния.
Параметры:
playerid - игрок, от которого идёт сообщение
Float:max_range - максимальное расстояние, на котором будет отправлено сообщение
color - базовый цвет
string[] - сообщение
Float:max_ratio = 1.6 (необязательный) - коэффициент уменьшения интенсивности цвета
Возвращаемое значение:
Функция возвращает 0, если playerid не подключен, в остальных случаях возвращается 1.
Код:
stock ProxDetector(playerid, Float:max_range, color, const string[], Float:max_ratio = 1.6)
{
new
Float:pos_x,
Float:pos_y,
Float:pos_z,
Float:range,
Float:range_ratio,
Float:range_with_ratio,
clr_r, clr_g, clr_b,
Float:color_r, Float:color_g, Float:color_b;
return 0;
}
color_r
= float(color
>> 24 & 0xFF); color_g
= float(color
>> 16 & 0xFF); color_b
= float(color
>> 8 & 0xFF); range_with_ratio = max_range * max_ratio;
#if defined foreach
foreach (new i : Player) {
#else
#endif
continue;
}
if (range > max_range) {
continue;
}
range_ratio = (range_with_ratio - range) / range_with_ratio;
SendClientMessage(i
, (color
& 0xFF) | (clr_b
<< 8) | (clr_g
<< 16) | (clr_r
<< 24), string
); }
return 1;
}
Примечания:
- Функция поддерживает любые комбинации цветов, прозрачность переданного цвета остаётся не тронутой.
Пример использования:
CMD:say(playerid, params[])
{
ProxDetector(playerid, 20.0, 0xFFAA99FF, params);
return 1;
}
Автор: ziggi