jirenyang.lua 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. function testme(actor, id, subId, param)
  2. -- SL:SendLuaNetMsg(1,{})
  3. -- lg("testme", id, subId)
  4. end
  5. -- function TestClass()
  6. -- local subObject = MySubClass("Alice", 30)
  7. -- subObject:sayHello()
  8. -- subObject:sayAge()
  9. -- subObject.custom = "test"
  10. -- lg("修改名字", subObject.custom)
  11. -- end
  12. -- -- 创建 getter 函数
  13. -- function Getter(fieldName)
  14. -- return function(self)
  15. -- return self[fieldName]
  16. -- end
  17. -- end
  18. -- -- 创建 setter 函数
  19. -- function Setter(fieldName, validation)
  20. -- return function(self, value)
  21. -- if validation and not validation(value) then
  22. -- error(string.format("Invalid %s value", fieldName))
  23. -- end
  24. -- self[fieldName] = value
  25. -- end
  26. -- end
  27. -- MyClass = class()
  28. -- function MyClass:ctor(name)
  29. -- self.name = name
  30. -- end
  31. -- function MyClass:sayHello()
  32. -- lg("Hello, " .. self.name)
  33. -- end
  34. -- local myObject = MyClass("World")
  35. -- myObject:sayHello()
  36. -- MySubClass = class(MyClass)
  37. -- function MySubClass:ctor(name, age)
  38. -- MyClass:ctor(name) -- 调用父类构造函数
  39. -- self.age = age
  40. -- end
  41. -- function MySubClass:sayAge()
  42. -- lg("I am " .. self.age .. " years old.")
  43. -- end
  44. -- MySubClass.__getterse = {
  45. -- age = Getter("age"),
  46. -- name = Getter("name"),
  47. -- custom = Getter("custom"),
  48. -- }
  49. -- MySubClass.__setterse = {
  50. -- age = Setter("age", function(value)
  51. -- return type(value) == 'number' and value > 0
  52. -- end),
  53. -- name = Setter("name"),
  54. -- custom = Setter("custom"),
  55. -- }
  56. function testspeed(actor)
  57. local attackSpeed = getattrinfo(actor, "attackSpeed")
  58. local attackSpeedBonus = getattrinfo(actor, "attackSpeedBonus")
  59. local AniSpeed = getattrinfo(actor, "AniSpeed")
  60. local atkSpeed = getattrinfo(actor, "atkSpeed")
  61. local AniSpeedBonus = getattrinfo(actor, "AniSpeedBonus")
  62. lg("attackSpeed:", attackSpeed)
  63. lg("attackSpeedBonus:", attackSpeedBonus)
  64. lg("AniSpeed:", AniSpeed)
  65. lg("atkSpeed:", atkSpeed)
  66. lg("AniSpeedBonus:", AniSpeedBonus)
  67. end
  68. function testopentime(actor)
  69. toclient(actor, lg(getbaseinfo(actor, "serveropendays")))
  70. end
  71. function testmybag(actor)
  72. toclient(actor, lg(getbagdata(actor)))
  73. end
  74. function ttt1(actor)
  75. local equipInfo = getplaydef(actor, PlayerDefKey.angel.ANGEL_EQUIPMENT_ATTR_DATA) or {}
  76. local info = {}
  77. for k, v in pairs(equipInfo) do
  78. local grails = v["grails"]
  79. if not table.isNullOrEmpty(grails) then
  80. local grailIds = {}
  81. for grailId, _ in pairs(grails) do
  82. table.insert(grailIds, grailId)
  83. info[k] = grailIds
  84. end
  85. end
  86. end
  87. toclient(actor, lg("大天使装备圣杯ids:", info))
  88. end
  89. function ttt2(actor)
  90. local grailInfo = getplaydef(actor, PlayerDefKey.angel.ANGEL_GRAIL_ENTRY_INFO)
  91. local ids = {}
  92. for id, v in pairs(grailInfo) do
  93. table.insert(ids, id)
  94. end
  95. toclient(actor, lg("全部圣杯id:", ids))
  96. end
  97. function ttt3(actor)
  98. AngelMajorGrail.loginDirtyDataClear(actor)
  99. end
  100. function look(actor)
  101. ttt1(actor)
  102. ttt2(actor)
  103. end
  104. function testflushtask(actor, taskTargetType, param)
  105. Wings.FlushWingsTask(actor, taskTargetType, param)
  106. end
  107. function other(actor)
  108. lg(getputonequipinfo(actor))
  109. end
  110. -- =============================打印调试========================================
  111. local debug = require 'debug'
  112. local openlog = true
  113. function lg(...)
  114. if not openlog then
  115. return
  116. end
  117. local args = table.pack(...)
  118. local message = FormatArgs(args)
  119. local info = debug.getinfo(2, 'nSlu')
  120. local count = 0
  121. while not info do
  122. if count > 10 then
  123. error("打印栈的深度过深")
  124. print("打印栈的深度过深")
  125. return
  126. end
  127. count = count + 1
  128. info = debug.getinfo(2 + count, 'nSlu')
  129. end
  130. -- local begin = info.linedefined
  131. -- local over = info.lastlinedefined
  132. local currLine = info.currentline
  133. -- local name = info.name
  134. -- local short_src = info.short_src
  135. -- local result = short_src:match("[^\\]+%.lua$")
  136. local callerInfo = string.format(" ===> %s%d%s",
  137. -- result,
  138. -- name,
  139. -- begin,
  140. -- over,
  141. "★",
  142. currLine,
  143. "★")
  144. local msg = callerInfo .. " " .. message
  145. -- error(msg)
  146. print(msg)
  147. return msg
  148. end
  149. -- 格式化参数
  150. function FormatArgs(args)
  151. local formattedMessage = ""
  152. for i = 1, args.n do
  153. if type(args[i]) == "table" then
  154. formattedMessage = formattedMessage .. TableToString(args[i]) .. " "
  155. elseif type(args[i]) == "userdata" then
  156. formattedMessage = formattedMessage .. UserDataToString(args[i]) .. " "
  157. else
  158. formattedMessage = formattedMessage .. tostring(args[i]) .. "(" .. GetLogTip(args[i]) .. ") "
  159. end
  160. end
  161. return formattedMessage
  162. end
  163. function UserDataToString(userdata)
  164. return userdata:toString() .. " (U)"
  165. end
  166. function TableToString(t, indent)
  167. indent = indent or 0
  168. local str = "{\n"
  169. local isFirst = true
  170. if table.isArray(t) then
  171. -- 处理数组类型的表
  172. for k, v in ipairs(t) do
  173. if isFirst then
  174. isFirst = false
  175. else
  176. str = str .. ",\n"
  177. end
  178. str = str .. string.rep(" ", indent + 1) .. k .. ": "
  179. if type(v) == "table" then
  180. str = str .. TableToString(v, indent + 1)
  181. elseif type(v) == "userdata" then
  182. str = str .. UserDataToString(v)
  183. else
  184. str = str .. tostring(v) .. "(" .. GetLogTip(v) .. ") "
  185. end
  186. end
  187. else
  188. -- 处理哈希表
  189. for k, v in pairs(t) do
  190. if isFirst then
  191. isFirst = false
  192. else
  193. str = str .. ",\n"
  194. end
  195. str = str .. string.rep(" ", indent + 1) .. tostring(k) .. ": "
  196. if type(v) == "table" then
  197. str = str .. TableToString(v, indent + 1)
  198. elseif type(v) == "userdata" then
  199. str = str .. UserDataToString(v)
  200. else
  201. str = str .. tostring(v) .. "(" .. GetLogTip(v) .. ") "
  202. end
  203. end
  204. end
  205. str = str .. "\n" .. string.rep(" ", indent) .. "}"
  206. return str
  207. end
  208. function GetLogTip(v)
  209. if type(v) == "string" then
  210. if string.trim(v) == "" then
  211. return "空"
  212. end
  213. return "S"
  214. elseif type(v) == "boolean" then
  215. return "B"
  216. elseif type(v) == "number" then
  217. return "N"
  218. elseif type(v) == "nil" then
  219. return "×"
  220. end
  221. end
  222. local msgId = 112233
  223. function toclient(actor, msg)
  224. if not openlog then
  225. return
  226. end
  227. msg = string.gsub(msg, "\n", "")
  228. sendluamsg(actor, msgId, "日志信息:" .. msg)
  229. end