Merge branch 'hotfix/servertThreads'

This commit is contained in:
Cooldude2606
2019-01-12 18:06:32 +00:00
2 changed files with 10 additions and 4 deletions

View File

@@ -81,7 +81,7 @@ Server.threads = setmetatable({},{
-- @usage Server.new_thread{name='foo',data={}}
-- @tparam table obj the attributes to give to the thread
-- @treturn Server._thread the new thread created
function Server.new_thread(obj) return Server._thread:create(obj) end
function Server.new_thread(obj) return Server._thread.create(obj) end
--- Used to get a thread via uuid or name (if one is assigned)
-- @usage Server.get_thread('decon') -- return thread
@@ -281,7 +281,11 @@ function Server._thread.create(obj)
obj._env._ENV = nil -- prevents infinite recursion
-- removes any modules from the _env to save space in global (less time to serialize)
obj._env._modules = {}
for name,value in pairs(obj._env) do if is_type(value,'table') and value._moduleName and loaded_modules[value._moduleName] == value then obj._env._modules[name] = value._moduleName obj._env[name] = nil end end
for name,value in pairs(obj._env) do
if is_type(value,'table') and value._moduleName and loaded_modules[value._moduleName] == value then
obj._env._modules[name] = value._moduleName obj._env[name] = nil
end
end
setmetatable(obj._env,_env_metatable)
local name = obj.name or 'Anon'
verbose('Created new thread: '..name..' ('..obj.uuid..')')

View File

@@ -129,12 +129,14 @@ local go_to_warp = Gui.inputs{
local player = Game.get_player(event)
local cooldown = global.cooldowns[event.player_index] or 0
local warp = global.warps[event.element.parent.name]
if not warp then return end
if cooldown > 0 then player_return({'WarpPoints.cooldown',cooldown},nil,event) return end
if player.vehicle then player.vehicle.set_driver(nil) end
if player.vehicle then player.vehicle.set_passenger(nil) end
if player.vehicle then return end
player.teleport(game.surfaces[warp.surface].find_non_colliding_position('player',warp.position,32,1),game.surfaces[warp.surface])
if not Role and not player.admin or Role and not Role.allowed(player,'always-warp') then
local surface = game.surfaces[warp.surface]
player.teleport(surface.find_non_colliding_position('player',warp.position,32,1),surface)
if not Role and not player.admin or Role and not Role.allowed(player,'always-warp') then
event.element.parent.parent.parent.parent.style.visible = false
global.cooldowns[event.player_index] = warp_limit
end