本文主要介绍异星工厂常用的Lua命令,以及异星工厂服务器的搭建
服务器搭建
首先,我们最好创建一个单独的账户gamemaster
1
|
adduser gamemaster
|
然后我们从这个连接下载对应版本的factorio服务端(headless),它是一个压缩包。
1
|
tar -xvJf factorio_headless_x64_xxx.tar.xz
|
解压之后的文件夹主要有bin
、config
、data
、mods
、saves
、temp
这几个目录。bin
下面就是一个factorio的可执行文件。config
里面是一些服务器的配置信息,这些信息大多与游戏性能相关,我们一般不在这里进行修改。data
文件夹比较重要,里面server-settings.example.json
中包含了服务器的一些设置信息,比如是否允许作弊,是否开启房间密码,游戏自动保存的时间间隔等,这里面必须要设置的是username
和password
字段,这个是在factorio游戏里面你自己创建的账户。map-gen-settings.example.json
则用来描述生成地图的配置,例如是否是和平模式,各种资源的多少等。
通过下面的命令创建新的世界
1
|
/home/gamemaster/factorio/bin/x64/factorio --create /home/gamemaster/factorio/saves/initial.zip --map-gen-settings /home/gamemaster/factorio/data/map-gen-settings.json --map-settings /home/gamemaster/factorio/data/map-settings.json
|
通过下面的命令启动服务器
1
|
nohup /home/gamemaster/factorio/bin/x64/factorio --server-settings /home/gamemaster/factorio/data/server-settings.example.json --start-server-load-latest --console-log /home/gamemaster/Factorio.log &
|
命令相关
通过下面脚本可以获得当前所有可以insert
的物品
1
|
for name, _ in pairs(game.item_prototypes) do; game.write_file("item_names.txt", name.."\n", true); end
|
通过下面的脚本可以集齐一套神装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
local player = game.player player.insert{name="power-armor-mk2", count = 1} local p_armor = player.get_inventory(5)[1].grid p_armor.put({name = "fusion-reactor-equipment"}) p_armor.put({name = "fusion-reactor-equipment"}) p_armor.put({name = "fusion-reactor-equipment"}) p_armor.put({name = "energy-shield-mk2-equipment"}) p_armor.put({name = "energy-shield-mk2-equipment"}) p_armor.put({name = "energy-shield-mk2-equipment"}) p_armor.put({name = "energy-shield-mk2-equipment"}) p_armor.put({name = "energy-shield-mk2-equipment"}) p_armor.put({name = "energy-shield-mk2-equipment"}) -- 外骨骼,可选配 p_armor.put({name = "exoskeleton-equipment"}) -- 夜视模块,可选配 p_armor.put({name = "night-vision-equipment"}) p_armor.put({name = "personal-laser-defense-equipment"}) p_armor.put({name = "personal-laser-defense-equipment"}) p_armor.put({name = "personal-roboport-mk2-equipment"}) p_armor.put({name = "battery-mk2-equipment"}) p_armor.put({name = "battery-mk2-equipment"}) |
下面列出了一些物品的获取命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
game.player.insert{name="construction-robot", count = 100} game.player.insert{name="pipe", count = 100000} game.player.insert{name="pipe-to-ground", count = 100000} game.player.insert{name="coal", count = 100000} game.player.insert{name="iron-plate", count = 100000} game.player.insert{name="rail", count = 10000} game.player.insert{name="long-handed-inserter", count = 100000} game.player.insert{name="stack-filter-inserter", count = 100000} game.player.insert{name="rail-chain-signal", count = 1000} game.player.insert{name="substation", count = 1000} game.player.insert{name="big-electric-pole", count = 1000} game.player.insert{name="logistic-chest-storage", count = 100} game.player.insert{name="grenade", count = 100} game.player.insert{name="cliff-explosives", count = 100} game.player.insert{name="locomotive", count = 2} game.player.insert{name="train-stop", count = 100} game.player.insert{name="laser-turret", count = 1000} game.player.insert{name="express-transport-belt", count = 100000} game.player.insert{name="express-underground-belt", count = 100000} game.player.insert{name="express-splitter", count = 100000} game.player.insert{name="electric-mining-drill", count = 100} game.player.insert{name="stone-brick", count = 10000} game.player.insert{name="copper-plate", count = 10000} game.player.insert{name="stone", count = 10000} game.player.insert{name="rocket-launcher", count = 2} game.player.insert{name="roboport", count = 100} game.player.insert{name="explosive-rocket", count = 100} |
修改人物奔跑速度
1
|
/c game.player.character.character_running_speed_modifier = 3
|
修改和平模式
1
|
/c game.player.surface.peaceful_mode = true
|
开启作弊
1
|
/c game.player.cheat_mode=true
|
刷永续箱
1
|
/c game.player.insert{name="infinity-chest",count=1} |
清空污染
1
|
/c game.player.surface.clear_pollution()
|
彻底关闭污染
1
|
/c game.map_settings.pollution.enabled = false
|