AreaBattleNS.lua 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606
  1. -- 战区争霸(普通服)
  2. local Config = require("Config")
  3. local Msg = require("core.Msg")
  4. local Lang = require("common.Lang")
  5. local ObjHuman = require("core.ObjHuman")
  6. local Broadcast = require("broadcast.Broadcast")
  7. local RoleSystemLogic = require("roleSystem.RoleSystemLogic")
  8. local RoleSystemDefine = require("roleSystem.RoleSystemDefine")
  9. local CombatDefine = require("combat.CombatDefine")
  10. local RoleDBLogic = require("role.RoleDBLogic")
  11. local CombatPosLogic = require("combat.CombatPosLogic")
  12. local CombatLogic = require("combat.CombatLogic")
  13. local MailExcel = require("excel.mail")
  14. local Util = require("common.Util")
  15. local InnerMsg = require("core.InnerMsg")
  16. local RoleHeadLogic = require("role.RoleHeadLogic")
  17. local MailManager = require("mail.MailManager")
  18. local AreaBattleConfig = require("excel.areaBattle").reward
  19. local Log = require("common.Log")
  20. local Timer = require("core.Timer")
  21. local CommonDB = require("common.CommonDB")
  22. local RoleSystemExcel = require("excel.roleSystem")
  23. local Grid = require("bag.Grid")
  24. local BillboardLogic = require("billboard.BillboardLogic")
  25. local BillboardDefine = require("billboard.BillboardDefine")
  26. local AreaBattleDefine = require("areaBattle.AreaBattleDefine")
  27. local mailQueue = {
  28. uuidArray = {},
  29. insertMaxNum = 100, -- 一次最多插入数据库的邮件数量
  30. repeatMaxTimes = 3, -- 重试次数
  31. repeatTb = {}
  32. }
  33. -- 检查是否开启
  34. local function openCheck()
  35. local wDay = Util.getWeekDay()
  36. if not table.find(AreaBattleDefine.OPEN_WDAY_AREA, wDay) then
  37. return false
  38. end
  39. local now = os.time()
  40. local toDayStartTime = Util.getDayStartTime(now)
  41. if wDay == AreaBattleDefine.OPEN_WDAY_AREA[1] and now < (toDayStartTime + AreaBattleDefine.PREPARE_STATE_START_SEC) then
  42. return false
  43. end
  44. if wDay == AreaBattleDefine.OPEN_WDAY_AREA[2] and now > (toDayStartTime + AreaBattleDefine.END_STATE_START_SEC) then
  45. return false
  46. end
  47. return true
  48. end
  49. -- 生成符合协议数据结构的奖励数据
  50. local function populateAwardMsg(msgTb, awardCfg)
  51. for idx, itemCfg in ipairs(awardCfg) do
  52. msgTb[0] = idx
  53. Grid.makeItem(msgTb[idx], itemCfg[1], itemCfg[2])
  54. end
  55. end
  56. -- 生成符合协议数据结构的英雄数据
  57. local function populateObjMsg(net, data)
  58. net.name = data.name or ""
  59. net.power = data.power or 0
  60. net.head = data.head or 0
  61. net.headFrame = data.headFrame or 0
  62. net.playerLv = data.playerLv or 90
  63. net.heroList[0] = 0
  64. for k, heroInfo in ipairs(data.heroList) do
  65. net.heroList[0] = k
  66. net.heroList[k].heroId = heroInfo.heroId or 1001
  67. net.heroList[k].heroColor = heroInfo.heroColor or 0
  68. net.heroList[k].heroStar = heroInfo.heroStar or 1
  69. net.heroList[k].heroLv = heroInfo.heroLv or 1
  70. net.heroList[k].heroCamp = heroInfo.heroCamp or 999
  71. end
  72. end
  73. local function sendMail(mailId, receiverUuid, itemArray)
  74. if not mailId or not receiverUuid then
  75. return
  76. end
  77. local mailCfg = MailExcel.mail[mailId]
  78. local content = mailCfg.content
  79. MailManager.add(MailManager.SYSTEM, receiverUuid, mailCfg.title, content, itemArray, mailCfg.senderName or "GM")
  80. end
  81. local function writeLog(logStr)
  82. Log.write(Log.LOGID_OSS_AREABATTLE_AWARD, logStr)
  83. end
  84. function mailQueue:add(playerInfo)
  85. table.insert(self.uuidArray, playerInfo)
  86. end
  87. function mailQueue:clear()
  88. Util.cleanTable(self.uuidArray)
  89. Util.cleanTable(self.repeatTb)
  90. end
  91. function mailQueue:insertDB()
  92. local maxNum = math.min(self.insertMaxNum, #self.uuidArray)
  93. for i=1, maxNum do
  94. local resTag = AreaBattleDefine.MAIL_SUCC_TAG
  95. local playerInfo = table.remove(self.uuidArray)
  96. local uuid = playerInfo[1]
  97. local awardType = playerInfo[3]
  98. local ok, err = pcall(sendMail, AreaBattleDefine.AWARDTYPE2MAILID[awardType], uuid, playerInfo[2])
  99. if not ok then
  100. if not self.repeatTb[uuid] or self.repeatTb[uuid] < self.repeatMaxTimes then
  101. mailQueue:add(playerInfo)
  102. self.repeatTb[uuid] = (self.repeatTb[uuid] or 0) + 1
  103. end
  104. resTag = AreaBattleDefine.MAIL_FAIL_TAG
  105. end
  106. local str = string.format("Result: %s, playerUuid: %s, AwardType: %d, insertErrTimes: %d, errInfo: %s",
  107. resTag, uuid, awardType, self.repeatTb[uuid] or 0, err)
  108. writeLog(str)
  109. end
  110. if #self.uuidArray > 0 then
  111. Timer.addLater(3, mailQueue.insertDB, mailQueue)
  112. end
  113. end
  114. local function insertPlayerAward(playerArr, battlePlyerArr, awardArr, awardType)
  115. local len = #playerArr
  116. for _, uuid in pairs(battlePlyerArr or {}) do
  117. len = len + 1
  118. local item = {}
  119. for idx, itemInfo in ipairs(awardArr) do
  120. item[idx] = {itemInfo[1], itemInfo[2]}
  121. end
  122. playerArr[len] = {uuid, item, awardType}
  123. end
  124. end
  125. local function genPlayerAwardArray(srvBattleRes)
  126. local DataCache = require("core.DataCache")
  127. local playerUidList = DataCache.Get_PlayerUuidList()
  128. local winAwardType, defeateAwardType, normalAwardType = AreaBattleDefine.AWARD_TYPE1, AreaBattleDefine.AWARD_TYPE2, AreaBattleDefine.AWARD_TYPE3
  129. local battleWinAwward, battleDefeatAward, normalAward = AreaBattleConfig[1].winAward1, AreaBattleConfig[1].winAward2, AreaBattleConfig[1].winAward3
  130. if srvBattleRes.isWin == 0 then
  131. winAwardType, defeateAwardType, normalAwardType = AreaBattleDefine.AWARD_TYPE4, AreaBattleDefine.AWARD_TYPE5, AreaBattleDefine.AWARD_TYPE6
  132. battleWinAwward, battleDefeatAward, normalAward = AreaBattleConfig[1].defeatAward1, AreaBattleConfig[1].defeatAward2, AreaBattleConfig[1].defeatAward3
  133. end
  134. local len = 0
  135. local playerAwardArray = {}
  136. if srvBattleRes.isBye == 0 then -- 非轮空服
  137. insertPlayerAward(playerAwardArray, srvBattleRes.winPlayerArr, battleWinAwward, winAwardType)
  138. insertPlayerAward(playerAwardArray, srvBattleRes.winPlayerArr, normalAward, normalAwardType)
  139. insertPlayerAward(playerAwardArray, srvBattleRes.defeatPlayerArr, battleDefeatAward, defeateAwardType)
  140. insertPlayerAward(playerAwardArray, srvBattleRes.defeatPlayerArr, normalAward, normalAwardType)
  141. else
  142. -- 轮空服
  143. normalAwardType = AreaBattleDefine.AWARD_TYPE7
  144. normalAward = AreaBattleConfig[1].defeatAward3
  145. end
  146. len = #playerAwardArray
  147. for uuid in pairs(playerUidList) do
  148. if not table.find(srvBattleRes.winPlayerArr, uuid) and not table.find(srvBattleRes.defeatPlayerArr, uuid) then
  149. len = len + 1
  150. local item = {}
  151. for idx, itemInfo in ipairs(normalAward) do
  152. item[idx] = {itemInfo[1], itemInfo[2]}
  153. end
  154. playerAwardArray[len] = {uuid, item, normalAwardType}
  155. end
  156. end
  157. if len == 0 then
  158. return
  159. end
  160. return playerAwardArray
  161. end
  162. -- 开服天数检查
  163. local function checkSvrOpenDays()
  164. local openDay = CommonDB.getServerOpenDay()
  165. local ctrlCfg = RoleSystemExcel.roleSystem[RoleSystemDefine.ROLE_SYS_ID_1306]
  166. if ctrlCfg.openSvrDay > openDay then
  167. return false
  168. end
  169. return true
  170. end
  171. -- 单个英雄数据
  172. -- local function getHeroInfo(human, targetHeroUuid)
  173. -- local HeroLogic = require("hero.HeroLogic")
  174. -- local heroGrid = HeroLogic.getHeroGridByUuid(human, targetHeroUuid)
  175. -- if heroGrid then
  176. -- local heroCfg = HeroExcel.hero[heroGrid.id]
  177. -- local heroInfo = {
  178. -- heroUuid = targetHeroUuid,
  179. -- heroStar = heroGrid.star,
  180. -- heroLevel = heroGrid.lv,
  181. -- heroCamp = heroGrid.camp or heroCfg.camp,
  182. -- heroBody = heroCfg.body
  183. -- }
  184. -- return heroInfo
  185. -- end
  186. -- end
  187. -- 获取上阵英雄数据
  188. -- local function getHeroListInfo(human, targetHeroUuid)
  189. -- local len = 0
  190. -- local heroArr = {}
  191. -- local heroList = CombatPosLogic.getCombatHeros(human, CombatDefine.COMBAT_TYPE32)
  192. -- if not next(heroList) then
  193. -- heroList = CombatPosLogic.getCombatHeros(human, CombatDefine.COMBAT_TYPE1)
  194. -- end
  195. -- for _, heroUuid in pairs(heroList) do
  196. -- if not targetHeroUuid or targetHeroUuid == heroUuid then
  197. -- len = len + 1
  198. -- heroArr[len] = getHeroInfo(human, heroUuid)
  199. -- end
  200. -- end
  201. -- if len == 0 then
  202. -- return
  203. -- end
  204. -- return heroArr
  205. -- end
  206. -- 生成玩家展示数据
  207. local function genPlayerShowData(playerUuid)
  208. local human = ObjHuman.onlineUuid[playerUuid]
  209. if not human then
  210. local db = RoleDBLogic.getDb(playerUuid)
  211. if not db then
  212. return
  213. end
  214. human = {}
  215. human.db = db
  216. end
  217. local showInfo = {}
  218. showInfo.uuid = playerUuid
  219. showInfo.power = human.db.zhandouli
  220. showInfo.name = human.db.name
  221. showInfo.head = RoleHeadLogic.getRoleAppearance(human, RoleHeadLogic.HEAD_TYPE_1)
  222. showInfo.headFrame = RoleHeadLogic.getRoleAppearance(human, RoleHeadLogic.HEAD_TYPE_2)
  223. -- showInfo.heroList = getHeroListInfo(human)
  224. return showInfo
  225. end
  226. -- 生成本服参战列表
  227. local function genJoinBattleArray()
  228. local rankList = BillboardLogic.GetRankList(BillboardDefine.TYPE_ZHANDOULI)
  229. if not rankList then
  230. return
  231. end
  232. local len = 0
  233. local joinBattleArray = {}
  234. for _, PlayerData in ipairs(rankList) do
  235. if len >= AreaBattleDefine.JOIN_BATTLE_MAX_CNT then
  236. break
  237. end
  238. local pkayerInfo = genPlayerShowData(PlayerData.uuid)
  239. if pkayerInfo then
  240. len = len + 1
  241. joinBattleArray[len] = pkayerInfo
  242. end
  243. end
  244. table.shuffle(joinBattleArray)
  245. return joinBattleArray
  246. end
  247. function getActState(human)
  248. local state, leftTime = 1, 0
  249. if not openCheck() then
  250. state = 0
  251. end
  252. return state, leftTime
  253. end
  254. function isOpen(human)
  255. return RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_1306)
  256. end
  257. function getCombatObjList(human, side, args, combatType)
  258. if side == CombatDefine.ATTACK_SIDE and not human then return end
  259. if side == CombatDefine.DEFEND_SIDE and human then
  260. return
  261. end
  262. if not human then
  263. local uuid = args[1]
  264. local db = RoleDBLogic.getDb(uuid)
  265. if not db then
  266. return
  267. end
  268. human = {}
  269. human.db = db
  270. end
  271. local heroList = CombatPosLogic.getCombatHeros(human, combatType)
  272. if next(heroList) then
  273. return CombatLogic.getHumanObjList(human, combatType)
  274. else
  275. return CombatLogic.getHumanObjList(human, CombatDefine.COMBAT_TYPE1)
  276. end
  277. end
  278. --------------------------------------------N2C----------------------------------------------------
  279. -- 加入战斗
  280. local function joinBattle()
  281. local joinBattleArray = genJoinBattleArray()
  282. -- if not joinBattleArray or #joinBattleArray <= 0 then
  283. -- return
  284. -- end
  285. local msgData = InnerMsg.lw.LW_AREABATTLE_JOIN_BATTLE
  286. msgData.sourceServerId = Config.SVR_INDEX
  287. msgData.joinBattleArray = joinBattleArray or {}
  288. InnerMsg.sendMsg(0, msgData)
  289. end
  290. -- 获取活动基础信息
  291. function GetBaseInfo(human)
  292. local msgData = InnerMsg.lw.LW_AREABATTLE_BASEINFO_QUERY
  293. msgData.sourceServerId = Config.SVR_INDEX
  294. msgData.playerUuid = human.db._id
  295. InnerMsg.sendMsg(0, msgData)
  296. end
  297. -- 获取本服参战玩家列表
  298. function GetJoinPlayerArr(human)
  299. -- if not openCheck() then
  300. -- local msgRet = Msg.gc.GC_AREABATTLE_JOINPLAYER_QUERY
  301. -- msgRet.errCode = -2
  302. -- msgRet.isJoin = 0
  303. -- msgRet.playerArray[0] = 0
  304. -- return Msg.send(msgRet, human.fd)
  305. -- end
  306. local msgData = InnerMsg.lw.LW_AREABATTLE_JOINPLAYER_QUERY
  307. msgData.sourceServerId = Config.SVR_INDEX
  308. msgData.playerUuid = human.db._id
  309. InnerMsg.sendMsg(0, msgData)
  310. end
  311. -- 获取区服匹配列表(两两匹配)
  312. function GetMatchList(human)
  313. -- if not openCheck() then
  314. -- local msgRet = Msg.gc.GC_AREABATTLE_MATCHLIST_QUERY
  315. -- msgRet.errCode = -2
  316. -- msgRet.matchList[0] = 0
  317. -- return Msg.send(msgRet, human.fd)
  318. -- end
  319. local msgData = InnerMsg.lw.LW_AREABATTLE_MATCHLIST_QUERY
  320. msgData.sourceServerId = Config.SVR_INDEX
  321. msgData.playerUuid = human.db._id
  322. InnerMsg.sendMsg(0, msgData)
  323. end
  324. --获取录像
  325. function GetCombatVideo(human)
  326. -- if not openCheck() then
  327. -- local msgRet = Msg.gc.GC_GODSAREA_QUERY_COMBATVIDEO
  328. -- msgRet.errCode = -2
  329. -- msgRet.leftWinTimes = 0
  330. -- msgRet.rightWinTimes = 0
  331. -- msgRet.leftSrvName = ""
  332. -- msgRet.leftSrvPower = 0
  333. -- msgRet.rightSrvName = ""
  334. -- msgRet.rightSrvPower = 0
  335. -- msgRet.videoList[0] = 0
  336. -- return Msg.send(msgRet, human.fd)
  337. -- end
  338. local msgData = InnerMsg.lw.LW_AREABATTLE_VIDEOSHOW_QUERY
  339. msgData.sourceServerId = Config.SVR_INDEX
  340. msgData.playerUuid = human.db._id
  341. InnerMsg.sendMsg(0, msgData)
  342. end
  343. -- 获取奖励列表
  344. function GetAwardInfo(human)
  345. local msgRet = Msg.gc.GC_AREABATTLE_REWARD_QUERY
  346. populateAwardMsg(msgRet.winJoinAward, AreaBattleConfig[1].winAward1)
  347. populateAwardMsg(msgRet.winJoinAward2, AreaBattleConfig[1].winAward2)
  348. populateAwardMsg(msgRet.winNormalAward, AreaBattleConfig[1].winAward3)
  349. populateAwardMsg(msgRet.defaultJoinAward, AreaBattleConfig[1].defeatAward1)
  350. populateAwardMsg(msgRet.defaultJoinAward2, AreaBattleConfig[1].defeatAward2)
  351. populateAwardMsg(msgRet.defaultNormalAward, AreaBattleConfig[1].defeatAward3)
  352. Msg.send(msgRet, human.fd)
  353. end
  354. --------------------------------------------C2N----------------------------------------------------
  355. -- 收到活动开启通知
  356. function C2N_BattleStart()
  357. if not checkSvrOpenDays() then
  358. return
  359. end
  360. joinBattle()
  361. end
  362. -- 收到活动基础信息
  363. function C2N_BaseInfo(msg)
  364. local human = ObjHuman.onlineUuid[msg.playerUuid]
  365. if not human then
  366. return
  367. end
  368. local msgRet = Msg.gc.GC_AREABATTLE_BASEINFO_QUERY
  369. msgRet.stage = msg.stage
  370. msgRet.startTime = msg.startTime
  371. msgRet.endTime = msg.endTime
  372. Msg.send(msgRet, human.fd)
  373. end
  374. -- 收到本服参战玩家列表
  375. function C2N_JoinPlayerArr(msg)
  376. local human = ObjHuman.onlineUuid[msg.playerUuid]
  377. if not human then
  378. return
  379. end
  380. local msgRet = Msg.gc.GC_AREABATTLE_JOINPLAYER_QUERY
  381. msgRet.errCode = msg.errCode
  382. msgRet.isJoin = 0
  383. msgRet.playerArray[0] = 0
  384. if msg.errCode == 0 then
  385. local playerArray = msg.playerArray
  386. table.sort(playerArray, function (a, b)
  387. return a.power > b.power
  388. end)
  389. for k, v in ipairs(playerArray) do
  390. msgRet.playerArray[0] = k
  391. msgRet.playerArray[k].name = v.name
  392. msgRet.playerArray[k].power = v.power
  393. msgRet.playerArray[k].head = v.head
  394. msgRet.playerArray[k].headFrame = v.headFrame
  395. msgRet.playerArray[k].isMe = 0
  396. if v.uuid == msg.playerUuid then
  397. msgRet.isJoin = 1
  398. msgRet.playerArray[k].isMe = 1
  399. end
  400. end
  401. end
  402. Msg.send(msgRet, human.fd)
  403. end
  404. -- 收到本轮活动的区服匹配列表
  405. function C2N_MatchList(msg)
  406. local human = ObjHuman.onlineUuid[msg.playerUuid]
  407. if not human then
  408. return
  409. end
  410. local msgRet = Msg.gc.GC_AREABATTLE_MATCHLIST_QUERY
  411. msgRet.errCode = 0
  412. local matchListMsg = msgRet.matchList
  413. matchListMsg[0] = 0
  414. if not next(msg.matchList) then
  415. msgRet.errCode = -1
  416. else
  417. for k, v in ipairs(msg.matchList) do
  418. matchListMsg[0] = k
  419. --for _, srvInfo in ipairs(v) do
  420. local leftSrv = v[1]
  421. local rightSrv = v[2]
  422. matchListMsg[k].leftSrvName = (leftSrv[1] - AreaBattleDefine.SRV_START_IDX) .. AreaBattleDefine.SRV_NAME_STR
  423. matchListMsg[k].leftSrvPower = leftSrv[2]
  424. matchListMsg[k].rightSrvName = (rightSrv[1] - AreaBattleDefine.SRV_START_IDX) .. AreaBattleDefine.SRV_NAME_STR
  425. matchListMsg[k].rightSrvPower = rightSrv[2]
  426. matchListMsg[k].mySrvPos = 0
  427. if leftSrv[1] == Config.SVR_INDEX then
  428. matchListMsg[k].mySrvPos = 1
  429. elseif rightSrv[1] == Config.SVR_INDEX then
  430. matchListMsg[k].mySrvPos = 2
  431. end
  432. --end
  433. end
  434. end
  435. Msg.send(msgRet, human.fd)
  436. end
  437. -- 收到本服的战斗录像展示数据
  438. function C2N_VideoShowData(msg)
  439. local human = ObjHuman.onlineUuid[msg.playerUuid]
  440. if not human then
  441. return
  442. end
  443. local errCode = msg.errCode
  444. local msgRet = Msg.gc.GC_AREABATTLE_COMBATVIDEO_QUERY
  445. msgRet.errCode = errCode
  446. msgRet.leftWinTimes = 0
  447. msgRet.rightWinTimes = 0
  448. msgRet.leftSrvName = ""
  449. msgRet.leftSrvPower = 0
  450. msgRet.rightSrvName = ""
  451. msgRet.rightSrvPower = 0
  452. msgRet.videoList[0] = 0
  453. if errCode ~= 0 then
  454. return Msg.send(msgRet, human.fd)
  455. end
  456. local srvInfo = msg.srvInfo
  457. msgRet.leftWinTimes = srvInfo.leftWinTimes
  458. msgRet.rightWinTimes = srvInfo.rightWinTimes
  459. msgRet.leftSrvName = (srvInfo.leftSrvId - AreaBattleDefine.SRV_START_IDX) .. AreaBattleDefine.SRV_NAME_STR
  460. msgRet.leftSrvPower = srvInfo.leftSrvPower
  461. msgRet.rightSrvName = (srvInfo.rightSrvId - AreaBattleDefine.SRV_START_IDX) .. AreaBattleDefine.SRV_NAME_STR
  462. msgRet.rightSrvPower = srvInfo.rightSrvPower
  463. for k, v in ipairs(msg.videoShowData) do
  464. msgRet.videoList[0] = k
  465. -- msgRet.videoList[k].atkData = v.atkData
  466. -- msgRet.videoList[k].defenerData = v.defenerData
  467. populateObjMsg(msgRet.videoList[k].atkData, v.atkData)
  468. populateObjMsg(msgRet.videoList[k].defenerData, v.defenerData)
  469. msgRet.videoList[k].atkFormation = v.atkFormation
  470. msgRet.videoList[k].defenerFormation = v.defenerFormation
  471. msgRet.videoList[k].round = v.round
  472. msgRet.videoList[k].maxRound = v.maxRound
  473. msgRet.videoList[k].time = v.time
  474. msgRet.videoList[k].videoUuid = v.videoUuid
  475. msgRet.videoList[k].result = v.result
  476. msgRet.videoList[k].myPos = 0
  477. if k == 1 then
  478. if v.atkData.uuid == msg.playerUuid then
  479. msgRet.videoList[k].myPos = 1
  480. elseif v.defenerData.uuid == msg.playerUuid then
  481. msgRet.videoList[k].myPos = 2
  482. end
  483. end
  484. end
  485. Msg.send(msgRet, human.fd)
  486. end
  487. -- 收到给玩家发奖励通知
  488. function C2N_SendReward(msg)
  489. local playerAwardArray = genPlayerAwardArray(msg.srvBattleRes)
  490. if not playerAwardArray then
  491. return
  492. end
  493. mailQueue:clear()
  494. for _, playerInfo in ipairs(playerAwardArray) do
  495. mailQueue:add(playerInfo)
  496. end
  497. mailQueue:insertDB()
  498. end