бабки есть почему бы и нет мне похуйпокупать за 20$ а потом ликать на югейм, жалко что плохо компильнул, а так у челика с мозгом видимо не все хорошо :3
у него его нет )можеж скинуть на ФЕЙК ИНДИКАТОР ПЛЕЗ ЧТОБЫ ЛЦ БЫЛ РЯДОМ С ФЕЙК И ДТ
мб есть фейк индикатор можеж датьу него его нет )
да не даст она ну
мб есть фейк индикатор можеж дать
типо вместе с этим индикаторымы и фейк пжж плезда не даст он
типо вместе с этим индикаторымы и фейк пжж плез
я уже понял но у меня их неттипо вместе с этим индикаторымы и фейк пжж плез
типо код для фейк индикатор Если дам сможеж сделастья уже понял но у меня их нет
Я это конфискую
окЯ это конфискую
если дам код для фейк индикатор то сделаешь
мб ну давайесли дам код для фейк индикатор то сделаешь
var menu = {};мб ну давай
var menu = {};
var menu_elements = {};
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.new = function(func, name, label, properties, initial_value)
{
// Fix values
properties = properties || [];
initial_value = initial_value || undefined;
// 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],
cache: initial_value,
func: func
};
// 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);
// Initialize our menu element if it has an initializer.
if (initial_value)
{
switch (func)
{
case UI.AddColorPicker:
UI.SetColor.apply(null, this.concat(element_info_t.path, initial_value));
break;
case UI.AddHotkey:
break;
default:
UI.SetValue.apply(this, this.concat(element_info_t.path, initial_value));
break;
}
}
menu_elements[label] = element_info_t;
return element_info_t;
};
/**
* Creates a new menu reference
*
* @param path {array}
*/
menu.reference = function(path, func)
{
return {
path: path,
func: func
};
};
/**
* 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
switch (elem.func)
{
case UI.AddColorPicker:
return UI.GetColor.apply(null, elem.path);
case UI.AddHotkey:
return UI.IsHotkeyActive.apply(null, elem.path);
default:
return UI.GetValue.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!");
// Set the element's value
switch (elem.func)
{
case UI.AddColorPicker:
UI.SetColor.apply(null, this.concat(elem.path, value));
break;
case UI.AddHotkey:
if (menu.get(elem) !== value)
UI.ToggleHotkey.apply(null, elem.path);
break;
default:
UI.SetValue.apply(null, this.concat(elem.path, value));
break;
}
};
/**
* 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!");
// Change the element's visibility
UI.SetEnabled.apply(null, this.concat(elem.path, visible));
};
/**
* Adds an event to a menu element which is triggered everytime this element's value is changed.
*
* @param elem {array}
* @param func {function}
*/
menu.add_event = function(elem, func)
{
if (!elem.path)
throw new Error("[Menu] This element doesn't exist!");
if (!elem.func)
throw new Errror("[Menu] This element does not have a valid type. Please, specify one.");
elem.callback = func;
}
/**
* Handles the menu elements' events. Call this inside a Draw or FSN callback.
*/
menu.handle_events = function()
{
for (var label in menu_elements)
{
const elem = menu_elements[label];
if (!elem.path || !elem.callback)
continue;
const value = menu.get(elem);
if (elem.cache === undefined)
elem.cache = value;
if (elem.cache !== value)
{
elem.callback.apply(null, [elem]);
elem.cache = value;
}
}
}
/**
* @brief Normalizes an yaw angle.
* @param angle {number}
* @returns {number}
*/
function normalize_yaw(angle)
{
var adjusted_yaw = angle;
if (adjusted_yaw < -180)
adjusted_yaw += 360;
if (adjusted_yaw > 180)
adjusted_yaw -= 360;
return adjusted_yaw;
}
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);
}
}
//endregion
//region menu
const voffset = menu.new(UI.AddSliderInt, "| Indicators vertical offset", "", [0, 1000]);
const ref_antiaim_enabled = menu.reference(["Anti-Aim", "Fake angles", "Enabled"]);
const ref_fakelag_enabled = menu.reference(["Anti-Aim", "Fake-Lag", "Enabled"]);
const ref_doubletap = menu.reference(["Rage", "GENERAL", "Exploits", "Doubletap"]);
const ref_doubletap_hk = menu.reference(["Rage", "GENERAL", "Exploits", "Doubletap"], UI.AddHotkey);
const ref_hideshots_hk = menu.reference(["Rage", "GENERAL", "Exploits", "Hide shots"], UI.AddHotkey);
//endregion
//region locals
var last_time = 0;
var planted = false;
var bombsite = -1;
var offset = 0;
const modules = [
{
label: "DSY",
condition: function() {
return menu.get(ref_antiaim_enabled);
},
colors: {
dormant: [186, 0, 16, 225],
active: [154, 205, 50, 255]
},
logic: function() {
const self = modules[0];
const real = Local.GetRealYaw(), fake = Local.GetFakeYaw();
const delta = Math.abs(normalize_yaw(real % 360 - fake % 360)) / 2;
return delta / 60;
},
extra: function(x, y, color) {
const real = Local.GetRealYaw(), fake = Local.GetFakeYaw();
const delta = Math.abs(normalize_yaw(real % 360 - fake % 360)) / 2;
const frac = delta / 60;
Render.Arc(x+5, y, 6, 13, 0, 360, [10, 10, 10, 60]);
Render.Arc(x+5, y, 7, 11, 0, 360 * frac, color);
}
},
{
label: "LC",
condition: function() {
const me = Entity.GetLocalPlayer();
const on_ground = Entity.GetProp(me, "CBasePlayer", "m_fFlags") & 1;
return menu.get(ref_fakelag_enabled) & (!on_ground || Input.IsKeyPressed(0x20)) & !menu.get(ref_doubletap_hk) & !menu.get(ref_hideshots_hk);
},
colors: {
dormant: [186, 0, 16, 225],
active: [163, 232, 44, 255]
},
logic: function() {
const self = modules[1];
const me = Entity.GetLocalPlayer();
const vec = Entity.GetProp(me, "CBasePlayer", "m_vecVelocity[0]");
const vel = Math.sqrt(vec[0] ** 2 + vec[1] ** 2 + vec[2] ** 2);
if (vel > 370)
return 1;
return 0;
}
},
{
label: "DT",
condition: function() {
return menu.get(ref_doubletap) & menu.get(ref_doubletap_hk);
},
colors: {
dormant: [235, 235, 235, 255],
active: [235, 235, 235, 255]
},
logic: function() {
const self = modules[2];
const charge = Exploit.GetCharge();
self.colors.active = charge === 1 ? [235, 235, 235, 255] : [186, 0, 16, 225];
return 1;
}
},
{
label: "Bombsite A",
condition: function() {
return bombsite % 2 == 1;
},
colors: {
dormant: [240, 235, 60, 255],
active: [240, 235, 60, 255]
},
logic: function() {
return 1;
},
extra: function(x, y) {
const self = modules[3];
const frac = (Globals.Curtime() - last_time) / 3.125;
Render.Arc(x, y, 6, 11, 0, 360, [10, 10, 10, 25]);
Render.Arc(x, y, 7, 10, -90, 360 * frac, [232, 232, 232, 255]);
}
},
{
label: "Bombsite B",
condition: function() {
return bombsite % 2 == 0;
},
colors: {
dormant: [240, 235, 60, 255],
active: [240, 235, 60, 255]
},
logic: function() {
return 1;
},
extra: function(x, y, color) {
const self = modules[4];
const frac = (Globals.Curtime() - last_time) / 3.125;
Render.Arc(x, y, 6, 11, 0, 360, [10, 10, 10, 25]);
Render.Arc(x, y, 7, 10, -90, 360 * frac, [232, 232, 232, 255]);
}
},
{
label: "",
condition: function() {
return planted;
},
colors: {
dormant: [235, 235, 235, 255],
active: [235, 235, 235, 255]
},
logic: function() {
const self = modules[5];
var c4 = Entity.GetEntitiesByClassID(128)[0];
if (!c4)
return 0;
var timer = (Entity.GetProp(c4, "CPlantedC4", "m_flC4Blow") - Globals.Curtime());
return 1;
}
},
{
label: "",
condition: function() {
return planted;
},
colors: {
dormant: [135, 15, 15, 255],
active: [195, 255, 0, 255]
},
logic: function() {
const self = modules[6];
const me = Entity.GetLocalPlayer();
if (!me || !Entity.IsAlive(me))
return 0;
const c4 = Entity.GetEntitiesByClassID(128)[0];
if (!c4)
return 0;
const armor = Entity.GetProp(me, "CCSPlayerResource", "m_iArmor");
const health = Entity.GetProp(me, "CBasePlayer", "m_iHealth");
const origin = Entity.GetRenderOrigin(c4);
const my_origin = Entity.GetRenderOrigin(me);
const distance = Math.sqrt((origin[0] - my_origin[0]) ** 2 + (origin[1] - my_origin[1]) ** 2 + (origin[2] - my_origin[2]) ** 2);
// Ultranite
const a = 450.7;
const b = 75.68;
const c = 789.2;
const d = (distance - b) / c;
var damage = a * Math.exp(-d * d);
if (armor > 0) {
var newDmg = damage * 0.5;
var armorDmg = (damage - newDmg) * 0.5;
if (armorDmg > armor) {
armor = armor * (1 / .5);
newDmg = damage - armorDmg;
}
damage = Math.round(newDmg);
}
return Math.max(1 -damage / health, 0);
}
}
];
//endregion
//region functions
function draw_timer()
{
if (!planted)
return;
const me = Entity.GetLocalPlayer();
if (!me)
return;
if (!Entity.IsAlive(me))
{
if (Entity.GetProp(me, "CBasePlayer", "m_iObserverMode") < 4)
return;
me = Entity.GetProp(me, "CBasePlayer", "m_hObserverTarget");
}
var c4 = Entity.GetEntitiesByClassID(128)[0];
if (!c4)
return;
const y = Render.GetScreenSize()[1];
const color = [235, 235, 235, 255];
var bombsite_label = bombsite % 2 == 0 ? "" : "";
var timer = (Entity.GetProp(c4, "CPlantedC4", "m_flC4Blow") - Globals.Curtime());
Render.FilledRect(0, y - bar_length, 10, bar_length, color);
}
function draw_indicators()
{
const offset_y = menu.get(voffset);
const y = Render.GetScreenSize()[1] - offset_y;
const drawn = 0;
for (var i = 0; i < modules.length; i++)
{
const mod = modules;
if (!mod.condition()) continue;
const result = mod.logic();
const label_width = Render.TextSize(mod.label, 4)[0];
const color = [
mod.colors.dormant[0] + (mod.colors.active[0] - mod.colors.dormant[0]) * result,
mod.colors.dormant[1] + (mod.colors.active[1] - mod.colors.dormant[1]) * result,
mod.colors.dormant[2] + (mod.colors.active[2] - mod.colors.dormant[2]) * result,
255
];
Render.GradientRect(15 + offset, y - 130 - 55 * drawn, label_width + 15, 45, 1, [10, 10, 10, 50], [10, 10, 10, 0]);
Render.String(25 + offset, y - 125 - 55 * drawn, 0, mod.label, color, 4);
if (mod.extra)
mod.extra(40 + offset + label_width, y - 106 - 55 * drawn, color);
drawn++;
}
}
function on_draw() {
const me = Entity.GetLocalPlayer();
if (!me || !Entity.IsAlive(me))
return;
draw_indicators();
draw_timer();
}
function on_bomb_beginplant()
{
bombsite = Event.GetInt("site");
last_time = Globals.Curtime();
}
function on_bomb_planted()
{
planted = true;
bombsite = -1;
offset = 15;
}
function on_bomb_abortplant()
{
bombsite = -1;
}
function on_bomb_exploded()
{
planted = false;
offset = 0;
}
function on_round_prestart()
{
planted = false;
offset = 0;
bombsite = -1;
last_time = 0;
}
function on_player_connect()
{
var c4 = Entity.GetEntitiesByClassID(128)[0];
last_time = 0;
if (!c4)
{
planted = false;
offset = 0;
bombsite = -1;
return;
}
planted = true;
offset = 15;
bombsite = Entity.GetProp(c4, "CPlantedC4", "m_nBombSite");
}
Cheat.RegisterCallback("Draw", "on_draw");
Cheat.RegisterCallback("bomb_beginplant", "on_bomb_beginplant");
Cheat.RegisterCallback("bomb_planted", "on_bomb_planted");
Cheat.RegisterCallback("bomb_abortplant", "on_bomb_abortplant");
Cheat.RegisterCallback("bomb_exploded", "on_bomb_exploded");
Cheat.RegisterCallback("round_prestart", "on_round_prestart");
Cheat.RegisterCallback("player_connect_full", "on_player_connect");
//endregion
там крч уберешь бомб сайт и дсу и лц и сделай фейк инидкаторы как в реалнйм в ските а не как у княза
НУ ты понял чтобы фейк был с лц и дак и бомбсаит пинг дт и тдмб ну давай
да я понялНУ ты понял чтобы фейк был с лц и дак и бомбсаит пинг дт и тд
ккда я понял
там крч уберешь бомб сайтее б и дсу и лц и сделай индикаторы фейк как в реалный ските как эти а не как у князаJavaScript:/** var menu = {}; var menu_elements = {}; 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.new = function(func, name, label, properties, initial_value) { // Fix values properties = properties || []; initial_value = initial_value || undefined; // 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], cache: initial_value, func: func }; // 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); // Initialize our menu element if it has an initializer. if (initial_value) { switch (func) { case UI.AddColorPicker: UI.SetColor.apply(null, this.concat(element_info_t.path, initial_value)); break; case UI.AddHotkey: break; default: UI.SetValue.apply(this, this.concat(element_info_t.path, initial_value)); break; } } menu_elements[label] = element_info_t; return element_info_t; }; /** * Creates a new menu reference * * @param path {array} */ menu.reference = function(path, func) { return { path: path, func: func }; }; /** * Gets the value of a menu element * * @param elem {array} * [USER=46448]@ReturN[/USER] {*} */ 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 switch (elem.func) { case UI.AddColorPicker: return UI.GetColor.apply(null, elem.path); case UI.AddHotkey: return UI.IsHotkeyActive.apply(null, elem.path); default: return UI.GetValue.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!"); // Set the element's value switch (elem.func) { case UI.AddColorPicker: UI.SetColor.apply(null, this.concat(elem.path, value)); break; case UI.AddHotkey: if (menu.get(elem) !== value) UI.ToggleHotkey.apply(null, elem.path); break; default: UI.SetValue.apply(null, this.concat(elem.path, value)); break; } }; /** * 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!"); // Change the element's visibility UI.SetEnabled.apply(null, this.concat(elem.path, visible)); }; /** * Adds an event to a menu element which is triggered everytime this element's value is changed. * * @param elem {array} * @param func {function} */ menu.add_event = function(elem, func) { if (!elem.path) throw new Error("[Menu] This element doesn't exist!"); if (!elem.func) throw new Errror("[Menu] This element does not have a valid type. Please, specify one."); elem.callback = func; } /** * Handles the menu elements' events. Call this inside a Draw or FSN callback. */ menu.handle_events = function() { for (var label in menu_elements) { const elem = menu_elements[label]; if (!elem.path || !elem.callback) continue; const value = menu.get(elem); if (elem.cache === undefined) elem.cache = value; if (elem.cache !== value) { elem.callback.apply(null, [elem]); elem.cache = value; } } } /** * @brief Normalizes an yaw angle. * @param angle {number} * @returns {number} */ function normalize_yaw(angle) { var adjusted_yaw = angle; if (adjusted_yaw < -180) adjusted_yaw += 360; if (adjusted_yaw > 180) adjusted_yaw -= 360; return adjusted_yaw; } 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); } } //endregion //region menu const voffset = menu.new(UI.AddSliderInt, "| Indicators vertical offset", "", [0, 1000]); const ref_antiaim_enabled = menu.reference(["Anti-Aim", "Fake angles", "Enabled"]); const ref_fakelag_enabled = menu.reference(["Anti-Aim", "Fake-Lag", "Enabled"]); const ref_doubletap = menu.reference(["Rage", "GENERAL", "Exploits", "Doubletap"]); const ref_doubletap_hk = menu.reference(["Rage", "GENERAL", "Exploits", "Doubletap"], UI.AddHotkey); const ref_hideshots_hk = menu.reference(["Rage", "GENERAL", "Exploits", "Hide shots"], UI.AddHotkey); //endregion //region locals var last_time = 0; var planted = false; var bombsite = -1; var offset = 0; const modules = [ { label: "DSY", condition: function() { return menu.get(ref_antiaim_enabled); }, colors: { dormant: [186, 0, 16, 225], active: [154, 205, 50, 255] }, logic: function() { const self = modules[0]; const real = Local.GetRealYaw(), fake = Local.GetFakeYaw(); const delta = Math.abs(normalize_yaw(real % 360 - fake % 360)) / 2; return delta / 60; }, extra: function(x, y, color) { const real = Local.GetRealYaw(), fake = Local.GetFakeYaw(); const delta = Math.abs(normalize_yaw(real % 360 - fake % 360)) / 2; const frac = delta / 60; Render.Arc(x+5, y, 6, 13, 0, 360, [10, 10, 10, 60]); Render.Arc(x+5, y, 7, 11, 0, 360 * frac, color); } }, { label: "LC", condition: function() { const me = Entity.GetLocalPlayer(); const on_ground = Entity.GetProp(me, "CBasePlayer", "m_fFlags") & 1; return menu.get(ref_fakelag_enabled) & (!on_ground || Input.IsKeyPressed(0x20)) & !menu.get(ref_doubletap_hk) & !menu.get(ref_hideshots_hk); }, colors: { dormant: [186, 0, 16, 225], active: [163, 232, 44, 255] }, logic: function() { const self = modules[1]; const me = Entity.GetLocalPlayer(); const vec = Entity.GetProp(me, "CBasePlayer", "m_vecVelocity[0]"); const vel = Math.sqrt(vec[0] ** 2 + vec[1] ** 2 + vec[2] ** 2); if (vel > 370) return 1; return 0; } }, { label: "DT", condition: function() { return menu.get(ref_doubletap) & menu.get(ref_doubletap_hk); }, colors: { dormant: [235, 235, 235, 255], active: [235, 235, 235, 255] }, logic: function() { const self = modules[2]; const charge = Exploit.GetCharge(); self.colors.active = charge === 1 ? [235, 235, 235, 255] : [186, 0, 16, 225]; return 1; } }, { label: "Bombsite A", condition: function() { return bombsite % 2 == 1; }, colors: { dormant: [240, 235, 60, 255], active: [240, 235, 60, 255] }, logic: function() { return 1; }, extra: function(x, y) { const self = modules[3]; const frac = (Globals.Curtime() - last_time) / 3.125; Render.Arc(x, y, 6, 11, 0, 360, [10, 10, 10, 25]); Render.Arc(x, y, 7, 10, -90, 360 * frac, [232, 232, 232, 255]); } }, { label: "Bombsite B", condition: function() { return bombsite % 2 == 0; }, colors: { dormant: [240, 235, 60, 255], active: [240, 235, 60, 255] }, logic: function() { return 1; }, extra: function(x, y, color) { const self = modules[4]; const frac = (Globals.Curtime() - last_time) / 3.125; Render.Arc(x, y, 6, 11, 0, 360, [10, 10, 10, 25]); Render.Arc(x, y, 7, 10, -90, 360 * frac, [232, 232, 232, 255]); } }, { label: "", condition: function() { return planted; }, colors: { dormant: [235, 235, 235, 255], active: [235, 235, 235, 255] }, logic: function() { const self = modules[5]; var c4 = Entity.GetEntitiesByClassID(128)[0]; if (!c4) return 0; var timer = (Entity.GetProp(c4, "CPlantedC4", "m_flC4Blow") - Globals.Curtime()); return 1; } }, { label: "", condition: function() { return planted; }, colors: { dormant: [135, 15, 15, 255], active: [195, 255, 0, 255] }, logic: function() { const self = modules[6]; const me = Entity.GetLocalPlayer(); if (!me || !Entity.IsAlive(me)) return 0; const c4 = Entity.GetEntitiesByClassID(128)[0]; if (!c4) return 0; const armor = Entity.GetProp(me, "CCSPlayerResource", "m_iArmor"); const health = Entity.GetProp(me, "CBasePlayer", "m_iHealth"); const origin = Entity.GetRenderOrigin(c4); const my_origin = Entity.GetRenderOrigin(me); const distance = Math.sqrt((origin[0] - my_origin[0]) ** 2 + (origin[1] - my_origin[1]) ** 2 + (origin[2] - my_origin[2]) ** 2); // Ultranite const a = 450.7; const b = 75.68; const c = 789.2; const d = (distance - b) / c; var damage = a * Math.exp(-d * d); if (armor > 0) { var newDmg = damage * 0.5; var armorDmg = (damage - newDmg) * 0.5; if (armorDmg > armor) { armor = armor * (1 / .5); newDmg = damage - armorDmg; } damage = Math.round(newDmg); } return Math.max(1 -damage / health, 0); } } ]; //endregion //region functions function draw_timer() { if (!planted) return; const me = Entity.GetLocalPlayer(); if (!me) return; if (!Entity.IsAlive(me)) { if (Entity.GetProp(me, "CBasePlayer", "m_iObserverMode") < 4) return; me = Entity.GetProp(me, "CBasePlayer", "m_hObserverTarget"); } var c4 = Entity.GetEntitiesByClassID(128)[0]; if (!c4) return; const y = Render.GetScreenSize()[1]; const color = [235, 235, 235, 255]; var bombsite_label = bombsite % 2 == 0 ? "" : ""; var timer = (Entity.GetProp(c4, "CPlantedC4", "m_flC4Blow") - Globals.Curtime()); Render.FilledRect(0, y - bar_length, 10, bar_length, color); } function draw_indicators() { const offset_y = menu.get(voffset); const y = Render.GetScreenSize()[1] - offset_y; const drawn = 0; for (var i = 0; i < modules.length; i++) { const mod = modules; if (!mod.condition()) continue; const result = mod.logic(); const label_width = Render.TextSize(mod.label, 4)[0]; const color = [ mod.colors.dormant[0] + (mod.colors.active[0] - mod.colors.dormant[0]) * result, mod.colors.dormant[1] + (mod.colors.active[1] - mod.colors.dormant[1]) * result, mod.colors.dormant[2] + (mod.colors.active[2] - mod.colors.dormant[2]) * result, 255 ]; Render.GradientRect(15 + offset, y - 130 - 55 * drawn, label_width + 15, 45, 1, [10, 10, 10, 50], [10, 10, 10, 0]); Render.String(25 + offset, y - 125 - 55 * drawn, 0, mod.label, color, 4); if (mod.extra) mod.extra(40 + offset + label_width, y - 106 - 55 * drawn, color); drawn++; } } function on_draw() { const me = Entity.GetLocalPlayer(); if (!me || !Entity.IsAlive(me)) return; draw_indicators(); draw_timer(); } function on_bomb_beginplant() { bombsite = Event.GetInt("site"); last_time = Globals.Curtime(); } function on_bomb_planted() { planted = true; bombsite = -1; offset = 15; } function on_bomb_abortplant() { bombsite = -1; } function on_bomb_exploded() { planted = false; offset = 0; } function on_round_prestart() { planted = false; offset = 0; bombsite = -1; last_time = 0; } function on_player_connect() { var c4 = Entity.GetEntitiesByClassID(128)[0]; last_time = 0; if (!c4) { planted = false; offset = 0; bombsite = -1; return; } planted = true; offset = 15; bombsite = Entity.GetProp(c4, "CPlantedC4", "m_nBombSite"); } Cheat.RegisterCallback("Draw", "on_draw"); Cheat.RegisterCallback("bomb_beginplant", "on_bomb_beginplant"); Cheat.RegisterCallback("bomb_planted", "on_bomb_planted"); Cheat.RegisterCallback("bomb_abortplant", "on_bomb_abortplant"); Cheat.RegisterCallback("bomb_exploded", "on_bomb_exploded"); Cheat.RegisterCallback("round_prestart", "on_round_prestart"); Cheat.RegisterCallback("player_connect_full", "on_player_connect"); //endregion
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz