Ищу скрипт Grenade prediction V4

Начинающий
Статус
Оффлайн
Регистрация
28 Окт 2020
Сообщения
40
Реакции[?]
5
Поинты[?]
0
Чтобы видно было куда летит , и скока дамага даст тебе
 
Забаненный
Статус
Оффлайн
Регистрация
29 Май 2020
Сообщения
135
Реакции[?]
3
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
я промолчу)
 
Забаненный
Статус
Оффлайн
Регистрация
31 Окт 2020
Сообщения
22
Реакции[?]
4
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
30 Ноя 2019
Сообщения
18
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
27 Ноя 2019
Сообщения
203
Реакции[?]
27
Поинты[?]
0
?
Эксперт
Статус
Оффлайн
Регистрация
4 Май 2020
Сообщения
1,596
Реакции[?]
535
Поинты[?]
4K
Забаненный
Статус
Оффлайн
Регистрация
25 Дек 2020
Сообщения
6
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
5 Июл 2020
Сообщения
14
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Paid script
 
XO-YAW Innovations LLC
Участник
Статус
Оффлайн
Регистрация
23 Дек 2018
Сообщения
492
Реакции[?]
156
Поинты[?]
20K
Забаненный
Статус
Оффлайн
Регистрация
5 Июл 2020
Сообщения
14
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Это тип аддон какой-то и вроде как тута есть этот ваш гренейд предикшион, но мб это всё на локалке
Если не жалко денег на ламахук и вот на этот прикол то жду отзыва как протестишь
 
Начинающий
Статус
Оффлайн
Регистрация
26 Мар 2020
Сообщения
6
Реакции[?]
0
Поинты[?]
0
/*
*
* Customer: !_Rixon_1338#2746
*
*/

//region api
const global = [], globals = [], sound = [], cheat = [], local = [], world = [], input = [], render = [], ui = [], convar = [], event = [], entity = [], trace = [], usercmd = [], antiaim = [], exploit = [], ragebot = [], material = []; global.print = Global.Print, global.print_chat = Global.PrintChat, global.print_color = Global.PrintColor, global.register_callback = Global.RegisterCallback, global.execute_command = Global.ExecuteCommand, global.frame_stage = Global.FrameStage, global.tickcount = Global.Tickcount, global.tickrate = Global.Tickrate, global.tick_interval = Global.TickInterval, global.curtime = Global.Curtime, global.realtime = Global.Realtime, global.frametime = Global.Frametime, global.latency = Global.Latency, global.get_view_angles = Global.GetViewAngles, global.set_view_angles = Global.SetViewAngles, global.get_map_name = Global.GetMapName, global.is_key_pressed = Global.IsKeyPressed, global.get_screen_size = Global.GetScreenSize, global.get_cursor_position = Global.GetCursorPosition, global.play_sound = Global.PlaySound, global.play_microphone = Global.PlayMicrophone, global.stop_microphone = Global.StopMicrophone, global.get_username = Global.GetUsername, global.set_clan_tag = Global.SetClanTag, globals.tickcount = Globals.Tickcount, globals.tickrate = Globals.Tickrate, globals.tick_interval = Globals.TickInterval, globals.curtime = Globals.Curtime, globals.realtime = Globals.Realtime, globals.frametime = Globals.Frametime, sound.play = Sound.Play, sound.play_microphone = Sound.PlayMicrophone, sound.stop_microphone = Sound.StopMicrophone, cheat.get_username = Cheat.GetUsername, cheat.register_callback = function(c, f) { switch (c) { case 'create_move': Cheat.RegisterCallback("CreateMove", f); break; case 'paint': Cheat.RegisterCallback("Draw", f); break; case 'fsn': Cheat.RegisterCallback("FrameStageNotify", f); break; case 'shutdown': Cheat.RegisterCallback("Unload", f); break; default: Cheat.RegisterCallback(c, f); break; } }, cheat.execute_command = Cheat.ExecuteCommand, cheat.frame_stage = Cheat.FrameStage, cheat.print = Cheat.Print, cheat.print_chat = Cheat.PrintChat, cheat.print_color = Cheat.PrintColor, local.latency = Local.Latency, local.get_view_angles = Local.GetViewAngles, local.set_view_angles = Local.SetViewAngles, local.set_clan_tag = Local.SetClanTag, local.get_real_yaw = Local.GetRealYaw, local.get_fake_yaw = Local.GetFakeYaw, local.get_spread = Local.GetSpread, local.get_inaccuracy = Local.GetInaccuracy, world.get_map_name = World.GetMapName, world.get_server_string = World.GetServerString, input.get_cursor_position = Input.GetCursorPosition, input.is_key_pressed = Input.IsKeyPressed, render.string = Render.String, render.text_size = Render.TextSize, render.line = Render.Line, render.rect = Render.Rect, render.filled_rect = Render.FilledRect, render.gradient_rect = Render.GradientRect, render.circle = Render.Circle, render.filled_circle = Render.FilledCircle, render.polygon = Render.Polygon, render.world_to_screen = Render.WorldToScreen, render.add_font = Render.AddFont, render.find_font = Render.FindFont, render.string_custom = Render.StringCustom, render.textured_rect = Render.TexturedRect, render.add_texture = Render.AddTexture, render.text_size_custom = Render.TextSizeCustom, render.get_screen_size = Render.GetScreenSize, ui.get_value = UI.GetValue, ui.set_value = UI.SetValue, ui.add_checkbox = UI.AddCheckbox, ui.add_slider_int = UI.AddSliderInt, ui.add_slider_float = UI.AddSliderFloat, ui.add_hotkey = UI.AddHotkey, ui.add_label = UI.AddLabel, ui.add_dropdown = UI.AddDropdown, ui.add_multi_dropdown = UI.AddMultiDropdown, ui.add_color_picker = UI.AddColorPicker, ui.add_textbox = UI.AddTextbox, ui.set_enabled = UI.SetEnabled, ui.get_string = UI.GetString, ui.get_color = UI.GetColor, ui.set_color = UI.SetColor, ui.is_hotkey_active = UI.IsHotkeyActive, ui.toggle_hotkey = UI.ToggleHotkey, ui.is_menu_open = UI.IsMenuOpen, convar.get_int = Convar.GetInt, convar.set_int = Convar.SetInt, convar.get_float = Convar.GetFloat, convar.set_float = Convar.SetFloat, convar.get_string = Convar.GetString, convar.set_string = Convar.SetString, event.get_int = Event.GetInt, event.get_float = Event.GetFloat, event.get_string = Event.GetString, entity.get_entities = Entity.GetEntities, entity.get_entities_by_class_i_d = Entity.GetEntitiesByClassID, entity.get_players = Entity.GetPlayers, entity.get_enemies = Entity.GetEnemies, entity.get_teammates = Entity.GetTeammates, entity.get_local_player = Entity.GetLocalPlayer, entity.get_game_rules_proxy = Entity.GetGameRulesProxy, entity.get_entity_from_user_i_d = Entity.GetEntityFromUserID, entity.is_teammate = Entity.IsTeammate, entity.is_enemy = Entity.IsEnemy, entity.is_bot = Entity.IsBot, entity.is_local_player = Entity.IsLocalPlayer, entity.is_valid = Entity.IsValid, entity.is_alive = Entity.IsAlive, entity.is_dormant = Entity.IsDormant, entity.get_class_i_d = Entity.GetClassID, entity.get_class_name = Entity.GetClassName, entity.get_name = Entity.GetName, entity.get_weapon = Entity.GetWeapon, entity.get_weapons = Entity.GetWeapons, entity.get_render_origin = Entity.GetRenderOrigin, entity.get_render_box = Entity.GetRenderBox, entity.get_prop = Entity.GetProp, entity.set_prop = Entity.SetProp, entity.get_hitbox_position = Entity.GetHitboxPosition, entity.get_eye_position = Entity.GetEyePosition, trace.line = Trace.Line, trace.bullet = Trace.Bullet, usercmd.set_movement = UserCMD.SetMovement, usercmd.get_movement = UserCMD.GetMovement, usercmd.set_angles = UserCMD.SetAngles, usercmd.force_jump = UserCMD.ForceJump, usercmd.force_crouch = UserCMD.ForceCrouch, antiaim.get_override = AntiAim.GetOverride, antiaim.set_override = AntiAim.SetOverride, antiaim.set_real_offset = AntiAim.SetRealOffset, antiaim.set_fake_offset = AntiAim.SetFakeOffset, antiaim.set_l_b_y_offset = AntiAim.SetLBYOffset, exploit.get_charge = Exploit.GetCharge, exploit.recharge = Exploit.Recharge, exploit.disable_recharge = Exploit.DisableRecharge, exploit.enable_recharge = Exploit.EnableRecharge, ragebot.get_target = Ragebot.GetTarget, ragebot.ignore_target = Ragebot.IgnoreTarget, ragebot.force_target = Ragebot.ForceTarget, ragebot.force_target_safety = Ragebot.ForceTargetSafety, ragebot.force_target_hitchance = Ragebot.ForceTargetHitchance, ragebot.force_target_minimum_damage = Ragebot.ForceTargetMinimumDamage, ragebot.force_hitbox_safety = Ragebot.ForceHitboxSafety, material.create = Material.Create, material.destroy = Material.Destroy, material.get = Material.Get, material.set_key_value = Material.SetKeyValue, material.refresh = Material.Refresh
//endregion

