// Кол-во итераций в циклах.
const PROFILER_ITERATIONS_MAJOR = 10_000;
const PROFILER_ITERATIONS_MINOR = 1_000;
// Названия отрывков кода.
new const code_snippets_names[2][] =
{
{"ProxDetector by ziggy"},
{"ProxDetector"}
};
// Здесь вы можете объявить переменные, используемые в профилируемых отрывках кода
// и выполнить некоторые действия непосредственно перед профилированием.
#define Prerequisites();\
/*
Собственно, сами отрывки кода, которые нужно тестировать.
Если код состоит из нескольких строк, переносите их обратным слэшем.
Пример:
#define CodeSnippet1();\
DoSomething();\
DoSomethingElse();
*/
#include <a_samp>
#include "../sources/include/foreach.inc"
#define COLOR_WHITE 0xFFFFFFFF
#define CodeSnippet0();\
ProxDetector(0, 20.0, COLOR_WHITE, "params");
#define CodeSnippet1();\
ProxDetector_2(60.0, 0, "string", COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE,COLOR_WHITE);
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;
foreach (new i:Player) {
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;
}
stock ProxDetector_2(Float:radi, playerid, const string[], color1, color2, color3, color4, color5)
{
{
static Float:posx, Float:posy, Float:posz, Float:oldposx, Float:oldposy, Float:oldposz, Float:tempposx, Float:tempposy, Float:tempposz;
foreach(new i: Player)
{
{
{
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
if(((tempposx
< radi
/16) && (tempposx
> -radi
/16)) && ((tempposy
< radi
/16) && (tempposy
> -radi
/16)) && ((tempposz
< radi
/16) && (tempposz
> -radi
/16))) SendClientMessage(i
, color1
, string
); else if(((tempposx
< radi
/8) && (tempposx
> -radi
/8)) && ((tempposy
< radi
/8) && (tempposy
> -radi
/8)) && ((tempposz
< radi
/8) && (tempposz
> -radi
/8))) SendClientMessage(i
, color2
, string
); else if(((tempposx
< radi
/4) && (tempposx
> -radi
/4)) && ((tempposy
< radi
/4) && (tempposy
> -radi
/4)) && ((tempposz
< radi
/4) && (tempposz
> -radi
/4))) SendClientMessage(i
, color3
, string
); else if(((tempposx
< radi
/2) && (tempposx
> -radi
/2)) && ((tempposy
< radi
/2) && (tempposy
> -radi
/2)) && ((tempposz
< radi
/2) && (tempposz
> -radi
/2))) SendClientMessage(i
, color4
, string
); else if(((tempposx
< radi
) && (tempposx
> -radi
)) && ((tempposy
< radi
) && (tempposy
> -radi
)) && ((tempposz
< radi
) && (tempposz
> -radi
))) SendClientMessage(i
, color5
, string
); }
}
}
}
return 1;
}