MCPcopy Create free account
hub / github.com/FloatTech/ZeroBot-Plugin-Playground / init

Function init

plugin/games/iquarters.go:18–180  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

16)
17
18func init() {
19 // 注册游戏信息
20 engine, gameManager, err := gamesystem.Register("猜硬币", &gamesystem.GameInfo{
21 Command: "- 创建猜硬币\n" +
22 "- [加入|开始]游戏\n" +
23 "- 开始投币",
24 Help: "每个人宣言银币正面数量后,掷出参游人数的银币",
25 Rewards: "正面与宣言的数量相同的场合获得 正面数*10 ATRI币\n" +
26 "正面与宣言的数量相差2以内的场合获得 正面数*5 ATRI币\n" +
27 "其他的的场合失去 10 ATRI币",
28 })
29 if err != nil {
30 panic(err)
31 }
32 engine.OnFullMatch("创建猜硬币", zero.OnlyGroup, func(ctx *zero.Ctx) bool {
33 err := gameManager.CreateRoom(ctx.Event.GroupID)
34 if err != nil {
35 ctx.SendChain(message.Text("[ERROR]:", err))
36 return false
37 }
38 return true
39 }).SetBlock(true).Handle(func(ctx *zero.Ctx) {
40 // 结束后关闭房间
41 defer gameManager.CloseRoom(ctx.Event.GroupID)
42 uid := ctx.Event.UserID
43 userScore := wallet.GetWalletOf(uid)
44 if userScore < 10 {
45 ctx.SendChain(message.Text("你的ATRI币不足以满足该游戏"))
46 return
47 }
48 // 等待对方响应
49 ctx.SendChain(message.Text("你开启了猜硬币游戏。\n其他人可发送“加入游戏”加入游戏或你发送“开始游戏”开始游戏"))
50 recv, cancel := zero.NewFutureEvent("message", 999, false, zero.OnlyGroup, zero.FullMatchRule("加入游戏", "开始游戏"), zero.CheckGroup(ctx.Event.GroupID)).Repeat()
51 defer cancel()
52 answer := ""
53 var answerid int64
54 var duel = make(map[int64]int, 2)
55 uidlist := []int64{uid}
56 duel[uid] = -1
57 wait := time.NewTimer(120 * time.Second)
58 for {
59 select {
60 case <-wait.C:
61 ctx.Send(message.ReplyWithMessage(ctx.Event.MessageID,
62 message.Text("时间超时,游戏取消")))
63 return
64 case c := <-recv:
65 answer = c.Event.Message.String()
66 answerid = c.Event.UserID
67 if answer == "加入游戏" {
68 _, ok := duel[answerid]
69 if ok {
70 ctx.Send(message.ReplyWithMessage(c.Event.MessageID,
71 message.Text("你已经加入了游戏")))
72 } else {
73 challengScore := wallet.GetWalletOf(answerid)
74 if challengScore < 10 {
75 ctx.SendChain(message.Text("你的ATRI币不足以满足该游戏"))

Callers

nothing calls this directly

Calls 3

RegisterFunction · 0.92
CreateRoomMethod · 0.80
CloseRoomMethod · 0.80

Tested by

no test coverage detected