//region dependencies

/**
* @title BetterUI
* Version 2.0.1
* @description A better UI system for Onetap
*/

var menu = {
_class: 'BetterUI'
};
const menu_spacer = " ";

/**
* Concats two elements into an array without increasing the array length.
* Prevents the memory leak in 2.0.0 from happening
*
* @param a {array}
* @param b {any}
*/
menu.concat = function(a, b)
{
// Creates a new array.
var arr = [];

// Push all items from the array 'a' into our array.
for (var c in a)
{
arr.push(a[c]);
}

// Push the value 'b' into our array.
arr.push(b);

// Return the new array.
return arr;
}

/**
* Creates a new menu label
*
* @param label {string}
*/
menu.label = function(label)
{
// Creates the label
UI.AddLabel(label);
};

/**
* Creates a new menu element
*
* @param func {function}
* @param name {string}
* @param label {string},
* @param properties {array}
*/
menu.call = function(func, name, label, properties)
{
// Get properties
const final_name = name + menu_spacer + label;
var final_props = [final_name];
const element_info_t = {
path: ["Misc", "JAVASCRIPT", "Script Items", final_name]
};

// If our properties aren't null, then pack them together.
if (properties != null)
{
for (var i = 0; i < properties.length; i++)
{
final_props.push(properties);
}
}

// Create our menu element and return properties
func.apply(null, final_props);
return element_info_t;
};

/**
* Creates a new menu reference
*
* @param path {array}
*/
menu.reference = function(path)
{
const element_info_t = {
path: path
};

return element_info_t;
};

/**
* Gets the value of a menu element
*
* @param elem {array}
* ReturN {*}
*/
menu.get = function(elem)
{
// If the element doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Returns the element's value
return UI.GetValue.apply(null, elem.path);
};

/**
* Gets the value of a menu element
*
* @param elem {array}
* ReturN {*}
*/
menu.get_hotkey = function(elem)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Returns the element's value
return UI.IsHotkeyActive.apply(null, elem.path);
};

/**
* Gets the value of a menu element
*
* @param elem {array}
* ReturN {*}
*/
menu.get_color = function(elem)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Returns the element's value
return UI.GetColor.apply(null, elem.path);
};

/**
* Sets the value of a menu element
*
* @param elem {array}
* @param value {*}
*/
menu.set = function(elem, value)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Get properties
const properties = elem;

// Set the element's value
UI.SetValue.apply(null, this.concat(properties.path, value));
};

/**
* Sets the value of a color picker
*
* @param elem {array}
* @param color {array|Color}
*/
menu.set_color = function(elem, color)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Get properties
const properties = elem;

// Set the element's value
UI.SetColor.apply(null, this.concat(properties.path, color));
};

/**
* Toggles a hotkey
*
* @param elem {array}
*/
menu.toggle = function(elem)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Set the element's value
UI.ToggleHotkey.apply(null, elem.path);
};

/**
* Changes the visibility of a menu elements
*
* @param elem {array}
* @param visible {boolean}
*/
menu.visibility = function(elem, visible)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Get properties
const properties = elem;

// Change the element's visibility
UI.SetEnabled.apply(null, this.concat(properties.path, visible));
};

const distance_in_ft = function(origin, destination)
{
const sub = [destination[0] - origin[0], destination[1] - origin[1], destination[2] - origin[2]];
return Math.round(Math.sqrt(sub[0] ** 2 + sub[1] ** 2 + sub[2] ** 2) / 12);
}

const clamp = function(v, f, c)
{
return Math.min(Math.max(v, f), c);
}

render.arc = function(x, y, r1, r2, s, d, col)
{
for (var i = s; i < s + d; i++)
{

const rad = i * Math.PI / 180;

render.line(x + Math.cos(rad) * r1, y + Math.sin(rad) * r1, x + Math.cos(rad) * r2, y + Math.sin(rad) * r2, col);
}
}

const is_inside_screen = function(vec)
{
const screen_size = render.get_screen_size();
return vec[0] > 0 && vec[1] > 0 && vec[0] < screen_size[0] && vec[1] < screen_size[1];
}

//endregion

//region globals

var positions = [];

//endregion

//region menu

const enable = menu.call(ui.add_checkbox, "| Grenade warning", "gw_enable", []);
const tracer = menu.call(ui.add_checkbox, "| Grenade tracer", "gw_tracer", []);
const tracer_color = menu.call(ui.add_color_picker, "| Grenade tracer color", "gw_tracer_clr", []);
const max_dst = menu.call(ui.add_slider_int, "| Maximum distance", "gw_dist", [0, 500]);

//endregion

//region main

function import_nades()
{
if (!(menu.get(tracer)))
return;

grenades = entity.get_entities_by_class_i_d(9).concat(entity.get_entities_by_class_i_d(113)).concat(entity.get_entities_by_class_i_d(100));
for (e in grenades)
{

should_pass = false;

for (g in positions)
{
if (positions[g][0] == grenades[e]) {
should_pass = true;
continue;
}
}

if (should_pass)
continue;

positions.push([grenades[e], Globals.Curtime(), [entity.get_render_origin(grenades[e])], Globals.Curtime()]);
}
}

function render_trails()
{
const length = 256, rate = 0.1;
const color = menu.get_color(tracer_color);

for (g in positions)
{
if (globals.curtime() - positions[g][3] > 3 || !entity.is_valid(positions[g][0]))
{
positions.shift();
continue;
}

if (globals.curtime() - positions[g][1] > rate)
{
if (positions[g][2].length > length)
{
positions[g][2].shift();
positions[g][1] = globals.curtime();
}

positions[g][2].push(entity.get_render_origin(positions[g][0]));
}

for (l in positions[g][2])
{
pos = render.world_to_screen(positions[g][2][l]);

if (l > 0)
{
last = render.world_to_screen(positions[g][2][l - 1]);

render.line(pos[0] - 1, pos[1] - 1, last[0] - 1, last[1] - 1, color);
render.line(pos[0] - 1, pos[1] + 1, last[0] - 1, last[1] + 1, color);
render.line(pos[0] + 1, pos[1] - 1, last[0] + 1, last[1] - 1, color);
render.line(pos[0] + 1, pos[1] + 1, last[0] + 1, last[1] + 1, color);
render.line(pos[0], pos[1], last[0], last[1], color);
}

last = render.world_to_screen(positions[g][2][positions[g][2].length - 1]);
}
}
}

function on_paint( )
{
if (!(menu.get(enable)) && !(menu.get(tracer)))
return;

const grenades = entity.get_entities_by_class_i_d(9).concat(entity.get_entities_by_class_i_d(113)).concat(entity.get_entities_by_class_i_d(100));

const me = entity.get_local_player( );

if (!me)
return;

if (!entity.is_alive(me))
{
const obs = entity.get_prop(me, "CBasePlayer", "m_hObserverTarget");

if (!entity.is_valid(obs))
return;

me = obs;
}

const origin = entity.get_eye_position(me);

for (var i = 0; i < grenades.length; i++)
{
const g = grenades;

const destination = entity.get_render_origin(g);
const distance = distance_in_ft(origin, destination);

if (distance > menu.get(max_dst))
{
continue;
}

const screen = render.world_to_screen(destination);
const is_he = entity.get_class_i_d(g) === 9, is_inferno = entity.get_class_i_d(g) === 100;

const trace = Trace.Line(me, origin, destination);

const is_safe = distance > (is_inferno ? 15 : 20) || trace[1] < 0.61;

if (is_he && entity.get_prop(g, "CBaseCSGrenadeProjectile", "m_nExplodeEffectTickBegin"))
{
continue;
}

render.filled_circle(screen[0], screen[1] - 50, 30, !is_safe ? [225, 20, 20, 175 ] : [20, 20, 20, 175]);
render.string(screen[0], screen[1] - 75, 1, "!", [255, 250, 175, 200], 4);
render.string(screen[0], screen[1] - 40, 1, distance + " ft", [232, 232, 232, 200], 3);

if (is_inferno)
{
const time = entity.get_prop(g, "CInferno", "m_nFireEffectTickBegin") * globals.tick_interval();
const factor = clamp(((time + 7) - globals.curtime()) / 7, 0, 7);

render.arc(screen[0], screen[1] - 50, 30, 32, -90, 360 * factor, [232, 232, 232, 200]);
}
}
}

//endregion

//region callbacks

cheat.register_callback("paint", "import_nades");
cheat.register_callback("paint", "render_trails");
cheat.register_callback("paint", "on_paint");

//endregion
 
Забаненный
Статус
Оффлайн
Регистрация
6 Янв 2020
Сообщения
119
Реакции[?]
20
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
/*
*
* Customer: !_Rixon_1338#2746
*
*/

