DataRePortProxy.lua 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662
  1. local DebugProxy = requireProxy( "DebugProxy" )
  2. local DataRePortProxy = class( "DataRePortProxy", DebugProxy )
  3. DataRePortProxy.NAME = global.ProxyTable.DataRePortProxy
  4. local cjson = require("cjson")
  5. local simpleEncryKey = {50,30,20,43}
  6. local stringToByteSimpleDecry = function(byteStr)
  7. local bytes = cjson.decode(byteStr)
  8. local newBytes = {}
  9. local i = 1
  10. local str = ""
  11. for k,v in ipairs(bytes) do
  12. newBytes[k] = v-simpleEncryKey[i]
  13. if i > #simpleEncryKey then
  14. i = 1
  15. end
  16. end
  17. local str = string.char(unpack(newBytes))
  18. return str
  19. end
  20. -- 获取系统版本
  21. local function getWindownVersion()
  22. if getWindowsVersion then
  23. local windowVersion = getWindowsVersion()
  24. local versions = string.split(windowVersion,"_")
  25. local majorVer = tonumber(versions[1])
  26. local minorVer = tonumber(versions[2])
  27. local buildNum = tonumber(versions[3])
  28. if majorVer >= 10 then
  29. if buildNum >= 22000 then
  30. return "Win11"
  31. end
  32. return "Win10"
  33. elseif majorVer >= 6 then
  34. if minorVer >= 3 then
  35. return "Win8.1"
  36. elseif minorVer >= 2 then
  37. return "Win8"
  38. elseif minorVer >= 1 then
  39. return "Win7"
  40. end
  41. elseif majorVer >= 5 then
  42. return "WinXP"
  43. end
  44. end
  45. return "windows"
  46. end
  47. function DataRePortProxy:ctor()
  48. DataRePortProxy.super.ctor(self)
  49. self._infoData = nil
  50. self._login_game_time = -1
  51. self._game_duration_schedule_id = -1
  52. self._task_check = {}
  53. self:InitData()
  54. end
  55. -- 初始化数据
  56. function DataRePortProxy:InitData()
  57. local isMac = global.L_GameEnvManager:GetEnvDataByKey("platform") == "mac"
  58. if not (SL:GetMetaValue("WINPLAYMODE") or isMac) then
  59. return
  60. end
  61. local LuaBridgeCtl = LuaBridgeCtl:Inst()
  62. if not LuaBridgeCtl or LuaBridgeCtl:GetModulesSwitch( global.MMO.Modules_Index_Protobuf_Pbc ) ~= 1 then
  63. return
  64. end
  65. -- 读取launch位置的userdata数据
  66. UserData:Cleanup()
  67. UserData:setVersionPath("")
  68. local userData = UserData:new("data_report")
  69. local deviceID = userData:getStringForKey( "id" )
  70. -- 统一文件夹//localUserData
  71. self:InitUserData()
  72. if not isMac then
  73. if not deviceID or deviceID == "" then
  74. return
  75. end
  76. deviceID = stringToByteSimpleDecry(deviceID)
  77. end
  78. local appid = global.L_GameEnvManager:GetEnvDataByKey("sdkAppid")
  79. if not appid then
  80. return
  81. end
  82. local secretKey = global.L_GameEnvManager:GetEnvDataByKey("sdkAppkey")
  83. if not secretKey then
  84. return
  85. end
  86. local channelid = global.L_GameEnvManager:GetEnvDataByKey("sdkChannel")
  87. if not channelid then
  88. return
  89. end
  90. local boxID = nil
  91. if global.L_GameEnvManager:GetEnvDataByKey("isBoxLogin") == 1 then
  92. local boxBoxGameID = global.L_ModuleManager:GetCurrentModule():GetOperID() or ""
  93. local boxChannelID = global.L_GameEnvManager:GetChannelID() or ""
  94. boxID = boxBoxGameID .. ":" .. boxChannelID
  95. end
  96. local type = isMac and "mac" or "pc"
  97. local macID = isMac and (global.L_GameEnvManager:GetEnvDataByKey("macAddress") or "") or (deviceID)
  98. local width = isMac and (global.L_GameEnvManager:GetEnvDataByKey("displayWidth") or 1136) or (getWindowWidth and getWindowWidth() or 1136)
  99. local height = isMac and (global.L_GameEnvManager:GetEnvDataByKey("displayHeight") or 1136) or (getWindowHeight and getWindowHeight() or 640)
  100. local model = isMac and (global.L_GameEnvManager:GetEnvDataByKey("model") or "") or "pc"
  101. local osVersion = isMac and (global.L_GameEnvManager:GetEnvDataByKey("osVersion") or "") or (getWindownVersion() or "")
  102. self._infoData = {
  103. ["device"] = {
  104. type = type,
  105. id = macID,
  106. width = width,
  107. height = height,
  108. model = model,
  109. os = osVersion
  110. },
  111. appid = appid,
  112. boxid = boxID,
  113. channel = channelid or "",
  114. sdk_ver = "1.0.0",
  115. app_ver = isMac and (global.L_GameEnvManager:GetEnvDataByKey("app_ver") or "") or (global.L_GameEnvManager:GetAPKVersionName() or ""),
  116. net_type = "UNKNOWN",
  117. }
  118. end
  119. function DataRePortProxy:GetDeviceInfo()
  120. return self._infoData or {}
  121. end
  122. --统一文件夹//localUserData
  123. function DataRePortProxy:InitUserData()
  124. local module = global.L_ModuleManager:GetCurrentModule()
  125. local modulePath = module.GetSubModPath and module:GetSubModPath() or module:GetStabPath()
  126. local moduleGameEnv = module:GetGameEnv()
  127. local storagePath = string.format("%s%s", modulePath,global.MMO.LOCAL_USERDATA)
  128. local WritablePath = cc.FileUtils:getInstance():getWritablePath()
  129. -- 文件夹创建
  130. local modulePathDir = WritablePath..modulePath
  131. if not global.FileUtilCtl:isDirectoryExist(modulePathDir) then
  132. global.FileUtilCtl:createDirectory(modulePathDir)
  133. end
  134. if not global.FileUtilCtl:isDirectoryExist(WritablePath..storagePath) then
  135. global.FileUtilCtl:createDirectory(WritablePath..storagePath)
  136. end
  137. UserData:Cleanup()
  138. UserData:setVersionPath(storagePath)
  139. end
  140. function DataRePortProxy:CheckValid()
  141. if not self._infoData then
  142. return false
  143. end
  144. local isMac = global.L_GameEnvManager:GetEnvDataByKey("platform") == "mac"
  145. if not (SL:GetMetaValue("WINPLAYMODE") or isMac) then
  146. return false
  147. end
  148. return true
  149. end
  150. -- 用户登录
  151. function DataRePortProxy:UserLogin()
  152. if not self:CheckValid() then
  153. return
  154. end
  155. local dataParam = {
  156. event={time=os.time(),name = "user_login",type = "track"}
  157. }
  158. table.merge(dataParam, self._infoData)
  159. return string.urlencode(cjson.encode(dataParam))
  160. end
  161. -- 用户注册
  162. function DataRePortProxy:UserRegister()
  163. if not self:CheckValid() then
  164. return
  165. end
  166. local dataParam = {
  167. event={time=os.time(),name = "user_register",type = "track"}
  168. }
  169. table.merge(dataParam, self._infoData)
  170. return string.urlencode(cjson.encode(dataParam))
  171. end
  172. -- 创建订单(预支付)
  173. function DataRePortProxy:PrePay()
  174. if not self:CheckValid() then
  175. return
  176. end
  177. local dataParam = {
  178. event={time=os.time(),name = "prepay",type = "track"},
  179. channel_report = global.L_GameEnvManager:GetEnvDataByKey("channelReportKey")
  180. }
  181. table.merge(dataParam, self._infoData)
  182. return string.urlencode(cjson.encode(dataParam))
  183. end
  184. -- 进入游戏 (直接上报ali)
  185. function DataRePortProxy:GameLogin(data)
  186. if not self:CheckValid() then
  187. return
  188. end
  189. if not global.L_DataRePort then
  190. return
  191. end
  192. local LoginProxy = global.Facade:retrieveProxy(global.ProxyTable.Login)
  193. local serviceVer = " " .. LoginProxy:GetServiceVer()
  194. self._login_game_time = os.time()
  195. local dataParam = {
  196. event={time=os.time(),name = "game_login",type = "track"},
  197. user={id=tostring( data.userId )},
  198. properities={
  199. servid=tostring(data.zoneId),
  200. server_name=tostring(data.zoneName),
  201. role_id=tostring(data.roleId),
  202. role_name=data.roleName,
  203. role_level=data.roleLevel,
  204. job_id=tostring(data.roleJobId),
  205. job_name=tostring(data.roleJobName),
  206. server_version = string.gsub(serviceVer, "^%S*(.-).%d$", "%1"),
  207. }
  208. }
  209. local selSerInfo = LoginProxy:GetSelectedServer()
  210. local main_servid = selSerInfo and selSerInfo.mainServerId
  211. local main_server_name = selSerInfo and selSerInfo.mainServerName
  212. dataParam.properities.main_servid = main_servid and tostring(main_servid) or dataParam.properities.servid
  213. dataParam.properities.main_server_name = main_server_name and tostring(main_server_name) or dataParam.properities.server_name
  214. global.L_DataRePort:SendRePortData(dataParam)
  215. self._game_duration_schedule_id = Schedule(function()
  216. self:PlayGame({isScheduleFunc=true})
  217. if self._login_game_time > 0 then
  218. self._login_game_time = os.time()
  219. end
  220. end,5 * 60)
  221. end
  222. --游戏时长 (直接上报ali)
  223. function DataRePortProxy:PlayGame(data)
  224. if not self:CheckValid() then
  225. return
  226. end
  227. if not global.L_DataRePort then
  228. return
  229. end
  230. if self._login_game_time < 0 then
  231. return
  232. end
  233. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  234. local loginProxy = global.Facade:retrieveProxy( global.ProxyTable.Login )
  235. local PlayerProperty = global.Facade:retrieveProxy( global.ProxyTable.PlayerProperty )
  236. local AutoProxy = global.Facade:retrieveProxy( global.ProxyTable.Auto )
  237. local MapProxy = global.Facade:retrieveProxy( global.ProxyTable.Map )
  238. local diffTimes = os.time() - self._login_game_time
  239. local isAfk = 0
  240. local mapId = MapProxy and MapProxy:GetMapID() or ""
  241. if AutoProxy and AutoProxy:IsAFKState() then
  242. isAfk = 1
  243. end
  244. if not data or not data.isScheduleFunc then
  245. UnSchedule(self._game_duration_schedule_id)
  246. self._login_game_time = -1
  247. end
  248. local jobID = PlayerProperty:GetRoleJob()
  249. local PShowAttType = GUIFunction:PShowAttType()
  250. local JOB_ATT_TYPE = {
  251. [0] = PShowAttType.Max_ATK,
  252. [1] = PShowAttType.Max_MAT,
  253. [2] = PShowAttType.Max_Daoshu,
  254. }
  255. local dataParam = {
  256. event={time=os.time(),name = "game_duration",type = "track"},
  257. user={id=tostring( AuthProxy:GetUID() )},
  258. properities={
  259. servid=tostring(loginProxy:GetSelectedServerId()),
  260. server_name=tostring(loginProxy:GetSelectedServerName()),
  261. role_id=tostring(PlayerProperty:GetRoleUID()),
  262. role_name=PlayerProperty:GetName(),
  263. role_level=PlayerProperty:GetRoleLevel(),
  264. times=diffTimes,
  265. duration=diffTimes,
  266. job_id=tostring(PlayerProperty:GetRoleJob()),
  267. job_name=tostring(PlayerProperty:GetRoleJobName()),
  268. role_att=PlayerProperty:GetRoleAttByAttType( JOB_ATT_TYPE[jobID] or PShowAttType.Max_ATK) or 0,
  269. is_afk = isAfk,
  270. map_id = mapId,
  271. }
  272. }
  273. local selSerInfo = loginProxy:GetSelectedServer()
  274. local main_servid = selSerInfo and selSerInfo.mainServerId
  275. local main_server_name = selSerInfo and selSerInfo.mainServerName
  276. dataParam.properities.main_servid = main_servid and tostring(main_servid) or dataParam.properities.servid
  277. dataParam.properities.main_server_name = main_server_name and tostring(main_server_name) or dataParam.properities.server_name
  278. global.L_DataRePort:SendRePortData(dataParam)
  279. end
  280. -- 创建角色 (直接上报ali)
  281. function DataRePortProxy:CreateRole(data)
  282. if not self:CheckValid() then
  283. return
  284. end
  285. if not global.L_DataRePort then
  286. return
  287. end
  288. local dataParam = {
  289. event={time=os.time(),name = "create_role",type = "track"},
  290. user={id=tostring( data.userId )},
  291. properities={
  292. servid=tostring(data.zoneId),
  293. server_name=tostring(data.zoneName),
  294. role_id=tostring(data.roleId),
  295. role_name=data.roleName,
  296. role_level=data.roleLevel,
  297. job_id=tostring(data.roleJobId),
  298. job_name=tostring(data.roleJobName)
  299. }
  300. }
  301. local LoginProxy = global.Facade:retrieveProxy( global.ProxyTable.Login )
  302. local selSerInfo = LoginProxy:GetSelectedServer()
  303. local main_servid = selSerInfo and selSerInfo.mainServerId
  304. local main_server_name = selSerInfo and selSerInfo.mainServerName
  305. dataParam.properities.main_servid = main_servid and tostring(main_servid) or dataParam.properities.servid
  306. dataParam.properities.main_server_name = main_server_name and tostring(main_server_name) or dataParam.properities.server_name
  307. global.L_DataRePort:SendRePortData(dataParam)
  308. end
  309. -- 检测是重复检测的任务上报
  310. function DataRePortProxy:CheckRepeatTask(data)
  311. if not data or not data.taskid then
  312. return false
  313. end
  314. local checkTask = self._task_check[data.taskid]
  315. local isRepeat = checkTask and checkTask.flag == data.flag or false
  316. if data.flag == 0 or data.flag == 2 or data.flag == 3 then
  317. self._task_check[data.taskid] = {
  318. flag = data.flag
  319. }
  320. -- 如果内容是空的, 不上报
  321. if data.flag == 3 then
  322. local taskName = ""
  323. local headData = data.oldHead or data.head
  324. if headData and headData.content then
  325. taskName = headData.content
  326. end
  327. if string.len(string.trim(taskName)) == 0 then
  328. isRepeat = true
  329. else
  330. taskName = string.gsub(taskName,"<font .->","") --替换<font *****>
  331. taskName = string.gsub(taskName,"</font>","") --替换</font>
  332. isRepeat = string.len(string.trim(taskName)) == 0
  333. end
  334. end
  335. else
  336. self._task_check[data.taskid] = nil
  337. end
  338. return isRepeat
  339. end
  340. -- 任务数据 (直接上报ali)
  341. function DataRePortProxy:RoleTask(data)
  342. if not self:CheckValid() then
  343. return
  344. end
  345. if not data or not data.taskid then
  346. return
  347. end
  348. local starTime = 0
  349. local endTime = 0
  350. if data.flag == 0 or data.flag == 2 or data.flag == 3 then
  351. endTime = os.time()
  352. else
  353. return
  354. end
  355. if not global.L_DataRePort then
  356. return
  357. end
  358. local taskName = ""
  359. local headData = data.oldHead or data.head
  360. if headData and headData.content then
  361. taskName = headData.content
  362. end
  363. taskName = string.gsub(taskName,"<font .->","") --替换<font *****>
  364. taskName = string.gsub(taskName,"</font>","") --替换</font>
  365. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  366. local loginProxy = global.Facade:retrieveProxy( global.ProxyTable.Login )
  367. local PlayerProperty = global.Facade:retrieveProxy( global.ProxyTable.PlayerProperty )
  368. local dataParam = {
  369. event={time=os.time(),name = "role_task",type = "track"},
  370. user={id=tostring( AuthProxy:GetUID() )},
  371. properities={
  372. servid=tostring(loginProxy:GetSelectedServerId()),
  373. server_name=tostring(loginProxy:GetSelectedServerName()),
  374. role_id=tostring(PlayerProperty:GetRoleUID()),
  375. role_name=PlayerProperty:GetName(),
  376. role_level=PlayerProperty:GetRoleLevel(),
  377. task_id = data.taskid,
  378. task_name = taskName,
  379. start_time = starTime,
  380. end_time = endTime,
  381. flag = data.flag,
  382. }
  383. }
  384. local selSerInfo = loginProxy:GetSelectedServer()
  385. local main_servid = selSerInfo and selSerInfo.mainServerId
  386. local main_server_name = selSerInfo and selSerInfo.mainServerName
  387. dataParam.properities.main_servid = main_servid and tostring(main_servid) or dataParam.properities.servid
  388. dataParam.properities.main_server_name = main_server_name and tostring(main_server_name) or dataParam.properities.server_name
  389. global.L_DataRePort:SendRePortData(dataParam)
  390. end
  391. -- 自定义数据上报 (直接上报ali)
  392. function DataRePortProxy:ReportCustomEvent(data)
  393. if not self:CheckValid() then
  394. return
  395. end
  396. if not data then
  397. return
  398. end
  399. local AuthProxy = global.Facade:retrieveProxy( global.ProxyTable.AuthProxy )
  400. local dataParam = {
  401. event={time=os.time(),name = data.event_name or "",type = "track"},
  402. properities=data.map,
  403. user_id=tostring( AuthProxy:GetUID() ),
  404. }
  405. global.L_DataRePort:SendRePortData(dataParam)
  406. end
  407. -- 主界面按钮/图片点击上报
  408. function DataRePortProxy:MainUIClickEvent(data)
  409. if not self:CheckValid() then
  410. return
  411. end
  412. if not data then
  413. return
  414. end
  415. local AuthProxy = global.Facade:retrieveProxy(global.ProxyTable.AuthProxy)
  416. local loginProxy = global.Facade:retrieveProxy( global.ProxyTable.Login )
  417. local PlayerProperty = global.Facade:retrieveProxy( global.ProxyTable.PlayerProperty )
  418. local PShowAttType = GUIFunction:PShowAttType()
  419. local dataParam = {
  420. event={time=os.time(),name = "click_xmb",type = "track"},
  421. user={id=tostring( AuthProxy:GetUID() )},
  422. properities={
  423. servid=tostring(loginProxy:GetSelectedServerId()),
  424. server_name=tostring(loginProxy:GetSelectedServerName()),
  425. job_id=tostring(PlayerProperty:GetRoleJob()),
  426. job_name=tostring(PlayerProperty:GetRoleJobName()),
  427. role_id=tostring(PlayerProperty:GetRoleUID()),
  428. role_name=PlayerProperty:GetName(),
  429. role_level=PlayerProperty:GetRoleLevel(),
  430. consumable_grade=PlayerProperty:GetRoleReinLv(),
  431. role_att=PlayerProperty:GetRoleAttByAttType(PShowAttType.Max_ATK) or 0,
  432. main_id=data.index or "",
  433. node_id=data.id or "",
  434. func_tag=data.link or "",
  435. }
  436. }
  437. global.L_DataRePort:SendRePortData(dataParam)
  438. end
  439. ----------------------云真机 货币上报begin------------------------------
  440. function DataRePortProxy:SetCloundCheckMoneyList(data)
  441. -- body
  442. if data and data[1] then
  443. local cloudList = {}
  444. local moneyIdNmber = 0
  445. for k,moneyId in ipairs(data) do
  446. moneyIdNmber = tonumber(moneyId)
  447. if moneyIdNmber then
  448. cloudList[moneyIdNmber] = moneyIdNmber
  449. end
  450. end
  451. if moneyIdNmber and moneyIdNmber > 0 then
  452. self.m_cloudMoneyList = cloudList
  453. self:InitCloudMoney()
  454. end
  455. end
  456. end
  457. function DataRePortProxy:InitCloudMoney()
  458. if global.L_GameEnvManager:GetEnvDataByKey("isCloudLogin") then
  459. if self.m_moneyScheduleID then
  460. UnSchedule(self.m_moneyScheduleID)
  461. self.m_moneyScheduleID = nil
  462. end
  463. self.m_moneyMaxID = 99 --货币的最大道具id
  464. self.m_moneys = {} --监听的money
  465. self.m_moneyScheduleID = nil --监听事件ID
  466. self.m_moneyListenTimes = 5 * 60 --5分钟
  467. local MoneyProxy = global.Facade:retrieveProxy(global.ProxyTable.MoneyProxy)
  468. for k,moneyID in pairs(self.m_cloudMoneyList) do
  469. if moneyID < self.m_moneyMaxID then
  470. if not self.m_moneys[moneyID] then
  471. local itemMeonyData = SL:GetMetaValue("ITEM_DATA", moneyID)
  472. if itemMeonyData and itemMeonyData.Name then
  473. self.m_moneys[moneyID] = {
  474. currencyId = moneyID,
  475. currencyNum = MoneyProxy:GetMoneyCountById(moneyID) or 0,
  476. currencyName = itemMeonyData.Name
  477. }
  478. end
  479. end
  480. end
  481. end
  482. self.m_moneyScheduleID = Schedule(function()
  483. self:ReportCloudMoney()
  484. end,self.m_moneyListenTimes)
  485. releasePrint("=======InitCloudMoney")
  486. end
  487. end
  488. function DataRePortProxy:ReportCloudMoney()
  489. if global.L_GameEnvManager:GetEnvDataByKey("isCloudLogin") then
  490. -- 经验不在监听范围内
  491. local MoneyProxy = global.Facade:retrieveProxy(global.ProxyTable.MoneyProxy)
  492. local ExpID = MoneyProxy:GetMoneyType().Exp
  493. -- 重新获取下 有些没按照顺序注销配置就不是数组了
  494. local moneyList = {}
  495. local count = 0
  496. for k,v in pairs(self.m_moneys) do
  497. if v.currencyId == ExpID then
  498. v.currencyNum = SL:GetMetaValue("EXP")
  499. end
  500. count = count + 1
  501. moneyList[count] = v
  502. end
  503. if count > 0 then
  504. local AuthProxy = global.Facade:retrieveProxy( global.ProxyTable.AuthProxy )
  505. AuthProxy:RequestCloudMoney( cjson.encode(moneyList) )
  506. end
  507. releasePrint("=======ReportCloudMoney")
  508. end
  509. end
  510. function DataRePortProxy:HandlerOnEnterWorld()
  511. if global.L_GameEnvManager:GetEnvDataByKey("isCloudLogin") then
  512. -- 检测云机货币列表
  513. local AuthProxy = global.Facade:retrieveProxy( global.ProxyTable.AuthProxy )
  514. AuthProxy:RequestCloudMoneyCheckList()
  515. releasePrint("=======*HandlerOnEnterWorld")
  516. end
  517. end
  518. function DataRePortProxy:HandlerOnUpdateMoney( data )
  519. if global.L_GameEnvManager:GetEnvDataByKey("isCloudLogin") then
  520. if not data or not self.m_moneyMaxID then
  521. return
  522. end
  523. local moneyID = data.id
  524. if moneyID > self.m_moneyMaxID then
  525. return
  526. end
  527. if not self.m_cloudMoneyList or not self.m_cloudMoneyList[moneyID] then
  528. return
  529. end
  530. if not self.m_moneys then
  531. self.m_moneys = {}
  532. end
  533. if not self.m_moneys[moneyID] then
  534. self.m_moneys[moneyID] = {
  535. currencyId = data.id,
  536. currencyNum = 0,
  537. currencyName = SL:GetMetaValue("ITEM_NAME", moneyID)
  538. }
  539. end
  540. if data.count and self.m_moneys[moneyID].currencyNum ~= data.count then
  541. self.m_moneys[moneyID].currencyNum = data.count
  542. end
  543. end
  544. end
  545. ----------------------云真机 货币上报end------------------------------
  546. function DataRePortProxy:onRemove()
  547. -- 检测是否云手机
  548. if global.L_GameEnvManager:GetEnvDataByKey("isCloudLogin") then
  549. SL:UnRegisterLUAEvent(LUA_EVENT_ENTER_WORLD, "DataRePortProxy")
  550. SL:UnRegisterLUAEvent(LUA_EVENT_MONEYCHANGE, "DataRePortProxy")
  551. end
  552. DataRePortProxy.super.onRemove(self)
  553. end
  554. function DataRePortProxy:onRegister()
  555. -- 检测是否云手机
  556. if global.L_GameEnvManager:GetEnvDataByKey("isCloudLogin") then
  557. SL:RegisterLUAEvent(LUA_EVENT_ENTER_WORLD, "DataRePortProxy", handler(self, self.HandlerOnEnterWorld))
  558. SL:RegisterLUAEvent(LUA_EVENT_MONEYCHANGE, "DataRePortProxy", handler(self, self.HandlerOnUpdateMoney))
  559. end
  560. DataRePortProxy.super.onRegister(self)
  561. end
  562. return DataRePortProxy