Clybzotik
Ученик
Здравствуйте, решил скинуть еще одну команду.
Пытался сделать все ровно.
ProxDetector
Пытался сделать все ровно.
PHP:
CMD:w(playerid,params[])
{
if(isnull(params))
return SendClientMessage(playerid, 0xFF8000AA, !"Используйте: /w [Текст]");
new string[MAX_CHATBUBBLE_LENGTH + 1];
GetPlayerName(playerid, string, MAX_PLAYER_NAME);
format(string, MAX_CHATBUBBLE_LENGTH + 1, "%s[%d] прошептал:%s", string, playerid, params[0]);
ProxDetector(playerid, 2, 0x808080AA, string);
return 1;
}
PHP:
stock ProxDetector(playerid, Float:max_range, color, 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;
if (!GetPlayerPos(playerid, pos_x, pos_y, pos_z)) 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
for (new i = GetPlayerPoolSize(); i != -1; i--) {
#endif
if (!IsPlayerStreamedIn(playerid, i)) continue;
range = GetPlayerDistanceFromPoint(i, pos_x, pos_y, pos_z);
if (range > max_range) continue;
range_ratio = (range_with_ratio - range) / range_with_ratio;
clr_r = floatround(range_ratio * color_r);
clr_g = floatround(range_ratio * color_g);
clr_b = floatround(range_ratio * color_b);
SendClientMessage(i, (color & 0xFF) | (clr_b << 8) | (clr_g << 16) | (clr_r << 24), string);
}
SendClientMessage(playerid, color, string);
return 1;
}
PHP:
CMD:w(playerid, params[])
{
if(isnull(params))
return SendClientMessage(playerid, 0xFF8000AA, !"Используйте: /w [Текст]");
new name[MAX_PLAYER_NAME + 1];
GetPlayerName(playerid, name, sizeof(name));
format(params, MAX_CHATBUBBLE_LENGTH + 1, "%s[%d] прошептал: %s", name, playerid, params);
ProxDetector(playerid, 2, 0x808080AA, params);
return 1;
}
Последнее редактирование модератором:
