task_defs.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package proto
  2. import (
  3. "bet24.com/servers/common"
  4. item "bet24.com/servers/micros/item_inventory/proto"
  5. )
  6. const (
  7. PreAddictionTaskId = 610800
  8. PreAddcitionTime = 10800
  9. )
  10. const (
  11. _ = iota
  12. TaskAction_login // 1=登录
  13. TaskAction_earn // 2=赚取金币
  14. TaskAction_wingame // 3=赢一把游戏
  15. TaskAction_pay // 4=充值
  16. TaskAction_fire // 5=游戏消耗金币
  17. TaskAction_play_time // 6=添加在线时长
  18. TaskAction_use_item // 7=使用道具、技能
  19. TaskAction_enter_room // 8=进入房间
  20. TaskAction_day_vitality // 9=天活跃度
  21. TaskAction_week_vitality // 10=周活跃度
  22. TaskAction_achievement // 11=成就
  23. TaskAction_playgame // 12=参与游戏
  24. TaskAction_worldchat // 13=世界聊天
  25. TaskAction_gameinteract // 14=游戏互动道具
  26. TaskAction_addfriend // 15=添加好友
  27. TaskAction_shareplatform // 16=平台分享
  28. TaskAction_sharegame // 17=游戏分享
  29. TaskAction_gift // 18=赠送礼物
  30. TaskAction_privatechat // 19=发私聊
  31. TaskAction_playmatch // 20=参加比赛
  32. TaskAction_matchpromote // 21=比赛晋级
  33. TaskAction_matchfinal // 22=比赛进入最后一轮
  34. TaskAction_matchchampion // 23=比赛获得冠军
  35. TaskAction_exchange_item // 24=购买道具
  36. TaskAction_novice_guidance // 25=新手引导
  37. TaskAction_playSNG // 26=进行sng比赛
  38. TaskAction_playComboMatch // 27=进行实物赛
  39. TaskAction_upMicDuration // 28=上麦时长
  40. TaskAction_diamondGift // 29=赠送钻石礼物
  41. TaskAction_sendGivingDiamond // 30=赠送钻石礼物价值
  42. TaskAction_receiveGivingDiamond // 31=收到钻石礼物价值
  43. TaskAction_roomChat // 32=在房间聊天
  44. TaskAction_betWin // 33=投注赢取,不扣减投注额
  45. TaskAction_gameaction = 50 // 游戏条件,不通的游戏可定义不同的内容,可扩充。配合TaskScop
  46. )
  47. const (
  48. TaskStatus_active = iota // 任务进行中
  49. TaskStatus_complete // 完成
  50. TaskStatus_awarded // 已领取奖励
  51. TaskStatus_inactive // 未开始
  52. TaskStatus_expired // 已过期
  53. )
  54. var status_desc = []string{"ACTIVE", "comple", "awarde", "inacti", "expire"}
  55. const (
  56. TaskDuration_Daily = -1 // 每日任务
  57. TaskDuration_Weekly = -2 // 每周任务
  58. )
  59. var duration_desc = []string{"daily", "weekly"}
  60. const (
  61. TaskScene_None = iota // 不显示
  62. TaskScene_Hall = 1 // 1=大厅
  63. TaskScene_Game = 10 // 10=游戏
  64. TaskScene_AudioRoom = 100 // 100=语聊房任务
  65. TaskScene_Agent = 1000 // 1000=代理会员任务
  66. TaskScene_DailyWheel = 10000 // 每日转盘任务
  67. TaskScene_HighlyProfitable = 100000 // 一本万利任务
  68. )
  69. type Task struct {
  70. Id int
  71. Scene int
  72. Title string
  73. Desc string
  74. Action int
  75. Target int
  76. Repeatable bool // 是否可重复
  77. Duration int // 任务有效期
  78. PreTask int `json:",omitempty"` // 如果不为0,则需要完成前置任务才创建,否则自动创建
  79. Awards []item.ItemPack
  80. Extra string // 预留跳转描述
  81. Task_Period // 如果是限时开放的任务,则在这里添加时效
  82. TaskScope // 是否限制游戏
  83. }
  84. // 任务的适用范围
  85. type TaskScope struct {
  86. GameNames []string `json:",omitempty"` // 游戏ID范围
  87. GameName string `json:",omitempty"` // 应用调用时传入参数
  88. RankCrdate string `json:",omitempty"` // 榜单的创建开始日期
  89. }
  90. func (t *Task) IsAplicable(param TaskScope) bool {
  91. if len(t.GameNames) == 0 {
  92. return true
  93. }
  94. for _, v := range t.GameNames {
  95. if v == param.GameName {
  96. return true
  97. }
  98. }
  99. return false
  100. }
  101. func (t *Task) IsOpen() bool {
  102. if t.Start == 0 {
  103. return true
  104. }
  105. now := common.GetTimeStamp()
  106. return now >= t.Start && now <= (t.Start+t.Duration)
  107. }
  108. type UserTask struct {
  109. TaskId int
  110. Scheduled int // 完成进度
  111. Status int
  112. Task_Period // 任务对玩家的时效,时效内已完成,如果没有后置任务,则不重置,等时效结束后再创建
  113. }
  114. type Task_Period struct {
  115. Start int `json:",omitempty"` // 开始时间戳 秒 0表示无时效
  116. Duration int `json:",omitempty"` // 持续时间 秒
  117. }
  118. func GetTaskStatusDesc(status int) string {
  119. if status < len(status_desc) && status >= 0 {
  120. return status_desc[status]
  121. }
  122. return "unknown"
  123. }
  124. func GetTaskDurationDesc(duration int) string {
  125. duration = duration*-1 - 1
  126. if duration < len(duration_desc) && duration >= 0 {
  127. return duration_desc[duration]
  128. }
  129. return "unknown"
  130. }