Merge branch 'master' into testing

This commit is contained in:
Cooldude2606
2018-05-14 19:48:22 +01:00
26 changed files with 219 additions and 144 deletions

View File

@@ -41,7 +41,12 @@ local commands = {
['magic']={'chat-bot.magic'},
['aids']={'chat-bot.aids'},
['riot']={'chat-bot.riot'},
['lenny']={'chat-bot.lenny'}
['lenny']={'chat-bot.lenny'},
['maketea']=function(player) Server.new_thread{
timeout=math.floor(180*(math.random()+0.5)),data=player.name
}:on_event('timeout',function(self)
if self.data then game.print{'chat-bot.message',{'chat-bot.make-tea-2',self.data}} end
end):open() return {'chat-bot.make-tea-1'} end
}
Event.register(defines.events.on_console_chat,function(event)

View File

@@ -33,7 +33,7 @@ function get_player_info(player,frame,add_cam)
frame.add{type='label',caption={'player-info.group',_player.group}}
frame.add{type='label',caption={'player-info.rank',_player.rank}}
if add_cam then
Gui.cam_link{entity=player.character,frame=frame,width=200,height=75,zoom=0.5,respawn_open=true}
Gui.cam_link{entity=player.character,frame=frame,width=200,height=150,zoom=0.5,respawn_open=true}
end
end
return _player

View File

@@ -13,7 +13,8 @@ commands.add_command('report', 'Reports a player.', {'player','reason',true}, fu
local player = Game.get_player(args.player)
local reason = args.reason
if not player then player_return({'commands.invalid-player',args.player}) return commands.error end
if Ranking.get_rank(player):allowed('no-report') or Admin.is_banned(player) then player_return({'reports.cant-report',args.player}) return commands.error end
if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end
if Ranking.get_rank(player):allowed('no-report') then player_return({'reports.cant-report',args.player}) return commands.error end
for _,report in pairs(global.addons.reports.reports) do if report[1] == _player.name then player_return({'reports.cant-report',args.player}) return commands.error end end
for _,report in pairs(global.addons.reports.varified) do if report[1] == _player.name then player_return({'reports.cant-report',args.player}) return commands.error end end
Admin.report(player,event.player_index,reason)
@@ -23,7 +24,8 @@ commands.add_command('warn', 'Gives a player a warnings', {'player','reason',tru
local player = Game.get_player(args.player)
local reason = args.reason
if not player then player_return({'commands.invalid-player',args.player}) return commands.error end
if Ranking.get_rank(player):allowed('no-report') or Admin.is_banned(player) then player_return({'reports.cant-report',args.player}) return commands.error end
if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end
if Ranking.get_rank(player):allowed('no-report') then player_return({'reports.cant-report',args.player}) return commands.error end
Admin.give_warning(player,event.player_index,reason)
end)
@@ -31,13 +33,15 @@ commands.add_command('jail', 'Jails a player', {'player','reason',true}, functio
local player = Game.get_player(args.player)
local reason = args.reason
if not player then player_return({'commands.invalid-player',args.player}) return commands.error end
if Ranking.get_rank(player):allowed('no-report') or Admin.is_banned(player) then player_return({'reports.cant-report',args.player}) return commands.error end
if Ranking.get_rank(player):allowed('no-report') then player_return({'reports.cant-report',args.player}) return commands.error end
if Admin.is_banned(player) then player_return({'commands.cant-report-ban',args.player}) return commands.error end
Admin.jail(player,event.player_index,reason)
end)
commands.add_command('unjail', 'Returns the players old rank', {'player',true}, function(event,args)
local player = Game.get_player(args.player)
if not player then player_return({'commands.invalid-player',args.player}) return commands.error end
if Admin.is_banned(player) then player_return({'commands.cant-report-ban',args.player}) return commands.error end
Ranking.revert(player,event.player_index)
end)
@@ -45,25 +49,28 @@ commands.add_command('temp-ban', 'Temporarily ban a player.', {'player','reason'
local player = Game.get_player(args.player)
local reason = args.reason
if not player then player_return({'commands.invalid-player',args.player}) return commands.error end
if Admin.is_banned(player) then player_return({'reports.cant-report',args.player}) return commands.error end
if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end
Admin.temp_ban(player,event.player_index,reason)
end)
commands.add_command('clear-inv', 'Clears the player\'s invetory', {'player'}, function(event,args)
local player = Game.get_player(args.player)
if not player then player_return({'commands.invalid-player',args.player}) return commands.error end
if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end
Admin.move_inventory(player)
end)
commands.add_command('clear-warings', 'Clears the warnings on a player.', {'player'}, function(event,args)
commands.add_command('clear-warnings', 'Clears the warnings on a player.', {'player'}, function(event,args)
local player = Game.get_player(args.player)
if not player then player_return({'commands.invalid-player',args.player}) return commands.error end
if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end
Admin.clear_warings(player,event.player_index)
end)
commands.add_command('clear-reports', 'Clears the reports on a player.', {'player'}, function(event,args)
local player = Game.get_player(args.player)
if not player then player_return({'commands.invalid-player',args.player}) return commands.error end
if Admin.is_banned(player) then player_return({'reports.cant-report-ban',args.player}) return commands.error end
Admin.clear_reports(player,event.player_index)
end)

View File

@@ -54,6 +54,13 @@ end)
Event.register(defines.events.on_pre_player_died,function(event)
local player = Game.get_player(event)
if Ranking.get_rank(player):allowed('bonus-respawn') then
player.ticks_to_respawn = 60
player.ticks_to_respawn = 120
-- manually dispatch death event because it is not fired when ticks_to_respawn is set pre death
Event.dispatch{
name=defines.events.on_player_died,
tick=event.tick,
player_index=event.player_index,
cause = event.cause
}
end
end)
end)

View File

@@ -14,24 +14,24 @@ local function _homes(reset)
return global.addons.homes
end
commands.add_command('set-home', 'Set Your Home Possition', {}, function(event,args)
commands.add_command('set-home', 'Set your home position', {}, function(event,args)
local player = Game.get_player(event)
if not _homes()[player.index] then _homes()[player.index] = {player.force.get_spawn_position(player.surface),player.force.get_spawn_position(player.surface)} end
_homes()[player.index][1] = {math.floor(player.position.x),math.floor(player.position.y)}
player_return('Home set at: ('..math.floor(player.position.x)..','..math.floor(player.position.y)..')')
end)
commands.add_command('home', 'Goto you home possition', {}, function(event,args)
commands.add_command('home', 'Go to you home position', {}, function(event,args)
local player = Game.get_player(event)
if not _homes()[player.index] then _homes()[player.index] = {player.force.get_spawn_position(player.surface),player.force.get_spawn_position(player.surface)} end
_homes()[player.index][2] = {math.floor(player.position.x),math.floor(player.position.y)}
player.teleport(player.surface.find_non_colliding_position('player',_homes()[player.index][1],32,1),player.surface)
end)
commands.add_command('return', 'Goto where you were before using /home', {}, function(event,args)
commands.add_command('return', 'Go to where you were before using /home', {}, function(event,args)
local player = Game.get_player(event)
if not _homes()[player.index] then _homes()[player.index] = {player.force.get_spawn_position(player.surface),player.force.get_spawn_position(player.surface)} end
local _temp = {math.floor(player.position.x),math.floor(player.position.y)}
player.teleport(player.surface.find_non_colliding_position('player',_homes()[player.index][2],32,1),player.surface)
_homes()[player.index][2] = _temp
end)
end)

View File

@@ -28,18 +28,20 @@ commands.add_command('repair', 'Repairs all destoryed and damaged entites in an
local max_range = rank.power-highest_admin_power > 0 and const/(rank.power-highest_admin_power) or nil
local center = player and player.position or {x=0,y=0}
if not range or max_range and range > max_range then player_return({'commands.invalid-range',0,math.floor(max_range)}) return commands.error end
for x = -range-2, range+2 do
for y = -range-2, range+2 do
if x^2+y^2 < range^2 then
for key, entity in pairs(player.surface.find_entities_filtered({area={{x+center.x,y+center.y},{x+center.x+1,y+center.y+1}},type='entity-ghost'})) do
if disallow[entity.ghost_prototype.name] then
player_return('You have repaired: '..entity.name..' this item is not allowed.',defines.text_color.crit,player)
Admin.temp_ban(player,'<server>','Attempt To Repair A Banned Item')
entity.destroy()
else entity.revive() end
end
for key, entity in pairs(player.surface.find_entities({{x+center.x,y+center.y},{x+center.x+1,y+center.y+1}})) do if entity.health then entity.health = 10000 end end
end
local area = {{center.x-range,center.y-range},{center.x+range,center.y+range}}
local max_time_to_live = 2^32 - 1
local sq_range = range^2
for key, entity in pairs(player.surface.find_entities_filtered({area=area,type='entity-ghost'})) do
if entity.force == player.force and (entity.position.x-center.x)^2+(entity.position.y-center.y)^2 < sq_range then
if disallow[entity.ghost_prototype.name] then
player_return('You have repaired: '..entity.name..' this item is not allowed.',defines.text_color.crit,player)
Admin.temp_ban(player,'<server>','Attempt To Repair A Banned Item')
entity.destroy()
elseif entity.time_to_live ~= max_time_to_live then
entity.revive() end
end
end
for key, entity in pairs(player.surface.find_entities(area)) do
if entity.force == player.force and (entity.position.x-center.x)^2+(entity.position.y-center.y)^2 < sq_range and entity.health then entity.health = 10000 end
end
end)

View File

@@ -133,7 +133,7 @@ Admin.center = Gui.center.add{
type='flow',
direction='vertical'
}
player_info_flow.style.height = 200
player_info_flow.style.height = 300
player_info_flow.style.width = 200
local label = dropdowns.add{
type='label',

View File

@@ -132,19 +132,33 @@ local next = Gui.inputs.add{
draw_poll(parent.parent.poll_area)
end)
-- this function from redmew, would take too much to make a better one
local poll_question_input = Gui.inputs.add_text('poll-question-input',true,'Question',function(player,text,element)
local options = element.parent.options
if not options.question then options.add{type='label',name='question',caption=''}
else options.question.caption = text end
end)
local _self_referace_poll_option_input = nil
local poll_option_input = Gui.inputs.add_text('poll-option-input',true,'Enter Option',function(player,text,element)
local options = element.parent.parent.parent.options
if not options[element.parent.name] then options.add{type='label',name=element.parent.name,caption=text}
else options[element.parent.name].caption = text end
if options.last.caption == element.parent.name then
options.last.caption = tonumber(options.last.caption)+1
_self_referace_poll_option_input:draw(element.parent.parent.add{type='flow',name=options.last.caption}).style.minimal_width = 200
end
end)
_self_referace_poll_option_input = poll_option_input
local function poll_assembler(frame)
frame.clear()
local frame_table = frame.add { type = 'table', name = 'table_poll_assembler', column_count = 2 }
frame_table.add { type = 'label', caption = 'Question:' }
frame_table.add { type = 'textfield', name = 'textfield_question', text = '' }
frame_table.add { type = 'label', caption = 'Option #1:' }
frame_table.add { type = 'textfield', name = 'textfield_answer_1', text = '' }
frame_table.add { type = 'label', caption = 'Option #2:' }
frame_table.add { type = 'textfield', name = 'textfield_answer_2', text = '' }
frame_table.add { type = 'label', caption = 'Option #3:' }
frame_table.add { type = 'textfield', name = 'textfield_answer_3', text = '' }
frame_table.add { type = 'label', caption = '' }
frame.clear()
local options = frame.add{type='flow',name='options'}
options.style.visible = false
options.add{type='label',name='last',caption='2'}
poll_question_input:draw(frame).style.minimal_width = 200
local flow = frame.add{type='flow',direction='vertical'}
poll_option_input:draw(flow.add{type='flow',name='1'}).style.minimal_width = 200
poll_option_input:draw(flow.add{type='flow',name='2'}).style.minimal_width = 200
end
local create_poll = Gui.inputs.add{
@@ -154,17 +168,24 @@ local create_poll = Gui.inputs.add{
}:on_event('click',function(event)
local parent = event.element.parent
if event.element.sprite == 'utility/enter' then
local inputs = parent.parent.poll_area.table_poll_assembler
local inputs = parent.parent.poll_area.options
if not inputs then
event.element.sprite = 'utility/add'
draw_poll(parent.parent.poll_area)
return
end
local uuid = _poll_data(inputs.textfield_question.text,{
inputs.textfield_answer_1.text,
inputs.textfield_answer_2.text,
inputs.textfield_answer_3.text
})
local options = {}
for _,option in pairs(inputs.children) do
if option.name ~= 'question' and option.name ~= 'last' then
if option.caption ~= 'Enter Option' and option.caption ~= '' then table.insert(options,option.caption) end
end
end
if not inputs.question or #options == 0 then
event.element.sprite = 'utility/add'
draw_poll(parent.parent.poll_area)
return
end
local uuid = _poll_data(inputs.question.caption,options)
Gui.popup.open('polls',{uuid=uuid})
event.element.sprite = 'utility/add'
draw_poll(parent.parent.poll_area)

View File

@@ -83,4 +83,22 @@ Gui.left.add{
end
}
Event.register(defines.events.on_rocket_launched,function(event) Gui.left.update('rockets') end)
Event.register(defines.events.on_rocket_launched,function(event) Gui.left.update('rockets') end)
Sync.add_update('rockets',function()
local _return = {}
local data = _global()
local satellites = game.forces.player.get_item_launched('satellite')
local time = {'rockets.nan'}
if satellites == 1 then time = tick_to_display_format(game.tick)
elseif satellites > 1 then time = tick_to_display_format((game.tick-data.first)/satellites) end
_return.total = satellites
_return.first = Sync.tick_format(data.first)
_return.last = Sync.tick_format(data.last-data._last)
_return.time = Sync.tick_format(time)
_return.fastest = Sync.tick_format(data.fastest)
_return.milestones = {}
for milestone,time in pairs(data.milestones) do
_return.milestones[milestone] = Sync.tick_format(time)
end
return _return
end)

View File

@@ -83,4 +83,20 @@ Gui.left.add{
end
}
Event.register(defines.events.on_research_finished,function(event) Gui.left.update('science') end)
Event.register(defines.events.on_research_finished,function(event) Gui.left.update('science') end)
Sync.add_update('science',function()
local _return = {}
local _data = _global()
for force_name,data in pairs(_data) do
if force_name ~= '_base' then
_return[force_name] = {totals={},times={}}
for i,name in pairs(science_packs) do
local made = data.made[i]
_return[force_name].totals[name] = made
local _made = string.format('%.2f',(made-data._made[i])/((data.update-data._update)/(3600*game.speed)))
_return[force_name].times[name] = _made
end
end
end
return _return
end)

View File

@@ -108,6 +108,7 @@ local function _tasks(player)
return _global().tasks
elseif not data._edit and _edit then
data._edit = true
for key,_ in pairs(data._tasks) do if not data._editing[key] then data._editing[key] = false end end
return data._tasks
elseif _edit then return data._tasks
else return _global().tasks

View File

@@ -85,7 +85,10 @@ local function make_warp_point(position,surface,force,name)
icon={type='item',name=warp_item}
})
_warps().warps[name] = {tag=tag,surface=surface,position=tag.position,old_tile=old_tile}
_warps().warps = table.keysort(_warps().warps)
local _temp = {Spawn=_warps().warps.Spawn}
_warps().warps.Spawn = nil
for name,data in pairs(table.keysort(_warps().warps)) do _temp[name] = data end
_warps().warps = _temp
Gui.left.update('warp-list')
end
@@ -94,6 +97,8 @@ commands.add_command('make-warp', 'Make a warp point at your location', {'name',
local position = game.player.position
local name = args.name
if _warps().warps[name] then player_return({'warp-system.name-used'},defines.text_color.med) return commands.error end
if position.x^2 + position.y^2 < 100 then player_return({'warp-system.too-close'},defines.text_color.med) return commands.error end
-- to do add a test for all warps
make_warp_point(position,game.player.surface,game.player.force,name)
end)

View File

@@ -38,7 +38,7 @@ require('Guis/rockets')
require('Guis/player-list')
require('Guis/tasklist')
require('Guis/warp-system')
--require('Guis/polls') -- too many desyncs
require('Guis/polls') -- too many desyncs
require('Guis/announcements')
require('Guis/rank-changer')
require('Guis/admin-gui') -- used with Admin/admin, requires Admin/admin

View File

@@ -12,5 +12,5 @@ require('colours')
require('health')
require('spawn')
require('starting-items')
--require('paths') -- takes up too much file size
require('paths')
require('body-marker')

View File

@@ -1,110 +1,100 @@
-- made by cooldude
-- idea from Mylon - Dirt Path
local clean_time = 18000 -- time in ticks
local adjacency_boost = 1.3 -- makes paths more lickly to be next to each other
local placed_paths = {
['refined-concrete']=true,
['refined-hazard-concrete-right']=true,
['refined-hazard-concrete-left']=true,
['concrete']=true,
['hazard-concrete-right']=true,
['hazard-concrete-left']=true,
['stone-path']=true
}
local paths = {
-- ['tile name'] = {health,convert to}
-- health is in hundrads of steps
['refined-concrete']={60,'concrete'},
['refined-hazard-concrete-right']={60,'hazard-concrete-right'},
['refined-hazard-concrete-left']={60,'hazard-concrete-left'},
['concrete']={40,'stone-path'},
['hazard-concrete-right']={40,'stone-path'},
['hazard-concrete-left']={40,'stone-path'},
['stone-path']={20,'world-gen'}, -- world-gen just makes it pick the last tile not placed by a player
['sand-1']={5,'sand-2'},
['sand-2']={10,'sand-3'},
['sand-3']={5,'red-desert-3'},
['red-desert-3']={5,'red-desert-2'},
['red-desert-2']={10,'dirt-1'},
['grass-2']={5,'grass-1'},
['grass-1']={5,'grass-3'},
['grass-3']={10,'red-desert-0'},
['red-desert-0']={5,'red-desert-1'},
['red-desert-1']={10,'dirt-1'},
['dirt-1']={5,'dirt-2'},
['dirt-2']={5,'dirt-3'},
['dirt-3']={10,'dirt-4'},
['dirt-4']={5,'dirt-5'},
['dirt-5']={5,'dirt-6'},
['grass-4']={10,'dirt-4'}
-- health is the average number of steps in hundards before it changes
['refined-concrete']={30,'concrete'},
['refined-hazard-concrete-right']={30,'hazard-concrete-right'},
['refined-hazard-concrete-left']={30,'hazard-concrete-left'},
['concrete']={25,'stone-path'},
['hazard-concrete-right']={25,'stone-path'},
['hazard-concrete-left']={25,'stone-path'},
['stone-path']={10,'world-gen'}, -- world-gen just makes it pick the last tile not placed by a player
['sand-1']={1,'sand-2'},
['sand-2']={5,'sand-3'},
['sand-3']={1,'red-desert-3'},
['red-desert-3']={1,'red-desert-2'},
['red-desert-2']={5,'dirt-1'},
['grass-2']={1,'grass-1'},
['grass-1']={1,'grass-3'},
['grass-3']={5,'red-desert-0'},
['red-desert-0']={1,'red-desert-1'},
['red-desert-1']={5,'dirt-1'},
['dirt-1']={1,'dirt-2'},
['dirt-2']={1,'dirt-3'},
['dirt-3']={5,'dirt-4'},
['dirt-4']={1,'dirt-5'},
['dirt-5']={1,'dirt-6'},
['grass-4']={5,'dirt-4'}
}
for tile,value in pairs(paths) do
value[1]=value[1]*100
value[1]=1/(value[1]*150) -- 150 do make it so about 75% will change by the expected value
end
local function global_key(surface,pos)
local key = 'S'..surface.name..'X'..math.floor(pos.x)..'Y'..math.floor(pos.y)
if not global.paths then global.paths = {} end
if not global.paths[key] then
local tile = surface.get_tile(pos).name
global.paths[key] = {tile,paths[tile][1]}
end
return global.paths[key]
end
local function remove_key(surface,pos)
local key = 'S'..surface.name..'X'..math.floor(pos.x)..'Y'..math.floor(pos.y)
if not global.paths then global.paths = {} end
global.paths[key] = nil
end
local function clean_global()
if not global.paths or not game then return end
for key,tile in pairs(global.paths) do
if tile[3] and tile[3] < game.tick-clean_time then global.paths[key] = nil end
end
return 'S'..surface.name..'X'..math.floor(pos.x)..'Y'..math.floor(pos.y)
end
local function down_grade(surface,pos)
local tile = surface.get_tile(pos).name
local new_tile = paths[tile][2]
if new_tile == 'world-gen' then new_tile = global_key(surface,pos)[1] or 'grass-1' end
if new_tile == 'world-gen' then
if global.paths == nil then global.paths = {} end -- nil as you can set to false to disable
new_tile = global.paths[global_key(surface,pos)] or 'grass-1'
end
surface.set_tiles{{name=new_tile,position=pos}}
global_key(surface,pos)[2]=paths[new_tile][1]
if not paths[new_tile] then remove_key(surface,pos) return end
end
Event.register(defines.events.on_player_built_tile, function(event)
local surface = game.surfaces[event.surface_index]
local old_tiles = event.tiles
for _,old_tile in pairs(old_tiles) do
if old_tile.old_tile.name ~= 'refined-concrete' and old_tile.old_tile.name ~= 'refined-hazard-concrete-right'
and old_tile.old_tile.name ~= 'refined-hazard-concrete-left' and old_tile.old_tile.name ~= 'concrete'
and old_tile.old_tile.name ~= 'hazard-concrete-right' and old_tile.old_tile.name ~= 'hazard-concrete-left'
and old_tile.old_tile.name ~= 'stone-path' and old_tile.old_tile.name ~= 'water' and old_tile.old_tile.name ~= 'deep-water' then
global_key(surface,old_tile.position)[1]=old_tile.old_tile.name
if placed_paths[old_tile.old_tile.name] or old_tile.old_tile.name == 'water' or old_tile.old_tile.name == 'deep-water' then else
if global.paths == nil then global.paths = {} end -- nil as you can set to false to disable
global.paths[global_key(surface,old_tile.position)]=old_tile.old_tile.name
end
if not paths[surface.get_tile(old_tile.position).name] then remove_key(surface,old_tile.position) return end
global_key(surface,old_tile.position)[2]=paths[surface.get_tile(old_tile.position).name][1]
global_key(surface,old_tile.position)[3] = event.tick
end
end)
Event.register(defines.events.on_player_mined_tile, function(event)
local surface = game.surfaces[event.surface_index]
local old_tiles = event.tiles
for _,old_tile in pairs(old_tiles) do
if not paths[surface.get_tile(old_tile.position).name] then remove_key(surface,old_tile.position) return end
global_key(surface,old_tile.position)[2]=paths[surface.get_tile(old_tile.position).name][1]
global_key(surface,old_tile.position)[3] = event.tick
end
end)
Event.register(defines.events.on_player_changed_position, function(event)
local player = Game.get_player(event)
if player.afk_time > 300 then return end
local surface = player.surface
local pos = player.position
if not paths[surface.get_tile(pos).name] then remove_key(surface,pos) return end
global_key(surface,pos)[2] = global_key(surface,pos)[2]-1
if global_key(surface,pos)[2] <= 0 then
local tile_name = surface.get_tile(pos).name
if not paths[tile_name] then return end
local chance = paths[tile_name][1]
for x = -1,1 do for y = -1,1 do
local _pos = {pos.x+x,pos.y+y}
if paths[tile_name][2] == 'world-gen' and not placed_paths[surface.get_tile(_pos).name]
or surface.get_tile(_pos).name == paths[tile_name][2]
then chance=chance*adjacency_boost end
end end
if math.random() < chance then
down_grade(surface,pos)
end
global_key(surface,pos)[3] = event.tick
end)
Event.register(defines.events.on_tick, function(event)
if (game.tick%clean_time) == 0 then
clean_global()
end
end)
--[[
/interface
local tile_name = tile.name
local chance = paths[tile_name][1]
for x = -1,1 do for y = -1,1 do
local _pos = {position.x+x,position.y+y}
if paths[tile_name][2] == 'world-gen' and not placed_paths[surface.get_tile(_pos).name]
or surface.get_tile(_pos).name == paths[tile_name][2]
then game.print('boost'..tostring(math.random())) chance=chance*adjacency_boost end end
end
return chance
]]

View File

@@ -22,6 +22,7 @@ Event.register(defines.events.on_player_created, function(event)
local player = game.players[event.player_index]
if event.player_index == 1 then
player.force.friendly_fire = false
game.map_settings.enemy_expansion.enabled = false
player.force.chart(player.surface, {{player.position.x - 400, player.position.y - 400}, {player.position.x + 400, player.position.y + 400}})
end
for item,count in pairs(items) do

View File

@@ -1,3 +1,3 @@
[base-damage]
used=You hit some of your own buildings. Please be careful next time!
nukes=Nukes are not allowed in your rank. This is a preventive measure against griefers.
nuke=Nukes are not allowed in your rank. This is a preventive measure against griefers.

View File

@@ -13,10 +13,12 @@ read-readme=Make sure you have read the Readme (can be found through the questio
not-real-dev=Cooldude2606 is a dev for this server and makes the softmod (look top left) and is not a factorio dev.
softmod=A softmod is a custom scenario that runs on this server, example is the player list.
blame=Blame __1__ for what just happend!
afk=Your afk? Look at __1__ they have been afk for: __2__
afk=Your afk? Look at __1__, that player has been afk for: __2__
links=To see links open the readme and click links.
magic=Fear the admin magic (ノ゚∀゚)ノ⌒・*:.。. .。.:*・゜゚・*☆
aids=≖ ‿ ≖ Fear the aids of a public server ≖ ‿ ≖
riot=(admins) ┬┴┬┴┤ᵒ_ᵒ)├┬┴┬┴ \(´ω` )/\ (  ´)/\ ( ´ω`)/ (rest of server)
loops=NO LOOPS; LOOPS ARE BAD; JUST NO LOOPS!!!!!; IF YOU MAKE A LOOP.... IT WILL NOT END WELL!!!!!!!
lenny=( ͡° ͜ʖ ͡°)
lenny=( ͡° ͜ʖ ͡°)
make-tea-1= ☕ Boiling the water... ☕
make-tea-2= ☕ __1__ your tea is done! ☕

View File

@@ -3,6 +3,7 @@ name=Report Player
low-print=__1__ has been reported by a user for: __2__
high-print=__1__ has been reported by __2__ for: __3__
cant-report=This player can not be reported.
cant-report-ban=Invalid player as player is banned; Either unban or use /clear-all <player_name>
warning-given-by=This warning was given by: __1__
player-warning=__1__ was given a warning by __2__ for: __3__
temp-ban=__1__ was temporary banned by __2__ and will remain in jail until next reset

View File

@@ -6,4 +6,5 @@ go-to-tooltip=Go To
cooldown=You must wait for the cooldown. Time left: __1__
cooldown-zero=Your cooldown has expired, You can use warp points again.
name-used=That name is already taken.
too-close=You are too close to an existing warp point to make a new one.
not-on-warp=You are not on a warp point right now, you must be on a warp point to go to one.

View File

@@ -1,3 +1,3 @@
[base-damage]
used=Du träffade några av dina egna byggnader. Var försiktig nästa gång!
nukes=Kärnvapen är inte tillåted för din rang. Det här är en förebyggande åtgärd mot griefers (bråkstakar)
nuke=Kärnvapen är inte tillåted för din rang. Det här är en förebyggande åtgärd mot griefers (bråkstakar)

View File

@@ -13,12 +13,10 @@ custom-commands=Vi använder oss av specialiserade kommandon, som till exempel /
read-readme=Se till att du har läst "Readme" (Finn den genom att klicka på frågetecknet högst upp i vänstra hörnet)
not-real-dev=Cooldude2606 är dev för den här servern och gör mjukmodden ("the softmod") och är inte en factorio dev.
ssoftmod=En mjukmod ("softmod") är ett specialscenario som används på den här servern, exempelvis listan över spelare.
blame=Skyll på __1__ för vad som just hände!
afk=Är du afk (borta från tangentbordet)? Titta på __1__ De har varit afk r: __2__
afk=Är du afk (borta från tangentbordet)? Titta på __1__, den spelaren har varit afk under: __2__
links=För att se länkar, öppna readme och klicka "länkar".
magic=Frukta admin-magin (ノ゚∀゚)ノ⌒・*:.。. .。.:*・゜゚・*☆
aids=≖ ‿ ≖Fear the aids of a public server ≖ ‿ ≖
riot=(admins) ┬┴┬┴┤ᵒ_ᵒ)├┬┴┬┴ \(´ω` )/\ (  ´)/\ ( ´ω`)/ (rest of server)
loops=NO LOOPS; LOOPS ARE BAD; JUST NO LOOPS!!!!!; IF YOU MAKE A LOOP.... IT WILL NOT END WELL!!!!!!!
loops=INGA LOOPAR; LOOPAR ÄR DÅLIGT; JUST INGA LOOPAR!!!!!; OM DU GJÖR EN LOOP.... DET KOMMER INTE ATT SLUTA VÄL!!!!!!!

View File

@@ -4,7 +4,7 @@ invalid-inputs=Igiltig inmatning, /__1__ __2__
invalid-range=Invalid räckvid, Min: __1__, Max: __2__
invalid-length=ogiltig längd, Max: __1__
invalid-player=Ogiltigt spelarnamn, __1__ , försök använda tab-tangenten för att auto-slutföra namn.
offline-player=Spellare är offline. Kommando misslyckades med att köras.
offline-player=Spelare är offline. Kommando misslyckades med att köras.
dead-player=Spelare är död. Kommando misslyckades med att köras.
command-ran=Kommandot slutfört
@@ -19,4 +19,4 @@ tag-reset=Din tag blev återställd på grund av rangförändrning.
[gui]
unauthorized=401 -Otillåten: Tillgång nekas på grund av otillräcklig säkerhetsprövning.
cant-open=Du kan inte öppna den här panelen just nu, orsak: __1__
cant-open-no-reason=Du kan inte öppna den här panelen just nu
cant-open-no-reason=Du kan inte öppna den här panelen just nu

View File

@@ -4,4 +4,4 @@ tooltip=Se gamla undersökningar
no-poll=Inga gamla undersökningar
end=Röstning slutade nyss: __1__
winner=__1__ hade flest röster.
time-left=Du kommer att få __1__s att välja.
time-left=Du kommer att få __1__s på dig att välja.

View File

@@ -30,30 +30,30 @@ servers-name=Servrar
servers-tooltip=Information om våra servrar
servers-singleline=Välkommen till ExplosiveGamings gemenskap! S1-S3 har förskjutna återställningar (resets).
servers-format=S__1__: __2__
servers-cap1=Publik
servers-cap1=Offentlig
servers-des1=En plats för alla spelare, then här kartan återställs varje 72H, 16:00 UTC.
servers-cap2=Publik
servers-cap2=Offentlig
servers-des2=En plats för alla spelare, then här kartan återställs varje 72H, 16:00 UTC.
servers-cap3=Publik
servers-cap3=Offentlig
servers-des3=En plats för alla spelare, then här kartan återställs varje 72H, 16:00 UTC.
servers-cap4=Modifierad
servers-des4=A Modifierad server för alla spelare. Länk i Discord för medlemmar.
servers-des4=En modifierad server för alla spelare. Länk i Discord för medlemmar.
servers-cap5=Evenemang
servers-des5=Server för evenemang (alla kan ansluta sig) - Kan kräva lösenord. Anslut dig till Discord för mer info.
servers-cap6=Donator
servers-des6=För spelare som stöder oss finansiellt. Ändringar kan göras på begäran.
rules-name=Regler
rules-tooltip=Den fullla listan över ExplosiveGamings regler.
rules-singleline=Även om riktlinjerna täcker de flesta av reglerna, den fulla listan har alltid prioritet och går alltid före riktlinjerna. Det är välbetänkt att vara bekant med alla reglerna för att förhindra varningar och bannlystningar.
rules-singleline=Även om riktlinjerna täcker de flesta av reglerna så har den fulla listan alltid prioritet och går alltid före riktlinjerna. Det är välbetänkt att vara bekant med alla reglerna för att förhindra varningar och bannlystningar.
rules-format=__1__) __2__
rules-rule1=Dataintrång / fusk / missbruk av buggar kommer inte att tolereras.
rules-rule2=Buggar och utnyttjingssätt ska rapporteras till team-medlemmar (exkluderande kreativa saker)
rules-rule2=Buggar och utnyttjingssätt ska rapporteras till team-medlemmar (exkludera kreativa saker)
rules-rule3=Var inte respektlös mot någon annan spelare i servern.
rules-rule4=Att ta alla saker från ett bälte eller logistikbegäran är förbjudet: att dela med sig av resurserna är obligatoriskt.
rules-rule5=Spam (genom chat, bottar, obegränsade kistor eller betong) är inte tillåtet.
rules-rule6=Gör inga placeringar/borttagningar av betong eller sten med hjälp av bottar utan tillåtelse.
rules-rule7=Använd inte aktiva tillgångskistor utan tillåtelse.
rules-rule8=Använd inte globala högtalare varningar utan tillåtelse.
rules-rule8=Använd inte globala högtalare eller varningar utan tillåtelse.
rules-rule9=Ta inte bort eller flytta huvuddelar av fabriken utan tillåtelse.
rules-rule10=Gå inte omkring i slumpvisa riktningar utan anledning (för att spara kartstorlek och serverresurser)
rules-rule11=Ta inte bort saker utan att fråga dina medspelare.

View File

@@ -1,4 +1,4 @@
[tasklist]
name=Uppgiftslista
tooltip=Jobb som behövs slutföras överallt i fabriken
none=Det finns för närvarande inga uppgifter. Fråga en medlem i spelet eller via Discord för att lägga till uppgifter.
none=Det finns för närvarande inga uppgifter. Fråga en medlem i spelet eller via Discord för att lägga till nya uppgifter.