//region api
const global = [], globals = [], sound = [], cheat = [], local = [], world = [], input = [], render = [], ui = [], convar = [], event = [], entity = [], trace = [], usercmd = [], antiaim = [], exploit = [], ragebot = [], material = []; global.print = Global.Print, global.print_chat = Global.PrintChat, global.print_color = Global.PrintColor, global.register_callback = Global.RegisterCallback, global.execute_command = Global.ExecuteCommand, global.frame_stage = Global.FrameStage, global.tickcount = Global.Tickcount, global.tickrate = Global.Tickrate, global.tick_interval = Global.TickInterval, global.curtime = Global.Curtime, global.realtime = Global.Realtime, global.frametime = Global.Frametime, global.latency = Global.Latency, global.get_view_angles = Global.GetViewAngles, global.set_view_angles = Global.SetViewAngles, global.get_map_name = Global.GetMapName, global.is_key_pressed = Global.IsKeyPressed, global.get_screen_size = Global.GetScreenSize, global.get_cursor_position = Global.GetCursorPosition, global.play_sound = Global.PlaySound, global.play_microphone = Global.PlayMicrophone, global.stop_microphone = Global.StopMicrophone, global.get_username = Global.GetUsername, global.set_clan_tag = Global.SetClanTag, globals.tickcount = Globals.Tickcount, globals.tickrate = Globals.Tickrate, globals.tick_interval = Globals.TickInterval, globals.curtime = Globals.Curtime, globals.realtime = Globals.Realtime, globals.frametime = Globals.Frametime, sound.play = Sound.Play, sound.play_microphone = Sound.PlayMicrophone, sound.stop_microphone = Sound.StopMicrophone, cheat.get_username = Cheat.GetUsername, cheat.register_callback = function(c, f) { switch (c) { case 'create_move': Cheat.RegisterCallback("CreateMove", f); break; case 'paint': Cheat.RegisterCallback("Draw", f); break; case 'fsn': Cheat.RegisterCallback("FrameStageNotify", f); break; case 'shutdown': Cheat.RegisterCallback("Unload", f); break; default: Cheat.RegisterCallback(c, f); break; } }, cheat.execute_command = Cheat.ExecuteCommand, cheat.frame_stage = Cheat.FrameStage, cheat.print = Cheat.Print, cheat.print_chat = Cheat.PrintChat, cheat.print_color = Cheat.PrintColor, local.latency = Local.Latency, local.get_view_angles = Local.GetViewAngles, local.set_view_angles = Local.SetViewAngles, local.set_clan_tag = Local.SetClanTag, local.get_real_yaw = Local.GetRealYaw, local.get_fake_yaw = Local.GetFakeYaw, local.get_spread = Local.GetSpread, local.get_inaccuracy = Local.GetInaccuracy, world.get_map_name = World.GetMapName, world.get_server_string = World.GetServerString, input.get_cursor_position = Input.GetCursorPosition, input.is_key_pressed = Input.IsKeyPressed, render.string = Render.String, render.text_size = Render.TextSize, render.line = Render.Line, render.rect = Render.Rect, render.filled_rect = Render.FilledRect, render.gradient_rect = Render.GradientRect, render.circle = Render.Circle, render.filled_circle = Render.FilledCircle, render.polygon = Render.Polygon, render.world_to_screen = Render.WorldToScreen, render.add_font = Render.AddFont, render.find_font = Render.FindFont, render.string_custom = Render.StringCustom, render.textured_rect = Render.TexturedRect, render.add_texture = Render.AddTexture, render.text_size_custom = Render.TextSizeCustom, render.get_screen_size = Render.GetScreenSize, ui.get_value = UI.GetValue, ui.set_value = UI.SetValue, ui.add_checkbox = UI.AddCheckbox, ui.add_slider_int = UI.AddSliderInt, ui.add_slider_float = UI.AddSliderFloat, ui.add_hotkey = UI.AddHotkey, ui.add_label = UI.AddLabel, ui.add_dropdown = UI.AddDropdown, ui.add_multi_dropdown = UI.AddMultiDropdown, ui.add_color_picker = UI.AddColorPicker, ui.add_textbox = UI.AddTextbox, ui.set_enabled = UI.SetEnabled, ui.get_string = UI.GetString, ui.get_color = UI.GetColor, ui.set_color = UI.SetColor, ui.is_hotkey_active = UI.IsHotkeyActive, ui.toggle_hotkey = UI.ToggleHotkey, ui.is_menu_open = UI.IsMenuOpen, convar.get_int = Convar.GetInt, convar.set_int = Convar.SetInt, convar.get_float = Convar.GetFloat, convar.set_float = Convar.SetFloat, convar.get_string = Convar.GetString, convar.set_string = Convar.SetString, event.get_int = Event.GetInt, event.get_float = Event.GetFloat, event.get_string = Event.GetString, entity.get_entities = Entity.GetEntities, entity.get_entities_by_class_i_d = Entity.GetEntitiesByClassID, entity.get_players = Entity.GetPlayers, entity.get_enemies = Entity.GetEnemies, entity.get_teammates = Entity.GetTeammates, entity.get_local_player = Entity.GetLocalPlayer, entity.get_game_rules_proxy = Entity.GetGameRulesProxy, entity.get_entity_from_user_i_d = Entity.GetEntityFromUserID, entity.is_teammate = Entity.IsTeammate, entity.is_enemy = Entity.IsEnemy, entity.is_bot = Entity.IsBot, entity.is_local_player = Entity.IsLocalPlayer, entity.is_valid = Entity.IsValid, entity.is_alive = Entity.IsAlive, entity.is_dormant = Entity.IsDormant, entity.get_class_i_d = Entity.GetClassID, entity.get_class_name = Entity.GetClassName, entity.get_name = Entity.GetName, entity.get_weapon = Entity.GetWeapon, entity.get_weapons = Entity.GetWeapons, entity.get_render_origin = Entity.GetRenderOrigin, entity.get_render_box = Entity.GetRenderBox, entity.get_prop = Entity.GetProp, entity.set_prop = Entity.SetProp, entity.get_hitbox_position = Entity.GetHitboxPosition, entity.get_eye_position = Entity.GetEyePosition, trace.line = Trace.Line, trace.bullet = Trace.Bullet, usercmd.set_movement = UserCMD.SetMovement, usercmd.get_movement = UserCMD.GetMovement, usercmd.set_angles = UserCMD.SetAngles, usercmd.force_jump = UserCMD.ForceJump, usercmd.force_crouch = UserCMD.ForceCrouch, antiaim.get_override = AntiAim.GetOverride, antiaim.set_override = AntiAim.SetOverride, antiaim.set_real_offset = AntiAim.SetRealOffset, antiaim.set_fake_offset = AntiAim.SetFakeOffset, antiaim.set_l_b_y_offset = AntiAim.SetLBYOffset, exploit.get_charge = Exploit.GetCharge, exploit.recharge = Exploit.Recharge, exploit.disable_recharge = Exploit.DisableRecharge, exploit.enable_recharge = Exploit.EnableRecharge, ragebot.get_target = Ragebot.GetTarget, ragebot.ignore_target = Ragebot.IgnoreTarget, ragebot.force_target = Ragebot.ForceTarget, ragebot.force_target_safety = Ragebot.ForceTargetSafety, ragebot.force_target_hitchance = Ragebot.ForceTargetHitchance, ragebot.force_target_minimum_damage = Ragebot.ForceTargetMinimumDamage, ragebot.force_hitbox_safety = Ragebot.ForceHitboxSafety, material.create = Material.Create, material.destroy = Material.Destroy, material.get = Material.Get, material.set_key_value = Material.SetKeyValue, material.refresh = Material.Refresh
//endregion

