MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    WhoUndercover-谁是卧底小游戏

    插件发布
    17
    29
    4986
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • liuqianpan2008
      liuqianpan2008 最后由 liuqianpan2008 编辑

      谁是卧底

      基于 mamoe/mirai-console 开发的文字小游戏

      使用前应该查阅的相关文档或项目

      • User Manual
      • Permission Command
      • Chat Command

      确保真正会使用mirai后在下载食用本插件。

      游戏流程

      给没有玩过同学介简单说下流程

      在场7个人中6个人拿到相同的一个词语,剩下的1个拿到与之相关的另一个词语。每人每轮只能说一句话描述自己拿到的词语(不能直接说出那个词语),既不能让卧底发现,也要给同伴以暗示。每轮描述完毕,7人投票选出怀疑是卧底的那个人,得票数最多的人出局;平票则进入下一轮描述。若最后仅剩三人(包含卧底),则卧底获胜;反之,则其他人获胜。

      转自谁是卧底(快乐大本营游戏)_百度百科 (baidu.com)

      为了防止玩的时候凑不起怎么多人,本插件优化至少三人参加。(一个卧底,2正常玩家)正常玩家剩余1个为卧底获胜反正玩家获胜。

      下载

      Releases

      插件流程

      首先由任意一名群友发起创建游戏

      image.png

      其他群友可以输入指令加入游戏!

      image.png

      人数足够后(至少三人),可以由任意群友发起开始游戏

      • 发起游戏后,玩家不能在加入游戏中。只能暂停重新开始下一局游戏
      • 请自行确认玩家是否都是与bot为好友关系,若无好友关系可能收不到词条
      • 请确保词库内有词条否则无法正常开启游戏
      • 开启游戏的指令环境为自动判断游戏进程的指令环境。

      开始游戏图片

      开始游戏

      收到消息图片

      image.png

      描述阶段

      每个参与的玩家进行词条的描述。描述完毕后会自动进入投票环节。

      • 目前只支持文字描述,不支持其他描述方式

      描述

      image.png

      描述状态结束提示

      image.png

      查看描述词

      • 可在描述阶段和投票阶段随时查看本轮描述词

      image.png

      投票阶段

      每个玩家描述完成后就可以进入投票阶段。

      • 每个参与玩家持有一票,只能投给参与玩家的票数。投票时候需要**@**对方才能使用。(若无法使用@则需要输入完整的QQ号)

      QQ-20220212085544.png

      • 只能在投票阶段查看票数

      image.png

      投票完成后将继续判断玩家胜负!若未达到胜负条件即可返回描述阶段继续第二轮游戏。

      配置设置

      在data目录下会生成本插件相应的配置文件

      第一次使用时需要自己写入world.yml配置文件

      world.yml

      world: 
        - 玩家词条: 卧底词条
        - 玩家词条2: 卧底词条2
      

      支持帮助

      本插件有很多设想未能实现的功能,如果你有更好的优化方法欢迎提交属于你的pr,同时欢迎提pr。

      • 感谢 Samarium150,LaoLittle,404E 对本插件的测试帮助!

      • Q群:877894787

      1 条回复 最后回复 回复 引用 2
      • T
        Teresa 最后由 编辑

        您好 大佬 运行插件报错 mirai版本2.90 java版本1.8 系统win server 2012
        报错如下:2022-02-12 09:41:41 E/谁是卧底: java.lang.IndexOutOfBoundsException: Index 0 out
        of bounds for length 0
        java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
        at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source)

            at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unkno
        

        wn Source)
        at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source)
        at java.base/java.util.Objects.checkIndex(Unknown Source)
        at java.base/java.util.ArrayList.get(Unknown Source)
        at net.mamoe.mirai.console.internal.data.CompositeListValueImpl$special$
        $inlined$shadowMap$1.get(collectionUtil.kt:204)
        at net.mamoe.mirai.console.internal.data.CompositeListValueImpl$special$
        $inlined$observable$1.get(collectionUtil.kt:445)
        at org.fenglin.WhoUndercover.onEnable(WhoUndercover.java:33)
        at net.mamoe.mirai.console.internal.plugin.JvmPluginInternal.internalOnE
        nable$mirai_console(JvmPluginInternal.kt:113)
        at net.mamoe.mirai.console.internal.plugin.BuiltInJvmPluginLoaderImpl.en
        able(BuiltInJvmPluginLoaderImpl.kt:122)
        at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(Jvm
        PluginLoader.kt)
        at net.mamoe.mirai.console.plugin.jvm.JvmPluginLoader$BuiltIn.enable(Jvm
        PluginLoader.kt:36)
        at net.mamoe.mirai.console.plugin.PluginManager.enablePlugin(PluginManag
        er.kt:129)
        at net.mamoe.mirai.console.internal.plugin.PluginManagerImpl.enableAllLo
        adedPlugins$mirai_console(PluginManagerImpl.kt:172)
        at net.mamoe.mirai.console.internal.MiraiConsoleImplementationBridge.doS
        tart$mirai_console(MiraiConsoleImplementationBridge.kt:214)
        at net.mamoe.mirai.console.MiraiConsoleImplementation$Companion.start(Mi
        raiConsoleImplementation.kt:276)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDa
        emon(MiraiConsoleTerminalLoader.kt:152)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.startAsDa
        emon$default(MiraiConsoleTerminalLoader.kt:151)
        at net.mamoe.mirai.console.terminal.MiraiConsoleTerminalLoader.main(Mira
        iConsoleTerminalLoader.kt:47)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Nativ
        e Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknow
        n Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Un
        known Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.itxtech.mcl.Utility.bootMirai(Utility.java:83)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Nativ
        e Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknow
        n Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Un
        known Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138)
        at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:22
        6)
        at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:169
        2)
        at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1013)
        at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.j
        ava:109)
        at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:4
        12)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:357
        8)
        at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.j
        ava:107)
        at org.mozilla.javascript.ArrowFunction.call(ArrowFunction.java:43)
        at org.mozilla.javascript.InterfaceAdapter.invokeImpl(InterfaceAdapter.j
        ava:155)
        at org.mozilla.javascript.InterfaceAdapter.lambda$invoke$0(InterfaceAdap
        ter.java:105)
        at org.mozilla.javascript.Context.call(Context.java:554)
        at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:522)
        at org.mozilla.javascript.InterfaceAdapter.invoke(InterfaceAdapter.java:
        105)
        at org.mozilla.javascript.jdk18.VMBridge_jdk18$1.invoke(VMBridge_jdk18.j
        ava:126)
        at com.sun.proxy.$Proxy4.run(Unknown Source)
        at org.itxtech.mcl.script.ScriptManager.phaseBoot(ScriptManager.java:106
        )
        at org.itxtech.mcl.Loader.lambda$start$3(Loader.java:176)
        at org.itxtech.mcl.Loader.tryCatching(Loader.java:145)
        at org.itxtech.mcl.Loader.start(Loader.java:176)
        at org.itxtech.mcl.Loader.main(Loader.java:68)

        liuqianpan2008 1 条回复 最后回复 回复 引用 0
        • liuqianpan2008
          liuqianpan2008 @Teresa 最后由 编辑

          @teresa releases 已修复(大概)

          T 1 条回复 最后回复 回复 引用 0
          • T
            Teresa @liuqianpan2008 最后由 编辑

            @liuqianpan2008 好的 感谢

            1 条回复 最后回复 回复 引用 0
            • Hoshino Tented
              Hoshino Tented ⭐2021⭐ 最后由 编辑

              牛逼牛逼牛逼

              1 条回复 最后回复 回复 引用 0
              • S
                Sean 最后由 编辑

                看了下源码发现两个bug:1.卧底获胜时,输出的卧底结果是得票最多的人而非真正卧底;2.分配到卧底词条的人和分配到卧底身份的人不同,因为用了不同的随机变量

                liuqianpan2008 1 条回复 最后回复 回复 引用 0
                • liuqianpan2008
                  liuqianpan2008 @Sean 最后由 编辑

                  @sean Thanks♪(・ω・)ノ大佬提醒,我写的很烂(笑)
                  明天我一定会修(今天是情人节我要和我胡桃过一整天)

                  C 1 条回复 最后回复 回复 引用 0
                  • C
                    Cauchy-1899c @liuqianpan2008 最后由 编辑

                    @liuqianpan2008 大佬,补充一个点:没有平票逻辑,直接取了最后一个最高票票出去了

                    1 条回复 最后回复 回复 引用 0
                    • Sirayuki
                      Sirayuki 最后由 编辑

                      能改成群私聊吗 像隔壁斗地主那样

                      1 条回复 最后回复 回复 引用 0
                      • R
                        rogue233 最后由 编辑

                        能否加入让用户也可以添加词条的功能呢?

                        1 条回复 最后回复 回复 引用 0
                        • D
                          dudu 最后由 编辑

                          1.01版本的插件为什么我下下来显示的是v1.0的

                          1 条回复 最后回复 回复 引用 0
                          • 是
                            是沫路的 最后由 编辑

                            此回复已被删除!
                            1 条回复 最后回复 回复 引用 0
                            • 2
                              2655257336 最后由 编辑

                              谁是卧底 创建游戏
                              我输入之后没有任何反应

                              D 1 条回复 最后回复 回复 引用 0
                              • 2
                                2655257336 最后由 编辑

                                为什么我下载了jar,启动输入创建指令,没有任何反应?

                                1 条回复 最后回复 回复 引用 0
                                • Y
                                  YZMX 最后由 编辑

                                  谁是卧底 开始游戏时报错2022-03-31 08:37:21 W/谁是卧底 Exception in executing command [mirai:source:[32426],[1108741423]]谁是卧底 开始游戏
                                  java.lang.reflect.InvocationTargetException
                                  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                                  at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                                  at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                                  at java.base/java.lang.reflect.Method.invoke(Unknown Source)
                                  at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97)
                                  at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113)
                                  at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108)
                                  at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159)
                                  at kotlin.reflect.jvm.internal.KCallableImpl.callBy(KCallableImpl.kt:112)
                                  at net.mamoe.mirai.console.internal.command.CommandReflector$findSubCommands$6$1$invokeSuspend$$inlined$runBIO$1.invoke(CoroutineUtils.kt:164)
                                  at kotlinx.coroutines.InterruptibleKt.runInterruptibleInExpectedContext(Interruptible.kt:46)
                                  at kotlinx.coroutines.InterruptibleKt.access$runInterruptibleInExpectedContext(Interruptible.kt:1)
                                  at kotlinx.coroutines.InterruptibleKt$runInterruptible$2.invokeSuspend(Interruptible.kt:38)
                                  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
                                  at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
                                  at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
                                  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
                                  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
                                  at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
                                  Caused by: java.lang.NullPointerException: Cannot invoke "net.mamoe.mirai.contact.Friend.sendMessage(String)" because the return value of "net.mamoe.mirai.Bot.getFriend(long)" is null
                                  at org.fenglin.Command.Undercover.paly(Undercover.java:186)
                                  ... 19 more

                                  C 1 条回复 最后回复 回复 引用 1
                                  • D
                                    dudu @2655257336 最后由 编辑

                                    @2655257336 你要用chat-command给他授予指令权限

                                    C 1 条回复 最后回复 回复 引用 0
                                    • R
                                      rogue233 最后由 编辑

                                      为什么我使用停止游戏会提示,会提示无管理权限无法重置

                                      图片.png

                                      T 1 条回复 最后回复 回复 引用 1
                                      • Y
                                        yuanbolin 最后由 编辑

                                        同问,ps里加了权限,但是提示务管理权限. 并且有个优化建议使用群私发进行词条发送就不用加好友了

                                        1 条回复 最后回复 回复 引用 0
                                        • T
                                          Tate @rogue233 最后由 编辑

                                          @rogue233 同问,群里其他人就可以停止游戏,唯独自己不可以

                                          1 条回复 最后回复 回复 引用 0
                                          • C
                                            cyf12321 @dudu 最后由 编辑

                                            此回复已被删除!
                                            1 条回复 最后回复 回复 引用 0
                                            • 1
                                            • 2
                                            • 1 / 2
                                            • First post
                                              Last post
                                            Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact