EquipMaster_1.lua 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. ---
  2. --- Created by zhouzhipeng.
  3. --- DateTime: 2024/8/21 下午1:45
  4. ---
  5. EquipMaster = {}
  6. local this = {}
  7. EquipMasterType = {
  8. -- cfg_equip_master表type字段
  9. STRENGTHEN_LV = 1, -- 强化等级
  10. APPEND_LV = 2, -- 追加等级
  11. -- cfg_equip_master表count字段
  12. TOTAL_LEVEL = 0, -- 0:计算部位总和等级
  13. POS_LEVEL = 1 -- 1:计算每个部位等级
  14. }
  15. EquipMasterConst = {
  16. STRENGTH_MASTER = "strengthMaster", -- 强化大师
  17. APPEND_MASTER = "appendMaster" -- 追加大师
  18. }
  19. --- 装备锻造大师变量
  20. EquipMasterVariable = {
  21. EQUIP_MASTER_CACHE = "G$strength_master_cache", -- 装备大师缓存
  22. STRENGTH_MASTER_ATTR = "strengthMasterAttr", -- 强化大师属性
  23. APPEND_MASTER_ATTR = "appendMasterAttr", -- 追加大师属性
  24. EQUIP_MASTER_DATA = "T$大师数据"
  25. }
  26. -- 脱穿需要重新计算强化和追加 转移 也需要
  27. -- 强化与追加 分别触发强化大师与追加大师
  28. -- 脱穿触发锻造大师
  29. function EquipMaster.triggerEquipMaster(actor)
  30. EquipMaster.strengthMaster(actor)
  31. EquipMaster.appendMaster(actor)
  32. end
  33. -- 装备转移触发锻造大师
  34. function EquipMaster.transferTrigger(actor, equip1, equip2, ts, ta)
  35. local equipindex1 = equip1.equipindex
  36. local equipindex2 = equip2.equipindex
  37. if tonumber(equipindex1) == 0 or tonumber(equipindex2) == 0 then
  38. return
  39. end
  40. if ts and ta then
  41. -- 转移强化触发强化大师
  42. EquipMaster.strengthMaster(actor)
  43. -- 转移追加触发追加大师
  44. EquipMaster.appendMaster(actor)
  45. elseif ts then
  46. -- 转移强化触发强化大师
  47. EquipMaster.strengthMaster(actor)
  48. elseif ta then
  49. -- 转移追加触发追加大师
  50. EquipMaster.appendMaster(actor)
  51. end
  52. end
  53. --- 触发强化触发大师
  54. function EquipMaster.strengthMaster(actor)
  55. EquipMaster.print("strengthMaster actor:" .. actor:toString() .. "触发强化大师开始")
  56. local equips = getputonequipinfo(actor)
  57. if next(equips) == nil then
  58. return
  59. end
  60. -- EquipMaster.print("strengthMaster actor:" .. actor:toString() .. "穿戴的装备数据", equips)
  61. local itemExtData = EquipAndAppear.getLuaItemExtData(actor)
  62. if next(itemExtData) == nil then
  63. -- EquipMaster.print("strengthMaster actor:" .. actor:toString() .. "没有强化追加数据")
  64. return
  65. end
  66. local strengthData = {}
  67. for _, equip in pairs(equips) do
  68. local id = equip.id
  69. local equipData = itemExtData[id]
  70. if equipData ~= nil then
  71. local strengthlv = equipData.strengthlv
  72. local pos = gameequip.pos(equip.equipindex)
  73. strengthData[pos] = strengthlv
  74. end
  75. end
  76. if next(strengthData) == nil then
  77. EquipMaster.print("strengthMaster actor:" .. actor:toString() .. "没有强化数据", {})
  78. return
  79. end
  80. EquipMaster.print("strengthMaster actor:" .. actor:toString() .. ", 强化table数据\n", strengthData)
  81. local masterCache = getsysvar(actor, EquipMasterVariable.EQUIP_MASTER_CACHE) or {}
  82. local strengthCache = masterCache[EquipMasterType.STRENGTHEN_LV] or {}
  83. -- EquipMaster.print("strengthMaster actor:" .. actor:toString() .. "强化大师缓存数据", strengthCache)
  84. if next(strengthCache) == nil then
  85. error("strengthMaster actor:" .. actor:toString() .. "强化大师缓存为空")
  86. EquipMaster.print("strengthMaster actor:" .. actor:toString() .. "强化大师缓存为空")
  87. return
  88. end
  89. local configs = {}
  90. for group, cfgs in pairs(strengthCache) do
  91. -- group 遍历
  92. local isSuccess = false
  93. for _, cfg in ipairs(cfgs) do
  94. local lv = tonumber(cfg.lv)
  95. local str = cfg.strpartid
  96. local posTab = string.split(str, "#")
  97. local count = tonumber(cfg.count)
  98. if count == EquipMasterType.TOTAL_LEVEL then
  99. -- 0:计算部位总和等级
  100. local total = 0
  101. for _, pos in pairs(posTab) do
  102. local strengthLv = strengthData[tonumber(pos)]
  103. if strengthLv ~= nil then
  104. total = total + strengthLv
  105. end
  106. end
  107. -- EquipMaster.print("strengthMaster actor:" .. actor:toString() .. ", total:" .. tostring(total) .. ", lv:" .. tostring(lv))
  108. if total < lv then
  109. break
  110. end
  111. configs[group] = cfg
  112. -- EquipMaster.print("strengthMaster actor:" .. actor:toString() .. " count == 0 满足的配置添加 group:\n" .. tostring(group), cfg)
  113. elseif count == EquipMasterType.POS_LEVEL then
  114. -- 1:计算每个部位等级
  115. for _, pos in pairs(posTab) do
  116. local strengthLv = strengthData[tonumber(pos)]
  117. if strengthLv == nil or strengthLv < lv then
  118. isSuccess = true
  119. break
  120. end
  121. end
  122. if isSuccess then
  123. break
  124. end
  125. configs[group] = cfg
  126. -- EquipMaster.print("strengthMaster actor:" .. actor:toString() .. " count == 1 满足的配置添加 group:" .. tostring(group), cfg)
  127. else
  128. error("strengthMaster actor:" .. actor:toString() .. "暂时不支持改类型计算:" ..
  129. tostring(count))
  130. EquipMaster.print("strengthMaster actor:" .. actor:toString() .. "暂时不支持改类型计算:" ..
  131. tostring(count), {})
  132. end
  133. end
  134. end
  135. local equipMasterData = getplaydef(actor, EquipMasterVariable.EQUIP_MASTER_DATA) or {}
  136. if next(configs) == nil then
  137. -- 清空属性
  138. addrolekmlattributes(actor, EquipMasterVariable.STRENGTH_MASTER_ATTR, {})
  139. equipMasterData[EquipMasterConst.STRENGTH_MASTER] = {}
  140. -- 移除添加的数据
  141. setplaydef(actor, EquipMasterVariable.EQUIP_MASTER_DATA, equipMasterData)
  142. EquipMaster.print("strengthMaster actor:" .. actor:toString() .. "没有符合的强化大师配置:")
  143. return
  144. end
  145. EquipMaster.print("strengthMaster actor:" .. actor:toString() .. "符合的强化大师配置:\n", configs)
  146. local attr_map = {}
  147. local cfgIds = {}
  148. local saveTable = {}
  149. --[[
  150. for group, cfg in pairs(configs) do
  151. table.insert(cfgIds, cfg.id)
  152. local attStr = cfg.att
  153. local attJinHao = string.split(attStr, "|")
  154. for _, value in pairs(attJinHao) do
  155. local att = string.split(value, "#")
  156. local attr_id = att[1]
  157. local attr_value = att[2]
  158. local value = attr_map[attr_id]
  159. if value ~= nil and tonumber(value) > 0 then
  160. value = value + attr_value
  161. else
  162. value = attr_value
  163. end
  164. attr_map[attr_id] = value
  165. end
  166. end
  167. ]]
  168. for group, cfg in pairs(configs) do
  169. table.insert(cfgIds, cfg.id)
  170. local attStr = cfg.att2
  171. local att = string.split(attStr, "#")
  172. local type = tonumber(att[1])
  173. local allAttr = this.getPropertiesByType(actor, type)
  174. if table.count(allAttr) > 0 then
  175. this.calculateMasterAttr(attr_map, allAttr, tonumber(att[2]))
  176. end
  177. end
  178. saveTable["cfgIds"] = cfgIds
  179. saveTable["attr"] = attr_map
  180. addrolekmlattributes(actor, EquipMasterVariable.STRENGTH_MASTER_ATTR, attr_map)
  181. EquipMaster.print("strengthMaster actor:" .. actor:toString() ..
  182. "触发强化大师结束,添加的属性如下:\n", attr_map)
  183. equipMasterData[EquipMasterConst.STRENGTH_MASTER] = saveTable
  184. -- 记录添加的数据
  185. setplaydef(actor, EquipMasterVariable.EQUIP_MASTER_DATA, equipMasterData)
  186. end
  187. --- 触发追加大师
  188. function EquipMaster.appendMaster(actor)
  189. EquipMaster.print("appendMaster actor:" .. actor:toString() .. "触发追加大师开始")
  190. local equips = getputonequipinfo(actor)
  191. if next(equips) == nil then
  192. return
  193. end
  194. -- EquipMaster.print("appendMaster actor:" .. actor:toString() .. "穿戴的装备数据", equips)
  195. local itemExtData = EquipAndAppear.getLuaItemExtData(actor)
  196. if next(itemExtData) == nil then
  197. EquipMaster.print("appendMaster actor:" .. actor:toString() .. "没有强化追加数据")
  198. return
  199. end
  200. -- EquipMaster.print("appendMaster actor:" .. actor:toString() .. "强化追加lua存的数据数据\n", itemExtData)
  201. local appendData = {}
  202. for _, equip in pairs(equips) do
  203. local id = equip.id
  204. local equipData = itemExtData[id]
  205. if equipData ~= nil then
  206. local appendlv = equipData.appendlv
  207. local pos = gameequip.pos(equip.equipindex)
  208. appendData[pos] = appendlv
  209. end
  210. end
  211. if next(appendData) == nil then
  212. return
  213. end
  214. EquipMaster.print("appendMaster actor:" .. actor:toString() .. "追加数据:\n", appendData)
  215. local masterCache = getsysvar(actor, EquipMasterVariable.EQUIP_MASTER_CACHE) or {}
  216. local appendCache = masterCache[EquipMasterType.APPEND_LV] or {}
  217. -- EquipMaster.print("appendMaster actor:" .. actor:toString() .. "追加缓存数据", appendCache)
  218. if next(appendCache) == nil then
  219. error("appendMaster actor:" .. actor:toString() .. "追加大师缓存为空")
  220. EquipMaster.print("appendMaster actor:" .. actor:toString() .. "追加大师缓存为空")
  221. return
  222. end
  223. local configs = {}
  224. for group, cfgs in pairs(appendCache) do
  225. -- group 遍历
  226. local isSuccess = false
  227. for _, cfg in ipairs(cfgs) do
  228. local lv = tonumber(cfg.lv)
  229. local str = cfg.strpartid
  230. local posTab = string.split(str, "#")
  231. local count = tonumber(cfg.count)
  232. if count == EquipMasterType.TOTAL_LEVEL then
  233. -- 0:计算部位总和等级
  234. local total = 0
  235. for _, pos in pairs(posTab) do
  236. local appendLv = appendData[tonumber(pos)]
  237. if appendLv ~= nil then
  238. total = total + appendLv
  239. end
  240. end
  241. -- EquipMaster.print("appendMaster actor:" .. actor:toString() .. ", total:" .. tostring(total) .. ", lv:" .. tostring(lv))
  242. if total < lv then
  243. break
  244. end
  245. configs[group] = cfg
  246. -- EquipMaster.print("appendMaster actor:" .. " count == 0 满足的配置添加 group:" .. tostring(group), cfg)
  247. elseif count == EquipMasterType.POS_LEVEL then
  248. -- 1:计算每个部位等级
  249. for _, pos in pairs(posTab) do
  250. local appendLv = appendData[tonumber(pos)]
  251. if appendLv == nil or appendLv < lv then
  252. isSuccess = true
  253. break
  254. end
  255. end
  256. if isSuccess then
  257. break
  258. end
  259. configs[group] = cfg
  260. -- EquipMaster.print("appendMaster actor:" .. " count == 1 满足的配置添加 group:" .. tostring(group), cfg)
  261. else
  262. error("appendMaster actor:" .. actor:toString() .. "暂时不支持改类型计算:" ..
  263. tostring(count))
  264. EquipMaster.print("appendMaster actor:" .. actor:toString() .. " 暂时不支持改类型计算:" ..
  265. tostring(count))
  266. end
  267. end
  268. end
  269. local equipMasterData = getplaydef(actor, EquipMasterVariable.EQUIP_MASTER_DATA) or {}
  270. if next(configs) == nil then
  271. -- 清空属性
  272. addrolekmlattributes(actor, EquipMasterVariable.APPEND_MASTER_ATTR, {})
  273. equipMasterData[EquipMasterConst.APPEND_MASTER] = {}
  274. -- 移除添加的数据
  275. setplaydef(actor, EquipMasterVariable.EQUIP_MASTER_DATA, equipMasterData)
  276. EquipMaster.print("appendMaster actor:" .. actor:toString() .. " 没有符合的追加大师配置")
  277. return
  278. end
  279. EquipMaster.printDetails(configs, "")
  280. local attr_map = {}
  281. local cfgIds = {}
  282. local saveTable = {}
  283. --[[
  284. for group, cfg in pairs(configs) do
  285. table.insert(cfgIds, cfg.id)
  286. local attStr = cfg.att
  287. local attJinHao = string.split(attStr, "|")
  288. for _, value in pairs(attJinHao) do
  289. local att = string.split(value, "#")
  290. local attr_id = att[1]
  291. local attr_value = att[2]
  292. local value = attr_map[attr_id]
  293. if value ~= nil and tonumber(value) > 0 then
  294. value = value + attr_value
  295. else
  296. value = attr_value
  297. end
  298. attr_map[attr_id] = value
  299. end
  300. end
  301. ]]
  302. for group, cfg in pairs(configs) do
  303. table.insert(cfgIds, cfg.id)
  304. local attStr = cfg.att2
  305. local att = string.split(attStr, "#")
  306. local type = tonumber(att[1])
  307. local allAttr = this.getPropertiesByType(actor, type)
  308. if table.count(allAttr) > 0 then
  309. this.calculateMasterAttr(attr_map, allAttr, tonumber(att[2]))
  310. end
  311. end
  312. saveTable["cfgIds"] = cfgIds
  313. saveTable["attr"] = attr_map
  314. addrolekmlattributes(actor, EquipMasterVariable.APPEND_MASTER_ATTR, attr_map)
  315. EquipMaster.print("appendMaster actor:" .. actor:toString() ..
  316. " 触发追加大师 结束添加的属性如下:\n", attr_map)
  317. equipMasterData[EquipMasterConst.APPEND_MASTER] = saveTable
  318. -- 记录添加的数据
  319. setplaydef(actor, EquipMasterVariable.EQUIP_MASTER_DATA, equipMasterData)
  320. end
  321. --- 缓存装备锻造大师数据
  322. function EquipMaster.cacheEquipMasterData()
  323. -- 强化
  324. local strength = EquipMasterType.STRENGTHEN_LV
  325. local append = EquipMasterType.APPEND_LV
  326. local strengthTable = this.getMasterData(strength)
  327. -- 追加
  328. local appendTable = this.getMasterData(append)
  329. local cacheTable = {}
  330. cacheTable[strength] = strengthTable
  331. cacheTable[append] = appendTable
  332. setsysvar(EquipMasterVariable.EQUIP_MASTER_CACHE, cacheTable)
  333. -- info("cacheEquipMasterData 启动缓存装备锻造大师数据成功")
  334. EquipMaster.print("cacheEquipMasterData 缓存装备锻造大师数据:\n", cacheTable)
  335. return cacheTable
  336. end
  337. --- 获取装备锻造大师数据
  338. function this.getMasterData(type)
  339. local masterList = ConfigDataManager.getTable("cfg_equip_master", "type", type)
  340. if masterList == nil then
  341. error("getMasterData cfg_equip_master锻造大师配置为空 type:" .. type)
  342. EquipMaster.print("getMasterData cfg_equip_master锻造大师配置为空 type:" .. type)
  343. return
  344. end
  345. local masterTable = {}
  346. for _, cfg in pairs(masterList) do
  347. local group = cfg.group
  348. local cfgs = masterTable[group] or {}
  349. table.insert(cfgs, cfg)
  350. masterTable[group] = cfgs
  351. end
  352. for _, cfgs in pairs(masterTable) do
  353. table.sort(cfgs, this.sortByLevel)
  354. end
  355. return masterTable
  356. end
  357. --- 计算大师加成属性
  358. function this.calculateMasterAttr(attr_map, allAttr, number)
  359. local addition = number / 10000
  360. for attrId, value in pairs(allAttr) do
  361. local newValue = math.ceil(value * addition)
  362. attr_map[attrId] = newValue
  363. end
  364. end
  365. --- 根据类型获取穿戴的全部强化或追加属性
  366. function this.getPropertiesByType(actor, type)
  367. local alldata = getplaydef(actor, "T$luaitemextdata")
  368. local equiplist = getputonequipinfo(actor)
  369. local allattr = {}
  370. for _, equipinfo in pairs(equiplist) do
  371. local itemId = equipinfo.id
  372. local data = alldata[itemId]
  373. if data ~= nil then
  374. if type == 1 then
  375. -- 将该装备的属性加到角色身上
  376. if data.strengthlv ~= nil then
  377. local strengthattr = data.strengthattr
  378. table.mergeAdd(allattr, strengthattr)
  379. end
  380. elseif type == 2 then
  381. if data.appendlv ~= nil then
  382. local appendattr = data.appendattr
  383. table.mergeAdd(allattr, appendattr)
  384. end
  385. end
  386. end
  387. end
  388. return allattr
  389. end
  390. --- 根据lv字段排序 自定义排序函数,根据lv字段排序
  391. function this.sortByLevel(a, b)
  392. return tonumber(a.lv) < tonumber(b.lv) -- 升序排序
  393. -- 如果需要降序排序,则返回 a.lv > b.lv
  394. end
  395. --- 打印数据
  396. function EquipMaster.printDetails(t, indent)
  397. if type(t) ~= 'table' then
  398. jprint(indent .. tostring(t))
  399. return
  400. end
  401. jprint(indent .. '{')
  402. indent = indent .. ' '
  403. for k, v in pairs(t) do
  404. if type(v) == 'table' then
  405. jprint(indent .. '[' .. tostring(k) .. '] =')
  406. EquipMaster.printDetails(v, indent)
  407. else
  408. jprint(indent .. '[' .. tostring(k) .. '] = ' .. tostring(v))
  409. end
  410. end
  411. jprint(indent:sub(1, string.len(indent) - 2) .. '}')
  412. end
  413. --- 打印日志
  414. function EquipMaster.print(...)
  415. local isPrintLog = true
  416. if isPrintLog then
  417. return
  418. end
  419. jprint(...)
  420. local args = {...}
  421. -- local var = table.cancat(args, ',')
  422. -- local msg = string.format(...)
  423. -- local count = select('#', ...) -- 获取参数的数量
  424. -- local first_arg = select(1, ...) -- 获取第一个参数
  425. -- if next(table) == nil then
  426. -- return
  427. -- end
  428. -- EquipMaster.printDetails(table, "")
  429. end
  430. local CheckPos = {
  431. [1] = {4, 5, 6, 7, 8},
  432. [4] = {5, 6, 7, 8},
  433. }
  434. function EquipMaster.updateEquipMaster(actor)
  435. local equips = getputonequipinfo(actor)
  436. local career = getbaseinfo(actor, "getbasecareer")
  437. local checkPos = CheckPos[career] ~= nil and CheckPos[career] or CheckPos[1]
  438. local equipSlots = {}
  439. for k, v in pairs(equips) do
  440. local equip = equips[k]
  441. local pos = gameequip.pos(equip.equipindex)
  442. equipSlots[pos] = API.GetItemData(actor, equip.id, "strengthlv") or 0
  443. end
  444. local minLevel = nil
  445. for k, v in pairs(checkPos) do
  446. local level = equipSlots[v]
  447. if level == nil then
  448. minLevel = nil
  449. break
  450. elseif minLevel == nil then
  451. minLevel = level
  452. elseif minLevel > level then
  453. minLevel = level
  454. end
  455. end
  456. if minLevel == nil then
  457. addrolekmlattributes(actor, "equipmasterforever", {})
  458. return
  459. end
  460. -- cfg_equip_master_new
  461. local cfgs = ConfigDataManager.getTable("cfg_equip_master_new","type",1, "group", 1)
  462. local cfgLevel = nil
  463. for k, v in pairs(cfgs) do
  464. if tonumber(v.lv) <= minLevel then
  465. cfgLevel = v
  466. else
  467. break
  468. end
  469. end
  470. if cfgLevel == nil then
  471. addrolekmlattributes(actor, "equipmasterforever", {})
  472. return
  473. end
  474. local allattr = {}
  475. local attrs = string.split(cfgLevel.att, "|")
  476. for i,v in ipairs(attrs) do
  477. local att = string.split(v, "#")
  478. local attrId = att[1]
  479. local value = tonumber(att[2])
  480. if allattr[attrId] ~= nil then
  481. allattr[attrId] = allattr[attrId] + value
  482. else
  483. allattr[attrId] = value
  484. end
  485. end
  486. addrolekmlattributes(actor, "equipmasterforever", allattr)
  487. end
  488. -----------------------------------------------------------测试方法-------------------------------------------------------------
  489. --- 测试方法
  490. function equipmastertest(actor)
  491. -- jprint("equipmastertest actor:" .. actor:toString() .. "equipmastertest开始")
  492. -- EquipMaster.cacheEquipMasterData()
  493. -- 打印缓存
  494. -- EquipMaster.printDetails(getsysvar("G$strength_master_cache"), "")
  495. EquipMaster.strengthMaster(actor)
  496. EquipMaster.appendMaster(actor)
  497. -- local masterCache = getsysvar(EquipMasterVariable.EQUIP_MASTER_CACHE)
  498. -- local strengthCache = masterCache[1]
  499. -- EquipMaster.printDetails(strengthCache, "")
  500. -- jprint("equipmastertest actor:" .. actor:toString() .. "lua 存的强化数据")
  501. -- local itemExtData = EquipAndAppear.getLuaItemExtData(actor)
  502. -- EquipMaster.printDetails(itemExtData, "")
  503. -- jprint("equipmastertest actor:" .. actor:toString() .. "已穿戴的装备数据")
  504. -- local equips = getputonequipinfo(actor)
  505. -- EquipMaster.printDetails(equips, "")
  506. -- local idx = 65538
  507. -- local aa = gameequip.wearBar(idx)
  508. -- local bb = gameequip.pos(idx)
  509. -- jprint("equipmastertest actor:" .. actor:toString() .. "equipmastertest结束 aa:" .. tostring(aa) .. " bb:" ..
  510. -- tostring(bb))
  511. end
  512. --- 测试方法
  513. function cacheequipmasterdatatest(actor)
  514. -- jprint("cacheequipmasterdatatest actor:" .. actor:toString() .. "测试事件重新缓存")
  515. local cacheTable = EquipMaster.cacheEquipMasterData()
  516. EquipMaster.print("cacheequipmasterdatatest actor:", actor, "测试事件重新缓存数据:\n", cacheTable)
  517. -- EquipMaster.printDetails(strengthTable, "")
  518. -- jprint("cacheequipmasterdatatest actor:" .. actor:toString() .. "测试事件重新缓存成功")
  519. end