//region dependencies

/**
* @title BetterUI
* Version 2.0.1
* @description A better UI system for Onetap
*/

var menu = {
_class: 'BetterUI'
};
const menu_spacer = " ";

/**
* Concats two elements into an array without increasing the array length.
* Prevents the memory leak in 2.0.0 from happening
*
* @param a {array}
* @param b {any}
*/
menu.concat = function(a, b)
{
// Creates a new array.
var arr = [];

// Push all items from the array 'a' into our array.
for (var c in a)
{
arr.push(a[c]);
}

// Push the value 'b' into our array.
arr.push(b);

// Return the new array.
return arr;
}

/**
* Creates a new menu label
*
* @param label {string}
*/
menu.label = function(label)
{
// Creates the label
UI.AddLabel(label);
};

/**
* Creates a new menu element
*
* @param func {function}
* @param name {string}
* @param label {string},
* @param properties {array}
*/
menu.call = function(func, name, label, properties)
{
// Get properties
const final_name = name + menu_spacer + label;
var final_props = [final_name];
const element_info_t = {
path: ["Misc", "JAVASCRIPT", "Script Items", final_name]
};

// If our properties aren't null, then pack them together.
if (properties != null)
{
for (var i = 0; i < properties.length; i++)
{
final_props.push(properties);
}
}

// Create our menu element and return properties
func.apply(null, final_props);
return element_info_t;
};

/**
* Creates a new menu reference
*
* @param path {array}
*/
menu.reference = function(path)
{
const element_info_t = {
path: path
};

return element_info_t;
};

/**
* Gets the value of a menu element
*
* @param elem {array}
* ReturN {*}
*/
menu.get = function(elem)
{
// If the element doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Returns the element's value
return UI.GetValue.apply(null, elem.path);
};

/**
* Gets the value of a menu element
*
* @param elem {array}
* ReturN {*}
*/
menu.get_hotkey = function(elem)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Returns the element's value
return UI.IsHotkeyActive.apply(null, elem.path);
};

/**
* Gets the value of a menu element
*
* @param elem {array}
* ReturN {*}
*/
menu.get_color = function(elem)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Returns the element's value
return UI.GetColor.apply(null, elem.path);
};

/**
* Sets the value of a menu element
*
* @param elem {array}
* @param value {*}
*/
menu.set = function(elem, value)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Get properties
const properties = elem;

// Set the element's value
UI.SetValue.apply(null, this.concat(properties.path, value));
};

/**
* Sets the value of a color picker
*
* @param elem {array}
* @param color {array|Color}
*/
menu.set_color = function(elem, color)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Get properties
const properties = elem;

// Set the element's value
UI.SetColor.apply(null, this.concat(properties.path, color));
};

/**
* Toggles a hotkey
*
* @param elem {array}
*/
menu.toggle = function(elem)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Set the element's value
UI.ToggleHotkey.apply(null, elem.path);
};

/**
* Changes the visibility of a menu elements
*
* @param elem {array}
* @param visible {boolean}
*/
menu.visibility = function(elem, visible)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Get properties
const properties = elem;

// Change the element's visibility
UI.SetEnabled.apply(null, this.concat(properties.path, visible));
};

const distance_in_ft = function(origin, destination)
{
const sub = [destination[0] - origin[0], destination[1] - origin[1], destination[2] - origin[2]];
return Math.round(Math.sqrt(sub[0] ** 2 + sub[1] ** 2 + sub[2] ** 2) / 12);
}

const clamp = function(v, f, c)
{
return Math.min(Math.max(v, f), c);
}

render.arc = function(x, y, r1, r2, s, d, col)
{
for (var i = s; i < s + d; i++)
{

const rad = i * Math.PI / 180;

render.line(x + Math.cos(rad) * r1, y + Math.sin(rad) * r1, x + Math.cos(rad) * r2, y + Math.sin(rad) * r2, col);
}
}

const is_inside_screen = function(vec)
{
const screen_size = render.get_screen_size();
return vec[0] > 0 && vec[1] > 0 && vec[0] < screen_size[0] && vec[1] < screen_size[1];
}

//endregion

//region globals

var positions = [];

//endregion

//region menu

const enable = menu.call(ui.add_checkbox, "| Grenade warning", "gw_enable", []);
const tracer = menu.call(ui.add_checkbox, "| Grenade tracer", "gw_tracer", []);
const tracer_color = menu.call(ui.add_color_picker, "| Grenade tracer color", "gw_tracer_clr", []);
const max_dst = menu.call(ui.add_slider_int, "| Maximum distance", "gw_dist", [0, 500]);

//endregion

//region main

function import_nades()
{
if (!(menu.get(tracer)))
return;

grenades = entity.get_entities_by_class_i_d(9).concat(entity.get_entities_by_class_i_d(113)).concat(entity.get_entities_by_class_i_d(100));
for (e in grenades)
{

should_pass = false;

for (g in positions)
{
if (positions[g][0] == grenades[e]) {
should_pass = true;
continue;
}
}

if (should_pass)
continue;

positions.push([grenades[e], Globals.Curtime(), [entity.get_render_origin(grenades[e])], Globals.Curtime()]);
}
}

function render_trails()
{
const length = 256, rate = 0.1;
const color = menu.get_color(tracer_color);

for (g in positions)
{
if (globals.curtime() - positions[g][3] > 3 || !entity.is_valid(positions[g][0]))
{
positions.shift();
continue;
}

if (globals.curtime() - positions[g][1] > rate)
{
if (positions[g][2].length > length)
{
positions[g][2].shift();
positions[g][1] = globals.curtime();
}

positions[g][2].push(entity.get_render_origin(positions[g][0]));
}

for (l in positions[g][2])
{
pos = render.world_to_screen(positions[g][2][l]);

if (l > 0)
{
last = render.world_to_screen(positions[g][2][l - 1]);

render.line(pos[0] - 1, pos[1] - 1, last[0] - 1, last[1] - 1, color);
render.line(pos[0] - 1, pos[1] + 1, last[0] - 1, last[1] + 1, color);
render.line(pos[0] + 1, pos[1] - 1, last[0] + 1, last[1] - 1, color);
render.line(pos[0] + 1, pos[1] + 1, last[0] + 1, last[1] + 1, color);
render.line(pos[0], pos[1], last[0], last[1], color);
}

last = render.world_to_screen(positions[g][2][positions[g][2].length - 1]);
}
}
}

