SuipianLogic.lua 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600
  1. -- 碎片逻辑
  2. local ItemExcel = require("excel.item")
  3. local DropExcel = require("excel.drop")
  4. local HeroExcel = require("excel.hero")
  5. local Lang = require("common.Lang")
  6. local Msg = require("core.Msg")
  7. local HeroGrid = require("hero.HeroGrid")
  8. local HeroDefine = require("hero.HeroDefine")
  9. local HeroLogic = require("hero.HeroLogic")
  10. local BagLogic = require("bag.BagLogic")
  11. local ItemDefine = require("bag.ItemDefine")
  12. local DropSpecial = require("bag.DropSpecial")
  13. local Grid = require("bag.Grid")
  14. local Broadcast = require("broadcast.Broadcast")
  15. SUMMON_TYPE_TARGET = 1 -- 指定目标兑换
  16. SUMMON_TYPE_DROP = 2 -- 随机掉落表兑换
  17. SUMMON_TYPE_HERO_SP = 3 -- 英雄条件兑换
  18. SUMMON_TYPE_SHENQI_SP = 4 -- 神器条件兑换
  19. SUMMON_SUBTYPE_HERO = 1 -- 英雄
  20. SUMMON_SUBTYPE_EQUIP = 2 -- 装备
  21. SUMMON_SUBTYPE_SKIN = 3 -- 皮肤
  22. -- 查询
  23. function query(human, itemID)
  24. local itemConfig = ItemExcel.item[itemID]
  25. if itemConfig == nil then return end
  26. if itemConfig.get[1] ~= SUMMON_TYPE_TARGET then
  27. return
  28. end
  29. if itemConfig.get[2] ~= SUMMON_SUBTYPE_HERO then
  30. return
  31. end
  32. local heroID = itemConfig.get[3]
  33. local heroGrid = HeroGrid.getCacheHeroGridTujian(heroID)
  34. if not heroGrid then return end
  35. local msgRet = Msg.gc.GC_SUIPIAN_HERO_QUERY
  36. msgRet.id = itemID
  37. HeroGrid.makeHeroSimple(msgRet.heroSimple, heroGrid, nil, human, nil, true)
  38. --Msg.trace(msgRet)
  39. Msg.send(msgRet, human.fd)
  40. end
  41. -- 召唤
  42. function summon(human, itemID, itemUseCnt)
  43. if human.db.bag[itemID] == nil or human.db.bag[itemID] < itemUseCnt then
  44. return
  45. end
  46. local itemConfig = ItemExcel.item[itemID]
  47. if itemConfig == nil then
  48. return
  49. end
  50. if itemConfig.get[1] ~= SUMMON_TYPE_TARGET
  51. and itemConfig.get[1] ~= SUMMON_TYPE_DROP
  52. and itemConfig.get[1] ~= SUMMON_TYPE_HERO_SP
  53. and itemConfig.get[1] ~= SUMMON_TYPE_SHENQI_SP then
  54. return
  55. end
  56. if itemConfig.get[2] ~= SUMMON_SUBTYPE_HERO and itemConfig.get[2] ~= SUMMON_SUBTYPE_EQUIP then
  57. return
  58. end
  59. local leftHeroBox = HeroLogic.getEmptyCnt(human)
  60. if itemConfig.get[2] ~= SUMMON_SUBTYPE_EQUIP then
  61. if leftHeroBox <= 0 then
  62. return Broadcast.sendErr(human, Lang.HERO_BAG_FULL)
  63. end
  64. end
  65. local realItemCnt = math.floor(itemUseCnt/itemConfig.fullCnt)
  66. if realItemCnt < 1 then
  67. return
  68. end
  69. if realItemCnt * itemConfig.fullCnt ~= itemUseCnt then
  70. return
  71. end
  72. local isHero = 0
  73. local outItemIDList = nil
  74. local targetID = nil
  75. if itemConfig.get[1] == SUMMON_TYPE_TARGET then
  76. -- 召唤数量大于剩余格子数,将真实召唤数量换成剩余格子数
  77. local leftHeroBox = HeroLogic.getEmptyCnt(human)
  78. if realItemCnt > leftHeroBox then
  79. realItemCnt = leftHeroBox
  80. end
  81. -- 指定目标
  82. targetID = itemConfig.get[3]
  83. elseif itemConfig.get[1] == SUMMON_TYPE_DROP then
  84. -- 召唤数量大于剩余格子数,将真实召唤数量换成剩余格子数
  85. if itemConfig.get[2] ~= SUMMON_SUBTYPE_EQUIP then
  86. local leftHeroBox = HeroLogic.getEmptyCnt(human)
  87. if realItemCnt > leftHeroBox then
  88. realItemCnt = leftHeroBox
  89. end
  90. end
  91. -- 掉落表随机掉落
  92. for i = 1, realItemCnt do
  93. local dropID = itemConfig.get[3]
  94. targetID = getDropTargetID(dropID)
  95. outItemIDList = outItemIDList or {}
  96. outItemIDList[targetID] = outItemIDList[targetID] or 0
  97. outItemIDList[targetID] = outItemIDList[targetID] + 1
  98. end
  99. elseif itemConfig.get[1] == SUMMON_TYPE_HERO_SP then
  100. -- 召唤数量大于剩余格子数,将真实召唤数量换成剩余格子数
  101. local leftHeroBox = HeroLogic.getEmptyCnt(human)
  102. if realItemCnt > leftHeroBox then
  103. realItemCnt = leftHeroBox
  104. end
  105. -- 英雄条件兑换
  106. local dropTable = DropSpecial.getDropHeroTable(itemConfig.get[3][1], itemConfig.get[3][2], itemConfig.get[3][3])
  107. for i = 1, realItemCnt do
  108. local randTemp = math.random(1, #dropTable)
  109. targetID = dropTable[randTemp]
  110. outItemIDList = outItemIDList or {}
  111. outItemIDList[targetID] = outItemIDList[targetID] or 0
  112. outItemIDList[targetID] = outItemIDList[targetID] + 1
  113. end
  114. elseif itemConfig.get[1] == SUMMON_TYPE_SHENQI_SP then
  115. -- 神器条件兑换
  116. local dropTable = DropSpecial.getDropEquipTable(itemConfig.get[3][1], itemConfig.get[3][2], itemConfig.get[3][3], itemConfig.get[3][4])
  117. for i = 1, realItemCnt do
  118. local randTemp = math.random(1, #dropTable)
  119. targetID = dropTable[randTemp]
  120. outItemIDList = outItemIDList or {}
  121. outItemIDList[targetID] = outItemIDList[targetID] or 0
  122. outItemIDList[targetID] = outItemIDList[targetID] + 1
  123. end
  124. end
  125. if targetID == nil and outItemIDList == nil then
  126. assert(nil)
  127. end
  128. local realSuiPianCnt = realItemCnt * itemConfig.fullCnt
  129. BagLogic.delItem(human, itemID, realSuiPianCnt, "item_summon")
  130. local fenJieList = nil
  131. local itemList = {}
  132. if itemConfig.get[2] == SUMMON_SUBTYPE_HERO then
  133. isHero = 1
  134. if outItemIDList then
  135. -- 多个id
  136. for k, v in pairs(outItemIDList) do
  137. local _, fjlist = HeroLogic.addHero(human, k,nil, v, "item_summon")
  138. local heroID = k
  139. local hero = HeroExcel.hero[heroID]
  140. if fjlist and type(fjlist) == "table" then
  141. for fjItemID, fjItemCnt in pairs(fjlist) do
  142. fenJieList = fenJieList or {}
  143. fenJieList[fjItemID] = (fenJieList[fjItemID] or 0) + fjItemCnt
  144. end
  145. end
  146. end
  147. else
  148. -- 单个id
  149. local _, fjlist = HeroLogic.addHero(human, targetID,nil, realItemCnt, "item_summon")
  150. local heroID = targetID
  151. local hero = HeroExcel.hero[heroID]
  152. if fjlist and type(fjlist) == "table" then
  153. for fjItemID, fjItemCnt in pairs(fjlist) do
  154. fenJieList = fenJieList or {}
  155. fenJieList[fjItemID] = (fenJieList[fjItemID] or 0) + fjItemCnt
  156. end
  157. end
  158. end
  159. else
  160. if outItemIDList then
  161. -- 多个id
  162. for k, v in pairs(outItemIDList) do
  163. BagLogic.addItem(human, k, v, "item_summon")
  164. itemList[k] = itemList[k] or 0
  165. itemList[k] = itemList[k] + v
  166. end
  167. else
  168. -- 单个id
  169. BagLogic.addItem(human, targetID, realItemCnt, "item_summon")
  170. itemList[targetID] = itemList[targetID] or 0
  171. itemList[targetID] = itemList[targetID] + realItemCnt
  172. end
  173. end
  174. BagLogic.sendItemGetList(human, itemList, "item_summon")
  175. local msgRet = Msg.gc.GC_SUIPIAN_SUMMON
  176. msgRet.isHero = isHero
  177. msgRet.list[0] = 0
  178. msgRet.heroList[0] = 0
  179. msgRet.fenJieList[0] = 0
  180. local netList = (isHero == 1) and msgRet.heroList or msgRet.list
  181. if outItemIDList then
  182. -- 多个id
  183. for k, v in pairs(outItemIDList) do
  184. netList[0] = netList[0] + 1
  185. makeResultItemData(netList[netList[0]], k, v, isHero)
  186. end
  187. else
  188. netList[0] = netList[0] + 1
  189. makeResultItemData(netList[netList[0]], targetID, realItemCnt, isHero)
  190. end
  191. if fenJieList then
  192. for fjItemID, fjItemCnt in pairs(fenJieList) do
  193. msgRet.fenJieList[0] = msgRet.fenJieList[0] + 1
  194. Grid.makeItem(msgRet.fenJieList[msgRet.fenJieList[0]], fjItemID, fjItemCnt)
  195. end
  196. end
  197. --Msg.trace(msgRet)
  198. Msg.send(msgRet, human.fd)
  199. end
  200. function makeResultItemData(net, id, cnt, isHero)
  201. if isHero == 1 then
  202. HeroGrid.makeHeroSimpleByID(net, id)
  203. net.cnt = cnt
  204. else
  205. Grid.makeItem(net, id, cnt)
  206. end
  207. end
  208. -- 根据掉落id 获取id
  209. function getDropTargetID(dropID)
  210. local dropConfig = DropExcel.dropSuipian[dropID]
  211. if dropConfig == nil then
  212. return
  213. end
  214. -- 计算总权重
  215. local totalWeight = 0
  216. for k, v in ipairs(dropConfig.dropRule) do
  217. local weight = v[2]
  218. totalWeight = totalWeight + weight
  219. end
  220. local heroWeight = nil
  221. local r = math.random(1, totalWeight)
  222. for k, v in ipairs(dropConfig.dropRule) do
  223. local weight = v[2]
  224. if r <= weight then
  225. heroWeight = v[1]
  226. break
  227. else
  228. r = r - weight
  229. end
  230. end
  231. if heroWeight == nil then
  232. assert()
  233. end
  234. local len = #dropConfig.camp
  235. local index = math.random(1, len)
  236. local heroID = HeroDefine.getRandHeroByWeightLvAndCamp(heroWeight, dropConfig.camp[index])
  237. return heroID
  238. end
  239. local function queryBoxList(human, itemConfig)
  240. local itemList = itemConfig.cmd[2]
  241. if not itemList then return end
  242. local msgRet = Msg.gc.GC_SUIPIAN_ITEM_SUMMON_QUERY
  243. msgRet.items[0] = #itemList
  244. for i = 1, msgRet.items[0] do
  245. local itemID = itemList[i][1]
  246. local itemCnt = itemList[i][2]
  247. local quality = itemList[i][3]
  248. Grid.makeItem(msgRet.items[i], itemID, itemCnt, nil, nil, nil, nil, quality)
  249. end
  250. Msg.send(msgRet, human.fd)
  251. end
  252. --碎片英雄召唤预览
  253. function CG_SUIPIAN_HERO_SUMMON_QUERY(human, itemID)
  254. local itemConfig = ItemExcel.item[itemID]
  255. if not itemConfig then return end
  256. local cmdStr = itemConfig.cmd[1]
  257. if cmdStr == "box" or cmdStr == "boxAll" then
  258. return queryBoxList(human, itemConfig)
  259. end
  260. if itemConfig.get[1] ~= SUMMON_TYPE_TARGET
  261. and itemConfig.get[1] ~= SUMMON_TYPE_DROP
  262. and itemConfig.get[1] ~= SUMMON_TYPE_HERO_SP
  263. and itemConfig.get[1] ~= SUMMON_TYPE_SHENQI_SP then
  264. return
  265. end
  266. if itemConfig.get[2] ~= SUMMON_SUBTYPE_HERO and itemConfig.get[2] ~= SUMMON_SUBTYPE_EQUIP then
  267. return
  268. end
  269. local realItemCnt = 1
  270. if human.db.bag[itemID] ~= nil then
  271. realItemCnt = math.floor(human.db.bag[itemID])
  272. end
  273. if realItemCnt < 1 then
  274. return
  275. end
  276. local outItemIDList = nil
  277. local targetID = nil
  278. if itemConfig.get[1] == SUMMON_TYPE_TARGET then
  279. -- 指定目标
  280. targetID = itemConfig.get[3]
  281. elseif itemConfig.get[1] == SUMMON_TYPE_DROP then
  282. local dropID = itemConfig.get[3]
  283. local dropConfig = DropExcel.dropSuipian[dropID]
  284. if dropConfig == nil then
  285. return
  286. end
  287. local totalCnt = #dropConfig.dropRule
  288. local heroWeight
  289. local weightLvAndCampHeros = nil
  290. for i=1,totalCnt do
  291. targetID = dropConfig.dropRule[i]
  292. heroWeight = targetID[1]
  293. for _, camp in ipairs(dropConfig.camp) do
  294. weightLvAndCampHeros = HeroDefine.getHeroByWeightLvAndCamp(heroWeight, camp)
  295. for k, v in pairs(weightLvAndCampHeros) do
  296. outItemIDList = outItemIDList or {}
  297. outItemIDList[v] = outItemIDList[v] or 0
  298. outItemIDList[v] = outItemIDList[v] + 1
  299. end
  300. end
  301. end
  302. elseif itemConfig.get[1] == SUMMON_TYPE_HERO_SP then
  303. -- 英雄条件兑换
  304. local dropTable = DropSpecial.getDropHeroTable(itemConfig.get[3][1], itemConfig.get[3][2], itemConfig.get[3][3])
  305. for i = 1, realItemCnt do
  306. local randTemp = math.random(1, #dropTable)
  307. targetID = dropTable[randTemp]
  308. outItemIDList = outItemIDList or {}
  309. outItemIDList[targetID] = outItemIDList[targetID] or 0
  310. outItemIDList[targetID] = outItemIDList[targetID] + 1
  311. end
  312. elseif itemConfig.get[1] == SUMMON_TYPE_SHENQI_SP then
  313. -- 神器条件兑换
  314. local dropTable = DropSpecial.getDropEquipTable(itemConfig.get[3][1], itemConfig.get[3][2], itemConfig.get[3][3], itemConfig.get[3][4])
  315. for i = 1, realItemCnt do
  316. local randTemp = math.random(1, #dropTable)
  317. targetID = dropTable[randTemp]
  318. outItemIDList = outItemIDList or {}
  319. outItemIDList[targetID] = outItemIDList[targetID] or 0
  320. outItemIDList[targetID] = outItemIDList[targetID] + 1
  321. end
  322. end
  323. if targetID == nil and outItemIDList == nil then
  324. assert(nil)
  325. end
  326. if itemConfig.get[2] == SUMMON_SUBTYPE_HERO then
  327. local msgRet = Msg.gc.GC_SUIPIAN_HERO_SUMMON_QUERY
  328. if outItemIDList then
  329. local len = 0
  330. for heroID, _ in pairs(outItemIDList) do
  331. if heroID and HeroExcel.hero[heroID] == nil then
  332. assert(nil, "why heroID no config " .. heroID .. " " .. itemID)
  333. end
  334. if len >= 50 then
  335. break
  336. end
  337. len = len + 1
  338. HeroGrid.makeHeroSimpleByID(msgRet.heroSimple[len], heroID)
  339. end
  340. msgRet.heroSimple[0] = len
  341. else
  342. local heroID = targetID
  343. msgRet.heroSimple[0] = 1
  344. HeroGrid.makeHeroSimpleByID(msgRet.heroSimple[1], heroID)
  345. end
  346. Msg.send(msgRet, human.fd)
  347. else
  348. local msgRet = Msg.gc.GC_SUIPIAN_ITEM_SUMMON_QUERY
  349. local cnt = 0
  350. if outItemIDList then
  351. for k, v in pairs(outItemIDList) do
  352. cnt = cnt + 1
  353. Grid.makeItem(msgRet.items[cnt], k, v)
  354. end
  355. if cnt > 0 then
  356. msgRet.items[0] = cnt
  357. Msg.send(msgRet, human.fd)
  358. end
  359. else
  360. msgRet.items[0] = 1
  361. Grid.makeItem(msgRet.items[1], targetID, 1)
  362. Msg.send(msgRet, human.fd)
  363. end
  364. end
  365. end
  366. local HEROID_2_SUIPIANID = nil
  367. function getSuipianIDbyHeroID(heroID)
  368. if not HEROID_2_SUIPIANID then
  369. HEROID_2_SUIPIANID = {}
  370. for itemID, itemConfig in pairs(ItemExcel.item) do
  371. if itemConfig.get[1] == SUMMON_TYPE_TARGET and
  372. itemConfig.get[2] == SUMMON_SUBTYPE_HERO then
  373. local targetID = itemConfig.get[3]
  374. HEROID_2_SUIPIANID[targetID] = itemID
  375. end
  376. end
  377. end
  378. return HEROID_2_SUIPIANID[heroID]
  379. end
  380. -- 碎片合成
  381. function SUIPIAN_SYNTHESIS(human, itemID, itemUseCnt)
  382. if human.db.bag[itemID] == nil or human.db.bag[itemID] < itemUseCnt then
  383. return
  384. end
  385. local itemConfig = ItemExcel.item[itemID]
  386. if itemConfig == nil then
  387. return
  388. end
  389. local leftHeroBox = HeroLogic.getEmptyCnt(human)
  390. if itemConfig.get[2] ~= SUMMON_SUBTYPE_EQUIP then
  391. if leftHeroBox <= 0 then
  392. return Broadcast.sendErr(human, Lang.HERO_BAG_FULL)
  393. end
  394. end
  395. local realItemCnt = math.floor(itemUseCnt/itemConfig.fullCnt)
  396. if realItemCnt < 1 then
  397. return
  398. end
  399. local isHero = 0
  400. local outItemIDList = nil
  401. local targetID = nil
  402. if itemConfig.get[1] == SUMMON_TYPE_TARGET then
  403. local leftHeroBox = HeroLogic.getEmptyCnt(human)
  404. if realItemCnt > leftHeroBox then
  405. realItemCnt = leftHeroBox
  406. end
  407. -- 指定目标
  408. targetID = itemConfig.get[3]
  409. elseif itemConfig.get[1] == SUMMON_TYPE_DROP then
  410. if itemConfig.get[2] ~= SUMMON_SUBTYPE_EQUIP then
  411. local leftHeroBox = HeroLogic.getEmptyCnt(human)
  412. if realItemCnt > leftHeroBox then
  413. realItemCnt = leftHeroBox
  414. end
  415. end
  416. -- 掉落表随机掉落
  417. for i = 1, realItemCnt do
  418. local dropID = itemConfig.get[3]
  419. targetID = getDropTargetID(dropID)
  420. outItemIDList = outItemIDList or {}
  421. outItemIDList[targetID] = outItemIDList[targetID] or 0
  422. outItemIDList[targetID] = outItemIDList[targetID] + 1
  423. end
  424. elseif itemConfig.get[1] == SUMMON_TYPE_HERO_SP then
  425. local leftHeroBox = HeroLogic.getEmptyCnt(human)
  426. if realItemCnt > leftHeroBox then
  427. realItemCnt = leftHeroBox
  428. end
  429. local dropTable = DropSpecial.getDropHeroTable(itemConfig.get[3][1], itemConfig.get[3][2], itemConfig.get[3][3])
  430. for i = 1, realItemCnt do
  431. local randTemp = math.random(1, #dropTable)
  432. targetID = dropTable[randTemp]
  433. outItemIDList = outItemIDList or {}
  434. outItemIDList[targetID] = outItemIDList[targetID] or 0
  435. outItemIDList[targetID] = outItemIDList[targetID] + 1
  436. end
  437. elseif itemConfig.get[1] == SUMMON_TYPE_SHENQI_SP then
  438. local dropTable = DropSpecial.getDropEquipTable(itemConfig.get[3][1], itemConfig.get[3][2], itemConfig.get[3][3], itemConfig.get[3][4])
  439. for i = 1, realItemCnt do
  440. local randTemp = math.random(1, #dropTable)
  441. targetID = dropTable[randTemp]
  442. outItemIDList = outItemIDList or {}
  443. outItemIDList[targetID] = outItemIDList[targetID] or 0
  444. outItemIDList[targetID] = outItemIDList[targetID] + 1
  445. end
  446. end
  447. if targetID == nil and outItemIDList == nil then
  448. assert(nil)
  449. end
  450. local realSuiPianCnt = realItemCnt * itemConfig.fullCnt
  451. BagLogic.delItem(human, itemID, realSuiPianCnt, "item_summon")
  452. local fenJieList = nil
  453. local itemList = {}
  454. if itemConfig.get[2] == SUMMON_SUBTYPE_HERO then
  455. isHero = 1
  456. if outItemIDList then
  457. -- 多个id
  458. for k, v in pairs(outItemIDList) do
  459. local _, fjlist = HeroLogic.addHero(human, k,nil, v, "item_summon")
  460. local heroID = k
  461. local hero = HeroExcel.hero[heroID]
  462. if fjlist and type(fjlist) == "table" then
  463. for fjItemID, fjItemCnt in pairs(fjlist) do
  464. fenJieList = fenJieList or {}
  465. fenJieList[fjItemID] = (fenJieList[fjItemID] or 0) + fjItemCnt
  466. end
  467. end
  468. end
  469. else
  470. -- 单个id
  471. local _, fjlist = HeroLogic.addHero(human, targetID,nil, realItemCnt, "item_summon")
  472. local heroID = targetID
  473. local hero = HeroExcel.hero[heroID]
  474. if fjlist and type(fjlist) == "table" then
  475. for fjItemID, fjItemCnt in pairs(fjlist) do
  476. fenJieList = fenJieList or {}
  477. fenJieList[fjItemID] = (fenJieList[fjItemID] or 0) + fjItemCnt
  478. end
  479. end
  480. end
  481. else
  482. if outItemIDList then
  483. -- 多个id
  484. for k, v in pairs(outItemIDList) do
  485. BagLogic.addItem(human, k, v, "item_summon")
  486. itemList[k] = itemList[k] or 0
  487. itemList[k] = itemList[k] + v
  488. end
  489. else
  490. -- 单个id
  491. BagLogic.addItem(human, targetID, realItemCnt, "item_summon")
  492. itemList[targetID] = itemList[targetID] or 0
  493. itemList[targetID] = itemList[targetID] + realItemCnt
  494. end
  495. end
  496. BagLogic.sendItemGetList(human, itemList, "item_summon")
  497. local msgRet = Msg.gc.GC_SUIPIAN_SUMMON
  498. msgRet.isHero = isHero
  499. msgRet.list[0] = 0
  500. msgRet.heroList[0] = 0
  501. msgRet.fenJieList[0] = 0
  502. local netList = (isHero == 1) and msgRet.heroList or msgRet.list
  503. if outItemIDList then
  504. -- 多个id
  505. for k, v in pairs(outItemIDList) do
  506. netList[0] = netList[0] + 1
  507. makeResultItemData(netList[netList[0]], k, v, isHero)
  508. end
  509. else
  510. netList[0] = netList[0] + 1
  511. makeResultItemData(netList[netList[0]], targetID, realItemCnt, isHero)
  512. end
  513. if fenJieList then
  514. for fjItemID, fjItemCnt in pairs(fenJieList) do
  515. msgRet.fenJieList[0] = msgRet.fenJieList[0] + 1
  516. Grid.makeItem(msgRet.fenJieList[msgRet.fenJieList[0]], fjItemID, fjItemCnt)
  517. end
  518. end
  519. --Msg.trace(msgRet)
  520. Msg.send(msgRet, human.fd)
  521. end
  522. function CG_SUIPIAN_SYNTHESIS(human)
  523. local msgRet = Msg.gc.GC_SUIPIAN_SYNTHESIS
  524. local status = 1
  525. for itemID,itemCnt in pairs(human.db.bag) do
  526. local itemConfig = ItemExcel.item[itemID]
  527. if itemConfig ~= nil and
  528. itemConfig.mainType == ItemDefine.MAINTYPE_ITEM and
  529. itemConfig.subType == ItemDefine.ITEM_SUBTYPE_SUIPIAN then
  530. if itemCnt >= itemConfig.fullCnt then
  531. SUIPIAN_SYNTHESIS(human,itemID,itemCnt)
  532. status = 0
  533. end
  534. end
  535. end
  536. msgRet.status = status
  537. Msg.send(msgRet, human.fd)
  538. end