Handler.lua 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. local Log = require("common.Log")
  2. local Lang = require("common.Lang")
  3. local Json = require("common.Json")
  4. local Msg = require("core.Msg")
  5. local Timer = require("core.Timer")
  6. local Util = require("common.Util")
  7. local ChatBan = require("chat.ChatBan")
  8. local ChatRecord = require("chat.ChatRecord")
  9. local Broadcast = require("broadcast.Broadcast")
  10. local ChatLogic = require("chat.ChatLogic")
  11. local CombatVideo = require("combat.CombatVideo")
  12. local Define = require("platform.Define")
  13. local HeroExcel = require("excel.hero")
  14. local RoleLogic = require("role.RoleLogic")
  15. local CharRecord = require("chat.ChatRecord")
  16. local MiddleCommonLogic = require("middle.MiddleCommonLogic")
  17. local ChatUnion = require("chat.ChatUnion")
  18. local Config = require("Config")
  19. -- 聊天频道
  20. CHAT_TYPE_WORLD = 1 --世界
  21. CHAT_TYPE_SYSTEM = 2 --系统
  22. CHAT_TYPE_UNION = 3 --工会
  23. CHAT_TYPE_FRIEND = 4 --好友私聊
  24. CHAT_TYPE_MIDDLE = 5 --跨服
  25. CHAT_TYPE_WARZONE = 6 --战区
  26. CHAT_TYPE_CNT = 6 --聊天频道数
  27. -- isJson值
  28. CHAT_NORMAL = 0 -- 普通聊天
  29. CHAT_UNION_FIGHT = 1 -- 公会战
  30. CHAT_UNION_ECTYPE = 2 -- 公会副本
  31. CHAT_UNION_RED_BAG = 3 -- 公会红包
  32. CHAT_UNION_ZHAOMU = 4 -- 公会招募
  33. CHAT_UNION_AB_HATHER = 8 -- 公会异界之战集结50
  34. CHAT_HERO_SHARE = 5 -- 英雄聊天分享
  35. CHAT_FIGHT_SHARE = 6 -- 战斗记录聊天分享
  36. CHAT_ITEM_SHARE = 7 -- 道具聊天分享
  37. CHAT_SHARE_TYPE = 1 -- 战报分享
  38. CHAT_LV_NEED_WORLD = 10 -- 开放聊天等级
  39. CHAT_LV_NEED_MIDDLE = 70 -- 开放聊天等级
  40. CHAT_LV_NEED_FRIEND = 30 -- 开放聊天等级
  41. CHAT_LV_NEED_WARZONE = 50 -- 开放聊天等级-战区
  42. CHAT_OPEN_DAY_WARZONE = 7 -- 开放聊天服务器天数-战区
  43. CHAT_OPEN_DAY_MIDDLE = 15 -- 开放聊天服务器天数-跨服
  44. CHAT_CD = 10000 -- 聊天cd时间
  45. CHAT_MSG_LEN = 90
  46. function chatReport(human, content)
  47. s2aParam = {}
  48. s2aParam.role_name = human.db.name
  49. s2aParam.account_name = human.db.account
  50. s2aParam.content = content or ""
  51. s2aParam.ip = human.db.ip
  52. _G.thread_http.send(Define.CHAT_REPORT,Json.Encode(s2aParam))
  53. -- Log.write(Log.LOGID_DEBUG, "chatReportSuccrss"..Define.CHAT_REPORT)
  54. end
  55. function CG_CHAT_REPORT(human, msg)
  56. chatReport(human, msg.content)
  57. end
  58. function CG_CHAT(human, msg)
  59. local strLen = string.len(msg.msg)
  60. -- 普通聊天限制字数
  61. if CHAT_MSG_LEN < strLen and msg.isJson == CHAT_NORMAL then
  62. return Broadcast.sendErr(human, Lang.CHAT_MSG_LEN_ERR)
  63. end
  64. ChatLogic.chat(human, msg, msg.isJson)
  65. end
  66. function onLogin(human)
  67. ChatRecord.initHumanChatRead(human)
  68. ChatBan.sendBanList(human)
  69. end
  70. function CG_CHAT_BAN(human, msg)
  71. ChatBan.setBan(human, msg.uuid, msg.op)
  72. end
  73. function CG_CHAT_PLAYER_INFO(human, msg)
  74. local nServerIndex = msg.nServerIndex
  75. print("[CG_CHAT_PLAYER_INFO] uuid = "..msg.uuid.." nServerIndex = "..nServerIndex)
  76. if -1 >= nServerIndex or nServerIndex == Config.SVR_INDEX then
  77. local msgRet = Msg.gc.GC_CHAT_PLAYER_INFO
  78. if not RoleLogic.makePlayInfo(msgRet.data, msg.uuid) then
  79. return
  80. end
  81. Msg.send(msgRet, human.fd)
  82. else
  83. MiddleCommonLogic.MiddleCommonLogic_GetChatPlayInfo_LW(human, msg)
  84. end
  85. end
  86. function CG_CHAT_HERO_SHARE(human,msg)
  87. local bagIndex = msg.bagIndex
  88. local heroGrid = human.db.heroBag[bagIndex]
  89. if not heroGrid then
  90. return
  91. end
  92. local heroConfig = HeroExcel.hero[heroGrid.id]
  93. if heroConfig == nil then
  94. return
  95. end
  96. msg.videoUuid = ""
  97. local flag = ChatLogic.chat(human, msg,CHAT_HERO_SHARE)
  98. if flag == true then
  99. Broadcast.sendErr(human, Lang.SHARE_SUCCESS)
  100. else
  101. Broadcast.sendErr(human, Lang.SHARE_ERROR)
  102. end
  103. end
  104. --战斗界面 战斗记录分享
  105. function CG_CHAT_COMBAT_SHARE(human, msg)
  106. if msg.msgType ~= CHAT_TYPE_WORLD and
  107. msg.msgType ~= CHAT_TYPE_UNION and
  108. msg.msgType ~= CHAT_TYPE_MIDDLE and msg.msgType ~= CHAT_TYPE_WARZONE then
  109. return
  110. end
  111. -- 如果是分享在世界上检测是否在聊天CD 中
  112. if msg.msgType == CHAT_TYPE_WORLD and human.worldChatTime and human.worldChatTime + CHAT_CD > Timer.now then
  113. local cdLeftSec = math.ceil((CHAT_CD - (Timer.now - human.worldChatTime))/1000)
  114. Broadcast.sendDown(human, Util.format(Lang.CHAT_TIME_SHORT, cdLeftSec))
  115. return
  116. end
  117. if msg.msgType == CHAT_TYPE_UNION and human.db.unionUuid == nil then
  118. return Broadcast.sendErr(human, Lang.UNION_PLAYER_IN_NO)
  119. end
  120. local content = {}
  121. content.msg = msg.msg
  122. content.msgType = msg.msgType
  123. if msg.shareType ~= CHAT_SHARE_TYPE then
  124. local combatInfo = Util.copyTable(human.combat)
  125. if combatInfo == nil then
  126. return
  127. end
  128. local videoUuid = human.combat.videoUuid
  129. if not videoUuid then
  130. videoUuid = CombatVideo.saveCombatVideo(human, true)
  131. end
  132. if not videoUuid then
  133. return Broadcast.sendErr(human, Lang.SHARE_ERROR)
  134. end
  135. content.videoUuid = videoUuid
  136. end
  137. local flag = ChatLogic.chat(human,content,CHAT_FIGHT_SHARE)
  138. if flag == true then
  139. Broadcast.sendErr(human, Lang.SHARE_SUCCESS)
  140. else
  141. Broadcast.sendErr(human, Lang.SHARE_ERROR)
  142. end
  143. end
  144. function CG_CHAT_COMPLAIN_PLAYER(human,msg)
  145. ChatBan.jubaoChat(human,msg)
  146. end
  147. -- 获取聊天记录
  148. function CG_CHAT_RECORD_QUERY(human,msg)
  149. CharRecord.getChatRecord(human,msg.msgType)
  150. end
  151. -- 获取私聊列表
  152. function CG_CHAT_FRIEND_RECORD_QUERY(human)
  153. CharRecord.getChatFriendList(human)
  154. end
  155. --根据uuid获取私聊记录
  156. function CG_CHAT_FRIEND_RECORD_BY_FRIEND(human,msg)
  157. CharRecord.getChatFriendRecord(human,msg.uuid)
  158. end
  159. -- 新增私聊
  160. function CG_CHAT_FRIEND_RECORD_ADD(human,msg)
  161. CharRecord.addFriendChat(human,msg.uuid)
  162. end
  163. -- 删除玩家私聊数据
  164. function CG_CHAT_FRIEND_RECORD_DEL(human,msg)
  165. CharRecord.delFriendChatRecord(human,msg.uuid)
  166. end
  167. function CG_CHAT_AB_GATHER(human,msg)
  168. ChatUnion.chatUnionGather(human, msg.str)
  169. end