DrillMiddleLogic.lua 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. local InnerMsg = require("core.InnerMsg")
  2. local Util = require("common.Util")
  3. local DrillDB = require("drill.DrillDB")
  4. local MiddleLogic = require("middle.MiddleLogic")
  5. local Lang = require("common.Lang")
  6. local CommonDB = require("common.CommonDB")
  7. local DrillExcel = require("excel.drill")
  8. local Util = require("common.Util")
  9. local DrillLogic = require("drill.DrillLogic")
  10. -- 加入跨服竞技场队列
  11. -- 防守阵容同步
  12. -- 根据战力获取一个相应的阵容
  13. function onJjcPos(fd, msg)
  14. local drillObj = Util.copyTable(msg.drillObj)
  15. DrillDB.updateDrillObj(drillObj)
  16. end
  17. function getDifficulty(quJian, diff,config)
  18. local str1 = ""
  19. local str2 = ""
  20. local stradd = ""
  21. if quJian == 2 then
  22. stradd = "1"
  23. end
  24. if diff == DrillLogic.DIFF_NORMAL then
  25. str1 = "zdlMin"
  26. str2 = "zdlMax"
  27. elseif diff == DrillLogic.DIFF_ELITE then
  28. str1 = "zdlMinElite"
  29. str2 = "zdlMaxElite"
  30. elseif diff == DrillLogic.DIFF_INCUBI then
  31. str1 = "zdlMinIncubi"
  32. str2 = "zdlMaxIncubi"
  33. end
  34. if stradd == "" then
  35. return config[str1], config[str2]
  36. else
  37. return config[str1..stradd], config[str2..stradd]
  38. end
  39. end
  40. -- 请求关卡
  41. function quest(fd, msg)
  42. local drillCfg = DrillExcel.drill[msg.drillId]
  43. if not drillCfg then return end
  44. -- 第一查找
  45. local minPer, maxPer = getDifficulty(1, msg.diff, drillCfg)
  46. local zdlMin = math.ceil(minPer / 10000 * msg.selZdl)
  47. local zdlMax = math.ceil(maxPer / 10000 * msg.selZdl)
  48. local drillObj = DrillDB.randomDrillObj(zdlMin, zdlMax, msg.ninTb)
  49. if not drillObj then
  50. -- 第二次查找
  51. minPer, maxPer = getDifficulty(2, msg.diff, drillCfg)
  52. zdlMin = math.ceil(minPer / 10000 * msg.selZdl)
  53. zdlMax = math.ceil(maxPer / 10000 * msg.selZdl)
  54. drillObj = DrillDB.randomDrillObj(zdlMin, zdlMax, msg.ninTb)
  55. if not drillObj then
  56. drillObj = DrillDB.randomDrillObj(zdlMin, zdlMax, msg.ninTb, true)
  57. if not drillObj then
  58. -- 给一个大的区间 取一个阵容
  59. zdlMin = 1000000
  60. zdlMax = 4000000
  61. drillObj = DrillDB.randomDrillObj(zdlMin, zdlMax, msg.ninTb, true)
  62. end
  63. end
  64. end
  65. if not drillObj then
  66. return MiddleLogic.sendWLBroadcast(fd, msg.uuid, Lang.DRILL_NOT_FING_DRILL)
  67. end
  68. local msgRet = InnerMsg.wl.WL_DRILL_QUEST
  69. msgRet.uuid = msg.uuid
  70. msgRet.drillId = msg.drillId
  71. msgRet.drillObj = drillObj
  72. InnerMsg.sendMsg(fd, msgRet)
  73. end