Skip to content

Instantly share code, notes, and snippets.

@theRustyKnife
Last active December 30, 2017 16:50
Show Gist options
  • Save theRustyKnife/3cff7cde9f70df95a18153718e1f8654 to your computer and use it in GitHub Desktop.
Save theRustyKnife/3cff7cde9f70df95a18153718e1f8654 to your computer and use it in GitHub Desktop.
Factorio script for assemblers with unchangeable recipe
script.on_init(function()
global.open_assemblers = global.open_assemblers or {}
end)
script.on_event(defines.events.on_gui_opened, function(event)
if event.entity and event.entity.name == 'assembling-machine-3' then
global.open_assemblers[event.entity.unit_number] = global.open_assemblers[event.entity.unit_number] or {
entity = event.entity,
recipe = event.entity.get_recipe(),
players = {},
}
global.open_assemblers[event.entity.unit_number].players[event.player_index] = true
end
end)
script.on_event(defines.events.on_tick, function(event)
for _, assembler in pairs(global.open_assemblers) do
assembler.entity.set_recipe(assembler.recipe)
end
end)
script.on_event(defines.events.on_gui_closed, function(event)
for unit_number, assembler in pairs(global.open_assemblers) do
for player_index, _ in pairs(assembler.players) do
local player = game.players[player_index]
if not player.opened or player.opened.unit_number ~= unit_number then
assembler.players[player_index] = nil
end
if next(assembler.players) == nil then
global.open_assemblers[unit_number] = nil
end
end
end
end)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment