异星工厂吧 关注:56,864贴子:329,583
  • 4回复贴,共1

[控制台]范围替换范围替换矿物种类与数量指令

只看楼主收藏回复

矿物种类较多的 Mod 经常会发生多种矿物生成区域重叠的情况,导致矿区难以利用。

可以通过控制台指令,将一定半径内的所有某种类矿物替换为另一种来让矿区统一。也可以直接替换整片矿区,例如将一整片铜矿替换为铬矿等。
/c local surface=game.player.surface
local size=200
local pos=game.player.position
for _, e in pairs(surface.find_entities_filtered{area={{pos.x-size, pos.y-size},{pos.x+size, pos.y+size}}, name="ore-zinc"}) do
surface.create_entity({name="ore-aluminium", amount=e.amount, position=e.position})
e.destroy()
end
执行后,玩家周围半径 200 内的锌矿将被替换为等藏量的铝矿。可以通过修改第二行 local size=200 的数值调整半径大小。
此外,如果当前矿区藏量过小,也可以通过控制台指令直接批量调整当前矿区的矿物藏量。
/c local surface=game.player.surface
local size=200
local pos=game.player.position
for _, e in pairs(surface.find_entities_filtered{area={{pos.x-size, pos.y-size},{pos.x+size, pos.y+size}}, name="ore-aluminium"})
do e.amount = e.amount *2
end

执行后,玩家周围半径 200 内的铝矿藏量将翻倍。也可以直接替换倒数第二行的 e.amount = 后的数值为自己想要的数值,例如 e.amount = 1000000。或令其每一格藏量均在一定范围内随机取值,例如 e.amount = math.random(800000, 1200000)
最后,可以直接通过控制台指令删除周围不需要的矿场,例如
/c local surface=game.player.surface
local size=200
local pos=game.player.position
for _, e in pairs(surface.find_entities_filtered{area={{pos.x-size, pos.y-size},{pos.x+size, pos.y+size}}, name="ore-aluminium"})
do e.destroy()
end

执行后,半径 200 内的所有铝矿将会被删除,不会影响其他种类的矿物、原油等资源。

如欲无视种类删除周围一定半径内的所有资源,可将 name="ore-aluminium" 替换为 type="resource"。执行后,将会直接删除半径 200 以内的所有种类资源,但是不会移除火车、工厂、铁路等实体。


IP属地:北京1楼2021-07-07 00:50回复
    查找矿物名的方法:
    游戏中按下 F4,调整设置并勾选 show-debug-info-in-tooltips。随后按下 F5 进入调试输出界面,即可在最下方的 “调试” 栏处找到鼠标当前指向矿物的内部名。


    IP属地:北京2楼2021-07-07 00:51
    回复
      有没有能让机器制造速度快的代码呀 感激不尽


      IP属地:安徽来自Android客户端3楼2021-09-10 22:52
      收起回复
        真正的好活


        来自手机贴吧4楼2021-09-12 08:12
        回复