Cyberpunk 2077
0 of 0

File information

Last updated

Original upload

Created by

3nvy

Uploaded by

3nvy

Virus scan

Safe to use

Tags for this mod

187 comments

  1. Cartterr
    Cartterr
    • supporter
    • 0 kudos
    Sadly I couldn't resolve the scrolling issue. However, I implemented a quick and awful solution where the quickhack menu rotates when someone scrolls. It's not ideal, but it might help someone to explore further modifications to the init.lua file to prevent this issue in the future.

    When an "active" quickhack (which is NOT Red because of inssuficient ram) is selected, the menu restarts. I don't have the time to debug it but maybe someone can take a crack at it. the logic itself is not hard to understand and I bet that it has to do with "puppetAction" and the abstract class ScriptableDeviceAction in "tools\redmod\scripts\cyberpunk\devices\core\baseDeviceActions.script". I'm gonna keep the debug prints just in case:

    Just replace init.lua with this:
    -------------------------------------------------------------------
    local IProps = {    enableDebug = true,
        deltaTime = 0,
        commandOffset = 0,
        drawWindow = false,
        isUploadingQHCOmmands = false,
        modName = 'Hack Everyone',
        modVersion = '1.5.0',
        qhNameList = {
            {
                hash = 3116789880,
                name = "Ping"
            },
            {
                hash = 612394680,
                name = "Reboot Optics"
            },
            {
                hash = 523263573,
                name = "Contagion"
            },
            {
                hash = 190881063,
                name = "Sonic Shock"
            },
            {
                hash = 2537897906,
                name = "Suicide"
            },
            {
                hash = 988968086,
                name = "Cyberpsychosis"
            },
            {
                hash = 4273202386,
                name = "Weapon Glitch"
            },
            {
                hash = 2534130900,
                name = "Detonate Grenade"
            },
            {
                hash = 2795108209,
                name = "Short Circuit"
            },
            {
                hash = 880772118,
                name = "Synapse Burnout"
            },
            {
                hash = 520988073,
                name = "System Reset"
            },
            {
                hash = 249499564,
                name = "Memory Wipe"
            },
            {
                hash = 3396834708,
                name = "Cripple Movement"
            },
            {
                hash = 3189733290,
                name = "Whistle"
            },
            {
                hash = 2582207146,
                name = "Overheat"
            },
        {
          hash = 1086744564,
          name = "Cyberware Malfunction"
        },
        {
          hash = 3341984842,
          name = "Request Backup"
        },
      }
    }


    local Config = {
        disableOnCivilians = false,
    }
    local json = require('json')
    local Utils = require('utilities')


    function RefreshHUD(npc, player)
        -- npc:RegisterToHUDManager(true)

        Utils.Log(IProps.enableDebug, IProps.modName, "<RefreshHUD>: Refreshing HUD")
        updateData = NewObject("handle:HUDActorUpdateData")
        updateData.updateVisibility = true
        updateData.updateIsRevealed = true
        updateData.isRevealedValue = true
        updateData.updateIsTagged = true
        updateData.isTaggedValue = true
        updateData.updateClueData = true
        updateData.updateIsRemotelyAccessed = true
        updateData.isRemotelyAccessedValue = true
        updateData.updateCanOpenScannerInfo = true
        updateData.canOpenScannerInfoValue = true
        updateData.updateIsInIconForcedVisibilityRange = true
        updateData.isInIconForcedVisibilityRangeValue = true
        updateData.updateIsIconForcedVisibleThroughWalls = true
        updateData.isIconForcedVisibleThroughWallsValue = true

        actor = NewObject("handle:gameHudActor")
        actor:UpdateActorData(updateData)
        actor.entityID = npc:GetEntityID()
        actor.status = "REGISTERED"
        actor.type = "PUPPET"

        npc:GetHudManager():SetNewTarget(actor)
    end







    local function areCommandsDifferent(newCommands, oldCommands)
        Utils.Log(IProps.enableDebug, IProps.modName, "Checking if commands are different...")
        -- Check if the number of commands differs
        if #newCommands ~= #oldCommands then
            Utils.Log(IProps.enableDebug, IProps.modName, "Command counts differ: " .. #newCommands .. " vs " .. #oldCommands)
            return true
        end
        -- Check each command for differences
        for i, command in ipairs(newCommands) do
            if command.title ~= oldCommands[i].title or command.description ~= oldCommands[i].description then
                --Utils.Log(IProps.enableDebug, IProps.modName, "Difference detected in command " .. i .. ": Title or Description changed")
                --Utils.Log(IProps.enableDebug, IProps.modName, "New Command - Title: " .. command.title .. ", Description: " .. command.description)
                --Utils.Log(IProps.enableDebug, IProps.modName, "Old Command - Title: " .. oldCommands[i].title .. ", Description: " .. oldCommands[i].description)
                return true
            end
        end
        -- No differences found
        Utils.Log(IProps.enableDebug, IProps.modName, "No differences found in commands")
        return false
    end






    local quickHackHashes = {
        3116789880, -- Ping
        612394680,  -- Reboot Optics
        523263573,  -- Contagion
        190881063,  -- Sonic Shock
        2537897906, -- Suicide
        988968086,  -- Cyberpsychosis
        4273202386, -- Weapon Glitch
        -- 2534130900, -- Detonate Grenade (NC Residents don't have them)
        -- 3341984842, -- Request Backup (NC Residents can't do this)
        2795108209, -- Short Circuit
        880772118,  -- Synapse Burnout
        520988073,  -- System Reset
        249499564,  -- Memory Wipe
        3396834708, -- Cripple Movement
        3189733290, -- Whistle
        2582207146, -- Overheat
        1086744564 -- Cyberware Malfunction
    }


    function RevealQuickHacks(npc, player)
        if IProps.isUploadingQHCOmmands then return end

        IProps.isUploadingQHCOmmands = true
     
        local playerQHacksList = gameRPGManager.GetPlayerQuickHackListWithQuality(player)
       
        local commands = {}
        local addedHashes = {}  -- Set to track which hashes have been added to commands
        local tempCommands = {} -- Temporary storage for commands before applying the offset

        local context = npc:GetPS():GenerateContext("Remote",
                                    NewObject("handle:gamedeviceClearance"),
                                    Game.GetPlayerSystem():GetLocalPlayerControlledGameObject(),
                                    npc:GetEntityID())
        local i = 0
     
        for _, actionData in pairs(playerQHacksList) do

            local action = npc:GetPS():GetAction(actionData.actionRecord)
            actionRecord = actionData.actionRecord
       
            if actionRecord:ObjectActionType():Type().value == "PuppetQuickHack" then
                --We just print lines to differentiate the different QuickHacks we are finding, like we just print --------------------------------------
                Utils.Log(IProps.enableDebug, IProps.modName, "---------------------------------------------------")
                --Utils.Log(IProps.enableDebug, IProps.modName, "QuickHack Found: " .. actionRecord:ObjectActionUI():Caption())

                local newCommand = NewObject("handle:QuickhackData")
                newCommand.actionOwnerName = npc:GetTweakDBFullDisplayName(true)
               
                -- newCommand.title = actionRecord:ObjectActionUI():Caption()
               
                -- newCommand.description = actionRecord:ObjectActionUI():Description()
                newCommand.icon = actionRecord:ObjectActionUI():CaptionIcon():TexturePartID():GetID()
                newCommand.type = actionRecord:ObjectActionType():Type()
                newCommand.actionOwner = npc:GetEntityID()
                newCommand.isInstant = false
                newCommand.ICELevel = npc:GetICELevel()
                newCommand.ICELevelVisible = true
                newCommand.quality = actionData.quality
                newCommand.networkBreached = npc:IsBreached()
                newCommand.category = actionRecord:HackCategory()
                newCommand.actionCompletionEffects = actionRecord:CompletionEffects()

                -- Initialize additional properties as nil
                newCommand.cooldown = 'nil'
                newCommand.cooldownTweak = 'nil'
                newCommand.duration = 'nil'
                newCommand.uploadTime = 'nil'
                newCommand.costRaw = 'nil'
                newCommand.cost = 'nil'
                newCommand.actionMatchesTarget = 'nil'
                newCommand.isLocked = 'nil'
                newCommand.inactiveReason = 'nil'
                newCommand.actionState = 'nil'
                newCommand.action = 'nil'
               
                -- QuickHack Names
                -- Handle Custom Titles
                newCommand.title = "QuickHack "..i
                newCommand.description = "QuickHack "..i
                for _, QHData in pairs(IProps.qhNameList) do
                    if QHData.hash == newCommand.icon.hash then
                       
                        --Utils.Log(IProps.enableDebug, IProps.modName, "QuickHack match hash: " .. QHData.name)
                        newCommand.title = QHData.name
                        newCommand.description = QHData.name
                        --print("QuickHack match hash ", QHData.name, newCommand.icon.hash)
                    --else
                        --Utils.Log(IProps.enableDebug, IProps.modName, "QuickHack hash not found: " .. newCommand.icon.hash)
                    end
                --print("QuickHack hash ", newCommand.title, newCommand.icon.hash)
                end

                -- Work Cooldowns
                actionStartEffects = actionRecord:StartEffects()
                for _, effect in pairs(actionStartEffects) do
                    if effect:StatusEffect() and effect:StatusEffect():StatusEffectType():Type().value == "PlayerCooldown" then
                        --Utils.Log(IProps.enableDebug, IProps.modName, "Cooldown Found: " .. effect:StatusEffect():GetID())
                        Utils.Log(IProps.enableDebug, IProps.modName, "Cooldown Found")
                        statModifiers = effect:StatusEffect():Duration():StatModifiers()
                        newCommand.cooldown = 0.0
                        newCommand.cooldownTweak = effect:StatusEffect():GetID()
                    end
                end

                newCommand.duration =
                        npc:GetQuickHackDuration(actionData.actionRecord, npc,
                        npc:GetEntityID(), Game.GetPlayer():GetEntityID())

                local puppetAction = npc:GetPS():GetAction(actionData.actionRecord)
                puppetAction:SetExecutor(context.processInitiatorObject)
                puppetAction:RegisterAsRequester(npc:GetPS():GetMyEntityID())
                puppetAction:SetObjectActionID(actionData.actionRecord:GetID())
                puppetAction:SetUp(npc:GetPS())

                puppetAction:SetDurationValue(0.0)  -- Reset duration
                -- Immediately after resetting, set the duration to a non-zero value if the action is considered active but not started
                if not puppetAction:IsStarted() and not puppetAction:IsCompleted() then
                    puppetAction:SetDurationValue(10.0)  -- Prepare the action as active but mark as not started
                end

         
                newCommand.uploadTime = puppetAction:GetActivationTime()
                newCommand.costRaw = puppetAction:GetBaseCost()
                newCommand.cost = puppetAction:GetCost();

                -- newCommand.title = puppetAction.actionName.value
                -- newCommand.description = puppetAction.actionName.value

                newCommand.actionMatchesTarget = true

                if puppetAction:IsInactive() then
                    Utils.Log(IProps.enableDebug, IProps.modName, "QuickHack is inactive: " .. puppetAction.GetInactiveReason())
                    newCommand.isLocked = true
                    newCommand.inactiveReason = puppetAction.GetInactiveReason()
                elseif Game.GetStatPoolsSystem():IsStatPoolAdded(npc:GetEntityID(), "QuickHackUpload") then
                    Utils.Log(IProps.enableDebug, IProps.modName, "QuickHack is uploading")
                    newCommand.isLocked = true
                    newCommand.inactiveReason = "LocKey#7020"
                elseif not puppetAction:CanPayCost() then
                    Utils.Log(IProps.enableDebug, IProps.modName, "QuickHack cannot pay cost")
                    newCommand.isLocked = true
                    newCommand.actionState = "OutOfMemory"
                    newCommand.inactiveReason = "LocKey#27398"
                else
                    Utils.Log(IProps.enableDebug, IProps.modName, "QuickHack is active")
                    -- we print puppetAction for debugging

                    if puppetAction then
                        Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action is valid")
                    else
                        Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action is nil")
                    end

                   
                    Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action Name: " .. tostring(puppetAction:GetActionName()))
                    Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action Duration: " .. tostring(puppetAction:GetDurationValue()))
                    Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action Completed: " .. tostring(puppetAction:IsCompleted()))
                    Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action Started: " .. tostring(puppetAction:IsStarted()))
                    Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Device Name: " .. puppetAction:GetDeviceName())
                    local iconRecord = puppetAction:GetInteractionIcon()
                    if iconRecord then
                        Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action Icon: " .. tostring(iconRecord:GetID()))
                    end
                    Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action Inactive Reason: " .. tostring(puppetAction:GetInactiveReason()))


                    --Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action Name: " .. puppetAction.GetName())
                    --Utils.Log(IProps.enableDebug, IProps.modName, "Puppet Action ID: " .. puppetAction.GetID())

                    newCommand.action = puppetAction
                end

                if actionRecord:GetTargetActivePrereqsCount() > 0 then
                    --Utils.Log(IProps.enableDebug, IProps.modName, "Checking Target Active Prereqs")
                    targetActivePrereqs = actionRecord:TargetActivePrereqs()
                    for _, activePrereqs in pairs(targetActivePrereqs) do

                        prereqsToCheck = activePrereqs:FailureConditionPrereq()
                        if not gameRPGManager.CheckPrereqs(prereqsToCheck, npc) then
                            --Utils.Log(IProps.enableDebug, IProps.modName, "Prereqs failed: " .. activePrereqs:FailureExplanation())
                            newCommand.isLocked = true;
                            newCommand.inactiveReason = activePrereqs:FailureExplanation()
                        end
                    end
                end

                -- if newCommand.cooldown and newCommand.cooldown ~= 0 then
                --     newCommand.isLocked = true;
                --     newCommand.inactiveReason = "LocKey#10943";
                --     newCommand.actionState = "Locked";
                -- else
                --     newCommand.action = puppetAction
                -- end
           
                -- Only if newCommand.icon.hash is not in the list of hashes we add it:

                local hashExists = addedHashes[newCommand.icon.hash]  -- Check if hash has already been added
                local isHashInList = false
                for _, hash in ipairs(quickHackHashes) do
                    if hash == newCommand.icon.hash then
                        isHashInList = true
                        break
                    end
                end

                -- we add a condition so that if the hash is not in the list we do not add it and if newCommand.inactiveReason is not nil we do not add it either
                if isHashInList
                and
                not hashExists
                --newCommand.inactiveReason ~= 'nil' and
                --newCommand.inactiveReason ~= 'LocKey#51710'
                --newCommand.actionMatchesTarget == true and
                --newCommand.isLocked == true
                then
                    -- Only add newCommand if its hash is in the list and not already added
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack: " .. newCommand.title)
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack Hash: " .. newCommand.icon.hash)
                    -- we print all the other possible data of newCommand
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack Description: " .. newCommand.description)
                    --Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack Type: " .. newCommand.type)
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack ICELevel: " .. newCommand.ICELevel)
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack ICELevelVisible: " .. tostring(newCommand.ICELevelVisible))
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack Quality: " .. newCommand.quality)
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack NetworkBreached: " .. tostring(newCommand.networkBreached))
                    --Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack Category: " .. newCommand.category)
                    --Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack ActionCompletionEffects: " .. json.encode(newCommand.actionCompletionEffects))
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack Cooldown: " .. newCommand.cooldown)
                    --Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack CooldownTweak: " .. newCommand.cooldownTweak)
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack Duration: " .. newCommand.duration)
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack UploadTime: " .. newCommand.uploadTime)
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack CostRaw: " .. newCommand.costRaw)
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack Cost: " .. newCommand.cost)
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack ActionMatchesTarget: " .. tostring(newCommand.actionMatchesTarget))
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack IsLocked: " .. tostring(newCommand.isLocked))
                    Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack InactiveReason: " .. newCommand.inactiveReason)
                    --Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack ActionState: " .. newCommand.actionState)
                    --Utils.Log(IProps.enableDebug, IProps.modName, "Adding QuickHack Action: " .. newCommand.action)

                   
                    addedHashes[newCommand.icon.hash] = true  -- Mark this hash as added
                    --commands[i] = newCommand
                    tempCommands[#tempCommands + 1] = newCommand
                    i = i + 1
                elseif not isHashInList then
                    Utils.Log(IProps.enableDebug, IProps.modName, "Hash not in list: " .. newCommand.icon.hash)
                elseif hashExists then
                    Utils.Log(IProps.enableDebug, IProps.modName, "Hash already added: " .. newCommand.icon.hash)
                end

            end
        end

        local offset = IProps.commandOffset
        for index, command in ipairs(tempCommands) do
            commands[(index + offset - 1) % #tempCommands + 1] = command
        end

        quickSlotsManagerNotification = NewObject("handle:RevealInteractionWheel")
        quickSlotsManagerNotification.lookAtObject = npc
        quickSlotsManagerNotification.shouldReveal = true
        quickSlotsManagerNotification.commands = commands

        Game.GetUISystem():QueueEvent(quickSlotsManagerNotification)
        IProps.isUploadingQHCOmmands = false

        Utils.Log(IProps.enableDebug, IProps.modName, "QuickHacks Uploaded")
        IProps.commandOffset = (IProps.commandOffset + 1) % #tempCommands
    end


    local hasCalledRevealQuickHacks = false
    function runUpdates()

        player = Game.GetPlayer()

        if not player then return end

        npc = Game.GetTargetingSystem():GetLookAtObject(player, false, false)

        --We prnt both of the following conditions to seee if they are false or true.
        --We print the condition npc and npc:ToString() == "NPCPuppet"
        Utils.Log(IProps.enableDebug, IProps.modName, "<runUpdates>: Checking if NPC is a Puppet: " .. tostring(npc and npc:ToString() == "NPCPuppet"))
        --We print the condition npc and npc:GetHudManager().uiScannerVisible
        Utils.Log(IProps.enableDebug, IProps.modName, "<runUpdates>: Checking if NPC HUD is visible: " .. tostring(npc and npc:GetHudManager().uiScannerVisible))
        if npc and npc:ToString() == "NPCPuppet" and npc:GetHudManager().uiScannerVisible then
            --Utils.Log(IProps.enableDebug, IProps.modName, "<runUpdates>: Checking NPC registration and HUD visibility")
            --We also add a check to NOT call RevealQuickHacks if the global variable "commands" is not empty
            --We print all the variables we are checking in the next condition like npc:GetHudManager():IsRegistered(npc:GetEntityID()) and the others:
            --We first print if npc:GetHudManager():IsRegistered(npc:GetEntityID()) is true:
            --Utils.Log(IProps.enableDebug, IProps.modName, "<runUpdates>: Is NPC Registered: " .. tostring(npc:GetHudManager():IsRegistered(npc:GetEntityID())))
            --We then print if npc:GetHudManager():GetCurrentTarget() is not nil:
            --Utils.Log(IProps.enableDebug, IProps.modName, "<runUpdates>: Is Current Target not nil: " .. tostring(npc:GetHudManager():GetCurrentTarget() ~= nil))
            --We then print if npc:GetHudManager():IsQuickHackPanelOpened() is false:
            Utils.Log(IProps.enableDebug, IProps.modName, "<runUpdates>: Is QuickHack Panel not opened: " .. tostring(not npc:GetHudManager():IsQuickHackPanelOpened()))

            if npc:GetHudManager():IsRegistered(npc:GetEntityID()) and
                npc:GetHudManager():GetCurrentTarget() ~= nil and
                (not npc:GetHudManager():IsQuickHackPanelOpened()) then
                    Utils.Log(IProps.enableDebug, IProps.modName, "<runUpdates>: Calling RevealQuickHacks")
                    RevealQuickHacks(npc, player)
                    hasCalledRevealQuickHacks = true
            end

            if not Config.disableOnCivilians and not npc:GetHudManager():IsRegistered(npc:GetEntityID()) then
                Utils.Log(IProps.enableDebug, IProps.modName, "<runUpdates>: Registering NPC to HUD Manager")
                Utils.Log(IProps.enableDebug, IProps.modName, "NPC QH Registered")
                npc:RegisterToHUDManager(true)
            end
        end

    end

    function loadSavedConfig()
        local config = Utils.LoadConfig(IProps.modName, 'config.json')

        if config then
            Config = json.decode(config)
        end
    end

    registerForEvent("onInit", function()
        loadSavedConfig()
        print("["..IProps.modName.."] Initialized | Version: "..IProps.modVersion)
    end)

    registerForEvent("onUpdate", function(deltaTime)
        IProps.deltaTime = IProps.deltaTime + deltaTime

        if IProps.deltaTime > 1 then -- Now checks if more than 10 seconds have passed
            runUpdates()
            IProps.deltaTime = 0  -- Reset the timer back to 0 to start counting another 10 seconds
        end
    end)

    registerForEvent("onOverlayOpen", function()
        IProps.drawWindow = true
    end)

    registerForEvent("onOverlayClose", function()
        IProps.drawWindow = false
    end)


    registerForEvent("onDraw", function()

        if IProps.drawWindow then

            ImGui.SetNextWindowPos(100, 500, ImGuiCond.FirstUseEver) -- set window position x, y
            ImGui.SetNextWindowSize(250, 60, ImGuiCond.Appearing) -- set window size w, h

            if ImGui.Begin("Hack Everyone Setup") then
                local disableOnCivilians = ImGui.Checkbox("Disable Hacks on Civilians", Config.disableOnCivilians)
                if disableOnCivilians ~= Config.disableOnCivilians then
                    Config.disableOnCivilians = disableOnCivilians
                    Utils.SaveConfig(IProps.modName, 'config.json', json.encode(Config))
                end
            end
            ImGui.End()

        end

    end)
    -------------------------------------------------------------------

    When a "active" quickhack
  2. PrimeConey
    PrimeConey
    • member
    • 1 kudos
    I can confirm that it works on 2.1 update.

    Just follow the instructions in the comment by "Dragoon23" copied and pasted below



    ------------------------------------------------------------------
    COMMENT:
    1. Download and install CET and this mod.
    2. Open the init.lua of the mod in notepad 
    3. Go to kinasch's post for the link to tesnitrojack's post in the forum. Do NOT get the code from here in the comments section. Get it from the forum post.
    4. Copy/paste that into init.lua and replace all the original code.
    5. Save.
    ------------------------------------------------------------------


    I followed "Dragoon23" instructions and it is 100% working on the 2.1 update, i have yet to experience any bugs or crashing. 
    Smooth sailing so far. enjoy the mod chooms
    1. The8bitpanda
      The8bitpanda
      • premium
      • 0 kudos
      bro what
    2. Theun04i
      Theun04i
      • member
      • 0 kudos
      for anyone wondering, the post got deleted, it is on the waybackmachine tho
    3. batuace
      batuace
      • member
      • 35 kudos
      it's not so difficult to paste the code here, you just teasing man... also, waybackmachine doesn't have it. this mod is dead!
  3. BlackSadHeart666
    BlackSadHeart666
    • member
    • 0 kudos
    Dont work
  4. StraightJohn
    StraightJohn
    • member
    • 0 kudos
    Is there any other better mod that can hack everyone like this but still can scroll down through the quickhack list? I am frustrated with this mod that i can't simply ping the dead enemy because i just can't scroll down the hack list -_-
  5. 4n7
    4n7
    • member
    • 2 kudos
    sry ,

    copy this (replace) the code in init.lua of the mod :

    \Cyberpunk 2077\bin\x64\plugins\cyber_engine_tweaks\mods\Hack Everyone\

    (don't Blah !! just help others..)

    ->

    if there are doubles u choose minimal RAM lol xD....

    
    local IProps = {    enableDebug = false,
        deltaTime = 0,
        drawWindow = false,
        isUploadingQHCOmmands = false,
        modName = 'Hack Everyone',
        modVersion = '1.5.0',
        qhNameList = {
            {
                hash = 3116789880,
                name = "Ping"
            },
            {
                hash = 612394680,
                name = "Reboot Optics"
            },
            {
          hash = 523263573,
                name = "Contagion"
            },
            {
                hash = 190881063,
                name = "Sonic Shock"
            },
            {
                hash = 2537897906,
                name = "Suicide"
            },
            {
                hash = 988968086,
                name = "Cyberpsychosis"
            },
            {
                hash = 4273202386,
                name = "Weapon Glitch"
            },
            {
                hash = 2534130900,
                name = "Detonate Grenade"
            },
            {
                hash = 2795108209,
                name = "Short Circuit"
            },
            {
                hash = 880772118,
                name = "Synapse Burnout"
            },
            {
                hash = 520988073,
                name = "System Reset"
            },
            {
                hash = 249499564,
                name = "Memory Wipe"
            },
            {
                hash = 3396834708,
                name = "Cripple Movement"
            },
            {
                hash = 3189733290,
                name = "Whistle"
            },
            {
                hash = 2582207146,
                name = "Overheat"
            },
        {
          hash = 1086744564,
          name = "Cyberware Malfunction"
        },
        {
          hash = 3341984842,
          name = "Request Backup"
        },
      }
    }


    local Config = {
        disableOnCivilians = false,
    }

    local json = require('json')
    local Utils = require('utilities')

    function RefreshHUD(npc, player)
        -- npc:RegisterToHUDManager(true)

        updateData = NewObject("handle:HUDActorUpdateData")
        updateData.updateVisibility = true
        updateData.updateIsRevealed = true
        updateData.isRevealedValue = true
        updateData.updateIsTagged = true
        updateData.isTaggedValue = true
        updateData.updateClueData = true
        updateData.updateIsRemotelyAccessed = true
        updateData.isRemotelyAccessedValue = true
        updateData.updateCanOpenScannerInfo = true
        updateData.canOpenScannerInfoValue = true
        updateData.updateIsInIconForcedVisibilityRange = true
        updateData.isInIconForcedVisibilityRangeValue = true
        updateData.updateIsIconForcedVisibleThroughWalls = true
        updateData.isIconForcedVisibleThroughWallsValue = true

        actor = NewObject("handle:gameHudActor")
        actor:UpdateActorData(updateData)
        actor.entityID = npc:GetEntityID()
        actor.status = "REGISTERED"
        actor.type = "PUPPET"

        npc:GetHudManager():SetNewTarget(actor)
     
    end

    function RevealQuickHacks(npc, player)
        if IProps.isUploadingQHCOmmands then return end

        IProps.isUploadingQHCOmmands = true
     
        local playerQHacksList = gameRPGManager.GetPlayerQuickHackListWithQuality(player)
        
        local commands = {}

        local context = npc:GetPS():GenerateContext("Remote",
    NewObject("handle:gamedeviceClearance"),
    Game.GetPlayerSystem():GetLocalPlayerControlledGameObject(),
    npc:GetEntityID())
        local i = 0
     
        for _, actionData in pairs(playerQHacksList) do

            local action = npc:GetPS():GetAction(actionData.actionRecord)
            actionRecord = actionData.actionRecord
        
            if actionRecord:ObjectActionType():Type().value == "PuppetQuickHack" then

                local newCommand = NewObject("handle:QuickhackData")
                
                newCommand.actionOwnerName = npc:GetTweakDBFullDisplayName(true)
                
                -- newCommand.title = actionRecord:ObjectActionUI():Caption()
                
                -- newCommand.description = actionRecord:ObjectActionUI():Description()
                newCommand.icon = actionRecord:ObjectActionUI():CaptionIcon():TexturePartID():GetID()
                newCommand.type = actionRecord:ObjectActionType():Type()
                newCommand.actionOwner = npc:GetEntityID()
                newCommand.isInstant = false
                newCommand.ICELevel = npc:GetICELevel()
                newCommand.ICELevelVisible = true
                newCommand.quality = actionData.quality
                newCommand.networkBreached = npc:IsBreached()
                newCommand.category = actionRecord:HackCategory()
                newCommand.actionCompletionEffects = actionRecord:CompletionEffects()
                
                -- QuickHack Names
                -- Handle Custom Titles
                newCommand.title = "QuickHack "..i
                newCommand.description = "QuickHack "..i
                for _, QHData in pairs(IProps.qhNameList) do

                    if QHData.hash == newCommand.icon.hash then
                        newCommand.title = QHData.name
                        newCommand.description = QHData.name
              --print("QuickHack match hash ", QHData.name, newCommand.icon.hash)
                    end
            --print("QuickHack hash ", newCommand.title, newCommand.icon.hash)
                    
                end

                -- Work Cooldowns
                actionStartEffects = actionRecord:StartEffects()
                for _, effect in pairs(actionStartEffects) do

                    if effect:StatusEffect() and effect:StatusEffect():StatusEffectType():Type().value == "PlayerCooldown" then
                        statModifiers = effect:StatusEffect():Duration():StatModifiers()
                        newCommand.cooldown = 0.0
                        newCommand.cooldownTweak = effect:StatusEffect():GetID()
                    end
                    
                end

                newCommand.duration =
    npc:GetQuickHackDuration(actionData.actionRecord, npc,
    npc:GetEntityID(), Game.GetPlayer():GetEntityID())

                local puppetAction = npc:GetPS():GetAction(actionData.actionRecord)
                puppetAction:SetExecutor(context.processInitiatorObject)
                puppetAction:RegisterAsRequester(npc:GetPS():GetMyEntityID())
                puppetAction:SetObjectActionID(actionData.actionRecord:GetID())
                puppetAction:SetUp(npc:GetPS())
          
                newCommand.uploadTime = puppetAction:GetActivationTime()
                newCommand.costRaw = puppetAction:GetBaseCost()
                newCommand.cost = puppetAction:GetCost();

                
                -- newCommand.title = puppetAction.actionName.value
                -- newCommand.description = puppetAction.actionName.value

                newCommand.actionMatchesTarget = true

                if puppetAction:IsInactive() then
                    newCommand.isLocked = true
                    newCommand.inactiveReason = puppetAction.GetInactiveReason()
                elseif Game.GetStatPoolsSystem():IsStatPoolAdded(npc:GetEntityID(), "QuickHackUpload") then
                    newCommand.isLocked = true
                    newCommand.inactiveReason = "LocKey#7020"
                elseif not puppetAction:CanPayCost() then
                    newCommand.isLocked = true
                    newCommand.actionState = "OutOfMemory"
                    newCommand.inactiveReason = "LocKey#27398"
                else
                    newCommand.action = puppetAction
                end

                if actionRecord:GetTargetActivePrereqsCount() > 0 then
                    targetActivePrereqs = actionRecord:TargetActivePrereqs()
                    for _, activePrereqs in pairs(targetActivePrereqs) do

                        prereqsToCheck = activePrereqs:FailureConditionPrereq()
                        if not gameRPGManager.CheckPrereqs(prereqsToCheck, npc) then
                            newCommand.isLocked = true;
                newCommand.inactiveReason = activePrereqs:FailureExplanation()
                        end
                    end

                end


                -- if newCommand.cooldown and newCommand.cooldown ~= 0 then
                --     newCommand.isLocked = true;
                --     newCommand.inactiveReason = "LocKey#10943";
                --     newCommand.actionState = "Locked";
                -- else
                --     newCommand.action = puppetAction
                -- end
            
                commands[i] = newCommand
                i = i + 1
            end
            
        end

        quickSlotsManagerNotification = NewObject("handle:RevealInteractionWheel")
        quickSlotsManagerNotification.lookAtObject = npc
        quickSlotsManagerNotification.shouldReveal = true
        quickSlotsManagerNotification.commands = commands

        Game.GetUISystem():QueueEvent(quickSlotsManagerNotification)
        IProps.isUploadingQHCOmmands = false

        Utils.Log(IProps.enableDebug, IProps.modName, "QuickHacks Uploaded")
    end

    function runUpdates()

        player = Game.GetPlayer()

        if not player then return end

        npc = Game.GetTargetingSystem():GetLookAtObject(player, false, false)
        
        if npc and npc:ToString() == "NPCPuppet" and npc:GetHudManager().uiScannerVisible then

            if npc:GetHudManager():IsRegistered(npc:GetEntityID()) and
    npc:GetHudManager():GetCurrentTarget() ~= nil and (not
    npc:GetHudManager():IsQuickHackPanelOpened()) then
                RevealQuickHacks(npc, player)
            end

            if not Config.disableOnCivilians and not npc:GetHudManager():IsRegistered(npc:GetEntityID()) then
                npc:RegisterToHUDManager(true)
                Utils.Log(IProps.enableDebug, IProps.modName, "NPC QH Registered")
            end
        
        end

    end

    function loadSavedConfig()
        local config = Utils.LoadConfig(IProps.modName, 'config.json')

        if config then
            Config = json.decode(config)
        end
    end

    registerForEvent("onInit", function()
        loadSavedConfig()
        print("["..IProps.modName.."] Initialized | Version: "..IProps.modVersion)
    end)

    registerForEvent("onUpdate", function(deltaTime)
        
        IProps.deltaTime = IProps.deltaTime + deltaTime

        if IProps.deltaTime > 1 then
            runUpdates()
            IProps.deltaTime = IProps.deltaTime - 1
        end

    end)

    registerForEvent("onOverlayOpen", function()
        IProps.drawWindow = true
    end)
     
    registerForEvent("onOverlayClose", function()
        IProps.drawWindow = false
    end)


    registerForEvent("onDraw", function()
        
        if IProps.drawWindow then

            ImGui.SetNextWindowPos(100, 500, ImGuiCond.FirstUseEver) -- set window position x, y
            ImGui.SetNextWindowSize(250, 60, ImGuiCond.Appearing) -- set window size w, h

            if ImGui.Begin("Hack Everyone Setup") then
                local disableOnCivilians = ImGui.Checkbox("Disable Hacks on Civilians", Config.disableOnCivilians)
                if disableOnCivilians ~= Config.disableOnCivilians then
                    Config.disableOnCivilians = disableOnCivilians
                    Utils.SaveConfig(IProps.modName, 'config.json', json.encode(Config))
                end
            end
            ImGui.End()

        end

    end)
    1. furzkugel
      furzkugel
      • premium
      • 22 kudos
      did that , worked fine, then i start the game again , its nopt working anymore and the code "reset" doesnt do it anymore too...lol
    2. StraightJohn
      StraightJohn
      • member
      • 0 kudos
      Mine still work with this code, even though the quickhack option is doubled, it is still fine for me. The problem for me is when i try it on civilian, I can't scroll down the hack option, force me to can only choose the top hack option. Can someone have solution on this?
    3. chuckh48
      chuckh48
      • member
      • 0 kudos
      Same problem here.
  6. StraightJohn
    StraightJohn
    • member
    • 0 kudos
    mine have problem with this mod where i can't scroll down the quickhack option list when i target the civilian, so that i am only able to use the very first or top option of the quickhack list. other target than civilian, it work fine. anyone can help pls?
    1. StraightJohn
      StraightJohn
      • member
      • 0 kudos
      and also, not only the civilian, i also cannot scroll down the quickhack option list when i target the paralyzed enemy caused by system relapse quickhack. it frustrate me that i cannot ping through them like i always did before the game was updated to 2.0. plz help
  7. TimeDiver0
    TimeDiver0
    • supporter
    • 11 kudos
    Although the fact that it needs REDmod might be disappointing/irritating to some (including myself), Immersive Cyberpunk City 2.02 fulfills the role of this (able to hack civilians and police) and even Grapple Civilians (does exactly what the title indicates).

    Immersive Cyberpunk City 2.02: https://www.nexusmods.com/cyberpunk2077/mods/7976
  8. Henk90
    Henk90
    • supporter
    • 7 kudos
    why would do somebody post such a mod without the correct ini.lua for 2.0.1
    1. 4n7
      4n7
      • member
      • 2 kudos
      this mod is one of the bests as "Drone Companion"....

      2.0 changed lots of codes for modders, so they sometimes update their mods....... for a coffee !!

      about this mod ? it's a 1.XX mod, everyone knows it. !!! :D
  9. NomalDude001
    NomalDude001
    • member
    • 0 kudos
    the mod worked with the code below but it looping options and increase ram cost for each loop, anyone know how to fix?
  10. tesnitrojack
    tesnitrojack
    • member
    • 20 kudos
    Yo yo yo my choomers, shroomers and doomers! Did you update your game to 1.5 and now you can't hack everyone like you used to? Well fear not, updating this mod for 1.5 was actually pretty simple. There are only a few edits that need to be made, but I know you all love to copy paste the whole thing. One word of warning, I tested this using a save from 1.31 so there may be something specific to 1.5 that I missed.

    Oh well, here it is, works with 1.5 and CET 1.19.0


    local IProps = {
        enableDebug = false,
        deltaTime = 0,
        drawWindow = false,
        isUploadingQHCOmmands = false,
        modName = 'Hack Everyone',
        modVersion = '1.5.0',
        qhNameList = {
            {
                hash = 3116789880,
                name = "Ping"
            },
            {
                hash = 612394680,
                name = "Reboot Optics"
            },
            {
          hash = 523263573,
                name = "Contagion"
            },
            {
                hash = 190881063,
                name = "Sonic Shock"
            },
            {
                hash = 2537897906,
                name = "Suicide"
            },
            {
                hash = 988968086,
                name = "Cyberpsychosis"
            },
            {
                hash = 4273202386,
                name = "Weapon Glitch"
            },
            {
                hash = 2534130900,
                name = "Detonate Grenade"
            },
            {
                hash = 2795108209,
                name = "Short Circuit"
            },
            {
                hash = 880772118,
                name = "Synapse Burnout"
            },
            {
                hash = 520988073,
                name = "System Reset"
            },
            {
                hash = 249499564,
                name = "Memory Wipe"
            },
            {
                hash = 3396834708,
                name = "Cripple Movement"
            },
            {
                hash = 3189733290,
                name = "Whistle"
            },
            {
                hash = 2582207146,
                name = "Overheat"
            },
        {
          hash = 1086744564,
          name = "Cyberware Malfunction"
        },
        {
          hash = 3341984842,
          name = "Request Backup"
        },
      }
    }


    local Config = {
        disableOnCivilians = false,
    }

    local json = require('json')
    local Utils = require('utilities')

    function RefreshHUD(npc, player)
        -- npc:RegisterToHUDManager(true)

        updateData = NewObject("handle:HUDActorUpdateData")
        updateData.updateVisibility = true
        updateData.updateIsRevealed = true
        updateData.isRevealedValue = true
        updateData.updateIsTagged = true
        updateData.isTaggedValue = true
        updateData.updateClueData = true
        updateData.updateIsRemotelyAccessed = true
        updateData.isRemotelyAccessedValue = true
        updateData.updateCanOpenScannerInfo = true
        updateData.canOpenScannerInfoValue = true
        updateData.updateIsInIconForcedVisibilityRange = true
        updateData.isInIconForcedVisibilityRangeValue = true
        updateData.updateIsIconForcedVisibleThroughWalls = true
        updateData.isIconForcedVisibleThroughWallsValue = true

        actor = NewObject("handle:gameHudActor")
        actor:UpdateActorData(updateData)
        actor.entityID = npc:GetEntityID()
        actor.status = "REGISTERED"
        actor.type = "PUPPET"

        npc:GetHudManager():SetNewTarget(actor)
     
    end

    function RevealQuickHacks(npc, player)
        if IProps.isUploadingQHCOmmands then return end

        IProps.isUploadingQHCOmmands = true
     
        local playerQHacksList = gameRPGManager.GetPlayerQuickHackListWithQuality(player)
        
        local commands = {}

        local context = npc:GetPS():GenerateContext("Remote", NewObject("handle:gamedeviceClearance"), Game.GetPlayerSystem():GetLocalPlayerControlledGameObject(), npc:GetEntityID())
        local i = 0
     
        for _, actionData in pairs(playerQHacksList) do

            local action = npc:GetPS():GetAction(actionData.actionRecord)
            actionRecord = actionData.actionRecord
        
            if actionRecord:ObjectActionType():Type().value == "PuppetQuickHack" then

                local newCommand = NewObject("handle:QuickhackData")
                
                newCommand.actionOwnerName = npc:GetTweakDBFullDisplayName(true)
                
                -- newCommand.title = actionRecord:ObjectActionUI():Caption()
                
                -- newCommand.description = actionRecord:ObjectActionUI():Description()
                newCommand.icon = actionRecord:ObjectActionUI():CaptionIcon():TexturePartID():GetID()
                newCommand.type = actionRecord:ObjectActionType():Type()
                newCommand.actionOwner = npc:GetEntityID()
                newCommand.isInstant = false
                newCommand.ICELevel = npc:GetICELevel()
                newCommand.ICELevelVisible = true
                newCommand.quality = actionData.quality
                newCommand.networkBreached = npc:IsBreached()
                newCommand.category = actionRecord:HackCategory()
                newCommand.actionCompletionEffects = actionRecord:CompletionEffects()
                
                -- QuickHack Names
                -- Handle Custom Titles
                newCommand.title = "QuickHack "..i
                newCommand.description = "QuickHack "..i
                for _, QHData in pairs(IProps.qhNameList) do

                    if QHData.hash == newCommand.icon.hash then
                        newCommand.title = QHData.name
                        newCommand.description = QHData.name
              --print("QuickHack match hash ", QHData.name, newCommand.icon.hash)
                    end
            --print("QuickHack hash ", newCommand.title, newCommand.icon.hash)
                    
                end

                -- Work Cooldowns
                actionStartEffects = actionRecord:StartEffects()
                for _, effect in pairs(actionStartEffects) do

                    if effect:StatusEffect() and effect:StatusEffect():StatusEffectType():Type().value == "PlayerCooldown" then
                        statModifiers = effect:StatusEffect():Duration():StatModifiers()
                        newCommand.cooldown = 0.0
                        newCommand.cooldownTweak = effect:StatusEffect():GetID()
                    end
                    
                end

                newCommand.duration = npc:GetQuickHackDuration(actionData.actionRecord, npc, npc:GetEntityID(), Game.GetPlayer():GetEntityID())

                local puppetAction = npc:GetPS():GetAction(actionData.actionRecord)
                puppetAction:SetExecutor(context.processInitiatorObject)
                puppetAction:RegisterAsRequester(npc:GetPS():GetMyEntityID())
                puppetAction:SetObjectActionID(actionData.actionRecord:GetID())
                puppetAction:SetUp(npc:GetPS())
          
                newCommand.uploadTime = puppetAction:GetActivationTime()
                newCommand.costRaw = puppetAction:GetBaseCost()
                newCommand.cost = puppetAction:GetCost();

                
                -- newCommand.title = puppetAction.actionName.value
                -- newCommand.description = puppetAction.actionName.value

                newCommand.actionMatchesTarget = true

                if puppetAction:IsInactive() then
                    newCommand.isLocked = true
                    newCommand.inactiveReason = puppetAction.GetInactiveReason()
                elseif Game.GetStatPoolsSystem():IsStatPoolAdded(npc:GetEntityID(), "QuickHackUpload") then
                    newCommand.isLocked = true
                    newCommand.inactiveReason = "LocKey#7020"
                elseif not puppetAction:CanPayCost() then
                    newCommand.isLocked = true
                    newCommand.actionState = "OutOfMemory"
                    newCommand.inactiveReason = "LocKey#27398"
                else
                    newCommand.action = puppetAction
                end

                if actionRecord:GetTargetActivePrereqsCount() > 0 then
                    targetActivePrereqs = actionRecord:TargetActivePrereqs()
                    for _, activePrereqs in pairs(targetActivePrereqs) do

                        prereqsToCheck = activePrereqs:FailureConditionPrereq()
                        if not gameRPGManager.CheckPrereqs(prereqsToCheck, npc) then
                            newCommand.isLocked = true;
                newCommand.inactiveReason = activePrereqs:FailureExplanation()
                        end
                    end

                end


                -- if newCommand.cooldown and newCommand.cooldown ~= 0 then
                --     newCommand.isLocked = true;
                --     newCommand.inactiveReason = "LocKey#10943";
                --     newCommand.actionState = "Locked";
                -- else
                --     newCommand.action = puppetAction
                -- end
            
                commands[i] = newCommand
                i = i + 1
            end
            
        end

        quickSlotsManagerNotification = NewObject("handle:RevealInteractionWheel")
        quickSlotsManagerNotification.lookAtObject = npc
        quickSlotsManagerNotification.shouldReveal = true
        quickSlotsManagerNotification.commands = commands

        Game.GetUISystem():QueueEvent(quickSlotsManagerNotification)
        IProps.isUploadingQHCOmmands = false

        Utils.Log(IProps.enableDebug, IProps.modName, "QuickHacks Uploaded")
    end

    function runUpdates()

        player = Game.GetPlayer()

        if not player then return end

        npc = Game.GetTargetingSystem():GetLookAtObject(player, false, false)
        
        if npc and npc:ToString() == "NPCPuppet" and npc:GetHudManager().uiScannerVisible then

            if npc:GetHudManager():IsRegistered(npc:GetEntityID()) and npc:GetHudManager():GetCurrentTarget() ~= nil and (not npc:GetHudManager():IsQuickHackPanelOpened()) then
                RevealQuickHacks(npc, player)
            end

            if not Config.disableOnCivilians and not npc:GetHudManager():IsRegistered(npc:GetEntityID()) then
                npc:RegisterToHUDManager(true)
                Utils.Log(IProps.enableDebug, IProps.modName, "NPC QH Registered")
            end
        
        end

    end

    function loadSavedConfig()
        local config = Utils.LoadConfig(IProps.modName, 'config.json')

        if config then
            Config = json.decode(config)
        end
    end

    registerForEvent("onInit", function()
        loadSavedConfig()
        print("["..IProps.modName.."] Initialized | Version: "..IProps.modVersion)
    end)

    registerForEvent("onUpdate", function(deltaTime)
        
        IProps.deltaTime = IProps.deltaTime + deltaTime

        if IProps.deltaTime > 1 then
            runUpdates()
            IProps.deltaTime = IProps.deltaTime - 1
        end

    end)

    registerForEvent("onOverlayOpen", function()
        IProps.drawWindow = true
    end)
     
    registerForEvent("onOverlayClose", function()
        IProps.drawWindow = false
    end)


    registerForEvent("onDraw", function()
        
        if IProps.drawWindow then

            ImGui.SetNextWindowPos(100, 500, ImGuiCond.FirstUseEver) -- set window position x, y
            ImGui.SetNextWindowSize(250, 60, ImGuiCond.Appearing) -- set window size w, h

            if ImGui.Begin("Hack Everyone Setup") then
                local disableOnCivilians = ImGui.Checkbox("Disable Hacks on Civilians", Config.disableOnCivilians)
                if disableOnCivilians ~= Config.disableOnCivilians then
                    Config.disableOnCivilians = disableOnCivilians
                    Utils.SaveConfig(IProps.modName, 'config.json', json.encode(Config))
                end
            end
            ImGui.End()

        end

    end)

    1. skyrim2822
      skyrim2822
      • member
      • 1 kudos
      PLEASE UPDATE CET 1.19.1

      [2022-02-19 19:06:40 UTC+05:00] [ошибка] [] ...\plugins\cyber_engine_tweaks\mods\Hack Everyone\init.lua:122: Функция gameRPGManager::CheckPrereqs;array<IPrereq_Record >GameObject не является участником GameInstance и не является глобальным.трассировка стека:[C]: в функции '__index'...\plugins\cyber_engine_tweaks\mods\Hack Everyone\init.lua:122: в функции "RevealQuickHacks"...\plugins\cyber_engine_tweaks\mods\Hack Everyone\init.lua:267: в функции 'runUpdates'...\plugins\cyber_engine_tweaks\mods\Hack Everyone\init.lua:297: в функции <...\plugins\cyber_engine_tweaks\mods\Hack Everyone\init.lua:292>
    2. tesnitrojack
      tesnitrojack
      • member
      • 20 kudos
      It works for CET 1.19.1 as well.

      Update your file. The fail you are getting is this line which I removed in the code posted above.

      local CheckPrereqs = Game['gameRPGManager::CheckPrereqs;array<IPrereq_Record>GameObject']
    3. 4n7
      4n7
      • member
      • 2 kudos
      Awesome !!! Thx so much tesnitrojack !!! u a great one ! i had to update CET to latest "v2", works perfect..... you desserve credits man lol !!!
    4. sakurarozu
      sakurarozu
      • premium
      • 0 kudos
      a guide would be nice for those dont know what they are doing. 

      thanks
    5. ssvnhl
      ssvnhl
      • member
      • 0 kudos
      ?????????????????????????????????????????
    6. Kobeisagryant14
      Kobeisagryant14
      • premium
      • 0 kudos
      sakurarozu What? Download the original hack everyone file (obviously the latest 1.10 file), and edit the Init file before you add the file to the game. If you are still confused, open the Hack everyone file that you had downloaded, and scroll through each file till you find the Init file (bin\x64\plugins\cyber_engine_tweaks\mods\Hack Everyone). Open the Init file with notepad or whatever you use, and paste the new script that tesnitrojack showed above. Then obviously save and exit the hack everyone file and paste the bin file to your game folder. You should not be confused
    7. nikoligrim
      nikoligrim
      • premium
      • 114 kudos
      I can confirm copying and pasting the above script to the init.LUA file does work with 1.5.1 and the latest version of CET, but it is a bit buggy.

      With the disable hacks on civilians unchecked, you can hack literally everyone, including npc's who apparently don't have implants, except npc's who are in vehicles. Protected npc's, like Misty, can also be hacked. You can't kill her, but she'll go through all hack animations except for death. Children will t-pose during a hack and will revert back after it, they'll live regardless of what you hack them with. You'll receive experience points for each hack. Contagion doesn't seem to spread with civilian npc's, but will kill the infected npc quite rapidly. Civilian npc's panic and scatter at the first attack. I did get wanted stars and a police/netwatch response from the hack, which seemed a bit odd, seeing as they wouldn't instantly know it was coming from me without a scan.

      You can also hack npc's that you've already killed, over and over, and receive experience points. (Which is basically a cheat).
    8. SotiCoto
      SotiCoto
      • premium
      • 12 kudos
      I only really wanted this mod to hack the NCPD.  Apparently that is non-canon...  but then I'm sure NCPD teleporting in infinite numbers to my position isn't canon either, so fvck 'em. 

      So... is there any way to modify this to only add NCPD personnel to the list, without regular, unarmed civvies?
    9. feils1
      feils1
      • member
      • 0 kudos
      Hello, thank you for the update! May i know how to implement this code? Where do i copy this? What file do i copy this to? I am a complete newbie to this!
    10. KirkH420
      KirkH420
      • member
      • 0 kudos
      I just tried this mod with game version 1.52.1 and I tried tesnitrojack's modified init code. It does work. I can hack anyone I want, including children and police. Children are kinda funny because they don't have any animations for things like 'Cripple movement', so they just T-pose. However, if you paste his code into a code editor and compare it side by side with the original, it then becomes possible to notice that he's removed or disabled some components. When hacking a pedestrian in game, there is no cooldown for heavy hitter quickhacks such as 'Cyberpsychosis', meaning I can just keep making more and more people psycho. (in reality, many civilians just instantly die from that QH).

      I'm not complaining, I'm very grateful to be able to hack cops. The cool thing about that is the quickhack game behavior for police is identical to a normal enemy. On the other hand, hacking a civilian works a little bit different, mainly there is no time dilation and the fact that there is no quickhack cooldown. To be clear: quickhack cooldown timers still work when hacking enemies, there is just no cooldown for civilians and I admit, it can be pretty fun and/or funny to be able to do that. Anyway, my thanks go to both the mod author and the gentleman who offered the tweaked script.
    11. 4n7
      4n7
      • member
      • 2 kudos
      Hi ! are you working it for that fresh 1.6 ? Thx !

      NVM, works fl&wless with latest CET :D

      you rock lol !!!
    12. Dukapb81
      Dukapb81
      • member
      • 0 kudos
      Where that code needs to be past?
    13. Pileot
      Pileot
      • member
      • 0 kudos
      I'm getting \plugins\cyber_engine_tweaks\mods\Hack Everyone\init.lua:82: unexpected symbol near '-'

      Any ideas what Im doing wrong? Or does this just NOT work on 1.6.0?
    14. canko97
      canko97
      • premium
      • 5 kudos
      I'm getting the same error.

      [2022-09-30 03:16:10 UTC+02:00] [error] [] sol: syntax error: ...\plugins\cyber_engine_tweaks\mods\Hack Everyone\init.lua:82: unexpected symbol near '-'
      Some people say it works on 1.6 but Idk. It doesn't work for me.
    15. billi95
      billi95
      • supporter
      • 0 kudos
      tried it - doesnt work :(
      [2022-10-02 20:04:41 UTC+02:00] [error] [] sol: syntax error: ...\plugins\cyber_engine_tweaks\mods\Hack Everyone\init.lua:81: unexpected symbol near '-'

      No idea how people got it to work
    16. kinasch
      kinasch
      • supporter
      • 3 kudos
      For everyone having problems with the code of this comment, better copy the code from the forum comment by clicking on the date at the start of the comment or follow this link: https://forums.nexusmods.com/index.php?/topic/9574613-hack-everyone/?p=105845858
    17. keepinganeyeout
      keepinganeyeout
      • member
      • 0 kudos
      How about 1.6?
    18. deathmusa
      deathmusa
      • member
      • 0 kudos
      Thanks. as per CET it told me the mod loaded. 
    19. esuriddick
      esuriddick
      • premium
      • 203 kudos
      Up you go. Seems to work in the latest version and latest CET as well.
    20. GG1313
      GG1313
      • member
      • 11 kudos
      However, CET's option to disable civilian hacking does not apply.
    21. SlenderMan33
      SlenderMan33
      • member
      • 0 kudos
      thanks, worked on 1.6 
    22. yonnek
      yonnek
      • member
      • 0 kudos
      is it work on 1.16.1 CET .1.21?
    23. NovaZek
      NovaZek
      • member
      • 40 kudos
      Does not work with 1.6.1 and the latest CET release.
    24. cchrischen
      cchrischen
      • member
      • 0 kudos
      Hi! I really like this mod but now the game version is 1.63. s#*! CDPR adjusts hacking damage and we can't hack NCPD police. I really hope you can update this mod!!!
      My English is poor, looking forward to your reply very much!!!
    25. Plume73
      Plume73
      • supporter
      • 0 kudos
      Hello mate could you update this 
    26. skyrim2822
      skyrim2822
      • member
      • 1 kudos
      Works version 2.0+  https://disk.yandex.ru/d/TDTJA2Ox_MMY6A
    27. Lao333
      Lao333
      • member
      • 0 kudos
      great skyrim2822 works but has a small problem I think.look at the image and is it fixable?, I'm on 2.01.