MiraiForum

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

    WhoIsSpy - 谁是卧底小游戏插件

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

      谁是卧底

      适用于 Mirai 的谁是卧底小游戏插件

      Github Project

      Release

      说明

      虽然其他大佬做过谁是卧底的插件了,但是问题实在太多,且游玩不便,因此自己重写了一个,已经测试过了能正常游玩。

      本插件目的是为了方便发词条、流程控制、统计投票与判断输赢,具体游戏内容仍需玩家自己进行和维护。

      进行游戏最少需要四名玩家,不需要权限和调用命令,请注意设置的命令不要重复或是与其他插件重复。

      添加词库请自行在\data\net.reincarnatey.spy\SpyData.yml中追加。

      使用方法

      使用前

      请确保SpyData.yml词库内存在词条,否则无法正常开始游戏。

      可下载 Release 中附带的data.zip(从网络中收集的约500个词的词库),并将其解压到mcl根目录下。

      游戏规则

      标准模式下,每个玩家会拿到自己的词条,其中卧底的词条与其他人的不一样!每个玩家需要轮流描述自己的词,描述不能重复,若出现自己的词则直接判输。之后进行投票选出卧底。票数最多的玩家将会被淘汰。一直重复下去,直到卧底被淘汰或卧底的人数占剩余玩家总数大于等于三分之一。

      胜利目标

      普通玩家: 将所有卧底淘汰
      卧底: 存活到最后
      白板: 存活到最后

      创建游戏

      在聊天内发送创建谁是卧底即可,接下来进入准备流程。

      也可发送谁是卧底规则查看游戏规则,或发送结束谁是卧底来强制结束游戏。

      准备流程

      发送加入即可加入游戏中,可发送当前玩家可查看已加入的玩家。

      发送模式 编号可以切换至对应的模式

      默认为标准模式,可通过"模式 1/2/3"切换至其他模式
      1.标准模式: 仅有1个卧底
      2.多卧底模式: 适用于人较多的情况,四分之一玩家为卧底
      3.随机白板模式: 将随机一部分玩家为白板(不超过四分之一)

      特殊模式: 所有玩家均为白板。可输入114514切换至该模式,也会随机强制进入该模式(不提醒)。可通过设置配置项的specialModeOdds来修改概率,概率为0时为不启用该模式。

      当 玩家人数 ≥ 4 时,可发送开始以开始游戏。

      词条分发

      将会自动私聊每一位玩家发送该玩家的词条 (若为白板则无词条内容,但是会发送私聊提醒)。
      为避免收不到消息的特殊情况,推荐所有玩家开始游戏前先添加好友。

      描述阶段

      未被淘汰的每名玩家需要轮流用一句话描述自己的词语。

      插件只会记录是否所有人都发言过了,需要玩家自觉按序描述,不推荐该阶段进行交流。
      如果描述中包含有该玩家的词语,则会直接判为违反规则并立即结束游戏。

      当剩余所有玩家都描述后,由其中一名玩家发送结束以结束描述阶段。

      投票阶段

      未被淘汰的每名玩家需要发送投票 编号进行投票。

      该阶段可进行交流分析和推理。
      淘汰的玩家不可投票,玩家不可投给淘汰的玩家,玩家可以投给自己,当玩家投给编号0时表示弃票。

      最后获得票数最多的被淘汰,平票时不淘汰,剩余玩家回到描述阶段继续进行游戏,直到满足游戏结束条件。

      剩余3名玩家、卧底被淘汰、卧底人数大于等于剩余玩家总数的三分之一

      游戏结束

      结束时会公开普通词条与卧底词条,并公开所有参与玩家的身份。
      之后可再次通过创建谁是卧底重新开始游戏。

      插件配置

      位于\config\net.reincarnatey.spy\SpyConfig.yml

      # 创建触发器
      createTriggers: 
        - 创建谁是卧底
      # 加入触发器
      joinTriggers: 
        - 加入
        - 加入谁是卧底
      # 当前玩家触发器
      showTriggers: 
        - 当前玩家
        - 玩家列表
      # 切换模式触发器
      modeTriggers: 
        - 模式
        - 切换模式
      # 开始触发器
      startTriggers: 
        - 开
        - 开始
        - go
      # 描述结束触发器
      nextTriggers: 
        - 结束
      # 投票触发器
      voteTriggers: 
        - 投票
        - vote
        - 投
      # 强制结束触发器
      stopTriggers: 
        - 结束谁是卧底
      # 规则触发器
      ruleTriggers: 
        - 谁是卧底规则
      # 创建消息
      createMessage: "创建成功~\n请输入\"加入\"加入游戏!\n人数大于三人后可输入\"开始\"开始游戏!"
      # 重复创建消息
      alreadyCreateMessage: "游戏已存在!当前玩家{num}人,可\n请输入\"加入\"加入游戏!输入\"谁是卧底规则\"查看规则,\n人数大于三人后可输入\"开始\"开始游戏!"
      # 加入消息
      joinMessage: "加入成功~\n当前玩家{num}人"
      # 重复加入消息
      alreadyJoinMessage: "你已经加入过了!\n当前玩家{num}人"
      # 游戏进行中消息
      inGamingMessage: 游戏正在进行中!
      # 当前玩家消息
      showMessage: '当前玩家: {player_list}'
      # 词条消息
      wordMessage: '你的词条: {word}'
      # 白板消息
      whiteMessage: 你的词条——欸?!你没有词条呢,多观察一下他人的发言并模仿吧!
      # 强制结束消息
      stopMessage: 游戏已结束!
      # 模式提醒消息
      modeMessage: "默认为标准模式,可通过\"模式 1/2/3\"切换至其他模式\n1.标准模式: 仅有1个卧底\n2.多卧底模式: 适用于人较多的情况,四分之一玩家为卧底\n3.随机白板模式: 将随机一部分玩家为白板(不超过四分之一)"
      # 切换模式消息
      switchModeMessage: '已切换至{mode}!'
      # 模式不存在消息
      noModeMessage: 该模式不存在!
      # 特殊模式消息
      specialModeMessage: 游戏模式好像变得奇怪了!
      # 卧底胜利消息
      spyWinMessage: 游戏结束啦!卧底获得胜利!
      # 卧底失败消息
      spyLostMessage: 游戏结束啦!卧底输了!
      # 特殊模式结束消息
      specialModeEndMessage: 游戏结束啦!本轮没有玩家获胜,因为本轮为【特殊模式】,全部玩家都是白板!
      # 不知道谁赢消息
      normalEndMessage: "游戏结束啦!以下玩家获得胜利:\n{win_list}"
      # 描述阶段消息
      descriptionMessage: "描述阶段!请按照以下顺序轮流用一句话描述自己的词语(但不可以包含自己的词语),所有人均描述完毕后发送\"{nextTriggers}\"进入下一阶段。\n{player_list}"
      # 投票消息
      voteMessage: "投票阶段!请输入\"投票 编号\"进行投票,所有人均描述完毕后自动进入下一回合。\n0. 弃票\n{player_list}"
      # 规则
      rule: 标准模式下,每个玩家会拿到自己的词条,其中卧底的词条与其他人的不一样!每个玩家需要轮流描述自己的词,描述不能重复,若出现自己的词则直接判输。之后进行投票选出卧底。票数最多的玩家将会被淘汰。一直重复下去,直到卧底被淘汰或卧底的人数占剩余玩家总数大于等于三分之一。
      # 强制进入特殊模式(不通知)的概率,可填0-100,对应0%-100%的概率,为0时就是禁用特殊模式 。特殊模式: 所有玩家均为白板,只剩下3名玩家时结束。该模式也可通过"切换模式 114514"进入。
      specialModeOdds: 5
      # 私聊发送消息间隔时间 (防被封)
      delay: 1000
      

      声明

      本开源插件仅为个人使用而编写,遵循Apache Licence2.0开源协议,发布至 MiraiForum ,禁止用于任何违法法律法规、社区规定、网站规则的行为,若出现问题本人概不负责。

      qwq

      本项目开源,需要功能建议自行修改并编译
      如果有bug的话可以回复或者提issue

      K 1 条回复 最后回复 回复 引用 1
      • 方
        方长芜湖 最后由 编辑

        image.png

        Mitr-yuzr 1 条回复 最后回复 回复 引用 0
        • Mitr-yuzr
          Mitr-yuzr 摸鱼 @方长芜湖 最后由 编辑

          @方长芜湖 上下文呢?发什么报的错?
          请先检查参加游戏的所有玩家是否都添加了机器人好友、词库的格式、Config中的Message相关设置。

          方 1 条回复 最后回复 回复 引用 0
          • 方
            方长芜湖 @Mitr-yuzr 最后由 编辑

            @Mitr-yuzr aaa已经解决了,是账号被tx风控导致私聊发布出去消息

            1 条回复 最后回复 回复 引用 0
            • M-Flavius
              M-Flavius 最后由 编辑

              能否在开始一轮游戏时,增加一下机器人给每个参与者私聊关键词的延迟呢,同时大量私聊发送信息导致我的机器人一开始游戏就被TX冻结账号了

              Mitr-yuzr 1 条回复 最后回复 回复 引用 1
              • K
                koitoyuu @Mitr-yuzr 最后由 编辑

                @Mitr-yuzr 能否在开始一轮游戏时,增加一下机器人给每个参与者私聊关键词的延迟呢

                Mitr-yuzr 1 条回复 最后回复 回复 引用 0
                • C
                  cyf12321 最后由 编辑

                  能不能给卧底或白板加个猜出词就获胜的功能

                  Mitr-yuzr 1 条回复 最后回复 回复 引用 0
                  • Mitr-yuzr
                    Mitr-yuzr 摸鱼 @cyf12321 最后由 编辑

                    @cyf12321 我原本考虑的是私聊机器人猜词可以胜利,但是怕蒙对。另外这也是一种判断方法,因为每个人不能说出自己的词,如果卧底不小心说出正确的词就可以直接判断他是卧底了。

                    1 条回复 最后回复 回复 引用 0
                    • Mitr-yuzr
                      Mitr-yuzr 摸鱼 @M-Flavius 最后由 编辑

                      @M-Flavius 不好意思,确实是我考虑欠缺。今晚会更新

                      1 条回复 最后回复 回复 引用 0
                      • Mitr-yuzr
                        Mitr-yuzr 摸鱼 @koitoyuu 最后由 编辑

                        @koitoyuu 可以的,今晚会更新

                        1 条回复 最后回复 回复 引用 0
                        • Mitr-yuzr
                          Mitr-yuzr 摸鱼 最后由 编辑

                          1.1 已更新
                          可在配置文件中修改delay项,该配置意为在发送身份时私聊的间隔时长,单位为毫秒,为防止被腾讯检测为传销,需要调到一定大小
                          可以在release中下载最新1.1版本的插件

                          1 条回复 最后回复 回复 引用 1
                          • M
                            MC__luoluo 最后由 编辑

                            建议加个白板在群里发送"我要自爆"时跳过这局投票并且需要白板在群内猜词(只有一次机会,猜对直接胜利,游戏结束,猜错白板出局)

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

                              我启动mcl出现了报错,我开了iss了能看一下吗

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

                                经过短暂测试,有以下建议
                                1.需要一个只有白板没有卧底其他都是平民的模式
                                2.白板不应该算作好人,卧底出局后只有白板和平民游戏应该继续
                                3.白板可以猜词,但是要在群内猜,算自爆,猜对白板直接胜利,猜错白板出局,游戏继续
                                4.需要加权限系统,避免误触发(加了一堆群就怕误触发给踢了)
                                5.最少应该需要3民玩家,剩余两名玩家或卧底和白板全部出局时游戏结束

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

                                  一些体验上的问题
                                  我觉得可以添加一个时限
                                  开局等人时限,超时就取消一局
                                  不然会无限制的等人,
                                  比如有些人加入了,但是等太久了,所以离开了
                                  如果游戏开始,人没齐会导致发言阶段少人,游戏不能进行
                                  同理的,游戏中的发言阶段、投票阶段也应该有个时限
                                  超时设为出局,不然如果有人没有发言,那游戏就没办法进行下去了
                                  以及发言阶段,还有玩家未进行发言的提示
                                  可以采用倒计时的形式提示,比如剩余1分钟了,提示一次,只艾特没有发言的人
                                  就不用每次有人发言以后,都会艾特全部人一次

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

                                    还有就是投票时候的问题
                                    投票用的是QQ本身的名称
                                    而不是群名称,有些人群名称跟QQ名称差距很大
                                    导致不知道投票投给谁,
                                    还是建议投票时候使用ID为群名片的ID比较好

                                    1 条回复 最后回复 回复 引用 0
                                    • Mitr-yuzr
                                      Mitr-yuzr 摸鱼 最后由 编辑

                                      很久都没有上来看了,谢谢各位提出的建议!
                                      很抱歉我目前处于一个很忙的状态,暂时无法维护这些项目,可能需要明年或者后年才能忙完,如果急需的话欢迎有动手能力的朋友自行修改源码并编译(我个人认为我自己的码风还是很优秀的,但很抱歉我应该几乎没有写注释)!

                                      1 条回复 最后回复 回复 引用 1
                                      • 1 / 1
                                      • First post
                                        Last post
                                      Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact