Advertisement
Phlum

exclude_characters.lua

Mar 27th, 2015
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.29 KB | None | 0 0
  1. -- Place this file in [Steam directory]\PAYDAY 2\lib\Lua\exclude_characters and call it exclude_characters.lua
  2. -- http://gaming.stackexchange.com/a/191627/4797?exclude_characters_PAYDAY_2
  3.  
  4. local EXCLUDED_CHARACTERS =  EXCLUDED_CHARACTERS or {
  5.         -- "russian", -- Dallas
  6.         -- "german", -- Wolf
  7.         -- "spanish", -- Chains
  8.         "american", -- Houston
  9.         "jowi", -- Wick
  10.         -- "old_hoxton", -- Hoxton
  11.         "female_1", --Clover
  12.         "dragan",
  13.         "jacket",
  14.         "bonnie",
  15. }
  16.  
  17. if RequiredScript == "lib/network/networkgame" and (#EXCLUDED_CHARACTERS <= 6) then
  18.  
  19.     function NetworkGame:check_peer_preferred_character(preferred_character)
  20.         local free_characters = clone(CriminalsManager.character_names())
  21.         for pid, member in pairs(self._members) do
  22.             local character = member:peer():character()
  23.             table.delete(free_characters, character)
  24.         end
  25.  
  26.         for _, excluded_char in ipairs(EXCLUDED_CHARACTERS) do
  27.             table.delete(free_characters, excluded_char)
  28.         end
  29.  
  30.         if table.contains(free_characters, preferred_character) then
  31.             return preferred_character
  32.         end
  33.         local character = free_characters[math.random(#free_characters)]
  34.         print("Player will be", character, "instead of", preferred_character)
  35.         return character
  36.     end
  37.  
  38. elseif RequiredScript == "lib/managers/criminalsmanager" and (#EXCLUDED_CHARACTERS <= 6) then
  39.  
  40.     function CriminalsManager:get_free_character_name()
  41.         local available = {}
  42.         for id, data in pairs(self._characters) do
  43.             local taken = data.taken
  44.             if not taken then
  45.                 for _, member in pairs(managers.network:game():all_members()) do
  46.                     if member._assigned_name == data.name then
  47.                         taken = true
  48.                         break
  49.                     end
  50.                 end
  51.             end
  52.             if not taken then
  53.                 table.insert(available, data.name)
  54.             end
  55.         end
  56.  
  57.         for _, excluded_char in ipairs(EXCLUDED_CHARACTERS) do
  58.             table.delete(available, excluded_char)
  59.         end
  60.  
  61.         if #available > 0 then
  62.             return available[math.random(#available)]
  63.         end
  64.     end
  65.  
  66. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement