EquipHechengLogic.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. local Lang = require("common.Lang")
  2. local Msg = require("core.Msg")
  3. local ObjHuman = require("core.ObjHuman")
  4. local EquipExcel = require("excel.equip")
  5. local BagLogic = require("bag.BagLogic")
  6. local Grid = require("bag.Grid")
  7. local Broadcast = require("broadcast.Broadcast")
  8. local DailyTaskLogic = require("dailyTask.DailyTaskLogic")
  9. local ItemDefine = require("bag.ItemDefine")
  10. local Util = require("common.Util")
  11. local EquipLogic = require("equip.EquipLogic")
  12. EQUIP_HECHENG_LOG_MAX = 30
  13. --装备合成帮助查询
  14. function equipDetailQuery(human)
  15. local descConfig = EquipExcel.detail[1]
  16. if not descConfig then return end
  17. local msgRet = Msg.gc.GC_EQUIP_HECHENG_DETAIL_QUERY
  18. msgRet.desc = descConfig.desc
  19. Msg.send(msgRet, human.fd)
  20. end
  21. local function sendQuery(human, pos)
  22. local msgRet = Msg.gc.GC_EQUIP_HECHENG_QUERY
  23. msgRet.pos = pos
  24. local cnt = 0
  25. local count = 0
  26. msgRet.dot = {0,0,0,0}
  27. for key, value in ipairs(EquipExcel.hecheng)do
  28. if pos == value.pos then
  29. cnt = cnt + 1
  30. msgRet.list[cnt].id = key
  31. msgRet.list[cnt].itemData[0] = 2
  32. Grid.makeItem(msgRet.list[cnt].itemData[1], value.hechengID, 1, nil, nil, nil, nil, 5)
  33. Grid.makeItem(msgRet.list[cnt].itemData[2], value.needID, 1, nil, nil, nil, nil, 5)
  34. msgRet.list[cnt].cnt = value.cnt
  35. Grid.makeItem(msgRet.list[cnt].need[1], value.money[1][1], value.money[1][2])
  36. msgRet.list[cnt].need[0] = 1
  37. end
  38. local nowEquipCnt = BagLogic.getItemCnt(human, value.needID)
  39. if nowEquipCnt >= value.cnt then
  40. msgRet.dot[value.pos] = 1
  41. end
  42. end
  43. msgRet.list[0] = cnt
  44. msgRet.dot[0] = 4
  45. Msg.send(msgRet, human.fd)
  46. end
  47. -- 装备合成信息查询
  48. function equipHechengQuery(human, pos)
  49. if pos == 0 then
  50. for i = ItemDefine.EQUIP_SUBTYPE_WEAPON, ItemDefine.EQUIP_SUBTYPE_SHIPIN do
  51. sendQuery(human, i)
  52. end
  53. else
  54. sendQuery(human, pos)
  55. end
  56. end
  57. -- 合成装备
  58. function equipHechengDo(human, id, indexList)
  59. print(" equipHechengDo ", id )
  60. Util.printTable(indexList)
  61. local config = EquipExcel.hecheng[id]
  62. if not config then return end
  63. if config.cnt ~= #indexList then
  64. Broadcast.sendErr(human, Util.format(Lang.EQUIP_HECHENG_ERR_NOITEM,ItemDefine.getValue(needEquipID,"name")))
  65. return
  66. end
  67. -- 检查 装备下标是否正确
  68. for _, index in ipairs(indexList) do
  69. local grid = human.db.equipBag[index]
  70. if not grid or grid.id ~= config.needID then
  71. return Broadcast.sendErr(human, Util.format(Lang.EQUIP_HECHENG_ERR_NOITEM,ItemDefine.getValue(needEquipID,"name")))
  72. end
  73. end
  74. -- 判断消耗
  75. for _, v in ipairs(config.money) do
  76. if BagLogic.getItemCnt(human, v[1]) < v[2] then
  77. return
  78. end
  79. end
  80. for _, v in ipairs(config.money) do
  81. BagLogic.delItem(human, v[1], v[2], "equip_hecheng")
  82. end
  83. local equipGrid = Util.copyTable(human.db.equipBag[indexList[1]])
  84. -- 删除道具
  85. for k, index in ipairs(indexList) do
  86. EquipLogic.delEquip(human, index, "equip_hecheng")
  87. end
  88. equipGrid.id = config.hechengID
  89. EquipLogic.getNewAttrByItemID(config.hechengID, equipGrid.attr)
  90. EquipLogic.addByEquipGrid(human, equipGrid, "equip_hecheng")
  91. -- 通知客户端
  92. local msgRet = Msg.gc.GC_EQUIP_HECHENG_DO
  93. Grid.makeItem(msgRet.item, equipGrid.id, 1, nil, equipGrid, index, Grid.getOpflagAtBag(equipGrid.id))
  94. Msg.send(msgRet, human.fd)
  95. local equipTb = {}
  96. equipTb[config.hechengID] = 1
  97. equipHechengLog(human,equipTb, config.money)
  98. end
  99. function equipHechengLog(human,equip,cost)
  100. local now = os.time()
  101. local logTb = {}
  102. logTb.equip = equip
  103. logTb.cost = cost
  104. logTb.time = now
  105. human.db.equipLogs = human.db.equipLogs or {}
  106. table.insert(human.db.equipLogs,1,logTb)
  107. human.db.equipLogs[EQUIP_HECHENG_LOG_MAX + 1] = nil
  108. end
  109. function equipLogsQuery(human)
  110. local msgRet = Msg.gc.GC_EUQIP_HECHENG_LOG_QUERY
  111. if human.db.equipLogs == nil or #human.db.equipLogs == 0 then
  112. msgRet.equipLogs[0] = 0
  113. Msg.send(msgRet,human.fd)
  114. return
  115. end
  116. local len = #human.db.equipLogs
  117. for i = 1,len do
  118. local v = human.db.equipLogs[i]
  119. local count = 0
  120. for equipID,equipCnt in pairs(v.equip) do
  121. Grid.makeItem(msgRet.equipLogs[i].equip,equipID,equipCnt, nil, nil, nil, nil, 5)
  122. end
  123. Grid.makeItem(msgRet.equipLogs[i].cost[1], v.cost[1],v.cost[2])
  124. msgRet.equipLogs[i].cost[0] = 1
  125. msgRet.equipLogs[i].time = v.time
  126. if i >= 30 then
  127. break
  128. end
  129. end
  130. msgRet.equipLogs[0] = len
  131. Msg.send(msgRet,human.fd)
  132. end