源战役客户端
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

116 Zeilen
3.8 KiB

  1. ChuanWenManager = ChuanWenManager or BaseClass(EventDispatcher)
  2. ChuanWenManager.Type = {
  3. Rolling = 1,--传闻跑马灯飘(屏幕上方)
  4. SystemNomal = 2,--频道普通消息
  5. RollingSystemNomal = 3,--传闻跑马灯中部(屏幕中部)
  6. CSEvent = 4, -- 跨服活动玩法传闻
  7. }
  8. function ChuanWenManager:__init()
  9. ChuanWenManager.Instance = self
  10. end
  11. function ChuanWenManager:__delete()
  12. end
  13. function ChuanWenManager:getInstance()
  14. if ChuanWenManager.Instance==nil then
  15. ChuanWenManager.New()
  16. end
  17. return ChuanWenManager.Instance
  18. end
  19. --获取传闻内容
  20. function ChuanWenManager:GetChuanWen(scmd)
  21. local chuanwen_cfg = Config.Languageextra[scmd.module_id .. "@" .. scmd.id]
  22. if chuanwen_cfg then
  23. local array = Split(scmd.content,",")
  24. local replaceFunc = function (str)
  25. return array[tonumber(str)] or ""
  26. end
  27. local text, num = string.gsub(chuanwen_cfg.content, "{(%d+)}", replaceFunc)
  28. text = self:FormatColorTag(text)
  29. local p1, p2, param_str = string.find(text, "%<a@goods3([^%>^/.]-)%>") --goods3特殊解析 -_-||
  30. if param_str and param_str~="" then
  31. local temp = Split(param_str, "@")
  32. if temp and temp[2] then
  33. local basic = GoodsModel:GetGoodsBasicByTypeId(tonumber(temp[2]))
  34. if basic and ((basic.type==10 and basic.subtype~=GoodsModel.SHOUHU_EQUIP_TYPE) or basic.type==39) then --装备,而且不是守护类型才这样解析
  35. local tb = Split(scmd.content, "%[")
  36. if tb and tb[2] and tb[2]~="" then
  37. local str = "{"..tb[2]
  38. str = string.gsub(str, "]", "")
  39. str = string.format("{%s}", str)
  40. local list = StrToTable(str)
  41. local bigList = {}
  42. local temp2 = {"color","type_id","attr_id","attr_val","plus_interval","plus_unit"}
  43. for k,v in ipairs(list) do
  44. local proList = {}
  45. for m,n in ipairs(v) do
  46. proList[temp2[m]] = n
  47. end
  48. table.insert(bigList, proList)
  49. end
  50. str = TableToStr(bigList)
  51. --那个颜色字段暂时截取不掉,先这样处理
  52. text = string.gsub(text, "%[{0", str)
  53. text = string.gsub(text, "%[{1", str)
  54. text = string.gsub(text, "%[{2", str)
  55. text = string.gsub(text, "%[{3", str)
  56. text = string.gsub(text, "%[{4", str)
  57. text = string.gsub(text, "%[{5", str)
  58. text = string.gsub(text, "%[{6", str)
  59. text = string.gsub(text, "%[{7", str)
  60. text = string.gsub(text, "%[{8", str)
  61. end
  62. end
  63. end
  64. end
  65. return text, chuanwen_cfg
  66. else
  67. print("没有找到传闻配置==:", scmd.module_id, scmd.id)
  68. end
  69. return "", nil
  70. end
  71. --解析颜色标签,适用于这种格式<color@颜色值>
  72. function ChuanWenManager:FormatColorTag(text)
  73. if text == nil or Trim(text) =="" then return text end
  74. text = Trim(text)
  75. local function replaceFunc(str)
  76. local str = string.sub(str,2,-2)
  77. local arr = Split(str,"@")
  78. local desc = "<color=" .. WordManager.GetChuanwenColor(tonumber(arr[2])) .. ">"
  79. return desc
  80. end
  81. local result = string.gsub(text, "%<color[^%>^/]+%>", replaceFunc)
  82. return result
  83. end
  84. --解析颜色标签,适用于这种格式<color@颜色值> 上面主要是主界面的聊天面板的传闻颜色(颜色浅) 下面这个是对于其他使用了这个接口的界面(颜色深)
  85. function ChuanWenManager:FormatColorTag2(text, is_dark)
  86. if text == nil or Trim(text) =="" then return text end
  87. text = Trim(text)
  88. local function replaceFunc(str)
  89. local str = string.sub(str,2,-2)
  90. local arr = Split(str,"@")
  91. local desc = "<color=" .. WordManager.GetGoodsColor(tonumber(arr[2]), is_dark) .. ">"
  92. return desc
  93. end
  94. local result = string.gsub(text, "%<color[^%>^/]+%>", replaceFunc)
  95. return result
  96. end
  97. function ChuanWenManager:DeleteSpecialSign(text)
  98. if text == nil or Trim(text) =="" then return text end
  99. text = Trim(text)
  100. local result = text
  101. result = string.gsub(result, "<a.->", "")
  102. result = string.gsub(result, "</a>", "")
  103. return result
  104. end