Message
Message
base64.decode = function(data)
data = data:gsub('-', '=')
local b = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
data = string.gsub(data, '[^'..b..'=]', '')
return (data:gsub('.', function(x)
if (x == '=') then return '' end
local r,f='',(b:find(x)-1)
for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
return r;
end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
if (#x ~= 8) then return '' end
local c=0
for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
return string.char(c)
end))
end
do
local libraries = {
{ req_name = 'gamesense/csgo_weapons', link =
'https://gamesense.pub/forums/viewtopic.php?id=18807' },
{ req_name = 'gamesense/websockets', link =
'https://gamesense.pub/forums/viewtopic.php?id=23653' },
{ req_name = 'gamesense/easing', link =
'https://gamesense.pub/forums/viewtopic.php?id=22920' },
{ req_name = 'gamesense/trace', link =
'https://gamesense.pub/forums/viewtopic.php?id=32949' },
{ req_name = 'gamesense/antiaim_funcs', link =
'https://gamesense.pub/forums/viewtopic.php?id=29665' }
}
local clipboard_safety =
'LMNOPQRXYZabcdefgSTUVWhijklmnopqCDEFGHIJrstuvwxyz0123ABK456789+/-'
local build_data = { ['User'] = 'Stable', ['Beta'] = 'Beta', ['Debug'] = 'Alpha',
['Private'] = 'Nightly' }
local obex_data = obex_fetch and obex_fetch() or {username = 'fucktheniggers',
build = 'Private'}
obex_data.build = build_data[obex_data.build]
local cloud = {
settings = {},
}
return(function(eternal)
eternal.colorful_text = {
lerp = function(self, a, b, c)
if type(a) == 'table' and type(b) == 'table' then
return {self:lerp(a[1], b[1], c), self:lerp(a[2], b[2], c),
self:lerp(a[3], b[3], c)}
end
return a + (b - a) * c
end,
console = function(self, ...)
for d, e in ipairs({...}) do
if type(e[1]) == 'table' and type(e[2]) == 'table' and type(e[3])
== 'string' then
for f = 1, #e[3] do
local g = self:lerp(e[1], e[2], f / #e[3])
client.color_log(g[1], g[2], g[3], e[3]:sub(f, f) .. '\0')
end
elseif type(e[1]) == 'table' and type(e[2]) == 'string' then
client.color_log(e[1][1], e[1][2], e[1][3], e[2] .. '\0')
end
end
end,
text = function(self, ...)
local h = false
local i = 255
local j = ''
for d, e in ipairs({...}) do
if type(e) == 'boolean' then
h = e
elseif type(e) == 'number' then
i = e
elseif type(e) == 'string' then
j = j .. e
elseif type(e) == 'table' then
if type(e[1]) == 'table' and type(e[2]) == 'string' then
j = j .. ('\a%02x%02x%02x%02x'):format(e[1][1], e[1][2],
e[1][3], i) .. e[2]
elseif type(e[1]) == 'table' and type(e[2]) == 'table' and
type(e[3]) == 'string' then
for f = 1, #e[3] do
local k = self:lerp(e[1], e[2], f / #e[3])
j = j .. ('\a%02x%02x%02x%02x'):format(k[1], k[2],
k[3], i) .. e[3]:sub(f, f)
end
end
end
end
return ('%s\a%s%02x'):format(j, 'cdcdcd', i)
end,
log = function(self, ...)
for d, e in ipairs({...}) do
if type(e) == 'table' then
if type(e[1]) == 'table' then
if type(e[2]) == 'string' then
self:console({e[1], e[1], e[2]})
if e[3] then
self:console({{255, 255, 255}, '\n'})
end
elseif type(e[2]) == 'table' then
self:console({e[1], e[2], e[3]})
if e[4] then
self:console({{255, 255, 255}, '\n'})
end
end
elseif type(e[1]) == 'string' then
self:console({{205, 205, 205}, e[1]})
if e[2] then
self:console({{255, 255, 255}, '\n'})
end
end
end
end
end
}
eternal.includes = {
csgo_weapons = require('gamesense/csgo_weapons'),
aa_funcs = require('gamesense/antiaim_funcs'),
websockets = require('gamesense/websockets'),
easing = require('gamesense/easing'),
trace = require('gamesense/trace'),
vector = require('vector')
}
ffi.cdef[[
typedef int(__thiscall* get_clipboard_text_count)(void*);
typedef void(__thiscall* set_clipboard_text)(void*, const char*, int);
typedef void(__thiscall* get_clipboard_text)(void*, int, const char*, int);
]]
eternal.ref = {
rage = {
enabled = { ui.reference('rage', 'Aimbot', 'Enabled') },
target_selection = ui.reference('rage', 'Aimbot', 'Target selection'),
target_hitbox = ui.reference('rage', 'Aimbot', 'Target hitbox'),
multi_point = ui.reference('rage', 'Aimbot', 'Multi-point'),
multi_point_scale = ui.reference('rage', 'Aimbot', 'Multi-point
scale'),
prefer_safe_point = ui.reference('rage', 'Aimbot', 'Prefer safe
point'),
force_safe_point = ui.reference('rage', 'Aimbot', 'Force safe point'),
avoid_unsafe_hitboxes = ui.reference('rage', 'Aimbot', 'Avoid unsafe
hitboxes'),
automatic_fire = ui.reference('rage', 'Other', 'Automatic fire'),
automatic_penetration = ui.reference('rage', 'Other', 'Automatic
penetration'),
silent_aim = ui.reference('rage', 'Other', 'Silent aim'),
hit_chance = ui.reference('rage', 'Aimbot', 'Minimum hit chance'),
minimum_damage = ui.reference('rage', 'Aimbot', 'Minimum damage'),
minimum_damage_override = { ui.reference('rage', 'Aimbot', 'Minimum
damage override') },
automatic_scope = ui.reference('rage', 'Aimbot', 'Automatic scope'),
fov = ui.reference('rage', 'Other', 'Maximum FOV'),
aa = {
main = {
enabled = ui.reference('aa', 'Anti-aimbot angles', 'Enabled'),
pitch = { ui.reference('aa', 'Anti-aimbot angles', 'Pitch') },
yawbase = ui.reference('aa', 'Anti-aimbot angles', 'Yaw base'),
yaw = { ui.reference('aa', 'Anti-aimbot angles', 'Yaw') },
yaw_jitter = { ui.reference('aa', 'Anti-aimbot angles', 'Yaw
jitter') },
body_yaw = { ui.reference('aa', 'Anti-aimbot angles', 'Body
yaw') },
fs_body_yaw = ui.reference('aa', 'Anti-aimbot angles',
'Freestanding body yaw'),
roll = ui.reference('aa', 'Anti-aimbot angles', 'Roll'),
freestanding = { ui.reference('aa', 'Anti-aimbot angles',
'Freestanding') },
edge_yaw = ui.reference('aa', 'Anti-aimbot angles', 'Edge yaw'),
},
other = {
slow_motion = { ui.reference('aa', 'Other', 'Slow motion') },
on_shot = { ui.reference('aa', 'Other', 'On shot anti-aim') },
leg_movement = ui.reference('aa', 'Other', 'Leg movement'),
fake_peek = { ui.reference('aa', 'Other', 'Fake peek') }
},
fl = {
amount = ui.reference('aa', 'Fake lag', 'Amount'),
limit = ui.reference('aa', 'Fake lag', 'Limit'),
var = ui.reference('aa', 'Fake lag', 'Variance')
}
},
misc = {
bunny_hop = ui.reference('misc', 'Movement', 'Bunny hop'),
infinite_duck = ui.reference('misc', 'Movement', 'Infinite duck'),
clan_tag = ui.reference('misc', 'Miscellaneous', 'Clan tag spammer'),
ping_spike = { ui.reference('misc', 'Miscellaneous', 'Ping Spike') },
anti_untrusted = ui.reference('misc', 'Settings', 'Anti-untrusted')
},
visuals = {
remove_scope = ui.reference('visuals', 'Effects', 'Remove scope
overlay')
},
playerlist = {
reset_all = ui.reference('players', 'Players', 'Reset all'),
player = ui.reference('players', 'Players', 'Player list')
}
}
eternal.cache = {
cfg_database = readfile('csgo/eternal/eternal_rage_semi_cfg.json'),
bomb_time = 0,
roll_players = {},
on_ladder = false,
in_air = false,
swap = false,
exploit_count = 0,
hitgroups_to_hitboxes = {
['Head'] = { 0 },
['Chest'] = { 4, 5, 6 },
['Stomach'] = { 2, 3 },
['Arms'] = { 13, 14, 15, 16, 17, 18 },
['Legs'] = { 7, 8, 9, 10 },
['Feet'] = { 11, 12 }
},
allowed_hitboxes = {
0, 4, 5, 6, 2, 3, 15, 17
},
side_angle = 0,
side_peek = { 90, 270 },
slow = {
last_tick = 0,
jitter = false
},
def_slow = {
last_tick = 0,
},
is_defusing = false,
last_movement = 0,
current_choke = 0,
game_state_api = panorama.open().GameStateAPI, spaced_string = '', values =
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, is_menu_open = false, cfg_string =
'',
smoke_hitboxes = { 0, 11, 12, 13, 14 }, visibility_directions = { { 0.0,
0.0 }, { 30.0, 0.0 }, { -30.0, 0.0 }, { 0.0, 30.0 }, { 0.0, -30.0 } }, whitelist =
{}, smoke_exists = false,
hitscan = { ['Head'] = { 0, 1 }, ['Chest'] = { 5, 6 }, ['Stomach'] = { 2,
3, 4 }, ['Arms'] = { 13, 14, 15, 16, 17, 18 }, ['Legs'] = { 7, 8, 9, 10 }, ['Feet']
= { 11, 12 } },
awall_data = 'None',
l_auto_wall = false,
auto_wall = false,
active_preset = 'Global',
fl_preset = 'Global',
player_state = 'Stand',
hittable_ticks = 0,
enemies = {},
roll_data = {},
lp_velocity = 0,
lp_team = 'Counter-Terrorists',
contains = {
lean_sideways = false,
lean_hotkey = false,
shots = {
hits = false,
misses = false,
panel = false,
on_screen = false,
console = false
},
indicator_options = {
keybinds = false,
body_yaw_amount = false,
body_yaw_side = false,
arrows = false
},
crosshair_keybinds = {
fov = false,
on_shot = false,
freestand = false,
safe_point = false,
force_baim = false,
fake_duck = false,
ping_spike = false,
pitch_override = false,
damage_override = false,
body_lean = false
},
panel_options = {
watermark = false,
debug_panel = false,
pulsate = false
},
watermark_options = {
build = false,
latency = false,
time = false
},
ab_disablers = {
flashed = false,
in_smoke = false
},
animation_select = {
static_legs_air = false,
static_legs_slow = false,
moonwalk = false
},
peek = {
include_dormant = false,
exclude_limbs = false,
prediction = false,
crosshair = false
},
tabs = {
aa = false,
visual = false,
misc = false
},
anti_flicker = {
unstable_internet = false,
holding_grenade = false,
fake_duck = false
}
},
should_optimize = false,
safety = false,
master_switch = false,
navigator = false,
local_player = nil,
fs_disabled = false,
threat = nil,
threat_ping = 0,
threat_dist = 0,
threat_name = 'Unknown',
last_press_t_dir = 0,
yaw_direction = 0,
peek_threat = nil,
ground_ticks = 0,
end_time = 0,
last_flash_update = 0,
fs_ticks_ran = 0,
side = 0,
peeked = false,
vulnerable = false,
desync = 0,
desync_side == 'Left',
desync_amount = 0,
lean_anim = 0,
scope_width = 0,
is_scoped = false,
watermark_width = 0,
watermark_textwidth = 0,
watermark_adder = 0,
socket = nil,
eternal_users = {}
}
eternal.socket = {
open = function(ws)
client.delay_call(1, function()
if entity.get_steam64(eternal.cache.local_player) ~= nil then
ws:send(json.stringify({
['steam_id'] =
entity.get_steam64(eternal.cache.local_player),
['platform'] = 'GS',
}))
end
end)
eternal.cache.socket = ws
end,
eternal.memory = {
line_goes_through_smoke = ffi.cast(ffi.typeof('bool(__cdecl*)(float
flFromX, float flFromY, float flFromZ, float flToX, float flToY, float flToZ)'),
client.find_signature('client.dll', '\x55\x8B\xEC\x83\xEC\x08\x8B\x15\xCC\xCC\xCC\
xCC\x0F')),
gamerules = ffi.cast('intptr_t**', ffi.cast('intptr_t',
client.find_signature('client.dll', '\x83\x3D\xCC\xCC\xCC\xCC\xCC\x74\x2A\xA1')) +
2)[0],
vgui_system = ffi.cast(ffi.typeof('void***'),
client.create_interface('vgui2.dll', 'VGUI_System010')),
get_client_entity = vtable_bind('client.dll', 'VClientEntityList003', 3,
'void*(__thiscall*)(void*, int)'),
animation_layer_t = ffi.typeof([[
struct { char
pad_0x0000[0x18];
uint32_t sequence;
float prev_cycle;
float m_flWeight;
float m_flWeightDeltaRate;
float m_flPlaybackRate;
float m_flCycle;
void *entity; char
pad_0x0038[0x4];
} **
]]),
eternal.func = {
file_sys = function()
local
a=ffi.cast(ffi.typeof('void***'),client.create_interface('filesystem_stdio.dll','VB
aseFileSystem011'))local
b=ffi.cast(ffi.typeof('void***'),client.create_interface('filesystem_stdio.dll','VF
ileSystem017'))local c=ffi.cast('int(__thiscall*)(void*, void const*, int,
void*)',a[0][1])local d=ffi.cast('void*(__thiscall*)(void*, const char*, const
char*, const char*)',a[0][2])local e=ffi.cast('void(__thiscall*)(void*,
void*)',a[0][3])local f=ffi.cast('bool(__thiscall*)(void*, const char*, const
char*)',a[0][10])local g=ffi.cast('void(__thiscall*)(void*, const char*, const
char*, int)',b[0][11])local h=ffi.cast('void(__thiscall*)(void*, const char*, const
char*)',b[0][22])local i=ffi.cast('bool(__thiscall*)(void*, const char*, const
char*)',b[0][23])local j=ffi.cast('bool(__thiscall*)(void*, char*,
int)',client.find_signature('filesystem_stdio.dll','\x55\x8B\xEC\x56\x8B\x75\x08\
x56\xFF\x75\x0C'))local
k=ffi.cast(ffi.typeof('void***'),client.create_interface('vgui2.dll','VGUI_System01
0'))local l=ffi.cast('int(__thiscall*)(void*)',k[0][7])local
m=ffi.cast('int(__thiscall*)(void*, int, char*, int)',k[0][11])local n=l(k)local
o=ffi.new('char[?]',n)m(k,0,o,n*ffi.sizeof('char[?]',n))local
p=ffi.typeof('char[?]')(128)j(b,p,ffi.sizeof(p))p=ffi.string(p)g(b,p,'MOD',0)local
q={}q.__index=q;function q.exists(r,s)return f(a,r,s)end;function
q.create_dir(p,s)h(b,p,s)end;function q.is_dir(p,s)return i(b,p,s)end;local
t={['r']='r',['w']='w',['a']='a',['r+']='r+',['w+']='w+',['a+']='a+',['rb']='rb',
['wb']='wb',['ab']='ab',['rb+']='rb+',['wb+']='wb+',['ab+']='ab+'}function
q.open(r,u,s)if not t[u]then error('invalid mode #2',2)end;local
self=setmetatable({file=r,mode=u,path_id=s,handle=d(a,r,u,s)},q)if self.handle==-1
then error('wrong file error #1',2)end;return self end;function
q:write(v)c(a,v,#v,self.handle)end;function q:close()e(a,self.handle)end
--> GS icon
if not
readfile('csgo/materials/panorama/images/icons/xp/level8863621.png') then
http.get('https://i.imgur.com/W5hnEVf.png', function(w, x)
if not w or x.status ~= 200 then
return
end
local y = q.is_dir('/materials/panorama/images/icons/xp')
if not y then
q.create_dir('/materials/panorama/images/icons/xp')
end
local z =
q.open('/materials/panorama/images/icons/xp/level8863621.png', 'wb+')
z:write(x.body)
z:close()
end)
end
--> NL icon
if not
readfile('csgo/materials/panorama/images/icons/xp/level8863622.png') then
http.get('https://i.imgur.com/HEVMZM8.png', function(w, x)
if not w or x.status ~= 200 then
return
end
local y = q.is_dir('/materials/panorama/images/icons/xp')
if not y then
q.create_dir('/materials/panorama/images/icons/xp')
end
local z =
q.open('/materials/panorama/images/icons/xp/level8863622.png', 'wb+')
z:write(x.body)
z:close()
end)
end
end,
fetch_server = function()
if not globals.mapname() then
return nil
end
return server_address
end,
eq = function(a, b)
local function c()return a end;local function d()return b end;return
rawequal(a,b)and a==b and b==a and not b~=a and not a~=b and rawequal(d(),c())and
c()==d()and not c()~=d()
end,
lerp = LPH_NO_VIRTUALIZE(function(b,c,d)
if type(b)=='table' and type(c)=='table'then
return{eternal.func.lerp(b[1],c[1],d),eternal.func.lerp(b[2],c[2],d),eternal.func.l
erp(b[3],c[3],d)}
end
return b+(c-b)*d
end),
return false
end),
for i in ipairs(data) do
local text, color = data[i].text, data[i].color
if i == 1 then
renderer.text(x + width + space*i, y, color[1], color[2],
color[3], color[4], flags, nil, text)
else
renderer.text(x + width + space*i, y, color[1], color[2],
color[3], color[4], flags, nil, text)
end
round = LPH_NO_VIRTUALIZE(function(num)
return math.floor(num + 0.5)
end),
blend_console_log = LPH_NO_VIRTUALIZE(function(b,c,d)
local e,f,g=b[1],b[2],b[3]local h,i,j=c[1],c[2],c[3]
for k=1,#d do
local
l=eternal.func.lerp(b,c,k/#d)client.color_log(l[1],l[2],l[3],d:sub(k,k)..'\0')
end
end),
pulsate = LPH_NO_VIRTUALIZE(function(initial)
return eternal.func.clamp(math.sin(math.abs(math.pi+
(globals.realtime())%(-math.pi*2)))*initial, 75, initial)
end),
normalize = LPH_NO_VIRTUALIZE(function(yaw)
yaw = (yaw % 360 + 360) % 360
return yaw > 180 and yaw - 360 or yaw
end),
entity_has_c4 = LPH_JIT(function(ent)
local bomb = entity.get_all('CC4')[1]
set_clipboard = function(string)
local set_clipboard_text = ffi.cast('set_clipboard_text',
eternal.memory.vgui_system[0][9])
set_clipboard_text(eternal.memory.vgui_system, string, #string)
end,
fetch_clipboard = function()
local get_clipboard_text_count = ffi.cast('get_clipboard_text_count',
eternal.memory.vgui_system[0][7])
local get_clipboard_text = ffi.cast('get_clipboard_text',
eternal.memory.vgui_system[0][11])
local clipboard_text_length =
get_clipboard_text_count(eternal.memory.vgui_system)
local clipboard_data = ''
return clipboard_data
end,
ffi.copy(strbuf, str)
ffi.copy(keybuf, key)
default_visibility = LPH_JIT_MAX(function(visible)
ui.set_visible(eternal.ref.aa.main.enabled, visible)
ui.set_visible(eternal.ref.aa.main.pitch[1], visible)
ui.set_visible(eternal.ref.aa.main.pitch[2], visible and
ui.get(eternal.ref.aa.main.yaw[1]) == 'Custom')
ui.set_visible(eternal.ref.aa.main.yawbase, visible)
ui.set_visible(eternal.ref.aa.main.yaw[1], visible)
ui.set_visible(eternal.ref.aa.main.yaw[2], visible and
ui.get(eternal.ref.aa.main.yaw[1]) ~= 'Off')
ui.set_visible(eternal.ref.aa.main.yaw_jitter[1], visible and
ui.get(eternal.ref.aa.main.yaw[1]) ~= 'Off')
ui.set_visible(eternal.ref.aa.main.yaw_jitter[2], visible and
ui.get(eternal.ref.aa.main.yaw[1]) ~= 'Off' and
ui.get(eternal.ref.aa.main.yaw_jitter[1]) ~= 'Off')
ui.set_visible(eternal.ref.aa.main.edge_yaw, visible)
ui.set_visible(eternal.ref.aa.main.freestanding[1], visible)
ui.set_visible(eternal.ref.aa.main.freestanding[2], visible)
ui.set_visible(eternal.ref.aa.main.body_yaw[1], visible)
ui.set_visible(eternal.ref.aa.main.body_yaw[2], visible and
(ui.get(eternal.ref.aa.main.body_yaw[1]) == 'Static' or
ui.get(eternal.ref.aa.main.body_yaw[1]) == 'Jitter'))
ui.set_visible(eternal.ref.aa.main.fs_body_yaw, visible and
ui.get(eternal.ref.aa.main.body_yaw[1]) ~= 'Off')
ui.set_visible(eternal.ref.aa.main.roll, visible)
ui.set_visible(eternal.ref.aa.fl.limit, visible)
ui.set_visible(eternal.ref.aa.fl.var, visible)
ui.set_visible(eternal.ref.aa.fl.amount, visible)
ui.set_visible(eternal.ref.misc.clan_tag, visible)
ui.set_visible(eternal.ref.aa.other.fake_peek[1], visible)
ui.set_visible(eternal.ref.aa.other.fake_peek[2], visible)
if visible then
ui.set_visible(eternal.ref.rage.target_hitbox, true)
else
ui.set_visible(eternal.ref.rage.target_hitbox, hitbox_selection ==
'Default')
end
end),
eternal.func.exec(ui.set_visible, {
[eternal.menu.main.resolver] = visible and obex_data.build ~=
'Stable',
[eternal.menu.anti_aim.current_fl_state] = visible,
[eternal.menu.anti_aim.on_shot_aa_settings] = visible,
[eternal.menu.anti_aim.on_shot_aa_hotkey] = visible,
[eternal.ref.aa.other.on_shot[1]] = not visible,
[eternal.ref.aa.other.on_shot[2]] = not visible,
[eternal.menu.visual.debug_panel_x] = false,
[eternal.menu.visual.debug_panel_y] = false,
[eternal.menu.misc.minimum_fov] = dynamic_fov,
[eternal.menu.misc.maximum_fov] = dynamic_fov,
[eternal.menu.misc.fov_scale] = dynamic_fov,
if visible then
for a, b in pairs(eternal.menu.anti_aim.fl_states) do
if a == ui.get(eternal.menu.anti_aim.current_fl_state) then
ui.set_visible(b.enable_state, a ~= 'Global')
end
end
end
end),
run_direction = LPH_JIT(function()
ui.set(eternal.ref.aa.main.edge_yaw, false)
eternal.cache.fs_disabled =
eternal.func.contains(ui.get(eternal.menu.misc.fs_disablers),
eternal.cache.player_state)
if ui.get(eternal.menu.misc.fs_hotkey) or not
ui.get(eternal.menu.misc.manual_enable) then
eternal.cache.yaw_direction = 0
eternal.cache.last_press_t_dir = globals.curtime()
else
if ui.get(eternal.menu.misc.manual_forward_hotkey) then
eternal.cache.yaw_direction = 0
elseif ui.get(eternal.menu.misc.manual_right_hotkey) and
eternal.cache.last_press_t_dir + 0.2 < globals.curtime() then
eternal.cache.yaw_direction = eternal.cache.yaw_direction == 90
and 0 or 90
eternal.cache.last_press_t_dir = globals.curtime()
elseif ui.get(eternal.menu.misc.manual_left_hotkey) and
eternal.cache.last_press_t_dir + 0.2 < globals.curtime() then
eternal.cache.yaw_direction = eternal.cache.yaw_direction == -
90 and 0 or -90
eternal.cache.last_press_t_dir = globals.curtime()
elseif eternal.cache.last_press_t_dir > globals.curtime() then
eternal.cache.last_press_t_dir = globals.curtime()
end
end
end),
i = math.floor(i % #indices)
i = indices[i+1]+1
run_tag_animation = LPH_JIT_MAX(function()
local clan_tag = eternal.func.gamesense_animation('eternal.codes', {0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 14, 14, 14, 14, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27})
clan_tag_prev = clan_tag
end),
is_hittable = LPH_JIT_MAX(function(weapon)
if not weapon or eternal.cache.threat == nil or weapon.type == 'knife'
then
return false
end
return false
end),
fix_bots = LPH_JIT(function(ent)
if
eternal.cache.game_state_api.IsFakePlayer(eternal.cache.game_state_api.GetPlayerXui
dStringFromEntIndex(ent)) then
plist.set(ent, 'Correction active', false)
end
end),
get_angle = LPH_JIT(function(ent)
if (not plist.get(ent, 'Correction active') and
eternal.cache.local_player ~= ent) and ent then
return 0
end
anti_backstab = LPH_JIT_MAX(function(weapon)
if eternal.cache.threat == nil or weapon == nil then
return false
end
return false
end),
outline = LPH_JIT(function(x, y, w, h, r, g, b, a)
renderer.rectangle(x - 1, y - 1, w + 2, 1, r, g, b, a)
renderer.rectangle(x - 1, y + h, w + 2, 1, r, g, b, a) renderer.rectangle(x - 1, y,
1, h, r, g, b, a) renderer.rectangle(x + w, y, 1, h, r, g, b, a)
end),
notify = {
add = LPH_JIT_MAX(function(self, type, ...)
table.insert(self.items, {
['text'] = table.concat({...}, ''),
['time'] = self.time,
['type'] = type or 'info',
['a'] = 255.0,
});
end),
setup = LPH_JIT_MAX(function(self, data)
self.max_logs = data.max_logs or 10
self.position = data.position or { 8, 5 }
self.time = data.time or 6.0
self.images = data.images or false
self.center_additive = data.center_additive or 0
self.simple = data.simple or false
self.items = self.items or {}
end),
think = LPH_JIT_MAX(function(self)
if #self.items <= 0 then
return
end
for i, v in ipairs(self.items) do
v.time = v.time - globals.frametime();
if v.time <= 0 then
table.remove(self.items, i);
end
end
local x, y, w, h, offset = 0, 0, 0, 0, { 5, 2 }
local text = ''
local f = 0.0
if self.simple then
offset = { 0, 0 }
end
if #v.text == 0 then
return
end
local f = v.time;
if (f < 0.5) then
eternal.func.clamp(f, 0.0, 0.5);
f = f / 0.5;
v.a = 255.0 * f;
manage_database = function(tbl)
local return_tbl = {}
local configs = 0
if configs == 0 then
return_tbl = {'-'}
end
return return_tbl
end,
export_tab = function(tbl)
local settings = {}
if not
settings[tbl[count][1]][key][k][i][x] then
settings[tbl[count]
[1]][key][k][i][x] = {}
end
if not
settings[tbl[count][1]][key][k][i][x][xx] then
settings[tbl[count]
[1]][key][k][i][x][xx] = {}
end
if type(yyy) == 'table'
then
for xxxx, yyyy in
pairs(yyy) do
if not
settings[tbl[count][1]][key][k][i][x][xx][xxx] then
settings[tbl[count][1]][key][k][i][x][xx][xxx] = {}
end
settings[tbl[count][1]][key][k][i][x][xx][xxx][xxxx] = ui.get(yyyy)
end
else
settings[tbl[count]
[1]][key][k][i][x][xx][xxx] = ui.get(yyy)
end
end
else
if not settings[tbl[count]
[1]][key][k][i] then
settings[tbl[count][1]]
[key][k][i] = {}
end
if not settings[tbl[count]
[1]][key][k][i][x] then
settings[tbl[count][1]]
[key][k][i][x] = {}
end
settings[tbl[count][1]]
[key][k][i][x][xx] = ui.get(yy)
end
end
else
if not settings[tbl[count][1]][key]
[k][i] then
settings[tbl[count][1]][key][k]
[i] = {}
end
settings[tbl[count][1]][key][k][i]
[x] = ui.get(y)
end
end
else
settings[tbl[count][1]][key][k][i] =
ui.get(j)
end
end
end
elseif not key:find('label') then
if key == 'main_indicator_color' or key ==
'secondary_indicator_color' then
settings[tbl[count][1]][key] = { ui.get(value) }
elseif not key:find('hotkey') and not
key:find('transport') then
settings[tbl[count][1]][key] = ui.get(value)
end
end
end
end
end
return settings
end,
local temp_hi = {}
local temporary = {}
for i = 1, #to_import do
if #to_import[i] > 0 then
if data[tab_list[i]] ~= nil then
for k, v in pairs(data[tab_list[i]]) do
if type(v) == 'table' then
for kk, vv in pairs(v) do
if type(kk) == 'number' then
if kk == 1 then
temporary = {}
end
table.insert(temporary, vv)
ui.set(to_import[i][2][k], temporary)
else
for kkk, vvv in pairs(vv) do
if type(vvv) == 'table' then
for kkkk, vvvv in pairs(vvv) do
if type(vvvv) == 'table' then
for kkkkk, vvvvv in
pairs(vvvv) do
if type(vvvvv) ==
'table' then
for kkkkkk, vvvvvv
in pairs(vvvvv) do
if type(vvvvvv)
== 'table' then
for
kkkkkkk, vvvvvvv in pairs(vvvvvv) do
ui.set(to_import[i][2][k][kk][kkk][kkkk][kkkkk][kkkkkk][kkkkkkk], vvvvvvv)
end
else
ui.set(to_import[i][2][k][kk][kkk][kkkk][kkkkk][kkkkkk], vvvvvv)
end
end
else
ui.set(to_import[i]
[2][k][kk][kkk][kkkk][kkkkk], vvvvv)
end
end
else
if type(kkkk) ~= 'number'
then
ui.set(to_import[i][2]
[k][kk][kkk][kkkk], vvvv)
else
if kkkk == 1 then
temp_hi = {}
end
table.insert(temp_hi,
vvvv)
ui.set(to_import[i][2]
[k][kk][kkk], temp_hi)
end
end
end
elseif to_import[i][2][k][kk][kkk] and
vvv then
ui.set(to_import[i][2][k][kk][kkk],
vvv)
end
end
end
end
else
if to_import[i][2][k] and v then
ui.set(to_import[i][2][k], v)
end
end
end
return ui.get(value)
end,
angle_vector = LPH_JIT_MAX(function(angle)
local p, y = math.rad(angle[1]), math.rad(angle[2])
local sp, cp, sy, cy = math.sin(p), math.cos(p), math.sin(y),
math.cos(y)
return {cp*cy, cp*sy, -sp}
end),
return {
origin[1] + (vel[1] * pred_tick),
origin[2] + (vel[2] * pred_tick),
origin[3] + (vel[3] * pred_tick)
}
end),
freestand = function()
if eternal.cache.fs_ticks_ran < 16 then
eternal.cache.fs_ticks_ran = eternal.cache.fs_ticks_ran + 1
return
end
eternal.cache.peeked = false
eternal.cache.vulnerable = false
if eternal.cache.local_player == nil or
entity.is_alive(eternal.cache.local_player) == false or eternal.cache.threat == nil
or entity.is_dormant(eternal.cache.threat) then
return
end
for i = 1, 2 do
local new_origin =
eternal.func.extrapolate_player_position(eternal.cache.threat, origin,
toticks(0.600 * (i / 2)))
predict_origin[i] = new_origin
end
for p = 1, #predict_origin do
local target_origin = predict_origin[p]
for i = 0, 2 do
local lp_predict_origin =
eternal.func.extrapolate_player_position(eternal.cache.local_player,
lp_eye_position, toticks(0.300 * (i / 2)))
local angle = eternal.func.calc_angle(lp_predict_origin,
target_origin)
local last_left_trace = 1
local last_right_trace = 1
local pred_left =
eternal.func.extrapolate_origin_wall(eternal.cache.threat, target_origin,
left_angle, (i * 12))
local pred_right =
eternal.func.extrapolate_origin_wall(eternal.cache.threat, target_origin,
right_angle, (i * 12))
for j = 1, 3 do
lp_predict_origin[3] = lp_origin[3] + ((lp_eye_position[3]
- lp_origin[3]) * (j/2))
if i <= 2 then
damage.left = damage.left + left_damage
damage.right = damage.right + right_damage
end
last_left_trace = left_trace
last_right_trace = right_trace
end
rad2deg = function(rad)
return (rad * 180 / math.pi)
end,
edge = function()
local vector_add = function(vector1, vector2)
return {
x = vector1.x + vector2.x,
y = vector1.y + vector2.y,
z = vector1.z + vector2.z
}
end
local m_vecOrigin =
eternal.includes.vector(entity.get_prop(eternal.cache.local_player, 'm_vecOrigin'))
local m_vecViewOffset =
eternal.includes.vector(entity.get_prop(eternal.cache.local_player,
'm_vecViewOffset'))
local data = {
fraction = 1,
surpassed = false,
angle = eternal.includes.vector(0, 0, 0),
var = 0,
side = 'LAST KNOWN'
}
local fr_info = {
fraction = _fr,
surpassed = (_fr < 1),
angle = eternal.includes.vector(0,
eternal.func.normalize(eternal.func.rad2deg(a)), 0),
var = math.floor(clm + 0.5),
side = side --[ 0 - center / 1 - left / 2 - right ]
}
ui.set(eternal.ref.aa.main.yaw[1], '180')
ui.set(eternal.ref.aa.main.yaw[2], 180)
ui.set(eternal.ref.aa.main.yaw_jitter[1], 'Off')
ui.set(eternal.ref.aa.main.yaw_jitter[2], 0)
ui.set(eternal.ref.aa.main.fs_body_yaw, false)
if value then
local should = (state_type == 'Preset' and cloud.settings['aa'])
if eternal.cache.yaw_direction ~= 0 then
local body_yaw = state_type == 'Preset' and
settings[aa_side].body_yaw[1] or ui.get(settings[aa_side].body_yaw[1])
ui.set(eternal.ref.aa.main.yaw[2], eternal.cache.yaw_direction)
if cmd.in_attack == 1 then
local weapon_name = entity.get_classname(weapon)
return true
end,
at_targets = function(enemy)
if not enemy then
return eternal.includes.vector(client.camera_angles()).y - 180
end
local enemy_position =
eternal.includes.vector(entity.get_origin(eternal.cache.threat))
return
eternal.includes.vector(eternal.includes.vector(entity.get_origin(eternal.cache.loc
al_player)):to(enemy_position):angles()).y - 180
end,
if w or a or s or d then
eternal.cache.last_movement = tickcount
return
end
plant_amount = LPH_JIT_MAX(function()
local timeElapsed = (globals.curtime() + 3) - eternal.cache.bomb_time
local timeElapsedInPerc = (timeElapsed / 3 * 100) + 0.5
return timeElapsedInPerc * 0.01
end),
angles[3] = 0
return angles
end),
get_move_dir = LPH_JIT_MAX(function(ent)
local velocity_prop = { entity.get_prop( ent, 'm_vecVelocity' ) }
local yaw = entity.get_prop(ent, 'm_angEyeAngles[1]')
return direction
end),
move_dir_text = LPH_JIT_MAX(function(ent)
local m_flags = entity.get_prop(ent, 'm_fFlags')
local m_dir = eternal.func.get_move_dir(ent)[2]
local abs_m_dir = math.abs(m_dir)
if bit.band(m_flags, 1) == 0 then
return 'in-air'
end
clan_tag = LPH_JIT(function()
if not eternal.cache.master_switch or not eternal.cache.local_player
then
return
end
speed = speed or 1
delay = delay or 0
delay = delay + 3
for i = 1, text_len do
local character = text:sub(i, i)
local character_fraction = (i - 1) / (text_len - 1)
local r_fraction = r2 - r
local g_fraction = g2 - g
local b_fraction = b2 - b
local a_fraction = a2 - a
return return_text
end),
default_style = LPH_JIT_MAX(function()
local r1, g1, b1, a1 = ui.get(eternal.menu.visual.main_indicator_color)
local r2, g2, b2, a2 =
ui.get(eternal.menu.visual.secondary_indicator_color)
local ind_offset = 0
local anim_speed = 5
local ind_separator = 8
if eternal.cache.contains.indicator_options.keybinds then
local min_dmg = ui.get(eternal.ref.rage.minimum_damage_override[3])
local fov = ui.get(eternal.ref.rage.fov)
local dmg_string = min_dmg < 10 and ' DMG: ' or 'DMG: '
local fov_string = fov < 10 and ' FOV: ' or 'FOV: '
local aimbot_text =
eternal.colorful_text:text({(ui.get(eternal.menu.misc.auto_fire_master) and
ui.get(eternal.menu.misc.auto_fire_key)) and {178, 237, 0} or {255, 255, 255},
'AF'})..eternal.colorful_text:text({{255, 255, 255}, ' -
'})..eternal.colorful_text:text({(not eternal.cache.l_auto_wall and not
eternal.cache.auto_wall) and {255, 255, 255} or (eternal.cache.l_auto_wall and
{178, 237, 0} or {237, 91, 0}), 'AW'})
local items = {
[1] = { true, eternal.func.gradient_text_anim('ETERNAL', { r2,
g2, b2, 150 }, { r1, g1, b1, 255 }, 2, 1), { 255, 255, 255, 255 } },
[2] = { (ui.get(eternal.menu.misc.auto_fire_master) and
ui.get(eternal.menu.misc.auto_fire_key)) or (eternal.cache.l_auto_wall or
eternal.cache.auto_wall), aimbot_text, { 255, 255, 255, 255 } },
[3] = { eternal.cache.contains.crosshair_keybinds.fov,
fov_string..eternal.colorful_text:text({{r1, g1, b1}, tostring(fov)}), { 255, 255,
255, 255 } },
[4] = { eternal.cache.contains.crosshair_keybinds.on_shot and
ui.get(eternal.ref.aa.other.on_shot[1]) and
ui.get(eternal.ref.aa.other.on_shot[2]), 'OS', { r2, g2, b2, 255 } },
[5] = { eternal.cache.contains.crosshair_keybinds.freestand and
ui.get(eternal.menu.misc.fs_hotkey) and not eternal.cache.fs_disabled, 'FS', { 255,
255, 255, 255 } },
[6] = { eternal.cache.contains.crosshair_keybinds.safe_point
and ui.get(eternal.ref.rage.force_safe_point), 'SAFE', { 178, 237, 0, 255 } },
[7] = { eternal.cache.contains.crosshair_keybinds.force_baim
and ui.get(eternal.ref.rage.force_baim), 'BAIM', { 250, 95, 95, 255 } },
[8] = { eternal.cache.contains.crosshair_keybinds.ping_spike
and ui.get(eternal.ref.misc.ping_spike[1]) and
ui.get(eternal.ref.misc.ping_spike[2]), 'PING', { 175, 235, 50, 255 } },
[9] = { eternal.cache.contains.crosshair_keybinds.fake_duck and
ui.get(eternal.ref.rage.fake_duck), 'DUCK', { 220, 220, 220, 255 } },
[10] =
{ eternal.cache.contains.crosshair_keybinds.pitch_override and
ui.get(eternal.menu.anti_aim.pitch_hotkey), 'PITCH', { r2, g2, b2, 255 } },
[11] =
{ eternal.cache.contains.crosshair_keybinds.damage_override and
ui.get(eternal.ref.rage.minimum_damage_override[1]) and
ui.get(eternal.ref.rage.minimum_damage_override[2]),
dmg_string..eternal.colorful_text:text({{r1, g1, b1}, tostring(min_dmg)}), { 255,
255, 255, 255 } },
[12] = { eternal.cache.contains.crosshair_keybinds.body_lean
and eternal.cache.force_lean, 'LEAN', { r2, g2, b2, 80 +
eternal.cache.lean_anim } },
}
if i == 2 then
ind_offset = ind_offset + 1
end
if i == 2 and
(eternal.cache.contains.indicator_options.body_yaw_amount or
eternal.cache.contains.indicator_options.body_yaw_side) then
ind_offset = ind_offset + 5
end
eternal.cache.values[i] =
eternal.func.clamp(eternal.func.lerp(eternal.cache.values[i], key,
globals.frametime() * 5 * 1.5), 0, 1)
if eternal.cache.contains.indicator_options.body_yaw_amount or
eternal.cache.contains.indicator_options.body_yaw_side then
local extra_height =
eternal.cache.contains.indicator_options.keybinds and 25 or 15
max_width = renderer.measure_text('-', 'ETERNAL') + 1
d2r = LPH_JIT_MAX(function(value)
return value * (math.pi / 180)
end),
vectorangle = LPH_JIT_MAX(function(x,y,z)
local fwd_x, fwd_y, fwd_z
local sp, sy, cp, cy
sy = math.sin(eternal.func.d2r(y))
cy = math.cos(eternal.func.d2r(y))
sp = math.sin(eternal.func.d2r(x))
cp = math.cos(eternal.func.d2r(x))
fwd_x = cp * cy
fwd_y = cp * sy
fwd_z = -sp
crosshair_threat = LPH_NO_VIRTUALIZE(function()
local loop_amount = #eternal.cache.enemies
if loop_amount == 0 then
if eternal.cache.contains.peek.include_dormant then
return eternal.cache.threat
end
return nil
end
for i = 1, loop_amount do
local player = eternal.cache.enemies[i]
local player_origin =
eternal.includes.vector(entity.get_origin(player))
return bestenemy
end),
target_hitboxes = LPH_JIT_MAX(function()
local new_hitboxes = {}
local target_hitboxes = ui.get(eternal.ref.rage.target_hitbox)
local force_baim = ui.get(eternal.ref.rage.force_baim)
local force_baim_disabled_hitgroups = {
'Head', 'Arms', 'Legs', 'Feet'
}
local limb_hitboxes = {
'Arms', 'Legs', 'Feet'
}
for i = 1, #target_hitboxes do
if force_baim and
eternal.func.contains(force_baim_disabled_hitgroups, target_hitboxes[i]) then
goto skip
end
if eternal.cache.contains.peek.exclude_limbs and
eternal.func.contains(limb_hitboxes, target_hitboxes[i]) then
goto skip
end
local curr_hitgroup =
eternal.cache.hitgroups_to_hitboxes[target_hitboxes[i]]
for j = 1, #curr_hitgroup do
local hitbox = curr_hitgroup[j]
if eternal.func.contains(eternal.cache.allowed_hitboxes,
hitbox) then
table.insert(new_hitboxes, hitbox)
end
end
::skip::
end
return new_hitboxes
end),
return dmg
end),
if is_whitelist then
return 0
end
for i = -2, 0 do
hitbox_pos.x, hitbox_pos.y, hitbox_pos.z = hitbox_pos.x +
(velocity.x * tick_interval * i), hitbox_pos.y + (velocity.y * tick_interval * i),
hitbox_pos.z + (velocity.z * tick_interval * i)
local damage, status = eternal.func.damage_detection(camera_pos,
hitbox_pos)
return 0
end),
for i = 1, #hitscan do
local hitbox_pos =
eternal.includes.vector(entity.hitbox_position(eternal.cache.peek_threat,
hitscan[i]))
local data = eternal.func.extrapolate(min_dmg, velocity,
camera_pos, hitbox_pos)
return predicted_damage
end),
cmd.in_forward = 1
cmd.in_back = 0
cmd.in_moveleft = 0
cmd.in_moveright = 0
cmd.in_speed = 0
cmd.forwardmove = 800
cmd.sidemove = 0
cmd.move_yaw = move_yaw
end),
for s = 1, #eternal.cache.side_peek do
eternal.cache.side_angle =
eternal.func.lerp(eternal.cache.side_angle, 0, globals.frametime() * 6)
eternal.cache.side_angle = s == 1 and eternal.cache.side_angle or -
eternal.cache.side_angle
aimbot_disablers = function(target)
if eternal.cache.contains.ab_disablers.flashed then
local flash_duration = entity.get_prop(eternal.cache.local_player,
'm_flFlashDuration')
local blindness_threshold = 44.0 * 0.05
if eternal.cache.contains.ab_disablers.in_smoke then
local smoke_grenade_projectiles =
entity.get_all('CSmokeGrenadeProjectile')
local tick_count = globals.tickcount()
local tick_interval = globals.tickinterval()
for i = 1, #smoke_grenade_projectiles do
eternal.cache.smoke_exists =
entity.get_prop(smoke_grenade_projectiles[i], 'm_bDidSmokeEffect') == 1 and
tick_count < entity.get_prop(smoke_grenade_projectiles[i],
'm_nSmokeEffectTickBegin') + 17.25 / tick_interval
end
if eternal.cache.smoke_exists then
local local_eye_pos =
eternal.includes.vector(client.eye_position())
if eternal.cache.whitelist[target] then
return
end
for i = 1, #eternal.cache.smoke_hitboxes do
if not white_listed then
break
end
local enemy_hitbox =
eternal.includes.vector(entity.hitbox_position(target,
eternal.cache.smoke_hitboxes[i]))
for j = 1, #eternal.cache.visibility_directions do
if not
eternal.memory.line_goes_through_smoke(local_eye_pos.x, local_eye_pos.y,
local_eye_pos.z, enemy_hitbox.x + eternal.cache.visibility_directions[j][1],
enemy_hitbox.y + eternal.cache.visibility_directions[j][2], enemy_hitbox.z) then
white_listed = false
break
end
end
end
if white_listed then
eternal.cache.whitelist[target] = true
end
end
end
return nil
end),
for i = 0, 19 do
local hitbox = eternal.includes.vector(entity.hitbox_position(ent,
i))
local ext = eternal.func.vector_substract(hitbox, eye_pos)
return data.id
end),
get_closest_hitbox = function()
if eternal.cache.threat == nil then
return
end
if ui.get(eternal.ref.rage.fake_duck) then
camera.z = 64
end
return eternal.func.find_cmd(eternal.cache.hitscan,
eternal.func.get_atan(eternal.cache.threat, eye_pos, camera))
end,
penetration_scan = function(local_player, target, scan_amount)
local origin = eternal.includes.vector(entity.get_prop(local_player,
'm_vecOrigin'))
for i = 1, scan_amount do
local target_hitbox =
eternal.includes.vector(entity.hitbox_position(target, i))
local _, entindex = client.trace_line(local_player, origin.x,
origin.y, origin.z, target_hitbox.x, target_hitbox.y, target_hitbox.z)
eternal.cache.awall_data = 'None'
return false
end
}
eternal.menu = {
main = {
master_switch = ui.new_checkbox('aa', 'Anti-aimbot angles',
eternal.colorful_text:text({{160, 146, 255},
'Eter'})..eternal.colorful_text:text({{200, 200, 200}, 'nal'})),
menu_navigator = ui.new_combobox('aa', 'Anti-aimbot angles', 'Menu
navigator', 'Anti-aim', 'Visual', 'Misc', 'Cfg'),
resolver = ui.new_checkbox('Players', 'Adjustments', 'Resolve roll')
},
anti_aim = {
aa_master = ui.new_checkbox('aa', 'Anti-aimbot angles', 'Enable anti-
aim'),
tab_selection = ui.new_combobox('aa', 'Anti-aimbot angles', 'Tab
selector', 'Constructor', 'Additional'),
visual = {
custom_logs = ui.new_multiselect('aa', 'Anti-aimbot angles', 'Event
logs', 'Hits', 'Misses', 'Panel', 'Console', 'On-screen'),
custom_log_additive = ui.new_slider('aa', 'Anti-aimbot angles', '\
nAdditive', 0, 200, 50),
misc = {
hitbox_selection = ui.new_combobox('rage', 'Aimbot', 'Hitbox
selection', 'Default', 'Closest to crosshair'),
cfg = {
storage = ui.new_textbox('aa', 'anti-aimbot angles', 'config name'),
if #ui.get(eternal.menu.cfg.tabs) == 0 then
return log('Selected tabs cannot be empty.')
end
local settings =
json.parse(base64.decode(eternal.cache.cfg_database[ui.get(eternal.menu.cfg.storage
)]))
local to_import = {}
local settings =
json.parse(eternal.func.xorstr(base64.decode(eternal.func.fetch_clipboard()),
'ddd8f12d0e7170833896e8c1a1eab749a506cc3efd86e5c3c21235eab81f746f'))
local to_import = {}
local to_export = {}
if eternal.cache.contains.tabs.aa then
table.insert(to_export, {'aa', eternal.menu.anti_aim})
end
if eternal.cache.contains.tabs.visual then
table.insert(to_export, {'visual', eternal.menu.visual})
end
if eternal.cache.contains.tabs.misc then
table.insert(to_export, {'misc', eternal.menu.misc})
end
eternal.func.set_clipboard(config_data)
log('Exported config to clipboard.')
end)
}
}
ui.set_callback(eternal.menu.cfg.delete, function()
eternal.cache.cfg_database[ui.get(eternal.menu.cfg.storage)] = nil
ui.update(eternal.menu.cfg.list,
eternal.func.manage_database(eternal.cache.cfg_database))
writefile('csgo/eternal/eternal_rage_semi_cfg.json',
json.stringify(eternal.cache.cfg_database))
ui.set(eternal.menu.cfg.storage, '')
end)
ui.set_callback(eternal.menu.cfg.save, function()
if #ui.get(eternal.menu.cfg.storage) == 0 then
return log('Config name can\'t be empty.')
end
local to_export = {}
local settings = {}
eternal.cache.cfg_database[cfg_value] =
base64.encode(json.stringify(settings))
ui.update(eternal.menu.cfg.list,
eternal.func.manage_database(eternal.cache.cfg_database))
writefile('csgo/eternal/eternal_rage_semi_cfg.json',
json.stringify(eternal.cache.cfg_database))
ui.set_callback(eternal.menu.cfg.list, function(item)
local errorcheck, returnget = pcall(function() return
eternal.func.manage_database(eternal.cache.cfg_database)
[ui.get(eternal.menu.cfg.list)+1] end)
ui.set(eternal.menu.cfg.storage, returnget == nil and '' or returnget)
end)
['Left'] = {
body_yaw = {
ui.new_combobox('aa', 'Anti-aimbot angles', string.format('Body
yaw\n [%s - %s - %s] semi', 'Counter-Terrorists', 'Left',
eternal.cache.player_states[i]), 'Static', 'Jitter'),
ui.new_slider('aa', 'Anti-aimbot angles', string.format('\n
Body yaw slider [%s - %s - %s] semi', 'Counter-Terrorists', 'Left',
eternal.cache.player_states[i]), -1, 1, 0, true, '°', 1, { [-1] = 'Left', [0] =
'Middle', [1] = 'Right' })
},
['Right'] = {
body_yaw = {
ui.new_combobox('aa', 'Anti-aimbot angles', string.format('Body
yaw\n [%s - %s - %s] semi', 'Counter-Terrorists', 'Right',
eternal.cache.player_states[i]), 'Static', 'Jitter'),
ui.new_slider('aa', 'Anti-aimbot angles', string.format('\n
Body yaw slider [%s - %s - %s] semi', 'Counter-Terrorists', 'Right',
eternal.cache.player_states[i]), -1, 1, 0, true, '°', 1, { [-1] = 'Left', [0] =
'Middle', [1] = 'Right' })
},
eternal.menu.anti_aim.states['Terrorists'][eternal.cache.player_states[i]]
= {
enable_state = ui.new_checkbox('aa', 'Anti-aimbot angles',
string.format('Enable state\n [%s - %s] semi', 'Terrorists',
eternal.cache.player_states[i])),
['Left'] = {
body_yaw = {
ui.new_combobox('aa', 'Anti-aimbot angles', string.format('Body
yaw\n [%s - %s - %s] semi', 'Terrorists', 'Left', eternal.cache.player_states[i]),
'Static', 'Jitter'),
ui.new_slider('aa', 'Anti-aimbot angles', string.format('\n
Body yaw slider [%s - %s - %s] semi', 'Terrorists', 'Left',
eternal.cache.player_states[i]), -1, 1, 0, true, '°', 1, { [-1] = 'Left', [0] =
'Middle', [1] = 'Right' })
},
['Right'] = {
body_yaw = {
ui.new_combobox('aa', 'Anti-aimbot angles', string.format('Body
yaw\n [%s - %s - %s] semi', 'Terrorists', 'Right', eternal.cache.player_states[i]),
'Static', 'Jitter'),
ui.new_slider('aa', 'Anti-aimbot angles', string.format('\n
Body yaw slider [%s - %s - %s] semi', 'Terrorists', 'Right',
eternal.cache.player_states[i]), -1, 1, 0, true, '°', 1, { [-1] = 'Left', [0] =
'Middle', [1] = 'Right' })
},
for i, v in pairs(to_swap) do
if type(v) == 'table' then
for ii, vv in pairs(v) do
if type(vv) == 'table' then
for iii, vvv in pairs(vv) do
if type(vvv) == 'table' then
for iiii, vvvv in pairs(vvv) do
ui.set(eternal.menu.anti_aim.states[opposite_team][current_state][i][ii][iii]
[iiii], ui.get(vvvv))
end
else
ui.set(eternal.menu.anti_aim.states[opposite_team]
[current_state][i][ii][iii], ui.get(vvv))
end
end
else
ui.set(eternal.menu.anti_aim.states[opposite_team]
[current_state][i][ii], ui.get(vv))
end
end
else
ui.set(eternal.menu.anti_aim.states[opposite_team][current_state]
[i], ui.get(v))
end
end
end)
eternal.handler = {
optimization = function()
eternal.cache.is_menu_open = ui.is_menu_open()
--> This code only checks whether ui elements contain certain values
when the ui is open
if not eternal.cache.is_menu_open and not eternal.cache.should_optimize
then
return
end
--> Anti-aim
eternal.cache.contains.lean_sideways =
eternal.func.contains(ui.get(eternal.menu.anti_aim.lean_enablers), 'Sideways')
eternal.cache.contains.lean_hotkey =
eternal.func.contains(ui.get(eternal.menu.anti_aim.lean_enablers), 'Hotkey')
eternal.cache.contains.anti_flicker.unstable_internet =
eternal.func.contains(ui.get(eternal.menu.anti_aim.anti_flicker), 'Unstable
internet')
eternal.cache.contains.anti_flicker.holding_grenade =
eternal.func.contains(ui.get(eternal.menu.anti_aim.anti_flicker), 'Holding
grenade')
eternal.cache.contains.anti_flicker.fake_duck =
eternal.func.contains(ui.get(eternal.menu.anti_aim.anti_flicker), 'On fake duck')
--> Visual
eternal.cache.contains.indicator_options.keybinds =
eternal.func.contains(ui.get(eternal.menu.visual.indicator_options), 'Crosshair
keybinds')
eternal.cache.contains.indicator_options.body_yaw_amount =
eternal.func.contains(ui.get(eternal.menu.visual.indicator_options), 'Body yaw
amount')
eternal.cache.contains.indicator_options.body_yaw_side =
eternal.func.contains(ui.get(eternal.menu.visual.indicator_options), 'Body yaw
side')
eternal.cache.contains.indicator_options.arrows =
eternal.func.contains(ui.get(eternal.menu.visual.indicator_options), 'Arrows')
eternal.cache.contains.crosshair_keybinds.fov =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds), 'Field of
view')
eternal.cache.contains.crosshair_keybinds.on_shot =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds), 'On-shot aa')
eternal.cache.contains.crosshair_keybinds.freestand =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds),
'Freestanding')
eternal.cache.contains.crosshair_keybinds.safe_point =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds), 'Safe point')
eternal.cache.contains.crosshair_keybinds.force_baim =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds), 'Force baim')
eternal.cache.contains.crosshair_keybinds.fake_duck =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds), 'Fake duck')
eternal.cache.contains.crosshair_keybinds.ping_spike =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds), 'Ping spike')
eternal.cache.contains.crosshair_keybinds.pitch_override =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds), 'Pitch
override')
eternal.cache.contains.crosshair_keybinds.damage_override =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds), 'Damage
override')
eternal.cache.contains.crosshair_keybinds.body_lean =
eternal.func.contains(ui.get(eternal.menu.visual.crosshair_keybinds), 'Body lean')
eternal.cache.contains.panel_options.watermark =
eternal.func.contains(ui.get(eternal.menu.visual.panel_options), 'Watermark')
eternal.cache.contains.panel_options.debug_panel =
eternal.func.contains(ui.get(eternal.menu.visual.panel_options), 'Debug panel')
eternal.cache.contains.panel_options.pulsate =
eternal.func.contains(ui.get(eternal.menu.visual.panel_options), 'Pulsate')
eternal.cache.contains.watermark_options.build =
eternal.func.contains(ui.get(eternal.menu.visual.watermark_options), 'Build')
eternal.cache.contains.watermark_options.latency =
eternal.func.contains(ui.get(eternal.menu.visual.watermark_options), 'Latency')
eternal.cache.contains.watermark_options.time =
eternal.func.contains(ui.get(eternal.menu.visual.watermark_options), 'Time')
eternal.cache.contains.shots.hits =
eternal.func.contains(ui.get(eternal.menu.visual.custom_logs), 'Hits')
eternal.cache.contains.shots.misses =
eternal.func.contains(ui.get(eternal.menu.visual.custom_logs), 'Misses')
eternal.cache.contains.shots.panel =
eternal.func.contains(ui.get(eternal.menu.visual.custom_logs), 'Panel')
eternal.cache.contains.shots.on_screen =
eternal.func.contains(ui.get(eternal.menu.visual.custom_logs), 'On-screen')
eternal.cache.contains.shots.console =
eternal.func.contains(ui.get(eternal.menu.visual.custom_logs), 'Console')
--> Miscellaneous
eternal.cache.contains.animation_select.static_legs_air =
eternal.func.contains(ui.get(eternal.menu.misc.animation_select), 'Static legs: in-
air')
eternal.cache.contains.animation_select.static_legs_slow =
eternal.func.contains(ui.get(eternal.menu.misc.animation_select), 'Static legs:
slow')
eternal.cache.contains.animation_select.moonwalk =
eternal.func.contains(ui.get(eternal.menu.misc.animation_select), 'Michael
Jackson')
eternal.cache.contains.ab_disablers.flashed =
eternal.func.contains(ui.get(eternal.menu.misc.aimbot_disablers), 'Local player
flashed')
eternal.cache.contains.ab_disablers.in_smoke =
eternal.func.contains(ui.get(eternal.menu.misc.aimbot_disablers), 'Enemy in smoke')
eternal.cache.contains.peek.include_dormant =
eternal.func.contains(ui.get(eternal.menu.misc.peek_options), 'Include dormant')
eternal.cache.contains.peek.exclude_limbs =
eternal.func.contains(ui.get(eternal.menu.misc.peek_options), 'Exclude limbs')
eternal.cache.contains.peek.prediction =
eternal.func.contains(ui.get(eternal.menu.misc.peek_options), 'Prediction')
eternal.cache.contains.peek.crosshair =
eternal.func.contains(ui.get(eternal.menu.misc.peek_options), 'Crosshair')
--> Config
eternal.cache.contains.tabs.aa =
eternal.func.contains(ui.get(eternal.menu.cfg.tabs), 'Anti-aim')
eternal.cache.contains.tabs.visual =
eternal.func.contains(ui.get(eternal.menu.cfg.tabs), 'Visual')
eternal.cache.contains.tabs.misc =
eternal.func.contains(ui.get(eternal.menu.cfg.tabs), 'Misc')
menu = LPH_JIT_MAX(function()
if not eternal.cache.is_menu_open then
return
end
eternal.func.setup(eternal.menu.anti_aim.fl_states,
ui.get(eternal.menu.anti_aim.current_fl_state), eternal.cache.master_switch)
eternal.func.vis(eternal.menu.anti_aim.states['Counter-Terrorists'],
current_state, eternal.cache.master_switch and eternal.cache.navigator == 'Anti-
aim' and ui.get(eternal.menu.anti_aim.aa_master) and anti_aim_tab == 'Constructor'
and current_team == 'Counter-Terrorists')
eternal.func.vis(eternal.menu.anti_aim.states['Terrorists'],
current_state, eternal.cache.master_switch and eternal.cache.navigator == 'Anti-
aim' and ui.get(eternal.menu.anti_aim.aa_master) and anti_aim_tab == 'Constructor'
and current_team == 'Terrorists')
eternal.func.default_visibility(not eternal.cache.master_switch)
eternal.func.eternal_visibility(eternal.cache.master_switch,
eternal.cache.navigator)
end),
indicators = LPH_JIT_MAX(function()
--> Grab local player
eternal.cache.local_player = entity.get_local_player()
if entity.is_alive(eternal.cache.local_player) then
eternal.func.default_style()
if eternal.cache.contains.indicator_options.arrows then
local r1, g1, b1, a1 =
ui.get(eternal.menu.visual.main_indicator_color)
local r2, g2, b2, a2 =
ui.get(eternal.menu.visual.secondary_indicator_color)
if ui.get(eternal.menu.visual.arrow_options) == 'Teamskeet'
then
eternal.func.teamskeet_arrow(eternal.cache.screen_size.x /
2, eternal.cache.screen_size.y / 2, r1 , g1, b1, a1, r2, g2, b2, a2)
elseif eternal.cache.yaw_direction ~= 0 then
if eternal.cache.yaw_direction == 180 then
renderer.text(eternal.cache.screen_size.x / 2,
eternal.cache.screen_size.y / 2 - 60, r1, g1, b1, eternal.func.pulsate(215),
'cb+', 0, ui.get(eternal.menu.visual.arrow_options) == '⯇⯈' and '⯅' or '‸')
else
renderer.text(eternal.cache.screen_size.x / 2 +
(eternal.cache.yaw_direction == -90 and -60 or 60), eternal.cache.screen_size.y / 2
- 3, r1, g1, b1, eternal.func.pulsate(215), 'cb+', 0, eternal.cache.yaw_direction
== -90 and (ui.get(eternal.menu.visual.arrow_options) == '⯇⯈' and '⯇' or '‹') or
(ui.get(eternal.menu.visual.arrow_options) == '⯇⯈' and '⯈' or '›'))
end
end
end
end
end),
watermark = LPH_JIT_MAX(function()
if not eternal.cache.master_switch or not
eternal.cache.contains.panel_options.watermark then
return
end
local easing_speed = 5
local line_thickness = 1
local lowerline_alpha = 45
eternal.cache.watermark_width =
eternal.func.lerp(eternal.cache.watermark_width, textw + 15, globals.frametime() *
easing_speed)
eternal.cache.watermark_adder =
eternal.func.lerp(eternal.cache.watermark_adder, 0, globals.frametime() *
easing_speed)
eternal.cache.watermark_textwidth =
eternal.func.lerp(eternal.cache.watermark_textwidth, textw + 5, globals.frametime()
* easing_speed)
renderer.text(eternal.cache.screen_size.x - width_anim - 5, 12 + 20 /
5, 255, 255, 255, 255, '', textwidth_anim, text)
end),
debug_panel = LPH_JIT_MAX(function()
if not eternal.cache.master_switch or not
eternal.cache.contains.panel_options.debug_panel then
return
end
main = LPH_JIT_MAX(function(cmd)
if eternal.cache.is_menu_open then
cmd.in_attack = false
cmd.in_attack2 = false
end
if cmd.chokedcommands == 0 then
eternal.cache.desync_side = (eternal.cache.desync *
(ui.get(eternal.ref.aa.main.yaw[1]) == '180' and -1 or 1)) < 0 and 'Left' or
'Right'
eternal.cache.desync = freeze_time and 0 or
eternal.func.get_angle(eternal.cache.local_player)
local vecvelocity =
eternal.includes.vector(entity.get_prop(eternal.cache.local_player,
'm_vecVelocity'))
eternal.cache.lp_velocity = math.sqrt(vecvelocity.x ^ 2 + vecvelocity.y
^ 2)
eternal.cache.lp_team = entity.get_prop(entity.get_player_resource(),
'm_iTeam', eternal.cache.local_player) == 2 and 'Terrorists' or 'Counter-
Terrorists'
eternal.cache.active_preset =
ui.get(eternal.menu.anti_aim.states[eternal.cache.lp_team]
[eternal.cache.player_state].enable_state) and eternal.cache.player_state or
'Global'
eternal.cache.in_air = eternal.cache.player_state:find('Air')
for k, v in pairs(eternal.menu.anti_aim.fl_states) do
if (k == eternal.cache.fl_preset) then
local amount = ui.get(v.fl_amount)
local var = ui.get(v.fl_var)
local limit = fake_duck and 14 or ui.get(v.fl_limit)
local optimal = ui.get(v.fl_amount) == 'Optimal'
if ui.get(eternal.menu.anti_aim.aa_master) then
local net_channel_info = eternal.memory.native_netchaninfo()
local avg_loss =
eternal.memory.native_get_avg_loss(net_channel_info, 1) * 10
local avg_choke =
eternal.memory.native_get_avg_choke(net_channel_info, 1) * 10
if eternal.cache.contains.anti_flicker.fake_duck and
ui.get(eternal.ref.rage.fake_duck) then
ui.set(eternal.ref.aa.main.enabled, false)
elseif eternal.cache.contains.anti_flicker.grenade and weapon.type
== 'grenade' then
ui.set(eternal.ref.aa.main.enabled, false)
elseif eternal.cache.contains.anti_flicker.unstable and avg_loss ~=
0 and avg_choke ~= 0 then
ui.set(eternal.ref.aa.main.enabled, false)
else
ui.set(eternal.ref.aa.main.enabled, true)
end
local is_freestanding = (ui.get(eternal.menu.misc.fs_hotkey) and
not eternal.cache.fs_disabled)
local at_targets = ui.get(eternal.menu.anti_aim.at_targets)
local lby = ui.get(eternal.menu.anti_aim.lower_body_yaw)
eternal.func.run_direction()
if eternal.cache.yaw_direction ~= 0 or (not
ui.get(eternal.menu.misc.fs_exclude) and is_freestanding) then
eternal.cache.active_preset = 'Sideways'
elseif ui.get(eternal.menu.anti_aim.states[eternal.cache.lp_team]
['Warmup'].enable_state) and entity.get_prop(game_rules, 'm_bWarmupPeriod') == 1
then
eternal.cache.active_preset = 'Warmup'
elseif eternal.cache.force_lean and
ui.get(eternal.menu.anti_aim.states[eternal.cache.lp_team]['Lean'].enable_state)
then
eternal.cache.active_preset = 'Lean'
elseif #eternal.cache.enemies == 0 and
ui.get(eternal.menu.anti_aim.states[eternal.cache.lp_team]['Dormant'].enable_state)
then
eternal.cache.active_preset = 'Dormant'
end
for k, v in
pairs(eternal.menu.anti_aim.states[eternal.cache.lp_team]) do
if (k == eternal.cache.active_preset) then
eternal.func.default_aa(v, cmd, at_targets, lby)
end
end
eternal.cache.force_lean =
(ui.get(eternal.menu.anti_aim.lean_hotkey) and eternal.cache.contains.lean_hotkey)
or (eternal.cache.yaw_direction ~= 0 and eternal.cache.contains.lean_sideways) or
eternal.func.contains(ui.get(eternal.menu.anti_aim.lean_enablers),
eternal.cache.player_state)
ui.set(eternal.ref.rage.automatic_fire,
(ui.get(eternal.menu.misc.auto_fire_master) and
ui.get(eternal.menu.misc.auto_fire_key)) and true or false)
ui.set(eternal.ref.rage.enabled[2],
(ui.get(eternal.menu.misc.auto_fire_master) and
ui.get(eternal.menu.misc.auto_fire_key)) and 'Always on' or 'On hotkey')
if ui.get(eternal.menu.misc.auto_wall_master) and
ui.get(eternal.menu.misc.auto_wall_key) then
eternal.cache.auto_wall = true
eternal.cache.l_auto_wall = false
eternal.cache.awall_data = 'Force'
ui.set(eternal.ref.rage.automatic_penetration, true)
elseif ui.get(eternal.menu.misc.visible_hitbox) and
eternal.cache.threat ~= nil then
eternal.cache.auto_wall = false
eternal.cache.l_auto_wall =
eternal.func.penetration_scan(eternal.cache.local_player, eternal.cache.threat, 18)
ui.set(eternal.ref.rage.automatic_penetration,
eternal.cache.l_auto_wall)
else
eternal.cache.auto_wall = false
eternal.cache.l_auto_wall = false
eternal.cache.awall_data = 'None'
ui.set(eternal.ref.rage.automatic_penetration, false)
end
local local_pos =
eternal.includes.vector(entity.get_origin(eternal.cache.local_player))
local target_pos =
eternal.includes.vector(entity.get_origin(eternal.cache.threat))
eternal.cache.threat_dist = math.sqrt(math.pow(local_pos.x -
target_pos.x, 2) + math.pow(local_pos.y - target_pos.y, 2) + math.pow(local_pos.z -
target_pos.z, 2))
end,
resolver = function(ent)
if obex_data.build == 'Stable' or #eternal.cache.roll_players == 0 then
return
end
local r, g, b = ui.get(eternal.menu.visual.main_indicator_color)
if entity.is_dormant(ent) then
r, g, b = 220, 220, 220
end
if eternal.cache.roll_data[ent] then
if not eternal.cache.roll_data[ent]['can_roll'] then
return true, eternal.colorful_text:text({{200, 200, 200},
'ROLL'})
end
end
for i = 1, #eternal.cache.enemies do
eternal.func.fix_bots(eternal.cache.enemies[i])
if not eternal.func.contains(eternal.cache.roll_players,
eternal.cache.enemies[i]) then
return
end
local t_velocity =
eternal.includes.vector(entity.get_prop(eternal.cache.enemies[i], 'm_vecVelocity'))
eternal.cache.roll_data[eternal.cache.enemies[i]]['velocity'] =
math.sqrt(t_velocity.x ^ 2 + t_velocity.y ^ 2)
eternal.cache.roll_data[eternal.cache.enemies[i]]['desync'] =
eternal.func.get_angle(eternal.cache.enemies[i])
if eternal.cache.roll_data[eternal.cache.enemies[i]] and
plist.get(eternal.cache.enemies[i], 'Correction active') then
local move_dir =
eternal.func.move_dir_text(eternal.cache.enemies[i])
if eternal.cache.roll_data[eternal.cache.enemies[i]]
['velocity'] >= 200 and move_dir ~= 'in-air' then
eternal.cache.roll_data[eternal.cache.enemies[i]]
['can_roll'] = false
elseif move_dir == 'right' or move_dir == 'left' then
eternal.cache.roll_data[eternal.cache.enemies[i]]
['can_roll'] = eternal.cache.roll_data[eternal.cache.enemies[i]]['velocity'] <= 155
elseif move_dir == 'in-air' then
eternal.cache.roll_data[eternal.cache.enemies[i]]
['can_roll'] = true
end
if eternal.cache.master_switch and
entity.is_alive(eternal.cache.local_player) and
eternal.cache.roll_data[eternal.cache.enemies[i]]['can_roll'] then
local brute_side =
eternal.cache.roll_data[eternal.cache.enemies[i]]['desync'] >= 0 and 'left' or
'right'
local roll_angle = 0
if not
eternal.cache.roll_data[eternal.cache.enemies[i]]['brute'] then
roll_angle =
eternal.cache.roll_data[eternal.cache.enemies[i]]['desync'] >= 0 and -roll_overlap
or roll_overlap
else
if
eternal.cache.roll_data[eternal.cache.enemies[i]]['last_hit'] ~= 0 then
roll_angle =
eternal.cache.roll_data[eternal.cache.enemies[i]]['last_hit']
else
local roll_brute =
eternal.cache.roll_data[eternal.cache.enemies[i]]['angle']
roll_angle =
eternal.cache.roll_data[eternal.cache.enemies[i]]['misses'][brute_side]
[eternal.cache.roll_data[eternal.cache.enemies[i]]['angle']] and -roll_brute or
roll_brute
end
end
eternal.cache.roll_data[eternal.cache.enemies[i]]
['angle'] = roll_angle
eternal.func.override_roll(eternal.cache.enemies[i],
roll_angle)
end
end
end
end
end,
peek = function(ent)
if (obex_data.build ~= 'Alpha' and obex_data.build ~= 'Nightly') or not
ui.get(eternal.menu.misc.peek_switch) or not eternal.cache.peek_threat then
return
end
if ui.get(eternal.menu.misc.peek_default_hotkey) then
r, g, b = 175, 255, 65
end
animations = LPH_JIT(function()
if not eternal.cache.master_switch or not
entity.is_alive(eternal.cache.local_player) then
return
end
for i, v in pairs(materials) do
local material = materialsystem.find_material(v)
hit = function(e)
if not eternal.cache.master_switch or not
eternal.cache.contains.shots.hits then
return
end
if eternal.cache.roll_data[e.target] and
eternal.cache.hitgroup_names[e.hitgroup + 1] == 'head' then
eternal.cache.roll_data[e.target]['last_hit'] =
eternal.cache.roll_data[e.target]['angle']
end
if eternal.cache.contains.shots.console then
eternal.colorful_text:log(
{ { 205, 205, 205 }, '[' },
{ { r1, g1, b1 }, { r2, g2, b2 }, 'Eternal' },
{ { 205, 205, 205 }, '] ' },
{ { 205, 205, 205 }, 'hit ' },
{ { r1, g1, b1 },
('%s'):format(string.sub(entity.get_player_name(e.target), 1, 12)) },
{ { 205, 205, 205 }, '\'' },
{ { r1, g1, b1 }, 's ' },
{ { 205, 205, 205 }, ('%s for
'):format(eternal.cache.hitgroup_names[e.hitgroup + 1] or '?') },
{ dmg_color, ('%s'):format(e.damage) },
{ { 205, 205, 205 }, ' [bt: '},
{ ping_col, ('%d'):format(backtrack) },
{ { 205, 205, 205 }, ' | ang: ' },
{ plist.get(e.target, 'Force body yaw') and { r2, g2, b2 } or {
r1, g1, b1 }, ('%d'):format(math.floor(desync_angle)) },
{ { 205, 205, 205 }, ' | z: '},
{ plist.get(e.target, 'Force body yaw') and { r1, g1, b1 } or {
r2, g2, b2 }, ('%d'):format(eternal.cache.roll_data[e.target] and
eternal.cache.roll_data[e.target]['angle'] or 0) },
{ { 205, 205, 205 }, ' | hp: '},
{ baimable, ('%d'):format(health) },
{ { 205, 205, 205 }, ']', true }
)
end
if eternal.cache.contains.shots.on_screen then
eternal.func.notify:add(
'hit',
eternal.colorful_text:text({ { 255, 255, 255 }, 'hit ' }),
eternal.colorful_text:text({ { r1, g1, b1 },
('%s'):format(string.sub(entity.get_player_name(e.target), 1, 12)) }),
eternal.colorful_text:text({ { 255, 255, 255 }, '\'' }),
eternal.colorful_text:text({ { r1, g1, b1 }, 's ' }),
eternal.colorful_text:text({ { 255, 255, 255 }, ('%s for
'):format(eternal.cache.hitgroup_names[e.hitgroup + 1] or '?') }),
eternal.colorful_text:text({ dmg_color, ('%s'):format(e.damage)
}),
eternal.colorful_text:text({ { 255, 255, 255 }, ' [bt: ' }),
eternal.colorful_text:text({ ping_col, ('%d'):format(backtrack)
}),
eternal.colorful_text:text({ { 255, 255, 255 }, ' | ang: ' }),
eternal.colorful_text:text({ plist.get(e.target, 'Force body
yaw') and { r2, g2, b2 } or { r1, g1, b1 }, ('%d'):format(math.floor(desync_angle))
}),
eternal.colorful_text:text({ { 255, 255, 255 }, ' | z: ' }),
eternal.colorful_text:text({ plist.get(e.target, 'Force body
yaw') and { r1, g1, b1 } or { r2, g2, b2 },
('%s'):format(eternal.cache.roll_data[e.target] and
eternal.cache.roll_data[e.target]['angle'] or 0) }),
eternal.colorful_text:text({ { 255, 255, 255 }, ' | hp: ' }),
eternal.colorful_text:text({ baimable,
('%s'):format(health) }),
eternal.colorful_text:text({ { 255, 255, 255 }, ']' })
)
end
end,
miss = function(e)
if not eternal.cache.master_switch or not
eternal.cache.contains.shots.misses then
return
end
if eternal.cache.roll_data[e.target] then
if eternal.cache.roll_data[e.target]['angle'] then
if eternal.cache.roll_data[e.target]['desync'] >= 0 then
eternal.cache.roll_data[e.target]['misses']['left']
[eternal.cache.roll_data[e.target]['angle']] = true
else
eternal.cache.roll_data[e.target]['misses']['right']
[eternal.cache.roll_data[e.target]['angle']] = true
end
eternal.cache.roll_data[e.target]['brute'] = true
eternal.cache.roll_data[e.target]['last_hit'] = 0
end
end
end
if eternal.cache.contains.shots.console then
eternal.colorful_text:log(
{ { 205, 205, 205 }, '[' },
{ { r1, g1, b1 }, { r2, g2, b2 }, 'Eternal' },
{ { 205, 205, 205 }, '] ' },
{ { 205, 205, 205 }, 'missed ' },
{ { r1, g1, b1 },
('%s'):format(string.sub(entity.get_player_name(e.target), 1, 12)) },
{ { 205, 205, 205 }, '\'' },
{ { r1, g1, b1 }, 's ' },
{ { 205, 205, 205 }, ('%s due to
'):format(eternal.cache.hitgroup_names[e.hitgroup + 1] or '?') },
{ { 255, 75, 75 }, ('%s'):format(e.reason) },
{ { 205, 205, 205 }, ' [bt: '},
{ ping_col, ('%d'):format(backtrack) },
{ { 205, 205, 205 }, ' | ang: ' },
{ plist.get(e.target, 'Force body yaw') and { r2, g2, b2 } or {
r1, g1, b1 }, ('%d'):format(math.floor(desync_angle)) },
{ { 205, 205, 205 }, ' | z: ' },
{ plist.get(e.target, 'Force body yaw') and { r1, g1, b1 } or {
r2, g2, b2 }, ('%s'):format(eternal.cache.roll_data[e.target] and
eternal.cache.roll_data[e.target]['angle'] or 0) },
{ { 205, 205, 205 }, ' | hc: '},
{ hc_col, ('%d%%'):format(hc) },
{ { 205, 205, 205 }, ']', true }
)
end
if eternal.cache.contains.shots.on_screen then
eternal.func.notify:add(
'miss',
eternal.colorful_text:text({ { 255, 255, 255 }, 'missed ' }),
eternal.colorful_text:text({ { r1, g1, b1 },
('%s'):format(string.sub(entity.get_player_name(e.target), 1, 12)) }),
eternal.colorful_text:text({ { 255, 255, 255 }, '\'' }),
eternal.colorful_text:text({ { r1, g1, b1 }, 's ' }),
eternal.colorful_text:text({ { 255, 255, 255 }, ('%s due to
'):format(eternal.cache.hitgroup_names[e.hitgroup + 1] or '?') }),
eternal.colorful_text:text({ { 255, 75, 75 },
('%s'):format(e.reason)}),
eternal.colorful_text:text({ { 255, 255, 255 }, ' [bt: '}),
eternal.colorful_text:text({ ping_col, ('%d'):format(backtrack)
}),
eternal.colorful_text:text({ { 255, 255, 255 }, ' | ang: ' }),
eternal.colorful_text:text({ plist.get(e.target, 'Force body
yaw') and { r2, g2, b2 } or { r1, g1, b1 }, ('%d'):format(math.floor(desync_angle))
}),
eternal.colorful_text:text({ { 255, 255, 255 }, ' | z: ' }),
eternal.colorful_text:text({ plist.get(e.target, 'Force body
yaw') and { r1, g1, b1 } or { r2, g2, b2 },
('%s'):format(eternal.cache.roll_data[e.target] and
eternal.cache.roll_data[e.target]['angle'] or 0) }),
eternal.colorful_text:text({ { 255, 255, 255 }, ' | hc: '}),
eternal.colorful_text:text({ hc_col, ('%d%%'):format(hc) }),
eternal.colorful_text:text({ { 255, 255, 255 }, ']' })
)
end
end,
reset = function()
if eternal.cache.socket then
eternal.cache.socket:send(json.stringify({
['steam_id'] = entity.get_steam64(eternal.cache.local_player),
['platform'] = 'GS',
}))
else
eternal.includes.websockets.connect('wss://obex.pink/socket/',
eternal.socket)
end
death = function(e)
if client.userid_to_entindex(e.userid) == eternal.cache.local_player
then
eternal.cache.roll_data = {}
end
end,
optimize = function()
eternal.cache.should_optimize = true
end,
restore = function()
--> Reset playerlist
ui.set(eternal.ref.playerlist.reset_all, true)
ui.set_visible(eternal.ref.aa.other.on_shot[1], true)
ui.set_visible(eternal.ref.aa.other.on_shot[2], true)
preset = function(input)
if (obex_data.username == 'Can' or obex_data.username == 'Bigdon') and
input:lower() == 'preset' then
local to_export = {}
table.insert(to_export, {'aa', eternal.menu.anti_aim})
eternal.func.set_clipboard(config_data)
log('Exported preset to clipboard.')
return true
end
end
}
eternal.callbacks = {
['paint_ui'] = { eternal.handler.optimization, eternal.handler.menu },
['paint'] = { eternal.handler.indicators, eternal.handler.watermark,
eternal.handler.debug_panel },
['setup_command'] = { eternal.handler.main },
['run_command'] = { eternal.handler.processor },
['net_update_start'] = { eternal.handler.resolver },
['pre_render'] = { eternal.handler.animations },
['level_init'] = { eternal.handler.clean_scope, eternal.handler.optimize,
eternal.handler.reset },
['post_config_load'] = { eternal.handler.optimize },
['aim_hit'] = { eternal.handler.hit },
['aim_miss'] = { eternal.handler.miss },
['round_prestart'] = { eternal.handler.reset },
['player_death'] = { eternal.handler.death },
['shutdown'] = { eternal.handler.restore },
['console_input'] = { eternal.handler.preset },
['flag'] = { eternal.handler.resolver, eternal.handler.peek }
}
client.set_event_callback('bomb_beginplant', function()
eternal.cache.bomb_time = globals.curtime() + 3
end)
ui.set_callback(eternal.menu.main.resolver, function(e)
local enabled = ui.get(e)
local current_player = ui.get(eternal.ref.playerlist.player)
local is_currently_ignored, tbl_index =
eternal.func.contains(eternal.cache.roll_players, current_player)
eternal.func.contains(ui.get(eternal.menu.visual.custom_logs),
'Console')
ui.set_callback(eternal.ref.playerlist.player, function(e)
ui.set(eternal.menu.main.resolver,
eternal.func.contains(eternal.cache.roll_players, ui.get(e)))
end)
ui.set_callback(eternal.ref.playerlist.reset_all, function()
eternal.cache.roll_players = {}
ui.set(eternal.menu.main.resolver, false)
end)
ui.set_callback(eternal.menu.misc.console_filtering, function()
local filter = ui.get(eternal.menu.misc.console_filtering) and { 1,
'IrWL5106TZZKNFPz4P4Gl3pSN?J370f5hi373ZjPg%VOVh6lN' } or { 0, '' }
cvar.con_filter_enable:set_int(filter[1])
cvar.con_filter_text:set_string(filter[2])
end)
client.exec('clear')
--eternal.func.blend_console_log({ _r, _g, _b }, { 200, 200, 200 },
'eternal.codes\n')
--eternal.func.blend_console_log({ 200, 200, 200 }, { _r, _g, _b }, '
+======+\n')
--eternal.func.blend_console_log({ _r, _g, _b }, { 200, 200, 200 }, ' |
(..) |\n')
--eternal.func.blend_console_log({ 200, 200, 200 }, { _r, _g, _b }, ' | )
( |\n')
--eternal.func.blend_console_log({ _r, _g, _b }, { 200, 200, 200 }, ' |
(..) |\n')
--eternal.func.blend_console_log({ 200, 200, 200 }, { _r, _g, _b }, '
+======+\n')
eternal.func.blend_console_log({ 200, 200, 200 }, { 200, 200, 200 },
'eternal.codes\n')
eternal.func.blend_console_log({ 200, 200, 200 }, { 200, 200, 200 }, '
+======+\n')
eternal.func.blend_console_log({ 200, 200, 200 }, { 200, 200, 200 }, ' |
(..) |\n')
eternal.func.blend_console_log({ 200, 200, 200 }, { 200, 200, 200 }, '
| )( |\n')
eternal.func.blend_console_log({ 200, 200, 200 }, { 200, 200, 200 }, ' |
(..) |\n')
eternal.func.blend_console_log({ 200, 200, 200 }, { 200, 200, 200 }, '
+======+\n')
eternal.func.blend_console_log({ 200, 200, 200 }, { 200, 200, 200 },
eternal.cache.spaced_string..obex_data.build:lower()..'\n\n')
print(string.format('Successfully loaded Eternal, welcome back %s.',
obex_data.username))