function on_paint( )
{
if (!(menu.get(enable)) && !(menu.get(tracer)))
return;

const grenades = entity.get_entities_by_class_i_d(9).concat(entity.get_entities_by_class_i_d(113)).concat(entity.get_entities_by_class_i_d(100));

const me = entity.get_local_player( );

if (!me)
return;

if (!entity.is_alive(me))
{
const obs = entity.get_prop(me, "CBasePlayer", "m_hObserverTarget");

if (!entity.is_valid(obs))
return;

me = obs;
}

const origin = entity.get_eye_position(me);

for (var i = 0; i < grenades.length; i++)
{
const g = grenades;

const destination = entity.get_render_origin(g);
const distance = distance_in_ft(origin, destination);

if (distance > menu.get(max_dst))
{
continue;
}

const screen = render.world_to_screen(destination);
const is_he = entity.get_class_i_d(g) === 9, is_inferno = entity.get_class_i_d(g) === 100;

const trace = Trace.Line(me, origin, destination);

const is_safe = distance > (is_inferno ? 15 : 20) || trace[1] < 0.61;

if (is_he && entity.get_prop(g, "CBaseCSGrenadeProjectile", "m_nExplodeEffectTickBegin"))
{
continue;
}

render.filled_circle(screen[0], screen[1] - 50, 30, !is_safe ? [225, 20, 20, 175 ] : [20, 20, 20, 175]);
render.string(screen[0], screen[1] - 75, 1, "!", [255, 250, 175, 200], 4);
render.string(screen[0], screen[1] - 40, 1, distance + " ft", [232, 232, 232, 200], 3);

if (is_inferno)
{
const time = entity.get_prop(g, "CInferno", "m_nFireEffectTickBegin") * globals.tick_interval();
const factor = clamp(((time + 7) - globals.curtime()) / 7, 0, 7);

render.arc(screen[0], screen[1] - 50, 30, 32, -90, 360 * factor, [232, 232, 232, 200]);
}
}
}

//endregion

//region callbacks

cheat.register_callback("paint", "import_nades");
cheat.register_callback("paint", "render_trails");
cheat.register_callback("paint", "on_paint");

//endregion
Вставь нормально
 
мусулман
Начинающий
Статус
Оффлайн
Регистрация
10 Фев 2020
Сообщения
241
Реакции[?]
20
Поинты[?]
0
JavaScript:
/*
*
* Customer: !_Rixon_1338#2746
*
*/

//region api
const global = [], globals = [], sound = [], cheat = [], local = [], world = [], input = [], render = [], ui = [], convar = [], event = [], entity = [], trace = [], usercmd = [], antiaim = [], exploit = [], ragebot = [], material = []; global.print = Global.Print, global.print_chat = Global.PrintChat, global.print_color = Global.PrintColor, global.register_callback = Global.RegisterCallback, global.execute_command = Global.ExecuteCommand, global.frame_stage = Global.FrameStage, global.tickcount = Global.Tickcount, global.tickrate = Global.Tickrate, global.tick_interval = Global.TickInterval, global.curtime = Global.Curtime, global.realtime = Global.Realtime, global.frametime = Global.Frametime, global.latency = Global.Latency, global.get_view_angles = Global.GetViewAngles, global.set_view_angles = Global.SetViewAngles, global.get_map_name = Global.GetMapName, global.is_key_pressed = Global.IsKeyPressed, global.get_screen_size = Global.GetScreenSize, global.get_cursor_position = Global.GetCursorPosition, global.play_sound = Global.PlaySound, global.play_microphone = Global.PlayMicrophone, global.stop_microphone = Global.StopMicrophone, global.get_username = Global.GetUsername, global.set_clan_tag = Global.SetClanTag, globals.tickcount = Globals.Tickcount, globals.tickrate = Globals.Tickrate, globals.tick_interval = Globals.TickInterval, globals.curtime = Globals.Curtime, globals.realtime = Globals.Realtime, globals.frametime = Globals.Frametime, sound.play = Sound.Play, sound.play_microphone = Sound.PlayMicrophone, sound.stop_microphone = Sound.StopMicrophone, cheat.get_username = Cheat.GetUsername, cheat.register_callback = function(c, f) { switch (c) { case 'create_move': Cheat.RegisterCallback("CreateMove", f); break; case 'paint': Cheat.RegisterCallback("Draw", f); break; case 'fsn': Cheat.RegisterCallback("FrameStageNotify", f); break; case 'shutdown': Cheat.RegisterCallback("Unload", f); break; default: Cheat.RegisterCallback(c, f); break; } }, cheat.execute_command = Cheat.ExecuteCommand, cheat.frame_stage = Cheat.FrameStage, cheat.print = Cheat.Print, cheat.print_chat = Cheat.PrintChat, cheat.print_color = Cheat.PrintColor, local.latency = Local.Latency, local.get_view_angles = Local.GetViewAngles, local.set_view_angles = Local.SetViewAngles, local.set_clan_tag = Local.SetClanTag, local.get_real_yaw = Local.GetRealYaw, local.get_fake_yaw = Local.GetFakeYaw, local.get_spread = Local.GetSpread, local.get_inaccuracy = Local.GetInaccuracy, world.get_map_name = World.GetMapName, world.get_server_string = World.GetServerString, input.get_cursor_position = Input.GetCursorPosition, input.is_key_pressed = Input.IsKeyPressed, render.string = Render.String, render.text_size = Render.TextSize, render.line = Render.Line, render.rect = Render.Rect, render.filled_rect = Render.FilledRect, render.gradient_rect = Render.GradientRect, render.circle = Render.Circle, render.filled_circle = Render.FilledCircle, render.polygon = Render.Polygon, render.world_to_screen = Render.WorldToScreen, render.add_font = Render.AddFont, render.find_font = Render.FindFont, render.string_custom = Render.StringCustom, render.textured_rect = Render.TexturedRect, render.add_texture = Render.AddTexture, render.text_size_custom = Render.TextSizeCustom, render.get_screen_size = Render.GetScreenSize, ui.get_value = UI.GetValue, ui.set_value = UI.SetValue, ui.add_checkbox = UI.AddCheckbox, ui.add_slider_int = UI.AddSliderInt, ui.add_slider_float = UI.AddSliderFloat, ui.add_hotkey = UI.AddHotkey, ui.add_label = UI.AddLabel, ui.add_dropdown = UI.AddDropdown, ui.add_multi_dropdown = UI.AddMultiDropdown, ui.add_color_picker = UI.AddColorPicker, ui.add_textbox = UI.AddTextbox, ui.set_enabled = UI.SetEnabled, ui.get_string = UI.GetString, ui.get_color = UI.GetColor, ui.set_color = UI.SetColor, ui.is_hotkey_active = UI.IsHotkeyActive, ui.toggle_hotkey = UI.ToggleHotkey, ui.is_menu_open = UI.IsMenuOpen, convar.get_int = Convar.GetInt, convar.set_int = Convar.SetInt, convar.get_float = Convar.GetFloat, convar.set_float = Convar.SetFloat, convar.get_string = Convar.GetString, convar.set_string = Convar.SetString, event.get_int = Event.GetInt, event.get_float = Event.GetFloat, event.get_string = Event.GetString, entity.get_entities = Entity.GetEntities, entity.get_entities_by_class_i_d = Entity.GetEntitiesByClassID, entity.get_players = Entity.GetPlayers, entity.get_enemies = Entity.GetEnemies, entity.get_teammates = Entity.GetTeammates, entity.get_local_player = Entity.GetLocalPlayer, entity.get_game_rules_proxy = Entity.GetGameRulesProxy, entity.get_entity_from_user_i_d = Entity.GetEntityFromUserID, entity.is_teammate = Entity.IsTeammate, entity.is_enemy = Entity.IsEnemy, entity.is_bot = Entity.IsBot, entity.is_local_player = Entity.IsLocalPlayer, entity.is_valid = Entity.IsValid, entity.is_alive = Entity.IsAlive, entity.is_dormant = Entity.IsDormant, entity.get_class_i_d = Entity.GetClassID, entity.get_class_name = Entity.GetClassName, entity.get_name = Entity.GetName, entity.get_weapon = Entity.GetWeapon, entity.get_weapons = Entity.GetWeapons, entity.get_render_origin = Entity.GetRenderOrigin, entity.get_render_box = Entity.GetRenderBox, entity.get_prop = Entity.GetProp, entity.set_prop = Entity.SetProp, entity.get_hitbox_position = Entity.GetHitboxPosition, entity.get_eye_position = Entity.GetEyePosition, trace.line = Trace.Line, trace.bullet = Trace.Bullet, usercmd.set_movement = UserCMD.SetMovement, usercmd.get_movement = UserCMD.GetMovement, usercmd.set_angles = UserCMD.SetAngles, usercmd.force_jump = UserCMD.ForceJump, usercmd.force_crouch = UserCMD.ForceCrouch, antiaim.get_override = AntiAim.GetOverride, antiaim.set_override = AntiAim.SetOverride, antiaim.set_real_offset = AntiAim.SetRealOffset, antiaim.set_fake_offset = AntiAim.SetFakeOffset, antiaim.set_l_b_y_offset = AntiAim.SetLBYOffset, exploit.get_charge = Exploit.GetCharge, exploit.recharge = Exploit.Recharge, exploit.disable_recharge = Exploit.DisableRecharge, exploit.enable_recharge = Exploit.EnableRecharge, ragebot.get_target = Ragebot.GetTarget, ragebot.ignore_target = Ragebot.IgnoreTarget, ragebot.force_target = Ragebot.ForceTarget, ragebot.force_target_safety = Ragebot.ForceTargetSafety, ragebot.force_target_hitchance = Ragebot.ForceTargetHitchance, ragebot.force_target_minimum_damage = Ragebot.ForceTargetMinimumDamage, ragebot.force_hitbox_safety = Ragebot.ForceHitboxSafety, material.create = Material.Create, material.destroy = Material.Destroy, material.get = Material.Get, material.set_key_value = Material.SetKeyValue, material.refresh = Material.Refresh
//endregion

//region dependencies

/**
* @title BetterUI
* @Version 2.0.1
* @description A better UI system for Onetap
*/

var menu = {
_class: 'BetterUI'
};
const menu_spacer = " ";

/**
* Concats two elements into an array without increasing the array length.
* Prevents the memory leak in 2.0.0 from happening
*
* @param a {array}
* @param b {any}
*/
menu.concat = function(a, b)
{
// Creates a new array.
var arr = [];

// Push all items from the array 'a' into our array.
for (var c in a)
{
arr.push(a[c]);
}

// Push the value 'b' into our array.
arr.push(b);

// Return the new array.
return arr;
}

/**
* Creates a new menu label
*
* @param label {string}
*/
menu.label = function(label)
{
// Creates the label
UI.AddLabel(label);
};

/**
* Creates a new menu element
*
* @param func {function}
* @param name {string}
* @param label {string},
* @param properties {array}
*/
menu.call = function(func, name, label, properties)
{
// Get properties
const final_name = name + menu_spacer + label;
var final_props = [final_name];
const element_info_t = {
path: ["Misc", "JAVASCRIPT", "Script Items", final_name]
};

// If our properties aren't null, then pack them together.
if (properties != null)
{
for (var i = 0; i < properties.length; i++)
{
final_props.push(properties);
}
}

// Create our menu element and return properties
func.apply(null, final_props);
return element_info_t;
};

/**
* Creates a new menu reference
*
* @param path {array}
*/
menu.reference = function(path)
{
const element_info_t = {
path: path
};

return element_info_t;
};

/**
* Gets the value of a menu element
*
* @param elem {array}
* @ReturN {*}
*/
menu.get = function(elem)
{
// If the element doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Returns the element's value
return UI.GetValue.apply(null, elem.path);
};

/**
* Gets the value of a menu element
*
* @param elem {array}
* @ReturN {*}
*/
menu.get_hotkey = function(elem)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Returns the element's value
return UI.IsHotkeyActive.apply(null, elem.path);
};

/**
* Gets the value of a menu element
*
* @param elem {array}
* @ReturN {*}
*/
menu.get_color = function(elem)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Returns the element's value
return UI.GetColor.apply(null, elem.path);
};

/**
* Sets the value of a menu element
*
* @param elem {array}
* @param value {*}
*/
menu.set = function(elem, value)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Get properties
const properties = elem;

