!!!!!EmBeRlaSH V3.lua
!!!!!EmBeRlaSH V3.lua
)
return ...
end
local js = panorama.open()
local vector = require("vector")
local pui = require("gamesense/pui")
local clipboard = require("gamesense/clipboard")
local ent = require("gamesense/entity")
local aa_funcs = require("gamesense/antiaim_funcs")
local images = require('gamesense/images')
local base64 = require('gamesense/base64')
local ffi = require("ffi")
local menu = {}
local user_lua = js.MyPersonaAPI.GetName()
local r, g, b = 255,255,255
local r3,g3,b3 = 0,0,0
local x, y = client.screen_size()
start(function()
client.open_link = panorama.open().SteamOverlayAPI.OpenExternalBrowserURL
client.ping = math.floor(client.latency() * 1000)
math.random_string = function(...)
local args = {...}
if #args == 1 and type(args[1]) == "table" then
args = args[1]
end
return args[math.random(1, #args)]
end
math.round = function(value)
return math.floor(value + 0.5)
end
math.to_hex = function(r, g, b, a)
return bit.tohex((math.floor((r or 0) + 0.5) * 16777216) + (math.floor((g
or 0) + 0.5) * 65536) + (math.floor((b or 0) + 0.5) * 256) +(math.floor((a or 0) +
0.5)))
end
math.gcd = function(m, n)
while m ~= 0 do
m, n = math.fmod(n, m), m
end
return n
end
string.upper_first = function(input)
return input:sub(1, 1):upper() .. input:sub(2)
end
entity.get_max_desync = function(ent)
local ways = math.clamp(ent.feet_speed_forwards_or_sideways, 0, 1)
local frac = (ent.stop_to_full_running_fraction * -0.3 - 0.2) * ways +
1
local ducking = ent.duck_amount
entity.get_animstate = function(ent)
local active = ent and entity_list(ent)
if active then
return ffi.cast(animstates, ffi.cast("char*", ffi.cast("void***",
active)) + 39264)[0]
end
end
if active then
return ffi.cast(animlayers, ffi.cast("char*", ffi.cast("void***",
active)) + 10640)[0][layer or 0]
end
end
end)()
local refs = {
aa = {
enabled = pui.reference("AA", "anti-aimbot angles", "enabled"),
pitch = {pui.reference("AA", "anti-aimbot angles", "pitch")},
yaw_base = {pui.reference("AA", "anti-aimbot angles", "Yaw base")},
yaw = {pui.reference("AA", "anti-aimbot angles", "Yaw")},
yaw_jitter = {pui.reference("AA", "anti-aimbot angles", "Yaw Jitter")},
body_yaw = {pui.reference("AA", "anti-aimbot angles", "Body yaw")},
body_free = {pui.reference("AA", "anti-aimbot angles", "Freestanding
body yaw")},
freestand = {pui.reference("AA", "anti-aimbot angles",
"Freestanding")},
roll = {pui.reference("AA", "anti-aimbot angles", "Roll")},
edge_yaw = {pui.reference("AA", "anti-aimbot angles", "Edge yaw")},
fake_peek = {pui.reference("AA", "other", "Fake peek")},
osaa = {pui.reference("AA", "other", "On shot anti-aim")},
fl = {
enable = {pui.reference("AA", "fake lag", "enabled")},
amount = {pui.reference("AA", "fake lag", "amount")},
variance = {pui.reference("AA", "fake lag", "variance")},
limit = {pui.reference("AA", "fake lag", "limit")},
lg = {pui.reference("AA", "other", "Leg movement")},
sw = {pui.reference("AA", "other", "Slow motion")},
},
},
sw = {ui.reference("AA", "other", "Slow motion")},
scope = ui.reference('VISUALS', 'Effects', 'Remove scope overlay'),
rage = {
enable = ui.reference('RAGE', 'aimbot', 'Enabled'),
dt = {
value = {ui.reference("RAGE", "aimbot", "Double tap")},
fl = {pui.reference("RAGE", "Aimbot", "Double tap fake lag limit")}
},
md = {
damage = {pui.reference('RAGE', 'aimbot', 'minimum damage')},
ovr = {ui.reference('RAGE', 'aimbot', 'minimum damage override')},
},
local databases = {
version = "nightly",
scope = 0,
orig = {
viewmodel = {
fov = client.get_cvar("viewmodel_fov"),
x = client.get_cvar("viewmodel_offset_x"),
y = client.get_cvar("viewmodel_offset_y"),
z = client.get_cvar("viewmodel_offset_z")
}
},
ratio = {
x = 200,
values = {}
},
cfg = "emberlash:cfg:db:",
load = "emberlash:load:db:",
kill = "emberlash:kill:db:",
miss = "emberlash:miss:db:",
run = function(self)
for i=1, self.ratio.x do
local mult = (self.ratio.x-i)*0.01
local divisor = math.gcd(x * mult, y)
if x * mult/divisor < 100 or mult == 1 then
self.ratio.values[i] = x * mult/divisor .. ":" .. y/divisor
end
end
database.write(self.load, loads)
database.write(self.kill, kills)
database.write(self.miss, miss)
end
}
databases:run()
local gui = {
show = function(self, visible)
pui.traverse(refs.aa, function(ac)
ac:set_visible(visible)
end)
end,
header = function(self, tab) return tab:label("\a333333FF‾‾‾‾‾‾‾‾‾‾‾‾‾") end,
space = function(self, tab) return tab:label("\n ") end,
init = function(self)
local gaa = pui.group("AA", "anti-aimbot angles")
local gfl = pui.group("AA", "Fake lag")
local goh = pui.group("AA", "Other")
menu = {
name = gaa:label("\f<a>Emberlash "..databases.version:upper_first().."\
r ~ Source"),
tab = gaa:combobox("\n tab-is", {" User Section", " Anti-aimbot
angles", " Features"}),
home = {
tab_1 = gfl:label("\f<a>\f<gray> • "),
tab = gfl:combobox("\ntab:home", " Information", " Visuals"),
space = self:space(gfl),
info = {
mephissa = gfl:label("\f<gray>The darkness."),
space = self:space(gfl),
welcome = gfl:label("\v\r Welcome back, \vadmin!"),
build = gfl:label("\v \r Your build is \
v"..databases.version:upper_first()),
killed = gfl:label("dadno3118"),
misses = gfl:label("verim."),
space1 = self:space(gfl),
textion = gfl:label("Feel the heat. That's \vEmberlash v2"),
},
config = {
space = self:space(gaa),
name = gaa:textbox("\nglasigh"),
import = gaa:button("Import From Clipboard"),
list = gaa:listbox("\nlocal-configs:list", {}),
save = gaa:button(" Save"),
load = gaa:button("\v\r Load"),
export = gaa:button("Export To Clipboard"),
delete = gaa:button("\f<dred> Delete"),
social = {
yt = goh:button("\f<red>YouTube\r @релоад", function()
client.open_link("https://www.youtube.com/@reloadhvh")
end),
space_soc = self:space(goh),
dsc = goh:button("Our\v Discord\r Server"),
}
}
},
aa = {
tab_1 = gfl:label("шо сюда гляддишь?"),
tab = gfl:combobox("\n tab:aa-is", " Builder", " Defensive", "
Settings"),
setting = {
tab = gfl:combobox("\nsubtub-builder", "Hotkeys", "Exploit",
"Settings"),
space = self:space(gfl),
sett = {
select = gfl:multiselect("\nselect settings","Safe head",
"Off defensive am l bowping", "Anti backstab", "Fast ladder", "Spin if enemies
died", "E-Bombsite fix", "Spin on warmup"),
safehead = gfl:multiselect("\nsafeheadtype","Knife",
"Taser"),
body_type = gfl:combobox("\nbodytype","Defensive",
"Offensive"),
},
exploit = {
vsnl = gfl:checkbox("\f<a>Secret\r exploit"),
deff = gfl:checkbox("Defensive \f<a>exploit\r"),
},
hotkey = { -- aa.setting.hotkey
manual_f = gfl:hotkey("Manual \f<a>•\r Forward"),
manual_l = gfl:hotkey("Manual \f<a>•\r Left"),
manual_r = gfl:hotkey("Manual \f<a>•\r Right"),
manual_reset = gfl:hotkey("Manual \f<a>•\r Reset"),
fs = gfl:checkbox("Freestanding", 0),
edge_yaw = gfl:checkbox("Edge yaw", 0),
},
},
builder = {
space = self:space(gaa),
cond = gaa:combobox("\f<a>\r Player state",
string.add_string(conditions, puiacc.."•\a999999ff ", true)),
states = {
jitr = {},
defs = {},
},
},
},
vis = {
space = self:space(gaa),
color = {
color_type = gfl:combobox("Color", "Default", "Gradient"),
style = gfl:combobox("\nstyle:hud", "Lilith", "Nightly"),
clr_def = gfl:color_picker("Default Color", 168, 133, 203),
gradient = {
clr1 = gfl:color_picker("\nFirst Color", 168, 133, 203),
clr4 = gfl:color_picker("\nSecond Color", 195, 89, 89),
},
},
space1 = self:space(gaa),
widgets = gfl:checkbox("Windows"),
widgets_type = gfl:multiselect("\nwidgets", {"Force text
watermark", "Watermark", "Keybinds", "Spectators", "Debug panel", "Multi panel",
"LC Side indicator", "Event logger"}),
glow = gfl:multiselect("Glow Disablers", "Event Logger"),
},
feature = {
space = self:space(gaa),
tab_1 = gfl:label("tab:misc-1"),
tab = gfl:combobox("\ntab:misc", {" Aimbot", " Miscellaneous"}),
space1 = self:space(gfl),
aim = {
charge_fix = gaa:checkbox("Unsafe exploit recharge"),
auto_discharge = gaa:checkbox("Auto exploit discharge", 0),
resolver = gaa:checkbox("\vResolver"),
miss_fix = gaa:checkbox("Aim punch miss fix"),
auto_hs = gaa:checkbox("Auto hideshots"),
auto_qs = gaa:checkbox("Auto air stop"),
space = self:space(gaa),
space1 = self:space(gaa),
ab = gaa:checkbox("Auto buy"), ab_help = {
weapon = gaa:combobox("\nautobuy:weapon", {"None", "SSG08",
"Awp", "Auto"}),
pistols = gaa:combobox("\nautobuy:pistol", {"None", "Tec9-
FiveSeven", "Deagle-R8", "P250"}),
items = gaa:multiselect("\nautobuy:items", {"Hegrenade",
"Molotov", "Smoke", "Armor", "Defuse"}),
},
}
}
}
local hydennn = {
[menu.home] = {{menu.tab, " User Section"}},
[menu.home.config] = {{menu.home.tab, " Visuals", true}},
[menu.home.info] = {{menu.home.tab, " Information"}},
[menu.vis.color] = {{menu.home.tab, " Visuals"}},
[menu.vis.color.clr_def] = {{menu.vis.color.color_type, "Default"}},
[menu.vis.color.gradient] = {{menu.vis.color.color_type, "Gradient"}},
local tr = {
delay = {[1] = "OFF"}
}
local aa = menu.aa.builder.states.jitr[state]
local defaa = menu.aa.builder.states.defs[state]
local c = "\n" .. state
defaa.active = gaa:checkbox("\nenable"..c)
defaa.activators = gaa:multiselect("\nactivators"..c, {"Double tap",
"Hide shots"})
defaa.trigger = gaa:multiselect("\ntrigger"..c, {"Always", "On weapon
switch"})
defaa.duration = goh:slider("\f<a>\r Duration"..c, 3, 36, 18, true,
"t", 1, {[36] = "Maximum", [3] = "Flick", [18] = "Default"})
defaa.space13 = self:space(goh)
defaa.yaw_invert = goh:checkbox("Yaw \v»\r invert mode"..c)
defaa.pitch_min = goh:checkbox("Pitch \v»\r Min. - Max. mode"..c)
defaa.pitch_based = goh:checkbox("Pitch \v»\r Height based value"..c)
defaa.space = self:space(gaa)
defaa.label = gaa:label("\f<a>\r Yaw")
defaa.header = self:space(gaa)
defaa.space1 = self:space(gaa)
defaa.label1 = gaa:label("\f<a>\r Pitch")
defaa.header1 = self:space(gaa)
defaa.space2 = self:space(gaa)
defaa.label2 = gaa:label("\f<a>\r Delay")
defaa.header2 = self:space(gaa)
for _, v in pairs(defaa) do
local astate = puiacc.."•\a999999ff "..state:upper_first()
local arr = {{menu.aa.builder.cond, astate}}
v:depend(table.unpack(arr))
end
aa.space = self:space(gaa)
aa.label = gaa:label("\f<a>\r Yaw jitter")
aa.header = self:space(gaa)
aa.yaw = gaa:combobox("\n curr-jitter"..c, {"Off", "Offset", "Center",
"X-way", "Random"})
aa.way_value = gaa:slider("\nways:value"..c, 2, 7, 2, true, "-w",
1):depend({aa.yaw, "X-way"})
for way = 1, 5 do
aa["way_"..way] = gaa:slider("\nway:value"..way..c, -145, 145, 0,
true, "°", 1):depend({aa.yaw, "X-way"},{aa.way_value, way, 7})
end
aa.space1 = self:space(gaa)
aa.label1 = gaa:label("\f<a>\r Body yaw")
aa.header1 = self:space(gaa)
aa.space2 = self:space(gaa)
aa.label2 = gaa:label("\f<a>\r Delay")
aa.header2 = self:space(gaa)
aa.delay_space = self:space(gaa)
aa.delay_adds = gaa:combobox("\f<a>Delay »\r Add-ons"..c,
{"-","Randomize Delay Ticks","Freeze-Inverter"})
do
aa.delay_value:depend({aa.delay_adds, "Randomize Delay Ticks"})
aa.delay_random:depend({aa.delay_adds, "Randomize Delay Ticks"})
aa.delay_value_freze:depend({aa.delay_adds, "Randomize Delay
Ticks", true})
aa.freeze_random:depend({aa.delay_adds, "Freeze-Inverter"})
aa.freeze_ms:depend({aa.delay_adds, "Freeze-Inverter"})
end
for _, v in pairs(aa) do
local astate = puiacc.."•\a999999ff "..state:upper_first()
local arr = {{menu.aa.builder.cond, astate}}
v:depend(table.unpack(arr))
end
end
menu.aa.space = self:space(goh)
menu.aa.state_to = goh:button("\v\r State To \v»\r ⛟", function()
local tab = menu.aa.tab:get():find("Builder") and "builder" or
"defensive"
local state = string.del_string(menu.aa.builder.cond:get(), puiacc.."•\
a999999ff ", true)
local config = tab=="builder" and
pui.setup({menu.aa.builder.states.jitr[state]}) or
pui.setup({menu.aa.builder.states.defs[state]})
clipboard.set(encrypted)
print("Exported state: "..tab.."::"..state)
end)
menu.aa.state_from = goh:button("\v\r State From \v«\r ⛴", function()
local tab = menu.aa.tab:get():find("Builder") and "builder" or
"defensive"
local state = string.del_string(menu.aa.builder.cond:get(), puiacc.."•\
a999999ff ", true)
local config = tab=="builder" and
pui.setup({menu.aa.builder.states.jitr[state]}) or
pui.setup({menu.aa.builder.states.defs[state]})
config:load(data)
start(function()
local events = {
set = client.set_event_callback,
unset = client.unset_event_callback,
fire = client.fire_event
}
local event_handler_mt = {
set = function(self, callback)
if type(callback) == "function" and self.proxy[callback] == nil then
local callback_index = #self.callbacks + 1
self.proxy[callback], self.callbacks[callback_index] =
callback_index, callback
end
end,
table.remove(self.callbacks, callback_index)
self.proxy[callback] = nil
event_handler_mt.__index = event_handler_mt
function handler.hook(...)
local result
for i = 1, #handler.callbacks do
if handler.callbacks[i] then
local callback_result = handler.callbacks[i](...)
if callback_result ~= nil then
result = callback_result
end
end
end
return result
end
events.set(handler.event_name, handler.hook)
rawset(registry, event_name, handler)
return handler
end
})
local animate = {
table = {},
lerp = function(self, start, end_pos, speed)
local progress = math.abs((start - end_pos) / (end_pos - start))
local dynamic_speed = speed * (1 + (1 - progress)^2) * 2
local result = {}
for i = 1, 4 do
result[i] = self:lerp(self.table[aname][i], value[i], speed)
self.table[aname][i] = result[i]
end
return unpack(result)
end,
number = function(self, name, value, speed)
if self.table[name] == nil then
self.table[name] = value
end
self.table[name] = animation
return self.table[name]
end
}
local render = {
measures = function(self, plus, arg, name)
return {renderer.measure_text(arg, name) + plus, name}
end,
alphen = function(self, value)
return math.clamp(value, 0, 255)
end,
blur = function(self, x, y, w, h)
return renderer.blur(x, y, w, h)
end,
rect = {
rect = function(self, x, y, w, h, clr, rounding)
local r, g, b, a = unpack(clr)
if thickness == 0 then
renderer.rectangle(x, y, w - round, round, r, g, b, a)
renderer.rectangle(x, y + round, round, h - round, r, g, b, a)
renderer.rectangle(x + w - round, y, round, h - round, r, g, b,
a)
renderer.rectangle(x + round, y + h - round, w - round, round,
r, g, b, a)
else
renderer.circle_outline(x + thickness, y + thickness, r, g, b,
a, thickness, 180, 0.25, round)
renderer.rectangle(x + thickness, y, w - thickness - thickness,
round, r, g, b, a)
renderer.circle_outline(x + w - thickness, y + thickness, r, g,
b, a, thickness, 270, 0.25, round)
renderer.rectangle(x, y + thickness, round, h - thickness -
thickness, r, g, b, a)
renderer.circle_outline(x + thickness, y + h - thickness, r, g,
b, a, thickness, 90, 0.25, round)
renderer.rectangle(x + thickness, y + h - round, w - thickness
- thickness, round, r, g, b, a)
renderer.circle_outline(x + w - thickness, y + h - thickness,
r, g, b, a, thickness, 0, 0.25, round)
renderer.rectangle(x + w - round, y + thickness, round, h -
thickness - thickness, r, g, b, a)
end
end,
emberlash = function(self, x, y, w, h, clr, rounding, clr2, thickness)
local r, g, b, a = unpack(clr)
local r1, g1, b1, a1
if clr2 then
r1, g1, b1, a1 = unpack(clr2)
local hs = thickness or 2
for k = 0, width do
if a * (k/width)^(1) > 5 then
local accent = {r, g, b, a * (k/width)^(2)}
self.work(x + (k - width - Offset)*thickness, y + (k -
width - Offset) * thickness, w - (k - width - Offset)*thickness*2, h + 1 - (k -
width - Offset)*thickness*2, rounding + thickness * (width - k + Offset),
thickness, accent)
end
end
end
},
paint_tab = function(self, el, names, labels)
local text_tab = ""
local active_index = 1
local current_tab = el:get()
for i, name in ipairs(names) do
if current_tab:find(name) then
active_index = i
break
end
end
for i, label in ipairs(labels) do
if i == active_index then
text_tab = text_tab .. "\v" .. label
else
text_tab = text_tab .. "\f<gray>" .. label
end
if i < #labels then
text_tab = text_tab .. "\f<gray> • "
end
end
return text_tab
end,
text = {
default = function(self, speed, string, r1, g1, b1, a1, r2, g2, b2, a2)
local t_out, t_out_iter = {}, 1
local time = globals.curtime()
for i = 1, #string do
local iter = (i - 1)/(#string - 1) + time * speed
local progress = math.abs(math.cos(iter))
return t_out
end,
center = function(self, speed, string, ...)
local colors = {...}
local t_out, t_out_iter = {}, 1
local time = globals.curtime()
local length = #string
local center = length / 2
local valid_colors = {}
for i = 1, 4 do
if colors[i] and type(colors[i]) == "table" and #colors[i] >= 4
then
valid_colors[#valid_colors+1] = colors[i]
end
end
for i = 1, length do
local distance_from_center = math.abs(i - center) / center
local iter = distance_from_center + time * speed
local progress = (math.sin(iter) + 1) / 2
local color_count = #valid_colors
local segment = progress * (color_count - 1)
local idx1 = math.floor(segment) + 1
local idx2 = math.min(idx1 + 1, color_count)
local local_progress = segment % 1
local c1 = valid_colors[idx1] or valid_colors[1]
local c2 = valid_colors[idx2] or valid_colors[#valid_colors]
local r = c1[1] + (c2[1] - c1[1]) * local_progress
local g = c1[2] + (c2[2] - c1[2]) * local_progress
local b = c1[3] + (c2[3] - c1[3]) * local_progress
local a = c1[4] + (c2[4] - c1[4]) * local_progress
return t_out
end,
}
}
function printf(...)
--printc("\vemberlash\r ", ...)
print("emberlash - ", ...)
end
local draggable = {
elements = {},
active_element = nil,
offset = {0,0},
alpha = {0,0,0},
local padd = 5
self.alpha[1] = animate:lerp(self.alpha[1], 15 + (hover and 20 or 0) +
(element.dragging and 60 or 0), 0.05)*alpha_menu
self.alpha[2] = animate:lerp(self.alpha[2], element.dragging and 80 or
0, 0.03)*alpha_menu
if pressed_left then
if not self.active_element then
if hover then
self.active_element = element
self.offset[1] = mouseX - element.x
self.offset[2] = mouseY - element.y
element.dragging = true
end
end
else
if element.dragging then
element.dragging = false
self.active_element = nil
end
end
if element.dragging then
if not element.locks[1] then
element.x = mouseX - self.offset[1]
else
renderer.rectangle(x/2, 0, 1, y, 255,255,255,self.alpha[2])
end
if not element.locks[2] then
element.y = mouseY - self.offset[2]
else
renderer.rectangle(0, y/2, x, 1, 255,255,255,self.alpha[2])
end
local util = {
flags = {
['HIT'] = {11, 2048}
},
contains = function(self, tbl, val)
for k, v in pairs(tbl) do
if v == val then
return true
end
end
return false
end,
is_flag = function(self, entindex, flag_name)
if not entindex or not flag_name then return false end
return vector(wam):length2d()
end,
charge = function(self)
if self:not_me() then
return
end
local a = self:get_me()
local weapon = entity.get_prop(a, "m_hActiveWeapon")
local exec = {
vel = self:get_velocity(me),
iair = self:in_air(me),
ducking = self:in_duck(me) or ui.get(refs.rage.faceduck[1]),
manual = self:manual(),
menu = menu.aa.builder.states.jitr,
dt = ui.get(refs.rage.dt.value[1]) and
ui.get(refs.rage.dt.value[2]),
os = ui.get(refs.rage.osaa[1]) and ui.get(refs.rage.osaa[2]),
fd = ui.get(refs.rage.faceduck[1]),
target = client.current_threat(),
sw = ui.get(refs.sw[1]) and ui.get(refs.sw[2]),
qp = ui.get(refs.rage.peek[1]) and ui.get(refs.rage.peek[2])
}
local state_checks = {
{ check = exec.vel and exec.menu["fakelag"].active() and ((not
exec.dt and not exec.os) or exec.fd), state = "fakelag" },
{ check = exec.vel and exec.menu["hideshots"].active() and exec.os
and not exec.dt and not exec.fd, state = "hideshots" },
{ check = not exec.iair and exec.qp and self:is_flag(exec.target,
"HIT") and exec.menu["on-peek"].active(), state = "on-peek" },
{ check = exec.manual == -100 and exec.menu["manual-
left"].active(), state = "manual-left" },
{ check = exec.manual == 90 and exec.menu["manual-right"].active(),
state = "manual-right" },
{ check = exec.iair and exec.ducking and
exec.menu["air+"].active(), state = "air+" },
{ check = exec.iair and exec.menu["air"].active(), state = "air" },
{ check = exec.vel > 1 and exec.sw and
exec.menu["walking"].active(), state = "walking" },
{ check = exec.vel > 1.5 and exec.ducking and exec.menu["crouch-
moving"].active(), state = "crouch-moving" },
{ check = exec.vel > 1.5 and exec.menu["running"].active(), state =
"running" },
{ check = exec.ducking and exec.menu["crouch"].active(), state =
"crouch" },
{ check = exec.menu["stand"].active(), state = "stand" },
}
return "global"
end,
normalize_yaw = function(self, yaw)
yaw = yaw % 360
yaw = (yaw + 360) % 360
if (yaw > 180) then
yaw = yaw - 360
end
return yaw
end,
get_real_time = function(self)
local hours, minutes = client.system_time()
return string.format("%02d:%02d", hours, minutes)
end,
format_text = function(self, text, symbol, clr)
local r, g, b, alpha = clr[1], clr[2], clr[3], clr[4]
local parts = {}
local split_text = text:split(symbol)
local colored = true
return table.concat(parts)
end
}
local notification = {
notifications = {},
test_alpha = 0,
start_y = y/2 + 250,
create_notification = function(maxTime, message, description, color)
return {
message = message, description = description,
maxTime = maxTime, startTime = globals.curtime(),
alpha = 0, y = 0,
clr = color or {r, g, b},
direction = math.random(0, 1) * 2 - 1,
if has_notifications then
self:delete()
local formatted_text =
util:format_text(notification.description, "$", {r, g, b, alpha * 255})
local white_hex = math.to_hex(255, 255, 255, alpha * 255)
style = {
lilith = function(self, r, g, b, a, y, bc, main_text, message)
local icon = render:measures(8, "b", "\a"..math.to_hex(r, g, b,
a*255)..message.."\a")
local text = render:measures(9, nil, main_text)
client.delay_call(0.5, function()
notification:create(database.read(databases.load), "Welcome to $emberlash$", 1300)
end)
call_reg.paint:set(function()
notification:complete()
end)
local antiaim = {
me = nil,
defensive = {
check = 0,
defensive = 0,
sim_time = globals.tickcount(),
active_until = 0,
ticks = 0, last_tick = 0,
active = false,
activate = function(self)
local me = entity.get_local_player()
if util:not_me() then
return
end
self.sim_time = sim_time
end,
normalize = function(self)
local me = entity.get_local_player()
if util:not_me() then
return
end
manual_side = 0,
yaw_last = 0,
override = false,
if target then
local taser = util:contains(menu.aa.setting.sett.safehead:get(),
"Taser")
local knife = util:contains(menu.aa.setting.sett.safehead:get(),
"Knife")
local weapon = entity.get_player_weapon(self.me)
if util:in_air(self.me) and weapon and (knife and
entity.get_classname(weapon):find('Knife') or (taser and
entity.get_classname(weapon):find('Taser'))) then
return true
end
end
return false
end,
get_backstab = function(self)
local target = client.current_threat()
self.yaw.random = rand
else
to_return = to_return + self.yaw.random
end
elseif type == "X-way" then
if not is_delayed then
self.ways.curr = self.ways.curr + 1
if self.ways.curr > data.way_value then
self.ways.curr = 1
end
else
to_return = to_return + self.ways.deg
end
self.ways.deg = data["way_"..self.ways.curr] or 0
to_return = self.ways.deg + move
end
return to_return
end,
set = function(self, cmd, data, data_defs)
local ref = {pitch_mode = refs.aa.pitch[1], pitch = refs.aa.pitch[2],
yaw_mode = refs.aa.yaw[1], yaw = refs.aa.yaw[2], yaw_base = refs.aa.yaw_base[1],
jitter_type = refs.aa.yaw_jitter[1], jitter_yaw = refs.aa.yaw_jitter[2], body_mode
= refs.aa.body_yaw[1], body = refs.aa.body_yaw[2], body_f = refs.aa.body_free[1]}
if data.delay_adds=="-" then
yaw_delay = data.delay_value_freze
end
local pitch = 90
local yaw_offset = 0
local general_yaw = (data.lryaw and data.yaw_value or data.lyaw) +
math.random(-data.yaw_random, data.yaw_random)
local body_yaw = data.body_yaw
local bodyy
bodyy = "Static"
end
local defensive_value = 0
if self:get_defensive(data_defs) then
cmd.force_defensive = true
if self.defensive.ticks * self.defensive.defensive > 0 then
defensive_value = math.max(self.defensive.defensive,
self.defensive.ticks)
end
end
if data_defs.yaw_invert then
self.def.yaw.value = self.def.yaw.value - step
if self.def.yaw.value < data_defs.yaw_left then
self.def.yaw.value = data_defs.yaw_value
end
else
self.def.yaw.value = self.def.yaw.value + step
if self.def.yaw.value > data_defs.yaw_value then
self.def.yaw.value = data_defs.yaw_left
end
end
yaw_offset = self.def.yaw.value
elseif data_defs.yaw == "Sway" then
local delay = data_defs.yaw_delay * 3
self.def.yaw.value = animate:lerp(self.def.yaw.value,
(globals.tickcount() % (delay * 2)) + 1 <= delay and -1 or 1, data_defs.yaw_value *
0.001)
if delay == 1 then
self.def.pitch.side = self.def.pitch.side == -1 and
data_defs.pitch_value or data_defs.pitch_value_2
else
self.def.pitch.side = (globals.tickcount() % delay*2)+1 <=
delay and data_defs.pitch_value or data_defs.pitch_value_2
end
pitch = self.def.pitch.side
end
end
refs.aa.edge_yaw[1]:override(menu.aa.setting.hotkey.edge_yaw:get() and
menu.aa.setting.hotkey.edge_yaw:get_hotkey())
refs.aa.freestand[1]:override(false)
ui.set(refs.misc.bindfs[2], "Always on")
if manual then
yaw_offset = yaw_offset + manual
elseif menu.aa.setting.hotkey.fs:get() and
menu.aa.setting.hotkey.fs:get_hotkey() then
refs.aa.freestand[1]:override(true)
if not body_yaw_freestand then
yaw_offset = 0
body_yaw_angle = 0
end
end
if self.override then
cmd.in_use =true
end
refs.aa.enabled:override(true)
ref.pitch_mode:override(pitch == "default" and pitch or "custom")
ref.pitch:override(math.clamp(type(pitch) == "number" and pitch or 0, -
89, 89))
ref.yaw_base:override(data.yaw_base)
ref.yaw_mode:override(180)
ref.yaw:override(util:normalize_yaw(yaw_offset))
self.yaw_last = util:normalize_yaw(yaw_offset)
ref.jitter_type:override("Off")
ref.jitter_yaw:override(0)
ref.body_mode:override(bodyy)
ref.body:override(body_yaw ~= "Off" and body_yaw_angle or 0)
ref.body_f:override(false)
if globals.chokedcommands() == 0 then
if self.cycle >= yaw_delay then
self.cycle = 1
else
self.cycle = self.cycle + 1
end
end
self.side = current_side
if self.override then
client.delay_call(0.1, function()
self.override = false -- antiaim.override
end)
end
end,
complete = function(self, cmd, state)
local data = {}
local data_defs = {}
for k, v in pairs(menu.aa.builder.states.jitr[state]) do
data[k] = v()
end
for k, v in pairs(menu.aa.builder.states.defs[state]) do
data_defs[k] = v()
end
if util:not_me() then
return
end
call_reg.setup_command:set(function(cmd)
antiaim:run(cmd)
end)
local hud = {
draggable:new("watermark-small", 20, y/2 - 10),
draggable:new("watermark", 20, 20),
draggable:new("arrows", x/2 + 50, y/2 - 11, false, true),
draggable:new("crosshair", x/2 - 30, y/2 + 30, true)
}
local funcs = {}
funcs.paint = {
lc = {
pos = {}, log = false,
complete = function(self)
local me = util:get_me()
local origin = vector(entity.get_origin(me))
local time = 1 / globals.tickinterval()
if globals.chokedcommands() == 0 then
self.pos[#self.pos + 1] = origin
self:complete()
if enabled then
self:work()
end
end
},
watermark = {
fps = 0,
text = function(self)
local x, y = hud[1]:get()
local prefix = render:measures(0, 'a', name:upper_first().."
"..databases.version:upper_first().." v2")
hud[1]:drag(prefix[1], 13)
if menu.vis.widgets_type:get("Watermark") then
if globals.curtime() % 1 > 0.93 then
self.fps = math.floor(1 / globals.frametime() + 0.5)
end
local x, y = hud[2]:get()
local rgb = "\a"..math.to_hex(r, g, b, 255) -- get_real_time
local user = render:measures(0, nil, rgb.." \
aFFFFFFFF"..user_lua)
local time = render:measures(0, nil, rgb.." \
aFFFFFFFF"..util:get_real_time())
local ping = render:measures(0, nil, rgb.." \
aFFFFFFFF"..math.floor(client.latency() * 1000))
local ffps = render:measures(0, nil, rgb.." \
aFFFFFFFF"..self.fps)
local me = util:get_me()
local y = hud[4]:get_y()
local state = render:measures(0, "a-", util:state():upper())
local style = menu.vis.cross.type:get()
hud[4]:drag(60, 50)
local binds = {
{
name = "DT",
clr = {dt_clr[1], dt_clr[2], dt_clr[3]},
active = ui.get(refs.rage.dt.value[1]) and
ui.get(refs.rage.dt.value[2]) and not ui.get(refs.rage.faceduck[1])
},
{
name = "OSAA",
clr = {dt_clr[1], dt_clr[2], dt_clr[3]},
active = ui.get(refs.rage.osaa[1]) and
ui.get(refs.rage.osaa[2]) and not ui.get(refs.rage.faceduck[1])
},
{
name = "MD",
clr = {255, 255, 255},
active = ui.get(refs.rage.md.ovr[1]) and
ui.get(refs.rage.md.ovr[2])
},
{
name = "FD",
clr = {222, 222, 222},
active = ui.get(refs.rage.faceduck[1])
},
{
name = "QP",
clr = {qp_clr[1], qp_clr[2], qp_clr[3]},
active = ui.get(refs.rage.peek[1]) and
ui.get(refs.rage.peek[2])
}
}
if menu.vis.cross.flag:get("Condition") then
renderer.text(x/2 - (state[1]/2*(1-databases.scope)) +
13*databases.scope, y + 18, 255,255,255,255,"a-",nil,state[2])
end
local voffset = 0
if menu.vis.cross.flag:get("Binds") then
for _, bind in ipairs(binds) do
local name = render:measures(0, "a-", bind.name)
local isbind =
animate:number("cross.active:"..bind.name, bind.active and 1 or 0, 0.1)
local offset = isbind*10
voffset = voffset + offset
if marker then
renderer.text(x/2+7, y/2-16, 255,255,255,255,flag,nil,self.dmg)
end
end
},
scope = {
run = function(self)
if util:not_me() or not menu.vis.custom_scope:get() then return end
local me = util:get_me()
if entity.get_prop(me, "m_bIsScoped") ~= 1 then return end
local tips = {
left = menu.vis.scope.no_lines:get("Left"),
right = menu.vis.scope.no_lines:get("Right"),
up = menu.vis.scope.no_lines:get("Up"),
bottom = menu.vis.scope.no_lines:get("Bottom"),
offset = menu.vis.scope.offset:get() * y / 1080,
size = menu.vis.scope.size:get() * y / 1080,
}
local alpha = 1
local color = {255,255,255,255}
restore = function(self)
client.set_cvar("r_aspectratio", (x*1)/y)
end,
work = function(self)
if self.state then
self.value = 2 - menu.vis.ration:get()*0.01
end
if enabled then
self:work()
end
end
}
}
funcs.pre_render = {
leg_breaker = {
state =false,
work = function(self)
if util:not_me() then
return
end
local me = util:get_me()
local animstate = entity.get_animstate(me)
left.weight = 1
right.weight = 0
if adds:get("Moonwalk+") then
local cycle = globals.realtime() * 0.7 % 2
left.cycle = cycle
end
elseif ltype == "Jitter" then
refs.aa.fl.lg[1]:override("Always slide")
if enabled then
self:work()
end
end
}
}
funcs.override_view = {
scope = {
zoom = 0,
run = function(self, player)
if util:not_me() or not menu.vis.anim_zoom:get() then
return
end
local me = util:get_me()
local scoping = entity.get_prop(me, "m_bIsScoped") == 1
local tips = {
speed = menu.vis.zoom.speed:get() / 150,
fov = menu.vis.zoom.fov:get(),
rfov = ui.get(refs.misc.fov)
}
for i = 1, #players do
local entity = players[i]
local steam = entity.get_steam64(players[i])
local baim
gather.gfy = anim.goal_feet_yaw
if yaw ~= 0 then
baim = (yaw > 0 and -1 or 1) *
entity.get_max_desync(anim)
if baim then
print(entity.get_player_name(entity).."
body:"..baim)
plist.set(entity, "Force body yaw value", baim)
end
end
end
records.prev = gather
end
end
end,
refresh = function(self)
table.clear(self.records)
end,
reset = function(self)
for player = 1, 64 do
plist.set(player, "Force body yaw", false)
end
self.records = {}
end,
run = function(self)
local enabled = menu.feature.aim.resolver:get()
if enabled then
self:work()
end
end
}
}
funcs.setup_command = {
drop_nades = {
slots = {
HE = "slot6", -- CSmokeGrenade
Smoke = "slot8", -- CSmokeGrenade
Molotov = "slot10", -- CMolotovGrenade
},
working = false,
if slot then
client.exec(slot)
client.delay_call(0.05, function()
if not self:correct(nade_type) then
self.working = false
return
end
client.exec("drop")
self.working = false
end)
end
end
end,
if self.switch then
cmd.sidemove = cmd.sidemove + speed
else
cmd.sidemove = cmd.sidemove - speed
end
if enabled then
self:work(cmd)
end
end
},
charge_fix = {
state = false, tick = 0, ticking = 0,
set = function(self, value)
ui.set(refs.rage.enable, value)
end,
work = function(self)
local target = client.current_threat()
local me = util:get_me()
if enabled then
self:work()
end
end
},
miss_fix = {
work = function(self, cmd)
local target = client.current_threat()
local me = util:get_me()
if enabled then
self:work(cmd)
end
end
}
}
funcs.net_update_end = {
defensive = {
run = function(self)
antiaim.defensive:activate()
end
},
clantag = {
state = false, last = 0,
list = {
"@",
"#e",
"|em",
"@embe",
"#ember",
"|ember|",
"@emberlas",
"#emberlash",
"emberlash", "emberlash", "emberlash", "emberlash", "emberlash",
"emberlas%",
"emberl&",
"ember*",
"embe#",
"emb@",
"em|",
"e%",
},
restore = function(self)
client.set_clan_tag()
refs.misc.clantag:set_enabled(true)
refs.misc.clantag:override()
end,
run = function(self)
local enabled = menu.feature.misc.clantag:get()
if enabled then
self:work()
end
end,
work = function(self)
local current = math.round(globals.curtime() * 3) % #self.list + 1
self.last = current
client.set_clan_tag(self.list[current])
refs.misc.clantag:override(false)
refs.misc.clantag:set_enabled(false)
end
}
}
funcs.player_death = {
trashtalk = {
phrases = {
["kill"] = {
{"𝙀𝙢𝙗𝙚𝙧𝙡𝙖𝙨𝙝 𝙥𝙧𝙚𝙢𝙞𝙪𝙢 𝙥𝙧𝙚𝙙𝙞𝙘𝙩𝙞𝙤𝙣 𝙩𝙚𝙘𝙝𝙣𝙤𝙡𝙤𝙜𝙞𝙚𝙨 ◣◢ :crown:", "ʙʏ
ʙᴜʏɪɴɢ ᴇᴍʙᴇʀʟᴀsʜ, ʏᴏᴜ'ʀᴇ ʙᴜʏɪɴɢ ᴀ ᴛɪᴄᴋᴇᴛ ᴛᴏ ʜᴇʟʟ.", "The Flame will never die, for
I am EMBERLASH"},
{"☾ 𝕘𝕖𝕥 **𝕖𝕕 𝕓𝕪 𝕕𝕖𝕧𝕚𝕝 #𝕖𝕞𝕓𝕖𝕣𝕝𝕒𝕤𝕙 ~ 𝕟𝕖𝕥𝕨𝕠𝕣k ☾ "}, {"твоя
сила – лишь иллюзия перед властью Emberlash."},
database.write(databases.kill, db)
end
}
}
local hitboxes = {[0] = 'body', 'head', 'chest', 'stomach', 'left arm', 'right
arm', 'left leg', 'right leg', 'neck', '?', 'gear'}
funcs.aim_hit = {
hitten = {
run = function(self, event)
if not (menu.vis.widgets:get() and menu.vis.widgets_type:get("Event
logger") and menu.vis.markers:get() and menu.vis.markers_type:get("On hit")) then
return end
if hp ~= 0 then
notification:create("", "Hit $"..target.."$ $in$
$"..hitbox.."$ $for$ $"..damage.."", 3000)
printf("Hit "..target.." in ".. hitbox .." for "..damage..",
"..bt.."bt, "..hc.."hc")
else
printf("Kill "..target.." in ".. hitbox ..", "..bt.."bt,
"..hc.."hc")
notification:create("", "Killed $"..target.."$ $in$
$"..hitbox, 3200)
end
end
}
}
funcs.aim_miss = {
missed = {
run = function(self, shot)
local db = database.read(databases.miss)
db = db + 1
database.write(databases.miss, db)
if func_data.restore then
if func_data.state then
call_reg.shutdown:set(function()
func_data:restore()
end)
end
end
end
end
end
funcs.null = {
filter = {
set = function(elemt)
cvar.con_filter_enable:set_int(elemt.value and 1 or 0)
cvar.con_filter_text:set_string(elemt.value and "memberlash" or "")
end,
run = function(self)
menu.feature.misc.filter:set_callback(self.set, true)
end
}
}
local extra = {}
extra = {
data = {
state = false,
work = function(self)
local me = util:get_me()
databases.scope = animate:lerp(databases.scope, entity.get_prop(me,
"m_bIsScoped") == 1 and 1 or 0, 0.08)
end,
restore = function(self)
databases.scope = 0
end,
run = function(self)
local enabled = not util:not_me()
if enabled then
self:work()
end
end
},
complete = function(self)
call_reg.shutdown:set(function()
cvar.con_filter_enable:set_int(0)
cvar.con_filter_text:set_string("")
gui:show(true)
end)
if defclr then
r, g, b = menu.vis.color.clr_def:get()
r3, g3, b3 = r, g, b
else
r, g, b = menu.vis.color.gradient.clr1:get()
r3, g3, b3 = menu.vis.color.gradient.clr4:get()
end
gui:show(false)
local tabs = {
home = render:paint_tab(menu.home.tab, {"Info", "Visuals"}, {"",
""}),
aa = render:paint_tab(menu.aa.tab, {"Builder", "Defensive",
"Settings"}, {"", "", ""}),
feature = render:paint_tab(menu.feature.tab, {"Aimbot", "Misc"},
""})
{"",
}
menu.home.tab_1:set(tabs.home)
menu.aa.tab_1:set(tabs.aa)
menu.feature.tab_1:set(tabs.feature)
end
}
call_reg.paint:set(function()
extra.data:run()
end)
call_reg.paint_ui:set(function()
extra:complete()
end)
local configs = {
update_name = function(self)
local info = menu.home.config.list()
local count = 0
local configs = database.read(databases.cfg) or {}
for k, v in pairs(configs) do
if info == count then
return menu.home.config.name(k)
end
count = count + 1
end
return nil
end,
update_cfgs = function(self)
local names = {}
local configs = database.read(databases.cfg) or {}
for k, v in pairs(configs) do
table.insert(names, k)
end
if notifyt then
print("Config successfully exported!")
notification:create("", "Config successfully $exported$!", 4000)
end
return encrypted
end,
import = function(self, encrypted, notifyt)
local decoded = base64.decode(encrypted)
if notifyt then
print("Config successfully imported!")
notification:create("", "Config successfully $imported!$", 4000)
end
end,
save = function(self)
local name = menu.home.config.name()
database.write(databases.cfg, configs)
self:update_cfgs()
end,
load = function(self)
local name = menu.home.config.name()
if configs[name] then
print("Config "..name.." succsesfully loaded!")
notification:create("", "Config $"..name.."$ $successfully$
$loaded!$", 4000)
else
print("Config "..name.." not found!")
notification:create("", "Config $"..name.."$ $not$ $found!$",
4000, {255,0,0})
end
end,
trash = function(self)
local name = menu.home.config.name()
if configs[name] then
configs[name] = nil
database.write(databases.cfg, configs)
print("Config "..name.." succsesfully deleted!")
notification:create("", "Config $"..name.."$ $successfully$
$deleted!$", 4000, {255,0,0})
else
print("Config "..name.." not found!")
notification:create("", "Config $"..name.."$ $not$ $found!$",
4000, {255,0,0})
return
end
menu.home.config.list:set_callback(function()
configs:update_cfgs()
end)
menu.home.config.export:set_callback(function()
local data = configs:export(true)
clipboard.set(data)
end)
menu.home.config.import:set_callback(function()
configs:import(clipboard.get(), true)
end)
menu.home.config.save:set_callback(function()
configs:save()
end)
menu.home.config.load:set_callback(function()
configs:load()
end)
menu.home.config.delete:set_callback(function()
configs:trash()
end)
end)()