8

The October Crimefest brought about 2 additional playable characters within the game, namely Hoxton and the terribly acted John Wick.

Within the game you can set your preferred character to whatever one you like and, so long as nobody in the lobby has it, you will be set as that character. Unfortunately if you happen to join a server, and somebody already has your character, it defaults to one of the others... through bad luck I seem to get John Wick.

Is there anyway that I can avoid ever being defaulted to the John Wick character?

6
  • 3
    Valid question, even though I'm curious why this is important to you? Just asking though, have my upvote.
    – Sentry
    Nov 12, 2014 at 13:50
  • this is a good question, from what I have been able to tell you will not be able to set a fall back character. Sentry I would assume aside from the not to well done voice acting for his character, John Wick is not many peoples favorite as when he was implemented he had lower stats the the other heisters ( not to sure if that has been patched out now )
    – Elliott
    Nov 12, 2014 at 13:55
  • 2
    @Sentry it is because, I personally, think that the voice acting is terrible and it actually ruins the experience for me. In my opinion you have the other 4 (or 5 if you've broken Hoxton out) who will shout loudly at police / civs, but I see John Wicks as being more of a loud whisper.
    – MattR
    Nov 12, 2014 at 15:33
  • @MattR - John Wick is a direct call out to the movie assassin of the same name, played by the soft-spoken Keanu Reeves. Probably the reason why it's so soft. (side note, the movie is great once you realise that the director deliberately made the movie as trope-filled as possible for the lols)
    – Robotnik
    Mar 25, 2015 at 12:42
  • @Robotnik yeah I know he is, it doesn't make this poorly acted character any less annoying. Thankfully Overkill have been milking paid DLC like crazy so we have a host of new characters, greatly reducing the risk of being John Wick. :)
    – MattR
    Mar 26, 2015 at 11:51

2 Answers 2

7

There's a way, but it only works if the host has configured it (installed a Lua script mod).

To install this mod, grab a copy of IPHLPAPI.dll from PocoHud or HoxHud and place it in the PAYDAY 2 game folder. You only need IPHLPAPI.dll (the Lua hook)*, so there's no need for the other files if you don't want to install the above mods.

Open the PAYDAY 2 game folder, and if these folders don't exist yet, then create a lib folder, and then create a Lua folder within it. Then create a text file in it and name it register_exclude_characters_mod.lua. Paste this script using a text editor in it and save the file:

-- http://gaming.stackexchange.com/a/191627/4797?exclude_characters_PAYDAY_2
RegisterScript("lib/Lua/exclude_characters/exclude_characters.lua", 2, "lib/network/networkgame")
RegisterScript("lib/Lua/exclude_characters/exclude_characters.lua", 2, "lib/managers/criminalsmanager")

Then go to \PAYDAY 2\lib\Lua\ then create a folder called exclude_characters and then create a text file within it and name it exclude_characters.lua . Paste this script using a text editor in it and save the file:

-- http://gaming.stackexchange.com/a/191627/4797?exclude_characters_PAYDAY_2
-- v2
local EXCLUDED_CHARACTERS =  EXCLUDED_CHARACTERS or {
        -- "russian", -- Dallas
        -- "german", -- Wolf
        -- "spanish", -- Chains
        -- "american", -- Houston
        "jowi", -- Wick
        -- "old_hoxton", -- Hoxton
        -- "female_1", --Clover
        -- "dragan", 
        -- "jacket", 
        -- "bonnie", 
        -- "sokol", 
}

if RequiredScript == "lib/network/networkgame" and (#EXCLUDED_CHARACTERS < 8) then

    function NetworkGame:check_peer_preferred_character(preferred_character)
        local free_characters = clone(CriminalsManager.character_names())
        for pid, member in pairs(self._members) do
            local character = member:peer():character()
            table.delete(free_characters, character)
        end

        for _, excluded_char in ipairs(EXCLUDED_CHARACTERS) do 
            table.delete(free_characters, excluded_char) 
        end

        if table.contains(free_characters, preferred_character) then
            return preferred_character
        end
        local character = free_characters[math.random(#free_characters)]
        print("Player will be", character, "instead of", preferred_character)
        return character
    end

elseif RequiredScript == "lib/managers/criminalsmanager" and (#EXCLUDED_CHARACTERS < 8) then

    function CriminalsManager:get_free_character_name()
        local available = {}
        for id, data in pairs(self._characters) do
            local taken = data.taken
            if not taken and not self:is_character_as_AI_level_blocked(data.name) then
                table.insert(available, data.name)
            end
        end

        for _, excluded_char in ipairs(EXCLUDED_CHARACTERS) do 
            table.delete(available, excluded_char) 
        end

        if #available > 0 then
            return available[math.random(#available)]
        end
    end

end

To check if you have installed it correctly, there should be a file named register_exclude_characters_mod.lua in \PAYDAY 2\lib\Lua\ and there should be a file named exclude_characters.lua in \PAYDAY 2\lib\Lua\exclude_characters\.

The script above will allow you to exclude any character from being used by both human players and team AI bots. (Only John Wick is set to be excluded by default in the above script.) Remove the -- in front of a name in the EXCLUDED_CHARACTERS table to also exclude the character. Note that the script will not activate if you only leave 3 characters or less to be usable (because the game will crash if the script allowed that).

The script was originally from the Block Wick (host-only) post in the PAYDAY 2 Steam forums by user, Seven. I modified it to easily allow excluding other characters aside from Wick in both human and bot teammates, and to not allow excluding too many characters.


* An alternative to the original Lua hook is the BLT: CSE Lua hook (the script can be installed the same way as described above), or the BLT hook (script installation method is different - see its manual on how to register a script as 'post-require').

3

Unfortunately no, there's no way to prevent being a specific character.

From the Payday 2 Lua files:

function NetworkGame:check_peer_preferred_character(preferred_character)
    local free_characters = clone(CriminalsManager.character_names())
    for pid, member in pairs(self._members) do
        local character = member:peer():character()
        table.delete(free_characters, character)
    end
    if table.contains(free_characters, preferred_character) then
        return preferred_character
    end
    local character = free_characters[math.random(#free_characters)]
    print("Player will be", character, "instead of", preferred_character)
    return character
end

If your preferred character isn't available, it just picks one at random. Only real solution is to play with friends, and make sure you all have the character you want.

1
  • Is that file editable? IF you were to hack into it you might be able to add a line towards the top that removes John Wick form the table of available characters. As long as there is 5 or more characters available, that would always work Jan 23, 2015 at 10:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .