AbsJifenDrawLogic.lua 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. -- ABS 积分召唤活动
  2. local Config = require("Config")
  3. local AbsActExcel = require("excel.absAct")
  4. local Lang = require("common.Lang")
  5. local Util = require("common.Util")
  6. local Msg = require("core.Msg")
  7. local AbsActDefine = require("absAct.AbsActDefine")
  8. local ObjHuman = require("core.ObjHuman")
  9. local Broadcast = require("broadcast.Broadcast")
  10. local MangHeLogic = require("absAct.MangHeLogic")
  11. local MailExcel = require("excel.mail")
  12. local MailManager = require("mail.MailManager")
  13. local CommonDB = require("common.CommonDB")
  14. local AbsActLogic = require("absAct.AbsActLogic")
  15. local HeroGrid = require("hero.HeroGrid")
  16. local DrawCardLogic = require("drawCard.DrawCardLogic")
  17. local Log = require("common.Log")
  18. local HeroBook = require("hero.HeroBook")
  19. local HeroExcel = require("excel.hero")
  20. local HeroLogic = require("hero.HeroLogic")
  21. local ChatPaoMaLogic = require("chat.ChatPaoMaLogic")
  22. function isOpen(human, YYInfo, funcConfig)
  23. return AbsActLogic.isStarted(human, funcConfig.funcID)
  24. end
  25. function isActive(human, YYInfo, funcConfig)
  26. return not isOpen(human, YYInfo, funcConfig)
  27. end
  28. function isRed(human, YYInfo, funcConfig)
  29. return false
  30. end
  31. function genAbsActData(config)
  32. return {
  33. actId = config.actId,
  34. }
  35. end
  36. function getAndSendMsg(human, id, config)
  37. local absAct = human.db.absAct[id]
  38. if not absAct then
  39. print("not found human.db.absAct")
  40. return
  41. end
  42. local actId = config.actId
  43. local msgRet = Msg.gc.GC_ABS_ACT_JIFEN_DRAW_QUERY
  44. local jifenDrawConfig = AbsActExcel.absJifenDraw[actId]
  45. if not jifenDrawConfig then
  46. print("not found jifenDrawConfig",actId)
  47. return
  48. end
  49. if actId ~= absAct.actId then
  50. local finish = absAct.finish or os.time()
  51. human.db.absAct[id] = {
  52. actId = actId,
  53. finish = finish,
  54. }
  55. absAct = human.db.absAct[id]
  56. end
  57. local len = 0
  58. for k, config in ipairs(jifenDrawConfig.heroList) do
  59. len = len + 1
  60. if len > #msgRet.list then
  61. break
  62. end
  63. local net = msgRet.list[len]
  64. if net then
  65. net.id = k
  66. net.cur = absAct[k] or 0
  67. net.max = config[3]
  68. net.cost = config[2]
  69. HeroGrid.makeHeroSimpleByID(net.hero, config[1])
  70. end
  71. end
  72. msgRet.list[0] = len
  73. msgRet.randomCost = DrawCardLogic.MAX_JIFEN
  74. msgRet.curJifen = DrawCardLogic.getJifen(human)
  75. Msg.send(msgRet, human.fd)
  76. end
  77. -- 积分购买
  78. function buy(human, id, actID)
  79. local state,endTime, starTime = AbsActLogic.isStarted(human, actID)
  80. if not state then return end
  81. local config = AbsActExcel.absActivity[actID]
  82. if not config then return end
  83. local jifenDrawConfig = AbsActExcel.absJifenDraw[config.actId]
  84. if not jifenDrawConfig then return end
  85. local absAct = human.db.absAct[actID]
  86. if not absAct then
  87. return
  88. end
  89. local heroConfig = jifenDrawConfig.heroList[id]
  90. if not heroConfig then return end
  91. -- 扣除积分
  92. if DrawCardLogic.getJifen(human) < heroConfig[2] then
  93. return Broadcast.sendErr(human, Lang.DRAWCARD_ERR_NOJIFEN)
  94. end
  95. absAct[id] = absAct[id] or 0
  96. if absAct[id] >= heroConfig[3] then
  97. return
  98. end
  99. DrawCardLogic.updateJifen(human, -heroConfig[2])
  100. absAct[id] = absAct[id] + 1
  101. local heroID = heroConfig[1]
  102. local drawConfig = HeroExcel.hero[heroID]
  103. ChatPaoMaLogic.broadcast(human, ChatPaoMaLogic.PAOMA_TYPE_BROAD_TYPE4, drawConfig.grade, heroID)
  104. local isNew = not HeroBook.isGet(human, drawConfig.id, drawConfig.star)
  105. local heroIndex, fenjielist = HeroLogic.addHero(human, heroID, nil, 1, "abs_jifenDraw")
  106. Log.write(Log.LOGID_OSS_DRAWCARD, human.db._id, human.db.account, human.db.name, human.db.lv, DrawCardLogic.DRAWCARD_ID4, heroID, 0, 0, 0, DrawCardLogic.getJifen(human))
  107. DrawCardLogic.sendDrawOp(human, DrawCardLogic.DRAWCARD_ID4, 0, {heroID}, fenjielist, {isNew}, {heroIndex}, AbsActDefine.ABS_ACT_TYPE_7)
  108. end