Advertisement
Guest User

Untitled

a guest
Mar 13th, 2016
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.76 KB | None | 0 0
  1. local settings_file = "CrimeNetFilter.ini"
  2.  
  3. if RequiredScript == "lib/network/matchmaking/networkmatchmakingsteam" then
  4.     local init_cbk = NetworkMatchMakingSTEAM.init
  5.     function NetworkMatchMakingSTEAM:init()
  6.         init_cbk(self)
  7.         self:_load_persistent_settings()
  8.     end
  9.  
  10.     function NetworkMatchMakingSTEAM:save_persistent_settings()
  11.    
  12.         managers.network.matchmake:search_lobby(Global.game_settings.search_friends_only)
  13.    
  14.         local file, err = io.open(settings_file, "w")
  15.         if not file then
  16.             io.stderr:write(err .. "\n")
  17.             return
  18.         end
  19.        
  20.         file:write("#Generated file for persistent CrimeNet filter settings, don't mess with it unless you know what you're doing\n")
  21.         file:write("friends_only " .. tostring(self._search_friends_only) .. "\n")
  22.         file:write("appropriate_jobs " .. tostring(self._search_appropriate_jobs) .. "\n")
  23.         file:write("max_lobbies " .. tostring(self._lobby_return_count) .. "\n")
  24.         file:write("distance " .. tostring(self._distance_filter) .. "\n")
  25.         for k, v in pairs(self._lobby_filters) do
  26.             file:write(tostring(k) .. " " .. tostring(self._lobby_filters[k].value) .. "\n")
  27.         end
  28.        
  29.         file:close()
  30.     end
  31.  
  32.     function NetworkMatchMakingSTEAM:_load_persistent_settings()
  33.    
  34.         local file, err = io.open(settings_file, "r")
  35.         if not file then
  36.             io.stderr:write(err .. "\n")
  37.             return
  38.         end
  39.        
  40.         local line = file:read()
  41.         while line do
  42.             if not string.match(line, "^#.+") then
  43.                 local key, val = string.match(line, "^(.+) (.+)$")
  44.                
  45.                 if key and val then
  46.                     if key == "friends_only" then
  47.                         local friends_only = val  == "true" and true or false
  48.                         Global.game_settings.search_friends_only = friends_only
  49.                         self._search_friends_only = friends_only
  50.                     elseif key == "appropriate_jobs" then
  51.                         local appropriate_jobs = val  == "true" and true or false
  52.                         Global.game_settings.search_appropriate_jobs = appropriate_jobs
  53.                         self._search_appropriate_jobs = appropriate_jobs
  54.                     elseif key == "max_lobbies" then
  55.                         self:set_lobby_return_count(tonumber(val))
  56.                     elseif key == "distance" then
  57.                         self:set_distance_filter(tonumber(val))
  58.                     elseif key == "num_players" or key == "state" or key == "difficulty" or key == "job_id" or key == "kicking_allowed" or key == "job_plan" then
  59.                         self:add_lobby_filter(key, tonumber(val), "equal")
  60.                     else
  61.                         io.stderr:write("Unknown key/value pair: " .. key .. ", " .. val .. "\n")
  62.                     end
  63.                 else
  64.                     io.stderr:write("Unable to parse line: " .. line .. "\n")
  65.                 end
  66.             end
  67.             line = file:read()
  68.         end
  69.     end
  70. end
  71.  
  72. if RequiredScript == "lib/managers/menu/crimenetfiltersgui" then
  73.     local filter_close_cbk = CrimeNetFiltersGui.close
  74.     function CrimeNetFiltersGui:close()
  75.         filter_close_cbk(self)
  76.         managers.network.matchmake:save_persistent_settings()
  77.     end
  78.    
  79. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement