异星工厂吧 关注:61,130贴子:391,257

mod制作记录帖与求助qwq

只看楼主收藏回复

近日打了一堆星球mod到已有存档里,新的科技树与配方直接让楼主猪脑过载。
本来想用超级挖海填水解放一下脑子先把新星球的电力问题解决,结果发现无法放置,遂意识到超级挖海填水没法填mod里新加的地块。
去官网模组里看讨论区近期的提问没有被回复,贴吧里马老师的帖子也是很久以前了,置顶帖里有人艾特也没有回,感觉联系上的可能性不是很大。
于是打算自己改进一个mod,让水、岩浆、油海、氨海可以放在mod星球上。
楼主没有编程基础,在看了吧里置顶帖中还能看的mod教程,下了个notepad++之后,楼主就开始研究起了超级挖海填水里面的代码。
在经历了mod无法正常加载、把自制mod压缩包移到了游戏的mod文件夹但mod不在mod列表中显示、修改info然后发现如果这样需要修改所有item的图片引用路径后,楼主决定把info部分放到最后再处理,只在原模组内修改数据。并成功修改了科技研究的需求以及配方。


IP属地:吉林来自Android客户端1楼2025-03-24 19:03回复
    但是在查看item.lua的时候,楼主遇到了问题,马老师设置可以放置的地块的方式是把各种地块都列出来,因此如果我想添加新的地块,就要找出对应地块在代码里的名称。


    IP属地:吉林来自Android客户端2楼2025-03-24 19:05
    回复
      然而在我去其他mod里面的tile.lua里寻找时,发现里面的代码写的似乎是不同地块之间交界处如何生成。除了硫丹星以及直接把原有地格搬出来的mod之外,我没有找到name=ID type=tile的代码


      IP属地:吉林来自Android客户端3楼2025-03-24 19:08
      收起回复
        在查看了mod的官网界面发现mod作者锁了讨论区只让使用需要魔法的软件才能进去讨论时楼主意识到直接询问mod作者怕是行不通了,查看了类似功能的mod代码后,发现其中一位用的和马老师同一个思路,另一位则用了layers={water_tile=true}的代码,然而楼主并不理解这个water_tile的代码包括的范围是什么。也没弄明白怎么查看这个代码。如果有大佬能够详细讲讲的话就好了


        IP属地:吉林来自Android客户端4楼2025-03-24 19:27
        回复
          另:APIdoc实在看不明白,就好像拼音学了一半就去查字典,如果有大佬能出一个查阅apidoc的教程就好了qwq


          IP属地:吉林来自Android客户端5楼2025-03-24 19:28
          回复
            通过控制台命令获取数据
            打开控制台(默认按键 ~),输入以下脚本命令:
            /c game.player.print(game.player.surface.get_tile(math.floor(game.player.position.x), math.floor(game.player.position.y)).name)


            IP属地:广西6楼2025-03-25 01:32
            收起回复
              我问了下deepseek,可以用控制台代码查看角色脚下的地块id


              IP属地:广西7楼2025-03-25 01:32
              回复
                修改后成功在灼原星挖出了水


                IP属地:广西8楼2025-03-25 01:41
                收起回复
                  心急吃不了热豆腐,看着硫丹星的硫酸池挺好想试着加一个超级挖硫酸,结果直接把昨晚做好的部分搞的没法用了,于是上午重新返工了一下。


                  IP属地:吉林来自Android客户端9楼2025-03-25 13:45
                  回复
                    另外发现了另一个问题,如果在info的依赖mod处里加入其他mod,会直接导致自己的mod不出现在mod列表里,不知道是怎么回事……


                    IP属地:吉林来自Android客户端11楼2025-03-25 14:30
                    回复
                      for tile_name, tile_prototype in pairs(data.raw.tile) do
                      -- tile_name 即为 tile 的静态 ID(如 "grass-1"、"concrete" 等)
                      print(tile_name)
                      end
                      deepseek说可以这样遍历出来所有的tile的id,不过我还没试


                      IP属地:广西12楼2025-03-25 15:25
                      收起回复

                        没有编程基础去研究mod制作,已经超越了99%的玩家
                        加油💪


                        IP属地:河南来自iPhone客户端13楼2025-03-25 19:20
                        收起回复
                          嘻嘻,好了,整好了依赖,然后把mod名和版本名称也给改出来了。
                          总之感谢各位在贴吧或者QQ群回答过我提问的大佬,下一步是研究一下怎么设置成在安装不同mod的时候让mod里面激活的代码不同 if mods then 还没搞明白怎么用,去看看其他星球mod的作者是怎么用的
                          研究明白之后再做一些修改就可以看看怎么传到官网的mod下载区了


                          IP属地:吉林来自Android客户端14楼2025-03-25 22:42
                          回复
                            顺便讲讲在找地块ID的时候在其他星球mod里发现的趣事:
                            corruandm硫丹星作者在自己的mod注释里写了Tenebris特暗星作者的
                            “sprite_usage_surface=plant ID”填的是句芒星而不是自己mod的星球有些疑问
                            答案是这一项在API站给出的似乎只包括dlc本来就有的星球,想写自己的星球就要往不知道什么地方塞东西了
                            至于我为什么会查这个?因为我把特暗星里那部分代码找了出来改了一下,然后游戏报错了


                            IP属地:吉林来自Android客户端15楼2025-03-25 22:53
                            回复
                              你得看json格式对不对,数组最后一项后面不能有逗号,大括号必须左右都有


                              IP属地:山东16楼2025-03-26 13:45
                              收起回复