mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-02-03 13:12:11 +02:00
new module
This commit is contained in:
parent
de08d70dcf
commit
4bdee20d80
49
modules/offline_characters.lua
Normal file
49
modules/offline_characters.lua
Normal file
@ -0,0 +1,49 @@
|
||||
local Global = require 'utils.global'
|
||||
local Event = require 'utils.event'
|
||||
|
||||
local offline_characters = {}
|
||||
Global.register(
|
||||
offline_characters,
|
||||
function(tbl)
|
||||
offline_characters = tbl
|
||||
end
|
||||
)
|
||||
|
||||
local function on_player_joined_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
if not offline_characters[player.index] then return end
|
||||
|
||||
local offline_character = offline_characters[player.index]
|
||||
if not offline_character or not offline_character.valid then
|
||||
offline_characters[player.index] = nil
|
||||
if not player.character or player.character.valid then
|
||||
player.set_controller({type = defines.controllers.god})
|
||||
player.create_character()
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
local c = player.character
|
||||
if c and c.valid then
|
||||
player.character = nil
|
||||
c.destroy()
|
||||
end
|
||||
|
||||
player.associate_character(offline_character)
|
||||
player.set_controller({type = defines.controllers.character, character = offline_character})
|
||||
offline_characters[player.index] = nil
|
||||
end
|
||||
|
||||
local function on_pre_player_left_game(event)
|
||||
local player = game.players[event.player_index]
|
||||
local character = player.character
|
||||
if not character or not character.valid then return end
|
||||
player.set_controller({type = defines.controllers.god})
|
||||
character.driving = false
|
||||
character.associated_player = nil
|
||||
character.color = {125, 125, 125}
|
||||
offline_characters[player.index] = character
|
||||
end
|
||||
|
||||
Event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
||||
Event.add(defines.events.on_pre_player_left_game, on_pre_player_left_game)
|
Loading…
x
Reference in New Issue
Block a user