WhoUndercover-谁是卧底小游戏
-
谁是卧底
基于 mamoe/mirai-console 开发的文字小游戏
使用前应该查阅的相关文档或项目
确保真正会使用mirai后在下载食用本插件。
游戏流程
给没有玩过同学介简单说下流程
在场7个人中6个人拿到相同的一个词语,剩下的1个拿到与之相关的另一个词语。每人每轮只能说一句话描述自己拿到的词语(不能直接说出那个词语),既不能让卧底发现,也要给同伴以暗示。每轮描述完毕,7人投票选出怀疑是卧底的那个人,得票数最多的人出局;平票则进入下一轮描述。若最后仅剩三人(包含卧底),则卧底获胜;反之,则其他人获胜。
为了防止玩的时候凑不起怎么多人,本插件优化至少三人参加。(一个卧底,2正常玩家)正常玩家剩余1个为卧底获胜反正玩家获胜。
下载
插件流程
首先由任意一名群友发起创建游戏
其他群友可以输入指令加入游戏!
人数足够后(至少三人),可以由任意群友发起开始游戏
- 发起游戏后,玩家不能在加入游戏中。只能暂停重新开始下一局游戏
- 请自行确认玩家是否都是与bot为好友关系,若无好友关系可能收不到词条
- 请确保词库内有词条否则无法正常开启游戏
- 开启游戏的指令环境为自动判断游戏进程的指令环境。
开始游戏图片
收到消息图片
描述阶段
每个参与的玩家进行词条的描述。描述完毕后会自动进入投票环节。
- 目前只支持文字描述,不支持其他描述方式
描述
描述状态结束提示
查看描述词
- 可在描述阶段和投票阶段随时查看本轮描述词
投票阶段
每个玩家描述完成后就可以进入投票阶段。
- 每个参与玩家持有一票,只能投给参与玩家的票数。投票时候需要**
@
**对方才能使用。(若无法使用@则需要输入完整的QQ号)
- 只能在投票阶段查看票数
投票完成后将继续判断玩家胜负!若未达到胜负条件即可返回描述阶段继续第二轮游戏。
配置设置
在
data
目录下会生成本插件相应的配置文件第一次使用时需要自己写入
world.yml
配置文件world.yml
world: - 玩家词条: 卧底词条 - 玩家词条2: 卧底词条2
支持帮助
本插件有很多设想未能实现的功能,如果你有更好的优化方法欢迎提交属于你的pr,同时欢迎提pr。
-
感谢 Samarium150,LaoLittle,404E 对本插件的测试帮助!
-
Q群:877894787
-
您好 大佬 运行插件报错 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 好的 感谢
-
牛逼牛逼牛逼
-
看了下源码发现两个bug:1.卧底获胜时,输出的卧底结果是得票最多的人而非真正卧底;2.分配到卧底词条的人和分配到卧底身份的人不同,因为用了不同的随机变量
-
@sean Thanks♪(・ω・)ノ大佬提醒,我写的很烂(笑)
明天我一定会修(今天是情人节我要和我胡桃过一整天) -
@liuqianpan2008 大佬,补充一个点:没有平票逻辑,直接取了最后一个最高票票出去了
-
能改成群私聊吗 像隔壁斗地主那样
-
能否加入让用户也可以添加词条的功能呢?
-
1.01版本的插件为什么我下下来显示的是v1.0的
-
此回复已被删除! -
谁是卧底 创建游戏
我输入之后没有任何反应 -
为什么我下载了jar,启动输入创建指令,没有任何反应?
-
谁是卧底 开始游戏时报错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 -
@2655257336 你要用chat-command给他授予指令权限
-
为什么我使用停止游戏会提示,会提示无管理权限无法重置
-
同问,ps里加了权限,但是提示务管理权限. 并且有个优化建议使用群私发进行词条发送就不用加好友了
-
@rogue233 同问,群里其他人就可以停止游戏,唯独自己不可以
-
此回复已被删除!