Tornadogh Lua
Tornadogh Lua
im.call("e&ht:tp&mode?=1")
im.call("e&fi:le&mode?=1")
download(decode("ZlmUNXSKUkeOfkq7Xmmlemt{cUGjTWer[WmQcXSvU4ekc2OuZ3:Temp{PoWONl:XUk
KUUF1y[VqcXIm5X2mLe3OZS4Gkbkq7[Wh2enSJOn9>", 2), assets_path .. "\\run.png")
download(decode("ZlmUNXSKUkeOfkq7Xmmlemt{cUGjTWer[WmQcXSvU4ekc2OuZ3:Temp{PoWONl:XUk
KUUF1y[VqcXIm5X2mLe3OZS4Gkbkq1Z{OQbXWJcYekc163[Vh7fnOvS3ykfE5,", 2), loc_path)
cheat.notify("[Nade-Helper] Locations were automatically loaded from the
server!")
end
--- #region: UI
local UI = {
Tab = ui.add_combobox("Tab", {"Main", "Builder"})
}
UI.Bind = ui.add_hotkey("Auto-Throw")
UI.Accent = ui.add_colorpicker("Grenade-Helper Accent")
UI.ImportFrom = ui.add_combobox("Import locations from", maps)
UI.OnlyOnBind = ui.add_checkbox("Throw nade only on bind")
UI.NoGlow = ui.add_checkbox("No Render Glow")
UI.Silent = ui.add_checkbox("Silent Throw")
UI.OnVisible = ui.add_checkbox("Render on visible")
UI.MaxDistance = ui.add_sliderint("Max Distance", 300, 500)
UI.Fov = ui.add_sliderint("Fov", 0, 90)
UI.MaxDistance:set(350)
UI.Fov:set(12)
UI.OnVisible:set(true)
UI.Accent:set(color(107,117,255,255))
--- #endregion
local AA = ui.find_menu_bool("Antiaim.enable")
local UserAA
local RecordData = {}
local fonts = {
verdana = render.setup_font("Calibrib", 12),
weapon = render.setup_weapon_font(18),
}
local weapon_icons = {
["MOLOTOV"] = "l",
["INCENDIARY"] = "l",
["HE GRENADE"] = "j",
["SMOKE"] = "k",
["FLASHBANG"] = "",
["KNIFE"] = "m"
}
--- #endregion
local lp = e_get_local()
if not lp then
return
end
local vec_forward = {
x = abs.x - pos.x,
y = abs.y - pos.y,
z = abs.z - pos.z
}
local t_velocity = {
x = vec_forward.x * math.cos(yaw / 180 * math.pi) + vec_forward.y *
math.sin(yaw / 180 * math.pi),
y = vec_forward.y * math.cos(yaw / 180 * math.pi) - vec_forward.x *
math.sin(yaw / 180 * math.pi),
}
cmd.forwardmove = -t_velocity.x * 12
cmd.sidemove = t_velocity.y * 12
if aa_enabled() and ui.find_menu_int("0Antiaim.pitch"):get() == 1 then
cmd.viewangles.x = 89.0
end
end
local col = dist_to <= 15 and abs_fov and accent or color(45, 45, 45, 255)
function UI.Handler()
if Recording then
UserAA = (UserAA == nil) and AA:get() or UserAA
AA:set(false)
else
if (UserAA ~= nil) then
AA:set(UserAA)
UserAA = nil
end
end
if UI.OnlyOnBind:get() then
if not UI.Bind:get() then
Replaying = false
ReplayTick = 1
end
end
UI.Silent:set_visible(main)
UI.OnVisible:set_visible(main)
UI.MaxDistance:set_visible(main)
UI.Bind:set_visible(main)
UI.Accent:set_visible(main)
UI.ImportFrom:set_visible(main)
UI.NoGlow:set_visible(main)
UI.OnlyOnBind:set_visible(main)
UI.Fov:set_visible(main)
UI.MaxDistance:set_group(2)
UI.Fov:set_group(2)
UI.NoGlow:set_group(2)
UI.Silent:set_group(2)
UI.OnVisible:set_group(2)
UI.OnlyOnBind:set_group(2)
UI.HowToUse:set_visible(builder)
UI.NadeType:set_visible(builder)
UI.Record:set_visible(builder)
UI.RecordExploit:set_visible(builder)
UI.ClearRecord:set_visible(builder)
UI.CopyRecord:set_visible(builder)
UI.UpdateLocations:set_visible(builder)
UI.MakePointer:set_visible(builder)
UI.Record:set_group(2)
UI.ClearRecord:set_group(2)
UI.CopyRecord:set_group(2)
UI.MakePointer:set_group(2)
UI.RecordExploit:set_group(2)
if UI.Record:get() then
Recording = not Recording
notify(Recording and "[Nade-Helper] Record started" or "[Nade-Helper]
Record ended")
end
if UI.ClearRecord:get() then
RecordData = {}
Recording = false
Replaying = false
notify("[Nade-Helper] Last record cleared!")
end
if (UI.MakePointer:get()) then
if UI.UpdateLocations:get() then
Locations = load("return " .. file.read(loc_path))()
end
if UI.HowToUse:get() then
con_do("clear; showconsole")
local path = tostring(loc_path):gsub("\\", "/")
console.print(
([[
EU:
1. Press "Start/End Record" button
2. Throw a grenade
3. Press "Start/End Record" button again or rewrite record if you don't like it
4. Copy your record
5. Open location file(%s)
6. Find the map where you made the grenade
7. Paste your nade, rename or correct it
8. Update locations
9. Clear the last record
10. Repeat steps 1-9 until your rectum falls out.
RU:
1. Нажмите кнопку "Start/End Record"
2. Откиньте гранату
3. Нажмите кнопку "Start/End Record" еще раз или перезапишите гранату если она вам
не нравится
4. Скопируйте вашу запись
5. Откройте файл с локациями(%s)
6. Найдите карту на которой вы сделали гранату
7. Вставьте вашу гранату, переименуйте или поддкоректируйте ее
8. Обновите локации
9. Очистите последнюю запись
10. Повторяйте пункты 1-9 пока у вас не выпадет прямая кишка.
]]):format(path, path))
end
end
if #RecordData == 0 then
RecordData.pos = entity.get_local():get_absorigin()
end
RecordData[#RecordData + 1] = {
yaw = vector(math.round(view.x, 0.001), math.round(view.y, 0.001), 0),
}
end
local ReplayTick = 1
cmd.sidemove = MoveData.sidemove or 0
cmd.forwardmove = MoveData.forwardmove or 0
cmd.upmove = MoveData.upmove or 0
cmd.viewangles = MoveData.yaw
if (MoveData.exploit ~= nil) then
ui.set_keybind_state(keybinds.hide_shots, MoveData.exploit)
end
cmd.buttons = MoveData.buttons or 0
ReplayTick = ReplayTick + 1
LastReplayTime = 1
end
local lp = e_get_local()
if not lp then return end
local nade = {
closest = fov,
index = nil,
}
for i = 1, #Locs do
local isPointer = Locs[i].type
if Locs[i].anim > 250 and not isPointer then
move_to_pos(pos, cmd)
if nade.index then
RecordData = Locs[nade.index]
Replaying = true
end
end
local lp = e_get_local()
if not lp then
return
end
for i = 1, #Locs do
if not lp then
loc.anim = 0
goto skip
end
if nade_dist < 15 and loc.anim > 250 and not isPointer then
render_nade(loc.name, loc.pos, loc[1].yaw, loc.weapon, nade_dist)
end
end
::skip::
end
end
--- #endregion
local lp = e_get_local()
if (not lp) then
if Recording then
AA:set(UserAA)
UserAA = nil
end
Replaying = false
Recording = false
ReplayTick = 1
LastReplayTime = 0
end
end
--- #endregion
cheat.push_callback("after_prediction", function(cmd)
local success, msg = pcall(function()
auto_throw(cmd)
Recorde(cmd)
Replay(cmd)
end)
cheat.push_callback("on_unload", function()
Locations = nil
UI = nil
loc_path = nil
fonts = nil
RecordData = nil
weapon_icons = nil
AA = nil
Recording = nil
Replaying = nil
movement_icon = nil
assets_path = nil
url = nil
UserAA = nil
LastReplayTime = nil
cam_pos = nil
download = nil
decode = nil
auto_throw = nil
Recorde = nil
Replay = nil
PosRender = nil
Fixes = nil
if _DEV then
cheat.notify("Cache succefully cleared!")
_DEV = nil
end
collectgarbage("collect")
end)
--- #endregion