mirror of
https://github.com/jie65535/mirai-console-jhr-plugin.git
synced 2025-06-02 17:39:16 +08:00
新增 玩家数据统计与配套指令
新增 积分榜查询
This commit is contained in:
parent
27925a3ee1
commit
30eb1b2883
@ -3,10 +3,13 @@ package top.jie65535.jhr
|
|||||||
import net.mamoe.mirai.console.data.AutoSavePluginData
|
import net.mamoe.mirai.console.data.AutoSavePluginData
|
||||||
import net.mamoe.mirai.console.data.ValueDescription
|
import net.mamoe.mirai.console.data.ValueDescription
|
||||||
import net.mamoe.mirai.console.data.value
|
import net.mamoe.mirai.console.data.value
|
||||||
|
import top.jie65535.jhr.game.PlayerStatistics
|
||||||
|
|
||||||
object JHRPluginData : AutoSavePluginData("HorseRacingPluginData") {
|
object JHRPluginData : AutoSavePluginData("HorseRacingPluginData") {
|
||||||
|
|
||||||
@ValueDescription("用户存款")
|
@ValueDescription("用户存款")
|
||||||
val Scores: MutableMap<Long, Int> by value()
|
val Scores: MutableMap<Long, Int> by value()
|
||||||
|
|
||||||
|
@ValueDescription("用户统计")
|
||||||
|
val playerStat: MutableMap<Long, PlayerStatistics> by value()
|
||||||
}
|
}
|
@ -18,6 +18,7 @@ import net.mamoe.mirai.message.data.MessageSource.Key.quote
|
|||||||
import net.mamoe.mirai.utils.info
|
import net.mamoe.mirai.utils.info
|
||||||
import top.jie65535.jhr.game.Bet
|
import top.jie65535.jhr.game.Bet
|
||||||
import top.jie65535.jhr.game.Horse
|
import top.jie65535.jhr.game.Horse
|
||||||
|
import top.jie65535.jhr.game.PlayerStatistics
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
@ -102,6 +103,20 @@ object JHorseRacing : KotlinPlugin(
|
|||||||
}
|
}
|
||||||
return sb.toString()
|
return sb.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getPlayerStat(id: Long): PlayerStatistics {
|
||||||
|
var stat = JHRPluginData.playerStat[id]
|
||||||
|
if (stat == null) {
|
||||||
|
stat = PlayerStatistics()
|
||||||
|
JHRPluginData.playerStat[id] = stat
|
||||||
|
}
|
||||||
|
return stat
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addContribution(id: Long) {
|
||||||
|
getPlayerStat(id).contribution += 1
|
||||||
|
}
|
||||||
|
|
||||||
private suspend fun startRank(subject: Group) {
|
private suspend fun startRank(subject: Group) {
|
||||||
val t = pools[subject.id] ?: return
|
val t = pools[subject.id] ?: return
|
||||||
if (t.size == 0) {
|
if (t.size == 0) {
|
||||||
@ -158,6 +173,7 @@ object JHorseRacing : KotlinPlugin(
|
|||||||
for (bet in pool) {
|
for (bet in pool) {
|
||||||
val score = JHRPluginData.Scores[bet.id]!!
|
val score = JHRPluginData.Scores[bet.id]!!
|
||||||
val income = if (winners.indexOf(bet.number) != -1) {
|
val income = if (winners.indexOf(bet.number) != -1) {
|
||||||
|
getPlayerStat(bet.id).winCount += 1
|
||||||
(bet.score * 1.5).toInt()
|
(bet.score * 1.5).toInt()
|
||||||
} else {
|
} else {
|
||||||
-bet.score
|
-bet.score
|
||||||
@ -243,6 +259,7 @@ object JHorseRacing : KotlinPlugin(
|
|||||||
subject.sendMessage("一天只能签到一次噢")
|
subject.sendMessage("一天只能签到一次噢")
|
||||||
} else {
|
} else {
|
||||||
signUpSheet.add(sender.id)
|
signUpSheet.add(sender.id)
|
||||||
|
getPlayerStat(sender.id).signCount += 1
|
||||||
val score = JHRPluginData.Scores[sender.id]
|
val score = JHRPluginData.Scores[sender.id]
|
||||||
val reward = signReward
|
val reward = signReward
|
||||||
if (score != null) {
|
if (score != null) {
|
||||||
@ -284,6 +301,7 @@ object JHorseRacing : KotlinPlugin(
|
|||||||
return@subscribeAlways
|
return@subscribeAlways
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPlayerStat(sender.id).betCount += 1
|
||||||
pool.add(Bet(sender.id, no, coin))
|
pool.add(Bet(sender.id, no, coin))
|
||||||
subject.sendMessage(JHRPluginConfig.betMessage[Random.nextInt(JHRPluginConfig.betMessage.size)].replace("?", no.toString()))
|
subject.sendMessage(JHRPluginConfig.betMessage[Random.nextInt(JHRPluginConfig.betMessage.size)].replace("?", no.toString()))
|
||||||
}
|
}
|
||||||
@ -298,6 +316,7 @@ object JHorseRacing : KotlinPlugin(
|
|||||||
}
|
}
|
||||||
if (JHRPluginConfig.goodEvents.indexOf(event) == -1) {
|
if (JHRPluginConfig.goodEvents.indexOf(event) == -1) {
|
||||||
JHRPluginConfig.goodEvents.add(event)
|
JHRPluginConfig.goodEvents.add(event)
|
||||||
|
addContribution(sender.id)
|
||||||
logger.info("已增加好事件'$event'")
|
logger.info("已增加好事件'$event'")
|
||||||
}
|
}
|
||||||
subject.sendMessage("OK")
|
subject.sendMessage("OK")
|
||||||
@ -313,6 +332,7 @@ object JHorseRacing : KotlinPlugin(
|
|||||||
}
|
}
|
||||||
if (JHRPluginConfig.badEvents.indexOf(event) == -1) {
|
if (JHRPluginConfig.badEvents.indexOf(event) == -1) {
|
||||||
JHRPluginConfig.badEvents.add(event)
|
JHRPluginConfig.badEvents.add(event)
|
||||||
|
addContribution(sender.id)
|
||||||
logger.info("已增加坏事件'$event'")
|
logger.info("已增加坏事件'$event'")
|
||||||
}
|
}
|
||||||
subject.sendMessage("OK")
|
subject.sendMessage("OK")
|
||||||
@ -328,6 +348,7 @@ object JHorseRacing : KotlinPlugin(
|
|||||||
}
|
}
|
||||||
if (JHRPluginConfig.winnerMessage.indexOf(event) == -1) {
|
if (JHRPluginConfig.winnerMessage.indexOf(event) == -1) {
|
||||||
JHRPluginConfig.winnerMessage.add(event)
|
JHRPluginConfig.winnerMessage.add(event)
|
||||||
|
addContribution(sender.id)
|
||||||
logger.info("已增加胜利词'$event'")
|
logger.info("已增加胜利词'$event'")
|
||||||
}
|
}
|
||||||
subject.sendMessage("OK")
|
subject.sendMessage("OK")
|
||||||
@ -343,6 +364,7 @@ object JHorseRacing : KotlinPlugin(
|
|||||||
}
|
}
|
||||||
if (JHRPluginConfig.betMessage.indexOf(event) == -1) {
|
if (JHRPluginConfig.betMessage.indexOf(event) == -1) {
|
||||||
JHRPluginConfig.betMessage.add(event)
|
JHRPluginConfig.betMessage.add(event)
|
||||||
|
addContribution(sender.id)
|
||||||
logger.info("已增加下注词'$event'")
|
logger.info("已增加下注词'$event'")
|
||||||
}
|
}
|
||||||
subject.sendMessage("OK")
|
subject.sendMessage("OK")
|
||||||
@ -407,6 +429,25 @@ object JHorseRacing : KotlinPlugin(
|
|||||||
msg == "下注词列表" -> {
|
msg == "下注词列表" -> {
|
||||||
subject.sendMessage(JHRPluginConfig.betMessage.joinToString("\n"))
|
subject.sendMessage(JHRPluginConfig.betMessage.joinToString("\n"))
|
||||||
}
|
}
|
||||||
|
msg == "排名" || msg == "积分榜" -> {
|
||||||
|
val msgB = MessageChainBuilder(11)
|
||||||
|
msgB.append("积分榜")
|
||||||
|
JHRPluginData.Scores.entries.sortedBy { it.value }.take(10).onEach {
|
||||||
|
msgB.append(At(it.key)).append(" ${it.value}")
|
||||||
|
}
|
||||||
|
subject.sendMessage(msgB.asMessageChain())
|
||||||
|
}
|
||||||
|
msg == "统计" -> {
|
||||||
|
val stat = getPlayerStat(sender.id)
|
||||||
|
val ret = MessageChainBuilder()
|
||||||
|
ret.append(message.quote())
|
||||||
|
.append("下注次数:${stat.betCount}\n")
|
||||||
|
.append("获胜次数:${stat.winCount}\n")
|
||||||
|
.append("贡献次数:${stat.contribution}\n")
|
||||||
|
.append("签到次数:${stat.signCount}\n")
|
||||||
|
.append("ヾ(◍°∇°◍)ノ゙继续加油吧!")
|
||||||
|
subject.sendMessage(ret.asMessageChain())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
8
src/main/kotlin/game/PlayerStatistics.kt
Normal file
8
src/main/kotlin/game/PlayerStatistics.kt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package top.jie65535.jhr.game
|
||||||
|
|
||||||
|
class PlayerStatistics {
|
||||||
|
var betCount = 0
|
||||||
|
var winCount = 0
|
||||||
|
var contribution = 0
|
||||||
|
var signCount = 0
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user