Question[Help] Menu Script Crashes Game

Posts 1–4 of 4 · Page 1 of 1
[Help] Menu Script Crashes Game
So, I took a simple menu script and edited it.
Please reply if you can find something incorrect...

Code:
-- 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()
By the way, I'm not very experienced at coding.
you can forget about dofile and require, those lua commands are out..

you have to include the code you need in the menu.lua you are working on
I think I messed up.

Code:
-- 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_data.col_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()
Now, when I press my menu button it activates all of them.
So I was just messing around and I changed it to this.
Instead of activating all cheats at once, this one makes PAYDAY 2 crash...
But only when I click on something.
Code:
-- 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_data.col_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()
Posts 1–4 of 4 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

Talk with us