// Set the element's value
UI.SetValue.apply(null, this.concat(properties.path, value));
};

/**
* Sets the value of a color picker
*
* @param elem {array}
* @param color {array|Color}
*/
menu.set_color = function(elem, color)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Get properties
const properties = elem;

// Set the element's value
UI.SetColor.apply(null, this.concat(properties.path, color));
};

/**
* Toggles a hotkey
*
* @param elem {array}
*/
menu.toggle = function(elem)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Set the element's value
UI.ToggleHotkey.apply(null, elem.path);
};

/**
* Changes the visibility of a menu elements
*
* @param elem {array}
* @param visible {boolean}
*/
menu.visibility = function(elem, visible)
{
// If the label doesn't exist
if (!(elem.path))
throw new Error("[Menu] This element doesn't exist!");

// Get properties
const properties = elem;

// Change the element's visibility
UI.SetEnabled.apply(null, this.concat(properties.path, visible));
};

const distance_in_ft = function(origin, destination)
{
const sub = [destination[0] - origin[0], destination[1] - origin[1], destination[2] - origin[2]];
return Math.round(Math.sqrt(sub[0] ** 2 + sub[1] ** 2 + sub[2] ** 2) / 12);
}

const clamp = function(v, f, c)
{
return Math.min(Math.max(v, f), c);
}

render.arc = function(x, y, r1, r2, s, d, col)
{
for (var i = s; i < s + d; i++)
{

const rad = i * Math.PI / 180;

render.line(x + Math.cos(rad) * r1, y + Math.sin(rad) * r1, x + Math.cos(rad) * r2, y + Math.sin(rad) * r2, col);
}
}

const is_inside_screen = function(vec)
{
const screen_size = render.get_screen_size();
return vec[0] > 0 && vec[1] > 0 && vec[0] < screen_size[0] && vec[1] < screen_size[1];
}

//endregion

//region globals

var positions = [];

//endregion

//region menu

const enable = menu.call(ui.add_checkbox, "| Grenade warning", "gw_enable", []);
const tracer = menu.call(ui.add_checkbox, "| Grenade tracer", "gw_tracer", []);
const tracer_color = menu.call(ui.add_color_picker, "| Grenade tracer color", "gw_tracer_clr", []);
const max_dst = menu.call(ui.add_slider_int, "| Maximum distance", "gw_dist", [0, 500]);

//endregion

//region main

function import_nades()
{
if (!(menu.get(tracer)))
return;

grenades = entity.get_entities_by_class_i_d(9).concat(entity.get_entities_by_class_i_d(113)).concat(entity.get_entities_by_class_i_d(100));
for (e in grenades)
{

should_pass = false;

for (g in positions)
{
if (positions[g][0] == grenades[e]) {
should_pass = true;
continue;
}
}

if (should_pass)
continue;

positions.push([grenades[e], Globals.Curtime(), [entity.get_render_origin(grenades[e])], Globals.Curtime()]);
}
}

function render_trails()
{
const length = 256, rate = 0.1;
const color = menu.get_color(tracer_color);

for (g in positions)
{
if (globals.curtime() - positions[g][3] > 3 || !entity.is_valid(positions[g][0]))
{
positions.shift();
continue;
}

if (globals.curtime() - positions[g][1] > rate)
{
if (positions[g][2].length > length)
{
positions[g][2].shift();
positions[g][1] = globals.curtime();
}

positions[g][2].push(entity.get_render_origin(positions[g][0]));
}

for (l in positions[g][2])
{
pos = render.world_to_screen(positions[g][2][l]);

if (l > 0)
{
last = render.world_to_screen(positions[g][2][l - 1]);

render.line(pos[0] - 1, pos[1] - 1, last[0] - 1, last[1] - 1, color);
render.line(pos[0] - 1, pos[1] + 1, last[0] - 1, last[1] + 1, color);
render.line(pos[0] + 1, pos[1] - 1, last[0] + 1, last[1] - 1, color);
render.line(pos[0] + 1, pos[1] + 1, last[0] + 1, last[1] + 1, color);
render.line(pos[0], pos[1], last[0], last[1], color);
}

last = render.world_to_screen(positions[g][2][positions[g][2].length - 1]);
}
}
}

function on_paint( )
{
if (!(menu.get(enable)) && !(menu.get(tracer)))
return;

const grenades = entity.get_entities_by_class_i_d(9).concat(entity.get_entities_by_class_i_d(113)).concat(entity.get_entities_by_class_i_d(100));

const me = entity.get_local_player( );

if (!me)
return;

if (!entity.is_alive(me))
{
const obs = entity.get_prop(me, "CBasePlayer", "m_hObserverTarget");

if (!entity.is_valid(obs))
return;

me = obs;
}

const origin = entity.get_eye_position(me);

for (var i = 0; i < grenades.length; i++)
{
const g = grenades;

const destination = entity.get_render_origin(g);
const distance = distance_in_ft(origin, destination);

if (distance > menu.get(max_dst))
{
continue;
}

const screen = render.world_to_screen(destination);
const is_he = entity.get_class_i_d(g) === 9, is_inferno = entity.get_class_i_d(g) === 100;

const trace = Trace.Line(me, origin, destination);

const is_safe = distance > (is_inferno ? 15 : 20) || trace[1] < 0.61;

if (is_he && entity.get_prop(g, "CBaseCSGrenadeProjectile", "m_nExplodeEffectTickBegin"))
{
continue;
}

render.filled_circle(screen[0], screen[1] - 50, 30, !is_safe ? [225, 20, 20, 175 ] : [20, 20, 20, 175]);
render.string(screen[0], screen[1] - 75, 1, "!", [255, 250, 175, 200], 4);
render.string(screen[0], screen[1] - 40, 1, distance + " ft", [232, 232, 232, 200], 3);

if (is_inferno)
{
const time = entity.get_prop(g, "CInferno", "m_nFireEffectTickBegin") * globals.tick_interval();
const factor = clamp(((time + 7) - globals.curtime()) / 7, 0, 7);

render.arc(screen[0], screen[1] - 50, 30, 32, -90, 360 * factor, [232, 232, 232, 200]);
}
}
}

//endregion

//region callbacks

cheat.register_callback("paint", "import_nades");
cheat.register_callback("paint", "render_trails");
cheat.register_callback("paint", "on_paint");

//endregion
 
Сверху Снизу