-- HACK MENUSCRIPT
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
if not SimpleMenu then
SimpleMenu = class()
function SimpleMenu:init(title, message, options)
self.dialog_data = { title = title, text = message, button_list = {},
id = tostring(math.random(0,0xFFFFFFFF)) }
self.visible = false
for _,opt in ipairs(options) do
local elem = {}
elem.text = opt.text
opt.data = opt.data or nil
opt.callback = opt.callback or nil
elem.callback_func = callback(self, self, "_do_callback",
{ data = opt.data,
callback = opt.callback})
elem.cancel_button = opt.is_cancel_button or false
if opt.is_focused_button then
self.dialog_data.focus_button = #self.dialog_data.button_list+1
end
table.insert(self.dialog_data.button_list, elem)
end
return self
end
function SimpleMenu:_do_callback(info)
if info.callback then
if info.data then
info.callback(info.data)
else
info.callback()
end
end
self.visible = false
end
function SimpleMenu:show()
if self.visible then
return
end
self.visible = true
managers.system_menu:show(self.dialog_data)
end
function SimpleMenu:hide()
if self.visible then
managers.system_menu:close(self.dialog_data.id)
self.visible = false
return
end
end
end
optionone = optionone or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- SET SKILLPOINTS TO 1
dofile("NoAlarm.lua")
end
optiontwo = optiontwo or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- SET SKILLPOINTS TO 10
dofile("Xray.lua")
end
optionthree = optionthree or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- SET SKILLPOINTS TO 100
dofile("GodMode.lua")
end
optionfour = optionfour or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- SET SKILLPOINTS TO 580
dofile("SemiGodMode.lua")
end
optionfive = optionfive or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("InfiniteAmmo2.lua")
end
optionsix = optionsix or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("InfiniteAmmo.lua")
end
optionseven = optionseven or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("InfiniteEquipmentAndCableTies")
end
optioneight = optioneight or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("NoTaser.lua")
end
optionnine = optionnine or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("NoCivPenalty.lua")
end
optionten = optionten or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("100%ArmorPiercing.lua")
end
optioneleven = optioneleven or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("Instant500IntimidationsConversions.lua")
end
optiontwelve = optiontwelve or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("KillAll.lua")
end
optionthirteen = optionthirteen or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("SpawnAmmo.lua")
end
optionfourteen = optionfourteen or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("SpawnDoctor.lua")
end
optionfifteen = optionfifteen or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("DirtyGold.lua")
end
optionsixteen = optionsixteen or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- RESET SKILLPOINTS
dofile("ForceLose.lua")
end
opts = {}
opts[#opts+1] = { text = "No Alarm", callback = optionone }
opts[#opts+1] = { text = "X-ray", callback = optiontwo }
opts[#opts+1] = { text = "God Mode", callback = optionthree }
opts[#opts+1] = { text = "Semi God Mode", callback = optionfour }
opts[#opts+1] = { text = "Infinite Ammo + No Reload", callback = optionfive }
opts[#opts+1] = { text = "Infinite Ammo", callback = optionsix }
opts[#opts+1] = { text = "Infinite Equipment", callback = optionseven }
opts[#opts+1] = { text = "No Tasers", callback = optioneight }
opts[#opts+1] = { text = "No Civ Penalty", callback = optionnine }
opts[#opts+1] = { text = "Armor Piercing", callback = optionten }
opts[#opts+1] = { text = "Intimidations And Conversions", callback = optioneleven }
opts[#opts+1] = { text = "Kill All", callback = optiontwelve }
opts[#opts+1] = { text = "Spawn Ammo Bag", callback = optionthirteen }
opts[#opts+1] = { text = "Spawn Doctor Bag", callback = optionfourteen }
opts[#opts+1] = { text = "Dirty Gold", callback = optionfifteen }
opts[#opts+1] = { text = "Force Lose", callback = optionsixteen }
opts[#opts+1] = { text = "CANCEL", is_cancel_button = true }
mymenu = SimpleMenu:new("Coreball's Hack Menu", "Coreball's Hacks", opts)
mymenu:show()


-- HACK MENUSCRIPT
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
if not SimpleMenu then
SimpleMenu = class()
function SimpleMenu:init(title, message, options)
self.dialog_data = { title = title, text = message, button_list = {},
id = tostring(math.random(0,0xFFFFFFFF)) }
self.visible = false
for _,opt in ipairs(options) do
local elem = {}
elem.text = opt.text
opt.data = opt.data or nil
opt.callback = opt.callback or nil
elem.callback_func = callback(self, self, "_do_callback",
{ data = opt.data,
callback = opt.callback})
elem.cancel_button = opt.is_cancel_button or false
if opt.is_focused_button then
self.dialog_data.focus_button = #self.dialog_data.button_list+1
end
table.insert(self.dialog_data.button_list, elem)
end
return self
end
function SimpleMenu:_do_callback(info)
if info.callback then
if info.data then
info.callback(info.data)
else
info.callback()
end
end
self.visible = false
end
function SimpleMenu:show()
if self.visible then
return
end
self.visible = true
managers.system_menu:show(self.dialog_data)
end
function SimpleMenu:hide()
if self.visible then
managers.system_menu:close(self.dialog_data.id)
self.visible = false
return
end
end
end
optionone = optionone or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- NO ALARM
function GroupAIStateBase:_clbk_switch_enemies_to_not_cool() end
function PlayerMovement:on_suspicion( observer_unit, status ) end
function GroupAIStateBase:on_criminal_suspicion_progress( u_suspect, u_observer, status ) end
function GroupAIStateBase:criminal_spotted( unit ) end
function GroupAIStateBase:report_aggression( unit ) end
function PlayerMovement:on_uncovered( enemy_unit ) end
function SecurityCamera:_upd_suspicion( t ) end
function SecurityCamera:_sound_the_alarm( detected_unit ) end
function SecurityCamera:_set_suspicion_sound( suspicion_level ) end
function SecurityCamera:clbk_call_the_police() end
function CopMovement:anim_clbk_police_called( unit ) end
function CopLogicArrest._upd_enemy_detection( data ) end
function CopLogicArrest._call_the_police( data, my_data, paniced ) end
function CopLogicIdle.on_alert( data, alert_data ) end
function CopLogicBase._get_logic_state_from_reaction( data, reaction )
return "idle"
end
function GroupAIStateBase:sync_event( event_id, blame_id ) end
function GroupAIStateBase:on_police_called( called_reason ) end
function GroupAIStateBase:on_police_weapons_hot( called_reason ) end
function GroupAIStateBase:on_gangster_weapons_hot( called_reason ) end
function GroupAIStateBase:on_enemy_weapons_hot( is_delayed_callback ) end
function GroupAIStateBase:_clbk_switch_enemies_to_not_cool() end
optiontwo = optiontwo or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- X-RAY VISION TOGGLE SCRIPT (v.1.1)
function inGame()
if not game_state_machine then return false end
return string.find(game_state_machine:current_state_name(), "game")
end
function show_mid_text( msg, msg_title, show_secs )
if managers and managers.hud then
managers.hud:present_mid_text( { text = msg, title = msg_title, time = show_secs } )
end
end
if inGame() then
-- TOGGLE MARKING ENEMIES
function setEnemyColor(unit)
local enemyType = unit:base()._tweak_table
local color, target_color
-- Civilians | Green
if enemyType == "civilian" or enemyType == "civilian_female" then
color = Vector3( 0.1687, 0.5529, 0 )
target_color = Vector3( 0.1688, 0.5529, 0 )
-- Taser | Blue
elseif enemyType == "taser" then
color = Vector3(0, 0.3804, 0.6235)
target_color = Vector3(0.001, 0.3804, 0.6235)
-- Shield | Orange
elseif enemyType == "shield" then
color = Vector3(1, 0.5, 0)
target_color = Vector3(1.001, 0.5, 0)
-- Tank | Yellow
elseif enemyType == "tank" then
color = Vector3(1, 1, 0)
target_color = Vector3(1.001, 1, 0)
-- Sniper | Pink
elseif enemyType == "sniper" then
color = Vector3(1, 0.35, 0.35)
target_color = Vector3(1.001, 0.35, 0.35)
-- Cop/unknown | Purple
else
color = Vector3(0.5216, 0, 0.5529)
target_color = Vector3(0.5217, 0, 0.5529)
end
-- Set colors
managers.game_play_central._enemy_contour_units[unit:key()].color = color
managers.game_play_central._enemy_contour_units[unit:key()].target_color = target_color
end
function mark_enemies()
local units = World:find_units_quick( "all", 3, 16, 21, managers.slot:get_mask( "enemies" ) )
for i,unit in ipairs( units ) do
if not unit:brain() or not unit:brain()._logic_data or
not unit:brain()._logic_data.objective or
(unit:brain()._logic_data.objective.type ~= "surrender" and
unit:brain()._logic_data.objective.type ~= "follow") then
if tweak_data.character[ unit:base()._tweak_table ].silent_priority_shout then
managers.game_play_central:add_enemy_contour( unit, true )
-- managers.network:session():send_to_peers_synched( "mark_enemy", unit, true )
setEnemyColor(unit)
elseif unit:character_damage().on_marked_state then
managers.game_play_central:add_enemy_contour( unit, false )
-- managers.network:session():send_to_peers_synched( "mark_enemy", unit, false )
setEnemyColor(unit)
end
end
end
for u_key, unit in pairs( managers.groupai:state()._security_cameras ) do
managers.game_play_central:add_marked_contour_unit( unit )
-- managers.network:session():send_to_peers_synched( "mark_contour_unit", unit )
end
end
function UnitNetworkHandler:mark_enemy( unit, marking_strength, sender ) end
if not _markingToggle then _markingToggle = true
else _markingToggle = nil end
if not _gameUpdate then _gameUpdate = GameSetup.update end
do
local _gameUpdateLastMark
function GameSetup:update( t, dt )
_gameUpdate(self, t, dt)
if _markingToggle and (not _gameUpdateLastMark or t - _gameUpdateLastMark > 4) then
_gameUpdateLastMark = t
mark_enemies()
end
end
end
end
optionthree = optionthree or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- God mode
managers.player:player_unit():character_damage():set_invulnerable( true )
-- No movement penalty, change to a larger value than 1 for an increase in speed
PlayerManager.body_armor_movement_penalty = function(self) return 2 end
-- Carry mods (throwing distance, movement speed, jumping, running)
local car_arr = { 'being', 'mega_heavy', 'heavy', 'medium', 'light', 'coke_light' }
for i, name in ipairs(car_arr) do
tweak_data.carry.types[ name ].throw_distance_multiplier = 3
tweak_data.carry.types[ name ].move_speed_modifier = 1
tweak_data.carry.types[ name ].jump_modifier = 1
tweak_data.carry.types[ name ].can_run = true
end
-- Remove cooldown between picking up bags
function PlayerManager:carry_blocked_by_cooldown() return false end
optionfour = optionfour or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Semi God Mode
if not _upgradeValue then _upgradeValue = PlayerManager.upgrade_value end
function PlayerManager:upgrade_value( category, upgrade, default )
if category == "player" and upgrade == "health_multiplier" then
return 2
elseif category == "player" and upgrade == "armor_multiplier" then
return 2
elseif category == "player" and upgrade == "passive_damage_multiplier" then
return 2
else
return _upgradeValue(self, category, upgrade, default)
end
end
managers.player:player_unit():character_damage():replenish()
-- Instant armor regeneration
function PlayerDamage:set_regenerate_timer_to_max()
self._regenerate_timer = 0
end
-- Unlimited messiah charges (self-revive)
function PlayerDamage:consume_messiah_charge() return true end
function PlayerDamage:got_messiah_charges() return true end
-- Super jump (when running, you jump 1.5x high)
function PlayerStandard:_perform_jump(jump_vec)
local v = math.UP * 470
if self._running then
v = math.UP * 470 * 3
end
self._unit:mover():set_velocity( v )
end
optionfive = optionfive or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Infinite Ammo Clip
if not _fireWep then _fireWep = NewRaycastWeaponBase.fire end
function NewRaycastWeaponBase:fire( from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
local result = _fireWep( self, from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
if managers.player:player_unit() == self._setup.user_unit then
self.set_ammo(self, 1.0)
end
return result
end
-- Infinite Saw
if not _fireSaw then
_fireSaw = SawWeaponBase.fire
end
function SawWeaponBase:fire( from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
_fireSaw( self, from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
if managers.player:player_unit() == self._setup.user_unit then
self.set_ammo(self, 1.0)
end
end
optionsix = optionsix or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Infinite ammo (resets ammo on reload & also when ammo runs out, just in case you activate it late)
if not _onReload then _onReload = RaycastWeaponBase.on_reload end
function RaycastWeaponBase:on_reload()
if managers.player:player_unit() == self._setup.user_unit then
self.set_ammo(self, 1.0)
else
_onReload(self)
end
end
if not _fireWep then _fireWep = NewRaycastWeaponBase.fire end
function NewRaycastWeaponBase:fire( from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
local result = _fireWep( self, from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
if managers.player:player_unit() == self._setup.user_unit and self:get_ammo_total() == 0 then
self.set_ammo(self, 1.0)
end
return result
end
optionseven = optionseven or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Infinite cable ties
function PlayerManager:remove_special( name ) end
-- Infinite equipment
function PlayerManager:remove_equipment( equipment_id ) end
-- Infinite equipment (when not the host of a multiplayer game, this doesn't seem to work anymore with Update 3 now.. it should work if the host is using the cheat as well though)
function PlayerManager:remove_equipment_possession( peer_id, equipment ) end
function PlayerManager:clear_equipment() end
function PlayerManager:from_server_equipment_place_result( selected_index, unit ) end
function HUDManager:remove_special_equipment( equipment ) end
-- Infinite sentry ammo, no recoil, left the weapon spread in because sentries have a tough time killing if they shoot in one spot
function SentryGunWeapon:fire( blanks, expend_ammo )
local fire_obj = self._effect_align[ self._interleaving_fire ]
local from_pos = fire_obj:position()
local direction = fire_obj:rotation():y()
mvector3.spread( direction, tweak_data.weapon[ self._name_id ].SPREAD * self._spread_mul )
World:effect_manager():spawn( self._muzzle_effect_table[ self._interleaving_fire ] ) -- , normal = col_ray.normal } )
if self._use_shell_ejection_effect then
World:effect_manager():spawn( self._shell_ejection_effect_table )
end
local ray_res = self:_fire_raycast( from_pos, direction, blanks )
if self._alert_events and ray_res.rays then
RaycastWeaponBase._check_alert( self, ray_res.rays, from_pos, direction, self._unit )
end
return ray_res
end
-- Unlimited doctor bag uses
function DoctorBagBase:_take( unit )
unit:character_damage():recover_health() -- replenish()
return 0
end
optioneight = optioneight or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- No flashbangs
function CoreEnvironmentControllerManager:set_flashbang( flashbang_pos, line_of_sight, travel_dis, linear_dis ) end
-- Don't taze me bro
function PlayerTased:enter( state_data, enter_data )
PlayerTased.super.enter( self, state_data, enter_data )
self._next_shock = Application:time() + 10
self._taser_value = 1
self._recover_delayed_clbk = "PlayerTased_recover_delayed_clbk"
managers.enemy:add_delayed_clbk( self._recover_delayed_clbk, callback( self, self, "clbk_exit_to_std" ), Application:time() )
end
optionnine = optionnine or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- No cash penalty for killing civillians
function MoneyManager.get_civilian_deduction() return 0 end
function MoneyManager.civilian_killed() return end
optionten = optionten or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- 100% Armor piercing
if not _uvArmorPierce then _uvArmorPierce = PlayerManager.upgrade_value end
function PlayerManager:upgrade_value( category, upgrade, default )
if category == "weapon" and upgrade == "armor_piercing_chance" then
return 1
elseif category == "weapon" and upgrade == "armor_piercing_chance_silencer" then
return 1
else
return _uvArmorPierce(self, category, upgrade, default)
end
end
optioneleven = optioneleven or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Unlimited [500 actually, but who cares] & instant intimidations
if not _upgradeValueIntimidate then _upgradeValueIntimidate = PlayerManager.upgrade_value end
function PlayerManager:upgrade_value( category, upgrade, default )
if category == "player" and upgrade == "convert_enemies" then
return true
elseif category == "player" and upgrade == "convert_enemies_max_minions" then
return 500
elseif category == "player" and upgrade == "convert_enemies_health_multiplier" then
return 1
elseif category == "player" and upgrade == "convert_enemies_damage_multiplier" then
return 4.5
else
return _upgradeValueIntimidate(self, category, upgrade, default)
end
end
if not _onIntimidated then _onIntimidated = CopLogicIdle.on_intimidated end
function CopLogicIdle.on_intimidated( data, amount, aggressor_unit )
CopLogicIdle._surrender( data, amount )
return true
end
CopLogicAttack.on_intimidated = CopLogicIdle.on_intimidated
CopLogicArrest.on_intimidated = CopLogicIdle.on_intimidated
CopLogicSniper.on_intimidated = CopLogicIdle.on_intimidated
-- Setup logic for shields to be able to be intimidated
CopBrain._logic_variants.shield.intimidated = CopLogicIntimidated
if not _onIIntimidated then _onIIntimidated = CopLogicIntimidated.on_intimidated end
function CopLogicIntimidated.on_intimidated( data, amount, aggressor_unit )
-- If shield we skip animations, go straight to conversion & spawn a new shield since it was destroyed during intimidation
if data.unit:base()._tweak_table == "shield" then
CopLogicIntimidated._do_tied( data, aggressor_unit )
CopInventory._chk_spawn_shield( data.unit:inventory(), nil )
else
_onIIntimidated(data, amount, aggressor_unit)
end
end
-- Setup a proper sniper-rifle for snipers (100% accuracy, no spread)
CopBrain._logic_variants.sniper = clone( CopBrain._logic_variants.security )
CopBrain._logic_variants.sniper.attack = CopLogicSniper
if not _onSniperEnter then _onSniperEnter = CopLogicSniper.enter end
function CopLogicSniper.enter( data, new_logic_name, enter_params )
if data.unit:brain()._logic_data and data.unit:brain()._logic_data.objective and data.unit:brain()._logic_data.objective.type == "follow" then
data.char_tweak.weapon[ data.unit:inventory():equipped_unit():base():weapon_tweak_data().usage ] = tweak_data.character.presets.weapon.sniper.m4
data.char_tweak.weapon[ data.unit:inventory():equipped_unit():base():weapon_tweak_data().usage ].spread = 0
-- Get dat 100% accuracy
for distance=1, 3 do
for interpolate=1,2 do
data.char_tweak.weapon[ data.unit:inventory():equipped_unit():base():weapon_tweak_data().usage ].FALLOFF[distance].acc[interpolate] = 1
end
end
end
_onSniperEnter(data, new_logic_name, enter_params)
end
optiontwelve = optiontwelve or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Kill All
function nukeunit(pawn)
local col_ray = { }
col_ray.ray = Vector3(1, 0, 0)
col_ray.position = pawn.unit:position()
local action_data = {}
action_data.variant = "explosion"
action_data.damage = 10
action_data.attacker_unit = managers.player:player_unit()
action_dat*****l_ray = col_ray
pawn.unit:character_damage():damage_explosion(action_data)
end
for u_key,u_data in pairs(managers.enemy:all_civilians()) do
nukeunit(u_data)
end
for u_key,u_data in pairs(managers.enemy:all_enemies()) do
u_data.char_tweak.has_alarm_pager = nil
nukeunit(u_data)
end
optionthirteen = optionthirteen or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Spawn Ammo
pos = managers.player:player_unit():position()
rot = managers.player:player_unit():rotation()
local ammo_upgrade_lvl = managers.player:upgrade_level( "ammo_bag", "ammo_increase" )
if Network:is_client() then
managers.network:session():send_to_host( "place_ammo_bag", pos, rot, ammo_upgrade_lvl )
else
local unit = AmmoBagBase.spawn( pos, rot, ammo_upgrade_lvl )
end
optionfourteen = optionfourteen or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Spawn Medic
pos = managers.player:player_unit():position()
rot = managers.player:player_unit():rotation()
local amount_upgrade_lvl = managers.player:upgrade_level( "doctor_bag", "amount_increase" )
if Network:is_client() then
managers.network:session():send_to_host( "place_doctor_bag", pos, rot, amount_upgrade_lvl )
else
local unit = DoctorBagBase.spawn( pos, rot, amount_upgrade_lvl )
end
optionfifteen = optionfifteen or function()
end
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
--dirty gold exploit
--goes into any multiplayer game and drops gold everywhere
--no host needed
bags_amount = 1 --amount of bags to drop per death, dont recommend above the default. game slows down
bags_label = "money" --kind of bags to drop. can be "gold", "money", "weapons", "coke", "diamonds", "meth"
function bagspawn(type, _position, z_offset)
local position = mvector3.copy(_position)
if z_offset then mvector3.set_z(position, position.z + z_offset) end
if Network:is_client() then
managers.network:session():send_to_host( "server_drop_carry", type, managers.money:get_bag_value( type ), nil, nil, 0, position, Rotation( math.UP, math.random() * 360 ), Vector3( 0,0,0 ), 0 )
else
managers.player:server_drop_carry( type, managers.money:get_bag_value( type ), nil, nil, 0, position, Rotation( math.UP, math.random() * 360 ), Vector3( 0,0,0 ), 0 )
end
end
function CopActionHurt:on_death_drop( unit, stage )
if spill == 1 then
for i = 1, bags_amount do
bagspawn(bags_label, self._unit:position(), 120)
end
end
if self._weapon_dropped then
return
end
if self._delayed_shooting_hurt_clbk_id then
managers.enemy:remove_delayed_clbk( self._delayed_shooting_hurt_clbk_id )
self._delayed_shooting_hurt_clbk_id = nil
end
if self._shooting_hurt then
if stage == 2 then
self._weapon_unit:base():stop_autofire()
self._ext_inventory:drop_weapon()
self._weapon_dropped = true
self._shooting_hurt = false
end
elseif self._ext_inventory then
self._ext_inventory:drop_weapon()
self._weapon_dropped = true
end
return
end
if spill == 0 or spill == nil then
spill = 1
else if spill == 1 then
spill = 0
end
end
optionsixteen = optionsixteen or function()
end
-- PLAY SOUND
--managers.menu_component:post_event("menu_enter")
-- END GAME
--if managers.platform:presence() == "Playing" then
-- managers.network:session():send_to_peers( "mission_ended", false, 0 )
-- game_state_machine:change_state_by_name( "gameoverscreen" )
--end
--optionseventeen = optionseventeen or function()
--end
-- PLAY SOUND
--managers.menu_component:post_event("menu_enter")
-- WIN GAME
--if managers.platform:presence() == "Playing" then
-- local num_winners = managers.network:game():amount_of_alive_players()
-- managers.network:session():send_to_peers( "mission_ended", true, num_winners )
-- game_state_machine:change_state_by_name( "victoryscreen", { num_winners = num_winners, personal_win = true } )
--end
opts = {}
opts[#opts+1] = { text = "No Alarm", callback = optionone }
opts[#opts+1] = { text = "X-ray", callback = optiontwo }
opts[#opts+1] = { text = "God Mode", callback = optionthree }
opts[#opts+1] = { text = "Semi God Mode", callback = optionfour }
opts[#opts+1] = { text = "Infinite Ammo + No Reload", callback = optionfive }
opts[#opts+1] = { text = "Infinite Ammo", callback = optionsix }
opts[#opts+1] = { text = "Infinite Equipment", callback = optionseven }
opts[#opts+1] = { text = "No Tasers", callback = optioneight }
opts[#opts+1] = { text = "No Civ Penalty", callback = optionnine }
opts[#opts+1] = { text = "Armor Piercing", callback = optionten }
opts[#opts+1] = { text = "Intimidations And Conversions", callback = optioneleven }
opts[#opts+1] = { text = "Kill All", callback = optiontwelve }
opts[#opts+1] = { text = "Spawn Ammo Bag", callback = optionthirteen }
opts[#opts+1] = { text = "Spawn Doctor Bag", callback = optionfourteen }
opts[#opts+1] = { text = "Dirty Gold", callback = optionfifteen }
--opts[#opts+1] = { text = "Force Lose", callback = optionsixteen }
--opts[#opts+1] = { text = "Force Win", callback = optionseventeen }
opts[#opts+1] = { text = "CANCEL", is_cancel_button = true }
mymenu = SimpleMenu:new("Coreball's Hack Menu", "Coreball's Hacks", opts)
mymenu:show()

-- HACK MENUSCRIPT
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
if not SimpleMenu then
SimpleMenu = class()
function SimpleMenu:init(title, message, options)
self.dialog_data = { title = title, text = message, button_list = {},
id = tostring(math.random(0,0xFFFFFFFF)) }
self.visible = false
for _,opt in ipairs(options) do
local elem = {}
elem.text = opt.text
opt.data = opt.data or nil
opt.callback = opt.callback or nil
elem.callback_func = callback(self, self, "_do_callback",
{ data = opt.data,
callback = opt.callback})
elem.cancel_button = opt.is_cancel_button or false
if opt.is_focused_button then
self.dialog_data.focus_button = #self.dialog_data.button_list+1
end
table.insert(self.dialog_data.button_list, elem)
end
return self
end
function SimpleMenu:_do_callback(info)
if info.callback then
if info.data then
info.callback(info.data)
else
info.callback()
end
end
self.visible = false
end
function SimpleMenu:show()
if self.visible then
return
end
self.visible = true
managers.system_menu:show(self.dialog_data)
end
function SimpleMenu:hide()
if self.visible then
managers.system_menu:close(self.dialog_data.id)
self.visible = false
return
end
end
end
optionone = optionone or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- NO ALARM
function GroupAIStateBase:_clbk_switch_enemies_to_not_cool() end
function PlayerMovement:on_suspicion( observer_unit, status ) end
function GroupAIStateBase:on_criminal_suspicion_progress( u_suspect, u_observer, status ) end
function GroupAIStateBase:criminal_spotted( unit ) end
function GroupAIStateBase:report_aggression( unit ) end
function PlayerMovement:on_uncovered( enemy_unit ) end
function SecurityCamera:_upd_suspicion( t ) end
function SecurityCamera:_sound_the_alarm( detected_unit ) end
function SecurityCamera:_set_suspicion_sound( suspicion_level ) end
function SecurityCamera:clbk_call_the_police() end
function CopMovement:anim_clbk_police_called( unit ) end
function CopLogicArrest._upd_enemy_detection( data ) end
function CopLogicArrest._call_the_police( data, my_data, paniced ) end
function CopLogicIdle.on_alert( data, alert_data ) end
function CopLogicBase._get_logic_state_from_reaction( data, reaction )
return "idle"
end
function GroupAIStateBase:sync_event( event_id, blame_id ) end
function GroupAIStateBase:on_police_called( called_reason ) end
function GroupAIStateBase:on_police_weapons_hot( called_reason ) end
function GroupAIStateBase:on_gangster_weapons_hot( called_reason ) end
function GroupAIStateBase:on_enemy_weapons_hot( is_delayed_callback ) end
function GroupAIStateBase:_clbk_switch_enemies_to_not_cool() end
end
optiontwo = optiontwo or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- X-RAY VISION TOGGLE SCRIPT (v.1.1)
function inGame()
if not game_state_machine then return false end
return string.find(game_state_machine:current_state_name(), "game")
end
function show_mid_text( msg, msg_title, show_secs )
if managers and managers.hud then
managers.hud:present_mid_text( { text = msg, title = msg_title, time = show_secs } )
end
end
if inGame() then
-- TOGGLE MARKING ENEMIES
function setEnemyColor(unit)
local enemyType = unit:base()._tweak_table
local color, target_color
-- Civilians | Green
if enemyType == "civilian" or enemyType == "civilian_female" then
color = Vector3( 0.1687, 0.5529, 0 )
target_color = Vector3( 0.1688, 0.5529, 0 )
-- Taser | Blue
elseif enemyType == "taser" then
color = Vector3(0, 0.3804, 0.6235)
target_color = Vector3(0.001, 0.3804, 0.6235)
-- Shield | Orange
elseif enemyType == "shield" then
color = Vector3(1, 0.5, 0)
target_color = Vector3(1.001, 0.5, 0)
-- Tank | Yellow
elseif enemyType == "tank" then
color = Vector3(1, 1, 0)
target_color = Vector3(1.001, 1, 0)
-- Sniper | Pink
elseif enemyType == "sniper" then
color = Vector3(1, 0.35, 0.35)
target_color = Vector3(1.001, 0.35, 0.35)
-- Cop/unknown | Purple
else
color = Vector3(0.5216, 0, 0.5529)
target_color = Vector3(0.5217, 0, 0.5529)
end
-- Set colors
managers.game_play_central._enemy_contour_units[unit:key()].color = color
managers.game_play_central._enemy_contour_units[unit:key()].target_color = target_color
end
function mark_enemies()
local units = World:find_units_quick( "all", 3, 16, 21, managers.slot:get_mask( "enemies" ) )
for i,unit in ipairs( units ) do
if not unit:brain() or not unit:brain()._logic_data or
not unit:brain()._logic_data.objective or
(unit:brain()._logic_data.objective.type ~= "surrender" and
unit:brain()._logic_data.objective.type ~= "follow") then
if tweak_data.character[ unit:base()._tweak_table ].silent_priority_shout then
managers.game_play_central:add_enemy_contour( unit, true )
-- managers.network:session():send_to_peers_synched( "mark_enemy", unit, true )
setEnemyColor(unit)
elseif unit:character_damage().on_marked_state then
managers.game_play_central:add_enemy_contour( unit, false )
-- managers.network:session():send_to_peers_synched( "mark_enemy", unit, false )
setEnemyColor(unit)
end
end
end
for u_key, unit in pairs( managers.groupai:state()._security_cameras ) do
managers.game_play_central:add_marked_contour_unit( unit )
-- managers.network:session():send_to_peers_synched( "mark_contour_unit", unit )
end
end
function UnitNetworkHandler:mark_enemy( unit, marking_strength, sender ) end
if not _markingToggle then _markingToggle = true
else _markingToggle = nil end
if not _gameUpdate then _gameUpdate = GameSetup.update end
do
local _gameUpdateLastMark
function GameSetup:update( t, dt )
_gameUpdate(self, t, dt)
if _markingToggle and (not _gameUpdateLastMark or t - _gameUpdateLastMark > 4) then
_gameUpdateLastMark = t
mark_enemies()
end
end
end
end
end
optionthree = optionthree or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- God mode
managers.player:player_unit():character_damage():set_invulnerable( true )
-- No movement penalty, change to a larger value than 1 for an increase in speed
PlayerManager.body_armor_movement_penalty = function(self) return 2 end
-- Carry mods (throwing distance, movement speed, jumping, running)
local car_arr = { 'being', 'mega_heavy', 'heavy', 'medium', 'light', 'coke_light' }
for i, name in ipairs(car_arr) do
tweak_data.carry.types[ name ].throw_distance_multiplier = 3
tweak_data.carry.types[ name ].move_speed_modifier = 1
tweak_data.carry.types[ name ].jump_modifier = 1
tweak_data.carry.types[ name ].can_run = true
end
-- Remove cooldown between picking up bags
function PlayerManager:carry_blocked_by_cooldown() return false end
end
optionfour = optionfour or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Semi God Mode
if not _upgradeValue then _upgradeValue = PlayerManager.upgrade_value end
function PlayerManager:upgrade_value( category, upgrade, default )
if category == "player" and upgrade == "health_multiplier" then
return 2
elseif category == "player" and upgrade == "armor_multiplier" then
return 2
elseif category == "player" and upgrade == "passive_damage_multiplier" then
return 2
else
return _upgradeValue(self, category, upgrade, default)
end
end
managers.player:player_unit():character_damage():replenish()
-- Instant armor regeneration
function PlayerDamage:set_regenerate_timer_to_max()
self._regenerate_timer = 0
end
-- Unlimited messiah charges (self-revive)
function PlayerDamage:consume_messiah_charge() return true end
function PlayerDamage:got_messiah_charges() return true end
-- Super jump (when running, you jump 1.5x high)
function PlayerStandard:_perform_jump(jump_vec)
local v = math.UP * 470
if self._running then
v = math.UP * 470 * 3
end
self._unit:mover():set_velocity( v )
end
end
optionfive = optionfive or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Infinite Ammo Clip
if not _fireWep then _fireWep = NewRaycastWeaponBase.fire end
function NewRaycastWeaponBase:fire( from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
local result = _fireWep( self, from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
if managers.player:player_unit() == self._setup.user_unit then
self.set_ammo(self, 1.0)
end
return result
end
-- Infinite Saw
if not _fireSaw then
_fireSaw = SawWeaponBase.fire
end
function SawWeaponBase:fire( from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
_fireSaw( self, from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
if managers.player:player_unit() == self._setup.user_unit then
self.set_ammo(self, 1.0)
end
end
end
optionsix = optionsix or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Infinite ammo (resets ammo on reload & also when ammo runs out, just in case you activate it late)
if not _onReload then _onReload = RaycastWeaponBase.on_reload end
function RaycastWeaponBase:on_reload()
if managers.player:player_unit() == self._setup.user_unit then
self.set_ammo(self, 1.0)
else
_onReload(self)
end
end
if not _fireWep then _fireWep = NewRaycastWeaponBase.fire end
function NewRaycastWeaponBase:fire( from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
local result = _fireWep( self, from_pos, direction, dmg_mul, shoot_player, spread_mul, autohit_mul, suppr_mul, target_unit )
if managers.player:player_unit() == self._setup.user_unit and self:get_ammo_total() == 0 then
self.set_ammo(self, 1.0)
end
return result
end
end
optionseven = optionseven or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Infinite cable ties
function PlayerManager:remove_special( name ) end
-- Infinite equipment
function PlayerManager:remove_equipment( equipment_id ) end
-- Infinite equipment (when not the host of a multiplayer game, this doesn't seem to work anymore with Update 3 now.. it should work if the host is using the cheat as well though)
function PlayerManager:remove_equipment_possession( peer_id, equipment ) end
function PlayerManager:clear_equipment() end
function PlayerManager:from_server_equipment_place_result( selected_index, unit ) end
function HUDManager:remove_special_equipment( equipment ) end
-- Infinite sentry ammo, no recoil, left the weapon spread in because sentries have a tough time killing if they shoot in one spot
function SentryGunWeapon:fire( blanks, expend_ammo )
local fire_obj = self._effect_align[ self._interleaving_fire ]
local from_pos = fire_obj:position()
local direction = fire_obj:rotation():y()
mvector3.spread( direction, tweak_data.weapon[ self._name_id ].SPREAD * self._spread_mul )
World:effect_manager():spawn( self._muzzle_effect_table[ self._interleaving_fire ] ) -- , normal = col_ray.normal } )
if self._use_shell_ejection_effect then
World:effect_manager():spawn( self._shell_ejection_effect_table )
end
local ray_res = self:_fire_raycast( from_pos, direction, blanks )
if self._alert_events and ray_res.rays then
RaycastWeaponBase._check_alert( self, ray_res.rays, from_pos, direction, self._unit )
end
return ray_res
end
-- Unlimited doctor bag uses
function DoctorBagBase:_take( unit )
unit:character_damage():recover_health() -- replenish()
return 0
end
end
optioneight = optioneight or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- No flashbangs
function CoreEnvironmentControllerManager:set_flashbang( flashbang_pos, line_of_sight, travel_dis, linear_dis ) end
-- Don't taze me bro
function PlayerTased:enter( state_data, enter_data )
PlayerTased.super.enter( self, state_data, enter_data )
self._next_shock = Application:time() + 10
self._taser_value = 1
self._recover_delayed_clbk = "PlayerTased_recover_delayed_clbk"
managers.enemy:add_delayed_clbk( self._recover_delayed_clbk, callback( self, self, "clbk_exit_to_std" ), Application:time() )
end
end
optionnine = optionnine or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- No cash penalty for killing civillians
function MoneyManager.get_civilian_deduction() return 0 end
function MoneyManager.civilian_killed() return end
end
optionten = optionten or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- 100% Armor piercing
if not _uvArmorPierce then _uvArmorPierce = PlayerManager.upgrade_value end
function PlayerManager:upgrade_value( category, upgrade, default )
if category == "weapon" and upgrade == "armor_piercing_chance" then
return 1
elseif category == "weapon" and upgrade == "armor_piercing_chance_silencer" then
return 1
else
return _uvArmorPierce(self, category, upgrade, default)
end
end
end
optioneleven = optioneleven or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Unlimited [500 actually, but who cares] & instant intimidations
if not _upgradeValueIntimidate then _upgradeValueIntimidate = PlayerManager.upgrade_value end
function PlayerManager:upgrade_value( category, upgrade, default )
if category == "player" and upgrade == "convert_enemies" then
return true
elseif category == "player" and upgrade == "convert_enemies_max_minions" then
return 500
elseif category == "player" and upgrade == "convert_enemies_health_multiplier" then
return 1
elseif category == "player" and upgrade == "convert_enemies_damage_multiplier" then
return 4.5
else
return _upgradeValueIntimidate(self, category, upgrade, default)
end
end
if not _onIntimidated then _onIntimidated = CopLogicIdle.on_intimidated end
function CopLogicIdle.on_intimidated( data, amount, aggressor_unit )
CopLogicIdle._surrender( data, amount )
return true
end
CopLogicAttack.on_intimidated = CopLogicIdle.on_intimidated
CopLogicArrest.on_intimidated = CopLogicIdle.on_intimidated
CopLogicSniper.on_intimidated = CopLogicIdle.on_intimidated
-- Setup logic for shields to be able to be intimidated
CopBrain._logic_variants.shield.intimidated = CopLogicIntimidated
if not _onIIntimidated then _onIIntimidated = CopLogicIntimidated.on_intimidated end
function CopLogicIntimidated.on_intimidated( data, amount, aggressor_unit )
-- If shield we skip animations, go straight to conversion & spawn a new shield since it was destroyed during intimidation
if data.unit:base()._tweak_table == "shield" then
CopLogicIntimidated._do_tied( data, aggressor_unit )
CopInventory._chk_spawn_shield( data.unit:inventory(), nil )
else
_onIIntimidated(data, amount, aggressor_unit)
end
end
-- Setup a proper sniper-rifle for snipers (100% accuracy, no spread)
CopBrain._logic_variants.sniper = clone( CopBrain._logic_variants.security )
CopBrain._logic_variants.sniper.attack = CopLogicSniper
if not _onSniperEnter then _onSniperEnter = CopLogicSniper.enter end
function CopLogicSniper.enter( data, new_logic_name, enter_params )
if data.unit:brain()._logic_data and data.unit:brain()._logic_data.objective and data.unit:brain()._logic_data.objective.type == "follow" then
data.char_tweak.weapon[ data.unit:inventory():equipped_unit():base():weapon_tweak_data().usage ] = tweak_data.character.presets.weapon.sniper.m4
data.char_tweak.weapon[ data.unit:inventory():equipped_unit():base():weapon_tweak_data().usage ].spread = 0
-- Get dat 100% accuracy
for distance=1, 3 do
for interpolate=1,2 do
data.char_tweak.weapon[ data.unit:inventory():equipped_unit():base():weapon_tweak_data().usage ].FALLOFF[distance].acc[interpolate] = 1
end
end
end
_onSniperEnter(data, new_logic_name, enter_params)
end
end
optiontwelve = optiontwelve or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Kill All
function nukeunit(pawn)
local col_ray = { }
col_ray.ray = Vector3(1, 0, 0)
col_ray.position = pawn.unit:position()
local action_data = {}
action_data.variant = "explosion"
action_data.damage = 10
action_data.attacker_unit = managers.player:player_unit()
action_dat*****l_ray = col_ray
pawn.unit:character_damage():damage_explosion(action_data)
end
for u_key,u_data in pairs(managers.enemy:all_civilians()) do
nukeunit(u_data)
end
for u_key,u_data in pairs(managers.enemy:all_enemies()) do
u_data.char_tweak.has_alarm_pager = nil
nukeunit(u_data)
end
end
optionthirteen = optionthirteen or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Spawn Ammo
pos = managers.player:player_unit():position()
rot = managers.player:player_unit():rotation()
local ammo_upgrade_lvl = managers.player:upgrade_level( "ammo_bag", "ammo_increase" )
if Network:is_client() then
managers.network:session():send_to_host( "place_ammo_bag", pos, rot, ammo_upgrade_lvl )
else
local unit = AmmoBagBase.spawn( pos, rot, ammo_upgrade_lvl )
end
end
optionfourteen = optionfourteen or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- Spawn Medic
pos = managers.player:player_unit():position()
rot = managers.player:player_unit():rotation()
local amount_upgrade_lvl = managers.player:upgrade_level( "doctor_bag", "amount_increase" )
if Network:is_client() then
managers.network:session():send_to_host( "place_doctor_bag", pos, rot, amount_upgrade_lvl )
else
local unit = DoctorBagBase.spawn( pos, rot, amount_upgrade_lvl )
end
end
optionfifteen = optionfifteen or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
--dirty gold exploit
--goes into any multiplayer game and drops gold everywhere
--no host needed
bags_amount = 1 --amount of bags to drop per death, dont recommend above the default. game slows down
bags_label = "money" --kind of bags to drop. can be "gold", "money", "weapons", "coke", "diamonds", "meth"
function bagspawn(type, _position, z_offset)
local position = mvector3.copy(_position)
if z_offset then mvector3.set_z(position, position.z + z_offset) end
if Network:is_client() then
managers.network:session():send_to_host( "server_drop_carry", type, managers.money:get_bag_value( type ), nil, nil, 0, position, Rotation( math.UP, math.random() * 360 ), Vector3( 0,0,0 ), 0 )
else
managers.player:server_drop_carry( type, managers.money:get_bag_value( type ), nil, nil, 0, position, Rotation( math.UP, math.random() * 360 ), Vector3( 0,0,0 ), 0 )
end
end
function CopActionHurt:on_death_drop( unit, stage )
if spill == 1 then
for i = 1, bags_amount do
bagspawn(bags_label, self._unit:position(), 120)
end
end
if self._weapon_dropped then
return
end
if self._delayed_shooting_hurt_clbk_id then
managers.enemy:remove_delayed_clbk( self._delayed_shooting_hurt_clbk_id )
self._delayed_shooting_hurt_clbk_id = nil
end
if self._shooting_hurt then
if stage == 2 then
self._weapon_unit:base():stop_autofire()
self._ext_inventory:drop_weapon()
self._weapon_dropped = true
self._shooting_hurt = false
end
elseif self._ext_inventory then
self._ext_inventory:drop_weapon()
self._weapon_dropped = true
end
return
end
if spill == 0 or spill == nil then
spill = 1
else if spill == 1 then
spill = 0
end
end
end
optionsixteen = optionsixteen or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- END GAME
if managers.platform:presence() == "Playing" then
managers.network:session():send_to_peers( "mission_ended", false, 0 )
game_state_machine:change_state_by_name( "gameoverscreen" )
end
end
optionseventeen = optionseventeen or function()
-- PLAY SOUND
managers.menu_component:post_event("menu_enter")
-- WIN GAME
if managers.platform:presence() == "Playing" then
local num_winners = managers.network:game():amount_of_alive_players()
managers.network:session():send_to_peers( "mission_ended", true, num_winners )
game_state_machine:change_state_by_name( "victoryscreen", { num_winners = num_winners, personal_win = true } )
end
end
opts = {}
opts[#opts+1] = { text = "No Alarm", callback = optionone }
opts[#opts+1] = { text = "X-ray", callback = optiontwo }
opts[#opts+1] = { text = "God Mode", callback = optionthree }
opts[#opts+1] = { text = "Semi God Mode", callback = optionfour }
opts[#opts+1] = { text = "Infinite Ammo + No Reload", callback = optionfive }
opts[#opts+1] = { text = "Infinite Ammo", callback = optionsix }
opts[#opts+1] = { text = "Infinite Equipment", callback = optionseven }
opts[#opts+1] = { text = "No Tasers", callback = optioneight }
opts[#opts+1] = { text = "No Civ Penalty", callback = optionnine }
opts[#opts+1] = { text = "Armor Piercing", callback = optionten }
opts[#opts+1] = { text = "Intimidations And Conversions", callback = optioneleven }
opts[#opts+1] = { text = "Kill All", callback = optiontwelve }
opts[#opts+1] = { text = "Spawn Ammo Bag", callback = optionthirteen }
opts[#opts+1] = { text = "Spawn Doctor Bag", callback = optionfourteen }
opts[#opts+1] = { text = "Dirty Gold", callback = optionfifteen }
opts[#opts+1] = { text = "Force Lose", callback = optionsixteen }
opts[#opts+1] = { text = "Force Win", callback = optionseventeen }
opts[#opts+1] = { text = "CANCEL", is_cancel_button = true }
mymenu = SimpleMenu:new("Coreball's Hack Menu", "Coreball's Hacks", opts)
mymenu:show()