以撒的结合吧 关注:290,033贴子:3,401,973

【控制台的lua】控制台lua指令集合

只看楼主收藏回复

这可能是大家想要的控制台吧。
控制台新增了一个lua的指令,可以直接在控制台中执行lua脚本。这意味着那些mod能做到的事,控制台全都能做到。
问题在于lua门槛确实很高。
编写了一个专门用于收集控制台中lua指令的静态网站,托管在了github上面,如果网站上有哪条指令看上的,直接复制,然后在控制台中粘贴使用即可。
如果您是玩家,希望在游戏中做到某些逻辑,可以提出来,尽量一目了然。缘分到了,或许就实现了呢?
如果有熟悉lua的大佬,希望能够时常看一看这个帖子,敲几十下键盘,发一个帖子或者pull request,在网站上留下您的大名,或许下次睡眠质量就能提升了呢?
如果您遇到了某个mod,觉得其中有些逻辑可以独立出来作为参考的,也可以发出来,或许就能在网站上出现了呢?
本贴视lua大佬的参与程度,以及自己的懒惰程度,将无期限咕咕咕……


IP属地:北京1楼2020-01-27 15:11回复
    抽了。。


    IP属地:北京4楼2020-01-27 16:04
    收起回复
      2026-01-19 12:27:09
      广告
      不感兴趣
      开通SVIP免广告
      sdl,tql


      IP属地:山东5楼2020-01-27 16:32
      回复
        缓慢更新中。
        更新了下面的相关指令:
        触发预言
        触发规则
        随机传送(固定种子)
        取得当前房间网格索引
        取得上一个房间网格索引
        传送到某个网格索引的房间
        晃动屏幕
        胜利跑圈相关指令


        IP属地:北京6楼2020-01-30 12:04
        回复
          你发的什么我看不懂啊


          IP属地:山西来自Android客户端7楼2020-01-30 12:53
          收起回复
            图文教程:
            考虑到github有操作门槛,更新一份图文教程。在线版可能无法访问,这里以离线版为例。
            首先需要访问github的主页,网页链接见楼上或图片,进入后点击右侧的Clone or download按钮,点击Download ZIP就能下载到最新版本的网站。

            顺便提醒一下,github网站上面有一个最后提交日期,可以看到下图显示最后更新是3小时之前。离线版本的网站需要经常检查自动更新。

            下载完成后,需要解压,右键解压即可。我电脑由于安装了解压软件,有这个选项,其它的解压软件逻辑都差不多。如果什么都没装,win10也支持直接解压缩,双击点开这个下载到的文件,然后寻找“全部解压缩”或类似的按钮来解压,你需要使用解压后的程序,不要在压缩包里打开。

            解压后,点开里面的index.html,然后就能看到网站的真容了。

            网站目前支持的指令还不多,以跑圈为例。搜索框中输入“跑圈 下一轮”,点击过滤,发现一条可以进入下一轮跑圈的指令,接下来演示如何使用。

            点击复制按钮,把这条指令复制到剪贴板上,也可以自己手动复制。如果您打字速度够快,手打也是可以的,但lua指令一般都比较复杂,建议复制粘贴。

            在游戏中,按ctrl+v粘贴:

            后面就能看到,游戏直接进入了下一轮的跑圈。

            再演示一条随机传送的指令:

            这里对指令的描述进行一个解释:
            描述中提到了“随机条件123”,也就是说指令中的123是一个随机条件(这里可能翻译作“随机种子”会比较合适,但考虑到这里的数字是固定的,“种子”的说法不太合适)。这条指令的执行结果是“随机传送”,而随机的条件是一个固定的数字“123”,因此随机的结果就是固定的。所以这条指令会产生一个固定的结果。实际执行时,结果可能还会受到角色当前所在房间等各种因素的影响。实际在mod编写时(比如传送器),这个随机条件是通过一个随机数字生成器来生成的,因此可以随机传送。随机数字生成器一般是通过游戏种子来计算的,因此表现为“伪随机”,如果这个数字通过系统时钟、用户输入等来确定,那就是“真随机”,比如黑圈的魂心掉落。
            别太困惑了,这个描述是我自己写的,如果您觉得这个描述不太友好,可以提出建议。

            输入指令后,角色会被传送到一个“随机”的房间。你可以在复制之前修改指令中的123数字,来修改这个“随机”行为。你可以自行尝试执行这条指令:
            l Game():MoveToRandomRoom(True,123)
            把它复制到游戏的控制台,看一下效果吧。


            IP属地:北京8楼2020-01-30 15:49
            回复
              看我这咕咕咕的
              增加了50多条内容,贴吧写代码的话排版不便,详见2楼的网址。另外2楼的第二个网址点进去也能直接看到指令了,这里列个这次花费半天时间增加的内容:
              生成友好怪物
              打印去过的宝箱房数量
              设置红心伤害
              增加天使房转换率
              打印天使房转换率
              显示地图
              透视(I can see everything)
              使用白地图
              使用蓝地图
              使用指南针
              移除指南针
              房间变为金色
              Mama mega大爆炸
              打印当前房间是否已有敌人死亡
              设置当前房间是否已有敌人死亡
              打印当前房间是否为最终Boss
              重置当前房间的敌人
              填平沟壑
              打印x石头网格索引
              打印地下室石头网格索引
              生成清图奖励
              墙壁冒血
              反人类卡特效
              坏表(加速/减速)特效
              尝试生成恶魔房门
              尝试生成Boss Rush门
              尝试生成mega撒旦门
              尝试生成hush门
              尝试生成虚空门
              商店刷新
              打印当前房间是否清理
              设置当前房间是否清理
              移除一扇门
              增加心之容器
              增加红心
              增加白心
              增加魂心
              增加黑心
              增加10块钱
              增加10个炸弹
              增加10个钥匙
              设置金钥匙
              移除金钥匙
              设置金炸弹
              移除金炸弹
              增加金心
              增加蓝蜘蛛
              增加蓝苍蝇
              增加灰苍蝇(pretty fly)
              增加幸运
              设置充能
              清空充能
              红心补满
              打印玩家角色
              打印蓝苍蝇数量
              打印蓝蜘蛛数量
              触发主动效果
              增加骨心
              复活玩家


              IP属地:北京11楼2020-07-12 19:32
              回复
                增加了一些回调函数,可以制作一些有趣的指令了:
                当发射眼泪时,...
                当发射眼泪时,增加幸运
                当玩家受伤时,...
                当使用主动时,...
                当使用某个主动时,...
                当使用卡片时,...
                当使用某个卡片时,...
                当游戏开始时,...
                当开始新游戏时,...
                当继续游戏时,...
                当退出游戏时,...
                当玩家死亡,游戏结束时,...
                当玩家通关,游戏结束时,...
                当进入新关卡/楼层时,...
                当进入新房间时,...
                当按下键盘时,...
                禁止投掷物
                例如,我可以将这条指令:
                (当使用卡片时,...)
                l ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_USE_CARD,function(_) print('hello, world') end)
                和这条指令:
                (触发419号金传送器主动效果)
                l Isaac.GetPlayer(0):UseActiveItem(419,true,true,true,false)
                (手动)拼接起来,就得到了:
                (当使用卡片时,触发419号主动效果)
                l ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_USE_CARD,function(_) Isaac.GetPlayer(0):UseActiveItem(419,true,true,true,false) end)
                这类指令在重新进行游戏时还是有效的,想要这种回调指令失效,需要开关一次mod或者重启游戏。


                IP属地:北京12楼2020-07-18 14:41
                回复
                  2026-01-19 12:21:09
                  广告
                  不感兴趣
                  开通SVIP免广告
                  好东西,可以拿来点播坑压实度


                  IP属地:甘肃来自Android客户端13楼2020-07-19 09:56
                  收起回复
                    再更新一大批指令:
                    随机传送
                    定点生成地形
                    定点生成/生产实体
                    定点流血特效
                    击杀鼠标最近实体
                    移除鼠标最近实体
                    设置鼠标最近实体的速度
                    设置鼠标最近实体的颜色
                    设置鼠标最近实体的大小(碰撞体积)
                    为鼠标最近实体添加特性
                    为鼠标最近实体移除特性
                    为鼠标最近实体增加血量
                    为鼠标最近实体增加中毒效果
                    为鼠标最近实体增加石化效果
                    为鼠标最近实体增加减速效果
                    为鼠标最近实体增加魅惑效果
                    为鼠标最近实体增加眩晕效果
                    为鼠标最近实体增加点金石化效果
                    为鼠标最近实体增加恐惧效果
                    为鼠标最近实体增加灼烧效果
                    为鼠标最近实体增加缩小效果
                    为鼠标最近实体移除状态特效
                    移除地形
                    定点移除地形
                    定点攻击地形
                    定点摧毁地形(自然摧毁)
                    定点摧毁地形(立即摧毁)
                    补满充能
                    当xxx死亡时,...
                    执行多次控制台指令
                    在游戏的每一帧,...
                    在游戏的每一渲染帧,...
                    执行控制台指令
                    在下一帧,执行...
                    在下一帧,执行...(简化版)
                    在下两帧,执行...(简化版)
                    让玩家受伤
                    让玩家中毒
                    灼烧玩家
                    让玩家死亡
                    禁止操作数秒
                    缩放玩家贴图
                    缩放玩家碰撞
                    隐藏玩家贴图
                    玩家贴图左右翻转
                    玩家贴图旋转(固定值)
                    玩家贴图旋转(相对值)
                    以及附送一条整活指令。
                    (当萌死戳死亡时,执行:在游戏的每一帧,玩家贴图旋转10度)
                    l ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_POST_NPC_DEATH,function(_) ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_POST_RENDER,function(_) Isaac.GetPlayer(0).SpriteRotation=Isaac.GetPlayer(0).SpriteRotation+10 end) end,EntityType.ENTITY_MONSTRO)
                    输入这条指令后,当你击杀萌死戳数量超过10的4次方量级,就会开始掉帧,所以通常情况下是不建议大量击杀的。以及这个旋转只是默认贴图的旋转,还不兼容道具组合,不要在意。


                    IP属地:北京14楼2020-07-22 13:02
                    回复
                      爆更暂时缓一缓,再次更新一点点指令:
                      设置鼠标最近拾取物价格
                      移除鼠标最近拾取物价格
                      设置鼠标最近拾取物充能
                      设置鼠标最近拾取物的拾取冷却
                      设置鼠标最近拾取物的超时
                      卸除装备到地板上
                      卸除装备到log文件中
                      解释一下“卸除装备到log文件中”这条指令。这条指令能够将玩家身上的被动道具编号打印在游戏的log.txt文件里,同时移除这些道具。log.txt与游戏存档在同一目录下(计算机的文档目录)。通过这条指令,你就可以方便的备份/恢复身上的道具了。当然拾取顺序暂时还是按照数字顺序来的,因为我没有找到能够看出道具拾取顺序的程序接口。。。
                      按照惯例,再附送一条指令
                      这条指令是我直接构造出来的,通过网站上现有的指令还不能拼出来:
                      (每走过5扇门,就得打一只萌死戳,如果你愿意的话还可以和楼上的指令一起用)
                      l local i=0 ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_POST_NEW_ROOM,function() if i==5 then i=0 Isaac.ExecuteCommand('goto s.boss.1010') else i=i+1 end end)
                      (另外,这条指令用到了一个称为闭包的语法现象,如果会lua的话,可以尝试找出来)
                      我真的不是在迫害萌死戳,但谁叫ta是默认值呢


                      IP属地:北京15楼2020-07-23 23:45
                      回复
                        再来更新几条指令
                        强制丢弃饰品(含血虱)
                        药丸池中增加药丸
                        掉落道具强制替换
                        xxx房间内,商店和宝箱房内掉落道具强制替换
                        给某种怪物增加标志位
                        通过这几条指令,你可以让一局游戏中出现某个药丸,或者强制让宝箱房、道具房甚至恶魔房只出现晚餐。
                        依旧附送一条指令
                        (在每一帧,将给场景中的萌死戳增加恐惧标识位)
                        l ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_POST_UPDATE,function(_) for _,v in pairs(Isaac.GetRoomEntities()) do if v.Type==20 then v:AddEntityFlags(EntityFlag.FLAG_FEAR) end end end)
                        我们可以将前面两楼最后附带的指令,同这次的放到一起使用。直接复制下面三条指令,ctrl+v粘贴到控制台上。
                        来挑战恐惧的萌死戳吧
                        l ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_POST_NPC_DEATH,function(_) ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_POST_RENDER,function(_) Isaac.GetPlayer(0).SpriteRotation=Isaac.GetPlayer(0).SpriteRotation+10 end) end,EntityType.ENTITY_MONSTRO)
                        l local i=0 ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_POST_NEW_ROOM,function() if i==5 then i=0 Isaac.ExecuteCommand('goto s.boss.1010') else i=i+1 end end)
                        l ftl = ftl or RegisterMod('ftcslua',1);ftl:AddCallback(ModCallbacks.MC_POST_UPDATE,function(_) for _,v in pairs(Isaac.GetRoomEntities()) do if v.Type==20 then v:AddEntityFlags(EntityFlag.FLAG_FEAR) end end end)


                        IP属地:北京16楼2020-07-24 22:34
                        回复
                          看来某旱鸭子好像有素材了


                          来自Android客户端17楼2020-07-24 22:38
                          收起回复
                            更新了网页的逻辑,加入了便签功能:
                            现在网页能够自动识别指令中的打印部分,并辅助完成替换。可以点击“复制到便签”将一条指令放到便签里面。然后可以在那些行为是打印xxx内容的指令上,点击“将打印xxx替换为便签内容”按钮,指令的打印行为会自动替换为便签上的指令。当然,如果一条指令中有多个打印,网页也是具有识别能力的。
                            新增一条指令:
                            重置全身道具。这是无视道具池、无视种子的真随机。(另外9命猫真的会roll出9个道具,所以建议将它在指令中拉黑吧)
                            这一功能可以很方便的完成指令的拼接,而不需要去看指令的细节。举个例子吧:
                            我在网页中找到了“重置全身道具”这条指令,然后点击了它的“复制到便签”按钮,它就放到了便签上面。
                            之后又找到了“当按下键盘时,..."这条指令。根据网页描述,这条指令的功能是“当按下键盘上的K键时,打印hello, world到控制台上”。我点击指令旁边的“将打印hello, world替换为便签内容”。
                            由于此时便签存储的指令功能是“重置全身道具”,所以这条指令的打印行为发生了替换,就变成了“当按下键盘上的K键时,重置全身道具”。
                            根据描述,我把指令中的KEY_K手动替换成了KEY_T,于是就得到了:
                            “当按下键盘上的T键时,重置全身道具”这条指令。


                            IP属地:北京18楼2020-07-25 15:26
                            回复
                              2026-01-19 12:15:09
                              广告
                              不感兴趣
                              开通SVIP免广告
                              有刷伊甸次数的指令吗 刷一个毒种给陈哥


                              IP属地:广东来自Android客户端19楼2020-07-25 18:16
                              收起回复