BattleMain.lua 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. -- windows
  2. package.path = package.path ..';luafight/?.lua';
  3. -- linux
  4. package.path = package.path ..';../luafight/?.lua';
  5. require("Modules.Battle.Logic.Misc.BattleDefine")
  6. require("Modules.Battle.Logic.Misc.BattleUtil")
  7. require("Modules.Battle.Logic.Misc.BattleQueue")
  8. require("Modules.Battle.Logic.Misc.BattleDictionary")
  9. require("Modules.Battle.Logic.Misc.BattleList")
  10. require("Modules.Battle.Logic.Misc.BattleObjectPool")
  11. require("Modules.Battle.Logic.Base.BattleEvent")
  12. require("Modules.Battle.Logic.Base.Random")
  13. require("Modules.Battle.Logic.Base.RoleData")
  14. require("Modules.Battle.Logic.Base.Buff")
  15. require("Modules.Battle.Logic.Base.Skill")
  16. require("Modules.Battle.Logic.Base.Passivity")
  17. require("Modules.Battle.Logic.BattleLogic")
  18. require("Modules.Battle.Logic.RoleLogic")
  19. require("Modules.Battle.Logic.SkillManager")
  20. require("Modules.Battle.Logic.RoleManager")
  21. require("Modules.Battle.Logic.OutDataManager")
  22. require("Modules.Battle.Logic.BattleLogManager")
  23. require("Modules.Battle.Logic.FightUnitLogic")
  24. require("Modules.Battle.Logic.FightUnitManager")
  25. require("Modules.Language")
  26. require("Modules.Debug")
  27. local BattleMain = {}
  28. local BattleLogic = BattleLogic
  29. local Random = Random
  30. local BattleRecord
  31. local _BattleErrorCache = {}
  32. local _BattleErrorIndex = 0
  33. local _seed
  34. local _type
  35. local _maxRound
  36. local _fightData
  37. local _optionData
  38. local function pairsByKeys(t)
  39. local a = {}
  40. for n in pairs(t) do
  41. if n then
  42. a[#a+1] = n
  43. end
  44. end
  45. table.sort(a, function( op1, op2 )
  46. local type1, type2 = type(op1), type(op2)
  47. local num1, num2 = tonumber(op1), tonumber(op2)
  48. if ( num1 ~= nil) and (num2 ~= nil) then
  49. return num1 < num2
  50. elseif type1 ~= type2 then
  51. return type1 < type2
  52. elseif type1 == "string" then
  53. return op1 < op2
  54. elseif type1 == "boolean" then
  55. return op1
  56. -- 以上处理: number, string, boolean
  57. else -- 处理剩下的: function, table, thread, userdata
  58. return tostring(op1) < tostring(op2) -- tostring后比较字符串
  59. end
  60. end)
  61. local i = 0
  62. return function()
  63. i = i + 1
  64. return a[i], t[a[i]]
  65. end
  66. end
  67. local function PrintTable(tb)
  68. local indent_str = "{"
  69. local count = 0
  70. for k,v in pairs(tb) do
  71. count = count + 1
  72. end
  73. for k=1, #tb do
  74. local v = tb[k]
  75. if type(v) == "table" then
  76. indent_str = indent_str .. PrintTable(v)
  77. else
  78. indent_str = indent_str .. tostring(v)
  79. end
  80. if k < count then
  81. indent_str = indent_str..","
  82. end
  83. end
  84. local index = 0
  85. for k,v in pairsByKeys(tb) do
  86. index = index + 1
  87. if type(k) ~= "number" then
  88. if type(v) == "table" then
  89. indent_str = string.format("%s%s=%s", indent_str, tostring(k), PrintTable(v))
  90. else
  91. indent_str = string.format("%s%s=%s", indent_str, tostring(k), tostring(v))
  92. end
  93. if index < count then
  94. indent_str = indent_str .. ","
  95. end
  96. end
  97. end
  98. indent_str = indent_str .. "}"
  99. return indent_str
  100. end
  101. local function generateRecordFile()
  102. local time = string.format("%d-%d-%d-%d-%d-%d",
  103. os.date("%Y"),
  104. os.date("%m"),
  105. os.date("%d"),
  106. os.date("%H"),
  107. os.date("%M"),
  108. os.date("%S"))
  109. -- local file = io.open("luafight/BattleRecord/"..time..".txt", "a")
  110. -- local record = BattleLogic.GetRecord()
  111. -- for i=1, #record do
  112. -- file:write(record[i].."\n")
  113. -- end
  114. -- io.close(file)
  115. end
  116. local function addBattleData()
  117. local str = ""
  118. str = str.."seed:\n"..tostring(_seed).."\n"
  119. str = str.."type:\n"..tostring(_type).."\n"
  120. str = str.."fightData:\n"..PrintTable(_fightData).."\n"
  121. str = str.."optionData:\n"..PrintTable(_optionData).."\n"
  122. _BattleErrorIndex = _BattleErrorIndex + 1
  123. if _BattleErrorIndex > 5 then
  124. _BattleErrorIndex = 1
  125. end
  126. _BattleErrorCache[_BattleErrorIndex] = str
  127. end
  128. local function AddRecord(fightData)
  129. BattleRecord = {}
  130. BattleLogic.Event:AddEvent(BattleEventName.AddRole, function (role)
  131. local record = {}
  132. record.uid = role.uid
  133. record.camp = role.camp
  134. record.damage = 0
  135. role.Event:AddEvent(BattleEventName.RoleDamage, function (defRole, damage, bCrit, finalDmg)
  136. record.damage = record.damage + finalDmg
  137. end)
  138. BattleRecord[role.uid] = record
  139. end)
  140. for i=1, #fightData.playerData.teamSkill do
  141. local teamCaster = BattleLogic.GetTeamSkillCaster(0)
  142. local teamSkill = fightData.playerData.teamSkill[i]
  143. local teamType = math.floor(teamSkill[1] / 100)
  144. local str = "order:1".."camp:"..teamCaster.camp.." team"..teamSkill[1]
  145. local record = {}
  146. record.uid = str
  147. record.camp = teamCaster.camp
  148. record.damage = 0
  149. record.order = 1
  150. local curSkill
  151. teamCaster.Event:AddEvent(BattleEventName.SkillCast, function (skill)
  152. if skill.owner.camp == record.camp then
  153. curSkill = skill
  154. end
  155. end)
  156. teamCaster.Event:AddEvent(BattleEventName.RoleDamage, function (defRole, damage, bCrit, finalDmg)
  157. if curSkill and curSkill.teamSkillType == teamType then
  158. record.damage = record.damage + finalDmg
  159. end
  160. end)
  161. BattleRecord[str] = record
  162. end
  163. for i=1, #fightData.enemyData do
  164. for j=1, #fightData.enemyData[i].teamSkill do
  165. local teamCaster = BattleLogic.GetTeamSkillCaster(1)
  166. local teamSkill = fightData.enemyData[i].teamSkill[j]
  167. local teamType = math.floor(teamSkill[1] / 100)
  168. local str = "order:"..i.."camp:"..teamCaster.camp.." team"..teamSkill[1]
  169. local record = {}
  170. record.uid = str
  171. record.camp = teamCaster.camp
  172. record.damage = 0
  173. record.order = i
  174. local curSkill
  175. teamCaster.Event:AddEvent(BattleEventName.SkillCast, function (skill)
  176. if skill.owner.camp == record.camp then
  177. curSkill = skill
  178. end
  179. end)
  180. teamCaster.Event:AddEvent(BattleEventName.RoleDamage, function (defRole, damage, bCrit, finalDmg)
  181. if curSkill and curSkill.teamSkillType == teamType and record.order == BattleLogic.CurOrder then
  182. record.damage = record.damage + finalDmg
  183. end
  184. end)
  185. BattleRecord[str] = record
  186. end
  187. end
  188. end
  189. function BattleMain.Simple()
  190. local fightData =
  191. {enemyData={{
  192. {ai={0},camp=1,size=1,element=1,passivity={{{309,309},{4,5,0,5,1,0.12},{4,5,0,9,1,0.1}},{{369},{18,1,0.2,2}},{{357},{0.2,3}},{{368},{2,4,0.2}},{{360},{0.2,4,4,0.1,2}},{{385},{2,22,1,0.01,10}}},passivityIds={"20523","20543","60423","60152","60332","60181","60042","810151"},position=1,professionId=2,property={"246","667874","667874","91279","1673","0","1716","0.21","0.05","1.094","0.03","0.29","1.79","0.04","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.03","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10006,round=0,skillArray={{"20501",0.8,{0},1,1400,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,2}}},{"20513",1.32,{0},1,2300,0,"0",{cd=1,isCannon=0,release=1,slot=1},{200004,{1,1,2},{261,0.6,1,1,0.2,2}}},{"20533",1.3,{0.233,0.233},3,2700,0,"0",{cd=3,isCannon=0,release=2,slot=3},{200002,{1,2.3,2},{265,4,5,0.4,1,1,2}}}},type=1},
  193. {ai={0},camp=1,size=1,element=3,passivity={{{308},{0.1,8,1,22,9,0.09,2,8,0.2,2}},{{369},{18,1,0.2,2}},{{357},{0.2,3}},{{368},{2,4,0.2}},{{360},{0.2,4,4,0.1,2}},{{378},{0.26,0.08,1.2}},{{385},{2,22,1,0.01,10}}},passivityIds={"12423","12443","60423","60152","60332","60181","60042","90302","810151"},position=2,professionId=2,property={"246","680858","680858","84703","1770","0","1727","0.21","0.05","1.094","0.03","0.3623","1.8291","0.04","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.03","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10036,round=0,skillArray={{"12401",0.85,{0},1,1900,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,2}}},{"12413",0.9,{0},1,2400,0,"0",{cd=3,isCannon=0,release=1,slot=1},{200921,{1,2.61,2},{246,3,0.1,2}}},{"12433",3,{0.3,0.3,0.3,0.3,0.3},6,6200,0,"0",{cd=3,isCannon=0,release=2,slot=3},{240000,{235,4,5,1,0.2},{1,2.07,2},{254,0.9,1,4,4,0.2,2,9}}}},type=3},
  194. {ai={0},camp=1,size=1,element=3,passivity={{{369},{18,1,0.2,2}},{{357},{0.2,3}},{{368},{2,4,0.2}},{{360},{0.2,4,4,0.1,2}},{{385},{2,4,1,10,10}}},passivityIds={"10323","60423","60152","60332","60181","60042","810351"},position=3,professionId=2,property={"246","674622","674622","86345","1747","0","1798","0.21","0.05","1.04","0.03","0.29","1.79","0.04","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.084","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10039,round=0,skillArray={{"10301",0.62,{0},1,1400,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,2}}},{"10313",0.6,{0.233,0.233,0.233,0.233},5,1800,0,"0",{cd=1,isCannon=0,release=1,slot=1},{200000,{1,1.14,2},{259,0.45,1,1,3,0.1,22,3,0.1,2}}},{"10333",2,{0.333,0.333},3,2800,0,"0",{cd=3,isCannon=0,release=2,slot=3},{200004,{1,1.36,2},{230,1,0.5,8,3}}}},type=3},
  195. {ai={0},camp=1,size=1,element=5,passivity={{{347},{5,1,0.15}},{{369},{17,1,0.2,2}},{{368},{2,4,0.2}},{{358},{12,0.3,0.2,1,2}},{{377},{0.031,5}},{{385},{2,23,1,0.01,10}}},passivityIds={"50723","50743","60413","60092","60332","60161","60052","90202","810251"},position=5,professionId=3,property={"246","829392","829392","90403","1924","0","1780","0.21","0.104","1.04","0.03","0.29","1.79","0.04","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.03","0.03","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10082,round=0,skillArray={{"50701",0.35,{0},1,1200,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,1}}},{"50713",0.73,{0},1,1400,0,"0",{cd=3,isCannon=0,release=1,slot=1},{200003,{1,1.71,1},{261,0.72,3,1,0.15,2}}},{"50733",0.6,{0.1,0.1,0.1,0.6,0.1,0.55},7,2700,0,"0",{cd=3,isCannon=0,release=2,slot=3},{400000,{264,3,1,6,3,0.2},{1,3.75,1},{216,0}}}},type=5},
  196. {ai={0},camp=1,size=1,element=4,passivity={{{330},{0.6,1,2,3,0.4,3}},{{369},{6,1,0.3,2}},{{365},{0.45,4}},{{366},{12,0.04}},{{377},{0.031,5}},{{385},{2,27,1,0.01,10}}},passivityIds={"40323","40343","60353","60232","60252","60241","60312","90202","810651"},position=8,professionId=4,property={"246","810794","810794","74754","1853","0","1811","0.1","0.16","1.04","0.03","0.18","1.57","0.15","0.054","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.03","0.14","0.0","0.0","0.0","0.0","0.0","0.054","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10061,round=0,skillArray={{"40301",0.44,{0},1,1300,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,2}}},{"40313",1.4,{0.15,0.15,0.15,0.15,0.35},6,2500,0,"0",{cd=3,isCannon=0,release=1,slot=1},{240000,{1,1.18,2},{254,0.76,1,2,4,0.4,2}}},{"40333",2.1,{0},1,2450,0,"0",{cd=3,isCannon=0,release=2,slot=3},{100000,{24,1,1.43},{211,1,1,22,1,0.25,2}}}},type=4},teamPassive={},teamSkill={}}},
  197. fightUnitData={{},{},{},{},{},{}},
  198. playerData={
  199. {camp=0,size=1,element=4,passivity={},passivityIds={"40423"},position=2,professionId=1,property={255,806590,806590,60525,1890,0,1696,0,0.23,1,0,0.1,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10062,skillArray={{"40401",0.4,{0},1,1300,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,1}}},{"40413",0.57,{0.2,0.2},3,2200,0,"0",{cd=3,isCannon=0,release=1,slot=1},{200000,{1,0.99,1},{3,0.3,1,2}}},{"40433",2,{0.4},2,3000,0,"0",{cd=3,isCannon=0,release=2,slot=3},{100000,{213,1,2,12,0.2}}}},type=1},
  200. {camp=0,size=1,element=4,passivity={{{331},{12,0.3}},{{332},{0.6,1.2,1}},{{302},{1,1,1,1}}},passivityIds={"40523","40533","40543"},position=4,professionId=3,property={255,608838,608838,96172,1802,0,1642,0,0.03,1,0,0.2,1.7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10063,skillArray={{"40501",0.4,{0},1,1100,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,1}}},{"40513",1.6,{0.15,0.15,0.15,0.15,0.15},6,3000,0,"0",{cd=1,isCannon=0,release=1,slot=1},{400000,{240,5,6,3,0.25},{260,1,1,23,3,0.4},{10,2.31,1,0.3}}}},type=1},
  201. {camp=0,size=1,element=4,passivity={{{338,338,339},{4,22,1,0.09},{4,15,1,0.09},{1,0.15}}},passivityIds={"41523","41543"},position=6,professionId=3,property={255,697917,697917,100826,1806,0,1672,0,0.03,1,0,0.1,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10057,skillArray={{"41501",0.45,{0},1,1300,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,1}}},{"41513",2.1,{0.15,0.15,0.15,0.15},5,5500,0,"0",{cd=3,isCannon=0,release=1,slot=1},{270000,{1,2.07,1}},{270321,{261,0.6,6,12,0.07,2}}},{"41533",0.75,{0.43,0.83,0.4},4,4200,0,"0",{cd=3,isCannon=0,release=2,slot=3},{200000,{1,1.51,1}},{200211,{211,1,1,6,3,0.2,2}},{200221,{3,0.5,4,2}}}},type=1},
  202. {camp=0,size=1,element=4,passivity={{{328},{1,2.41,1}}},passivityIds={"40123","40143"},position=7,professionId=4,property={255,727413,727413,89512,1837,0,1667,0,0.03,1,0,0.1,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10059,skillArray={{"40101",0.65,{0},1,1300,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,2}}},{"40113",1.05,{0},1,1600,0,"0",{cd=3,isCannon=0,release=1,slot=1},{100324,{208,1,1,0,6},{211,1,1,22,1,0.25,2},{236,4,9,1,0.2,2}}},{"40133",1.7,{0},1,2300,0,"0",{cd=3,isCannon=0,release=2,slot=3},{100000,{253,20,1,0.15,2,1,0.98}}}},type=1},
  203. {camp=0,size=1,element=4,passivity={{{334},{1,0.5,1,10,2}}},passivityIds={"40723","40743"},position=9,professionId=2,property={255,689833,689833,97764,1768,0,1682,0,0.03,1,0,0.1,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10065,skillArray={{"40701",0.53,{0},1,1200,0,"0",{cd=0,isCannon=0,release=1,slot=0},{400000,{1,1,2}}},{"40713",1.4,{0.08,0.08,0.24},4,3100,0,"0",{cd=3,isCannon=0,release=1,slot=1},{200000,{1,1.28,2},{254,0.5,1,5,4,0.1,3}}},{"40733",3.65,{0.397,0.66},3,6300,0,"0",{cd=3,isCannon=0,release=2,slot=3},{200000,{1,1.51,2},{230,5,0.45,1,2},{231,5,0.2,1,2}}}},type=1},firstCamp=0,outData="",teamPassive={},teamSkill={}},tankDataAppend={}}
  204. local op1 = {seed=1661757743, type=1, maxTime=300}
  205. BattleMain.Execute(op1,fightData,"")
  206. end
  207. --简单清除事件
  208. function BattleMain.SimpleClean()
  209. BattleLogic.Clear()
  210. end
  211. function BattleMain.ExecuteProtect(args, fightData, optionData)
  212. _seed = args.seed
  213. _type = args.type
  214. _maxRound = args.maxRound
  215. _fightData = fightData
  216. _optionData = optionData or {}
  217. --该开关用于输出战斗过程中的日志,用于验证前后端是否出现战斗不同步
  218. --BattleLogic.IsOpenBattleRecord = true
  219. local time = string.format("%d-%d-%d-%d-%d-%d",
  220. os.date("%Y"),
  221. os.date("%m"),
  222. os.date("%d"),
  223. os.date("%H"),
  224. os.date("%M"),
  225. os.date("%S"))
  226. Random.SetSeed(args.seed)
  227. BattleLogManager.WriteServerFightData(fightData, time, "BEGINP "..BattleLogic.Type)
  228. BattleLogic.Init(fightData, optionData, _maxRound)
  229. BattleLogic.Type = _type
  230. if _type == 9 or _type == 10 or _type == 11 or _type == 14 then
  231. AddRecord(fightData)
  232. end
  233. local _new_productor
  234. local function send(x)
  235. coroutine.yield(x)
  236. end
  237. local function productor()
  238. local i = 0
  239. while not BattleLogic.IsEnd do
  240. i = i + 1
  241. i = BattleLogic.Update()
  242. if i > 30000 then -- 防卡死跳锁次数
  243. BattleLogic.IsEnd=true
  244. end
  245. send(i)
  246. end
  247. end
  248. local function receive()
  249. local status,value = coroutine.resume( _new_productor)
  250. if status then
  251. --LogError("status true".." value "..value)
  252. else
  253. --LogError("status false".." value "..value)
  254. BattleLogic.IsEnd=true
  255. end
  256. -- end
  257. return value
  258. end
  259. local function consumer()
  260. while not BattleLogic.IsEnd do
  261. local i = receive() -- 从生产者那里得到物品
  262. end
  263. end
  264. BattleLogic.StartOrder()
  265. _new_productor = coroutine.create(productor)
  266. consumer()
  267. end
  268. function BattleMain.Execute(args, fightData, optionData)
  269. -- collectgarbage("collect")
  270. -- print("内存为:", collectgarbage("count"))--输出当前内存占用
  271. _seed = args.seed
  272. _type = args.type
  273. _maxRound = args.maxRound
  274. _fightData = fightData
  275. _optionData = optionData or {}
  276. --该开关用于输出战斗过程中的日志,用于验证前后端是否出现战斗不同步
  277. --BattleLogic.IsOpenBattleRecord = true
  278. local time = string.format("%d-%d-%d-%d-%d-%d",
  279. os.date("%Y"),
  280. os.date("%m"),
  281. os.date("%d"),
  282. os.date("%H"),
  283. os.date("%M"),
  284. os.date("%S"))
  285. local isError = false
  286. local errorCache
  287. if xpcall(function ()
  288. BattleMain.ExecuteProtect(args, fightData, optionData)
  289. end, function (err)
  290. isError = true
  291. errorCache = "error:\n"..debug.traceback(err).."\n"
  292. end) then
  293. -- BattleLogic.useTimes = 10
  294. BattleLogManager.WriteServerFightDataB(time, "NormalBEGINP")
  295. local resultList = {0, 0, 0, 0, 0, 0, 0, 0, 0}
  296. local enemyList = {0, 0, 0, 0, 0, 0, 0, 0, 0}
  297. local _mytibuList ={0, 0, 0, 0, 0, 0, 0, 0, 0}
  298. local _enemytibuList ={0, 0, 0, 0, 0, 0, 0, 0, 0}
  299. local _hpRecord ={}
  300. if BattleLogic.Result == 1 then --胜利记录我方剩余血量
  301. local arr = RoleManager.Query(function (r) return r.camp == 0 end, true)
  302. local _earr = RoleManager.Query(function (r) return r.camp == 1 end, true)
  303. for i=1, #arr do
  304. local pos = arr[i].position
  305. resultList[pos] = arr[i]:GetRoleData(RoleDataName.Hp)
  306. end
  307. for i=1, #_earr do
  308. local pos = _earr[i].position
  309. enemyList[pos] = _earr[i]:GetRoleData(RoleDataName.Hp)
  310. end
  311. for i=1, #resultList do
  312. local _set = "1my hp:"..tostring(resultList[i]).." "..i
  313. table.insert(_hpRecord,_set)
  314. end
  315. for i=1, #enemyList do
  316. local _set = "1enemy hp:"..tostring(enemyList[i]).." "..i
  317. table.insert(_hpRecord,_set)
  318. end
  319. elseif BattleLogic.Result == 0 then --失败记录敌方剩余血量
  320. local arr = RoleManager.Query(function (r) return r.camp == 1 end, true)
  321. local _earr = RoleManager.Query(function (r) return r.camp == 0 end, true)
  322. for i=1, #arr do
  323. local pos = arr[i].position
  324. resultList[pos] = arr[i]:GetRoleData(RoleDataName.Hp)
  325. end
  326. for i=1, #_earr do
  327. local pos = _earr[i].position
  328. enemyList[pos] = _earr[i]:GetRoleData(RoleDataName.Hp)
  329. end
  330. for i=1, #resultList do
  331. local _set = "0my hp:"..tostring(resultList[i]).." "..i
  332. table.insert(_hpRecord,_set)
  333. end
  334. for i=1, #enemyList do
  335. local _set = "0enemy hp:"..tostring(enemyList[i]).." "..i
  336. table.insert(_hpRecord,_set)
  337. end
  338. end
  339. -- 返回替补数据
  340. local arrTibu = RoleManager.QueryTibu(function (r) return r.camp == 0 end, true)
  341. local _earrTibu = RoleManager.QueryTibu(function (r) return r.camp == 1 end, true)
  342. if #arrTibu > 0 then
  343. resultList.mytibu=arrTibu[1]:GetRoleData(RoleDataName.Hp)
  344. if RoleManager.getTibuStateByCamp(0) == 4 or RoleManager.getTibuStateByCamp(0) == 2 then
  345. resultList.mytibuPos=arrTibu[1].position
  346. else
  347. resultList.mytibuPos = -1
  348. end
  349. end
  350. if #_earrTibu > 0 then
  351. resultList.enemytibu=_earrTibu[1]:GetRoleData(RoleDataName.Hp)
  352. if RoleManager.getTibuStateByCamp(1) == 4 or RoleManager.getTibuStateByCamp(1) == 2 then
  353. resultList.enemytibuPos=_earrTibu[1].position
  354. else
  355. resultList.enemytibuPos = -1
  356. end
  357. end
  358. -- BattleLogManager.WriteServerFightData(_hpRecord, time, "HPCHECKER")
  359. -- local resultChecker = RoleManager.getRecord()
  360. -- BattleLogManager.WriteServerFightData(resultChecker, time, "resultChecker")
  361. -- if BattleLogic.IsOpenBattleRecord then
  362. -- generateRecordFile()
  363. -- end
  364. -- print -----------------------------------------
  365. -- print("最终运行帧数:"..BattleLogic.CurFrame())
  366. local curRound, maxRound = BattleLogic.GetCurRound()
  367. if curRound > maxRound and _type == 9 then
  368. local playerDamage=0
  369. local enemyDamage=0
  370. for k,v in pairs(BattleRecord)do
  371. if v.camp == 0 then
  372. playerDamage = playerDamage + v.damage
  373. else
  374. enemyDamage = enemyDamage + v.damage
  375. end
  376. end
  377. resultList.result = playerDamage > enemyDamage and 1 or 0
  378. else
  379. resultList.result = BattleLogic.Result
  380. end
  381. if _type == 10 or _type == 11 or _type == 14 then -- 公会boss和车迟斗法boss返回伤害值
  382. local playerDamage=0
  383. for k,v in pairs(BattleRecord)do
  384. if v.camp == 0 then
  385. playerDamage = playerDamage + v.damage
  386. end
  387. end
  388. resultList.duration = playerDamage --TODO:公会boss的持续时间传递的是我方总伤害值
  389. else
  390. resultList.duration = BattleLogic.CurFrame() / BattleLogic.GameFrameRate
  391. end
  392. resultList.useTimes = BattleLogic.useTimes
  393. resultList.fightRound = curRound
  394. BattleLogManager.WriteServerFightDataB(time, "NormalENDP")
  395. -- BattleLogic.Clear()
  396. -- addBattleData()
  397. return resultList
  398. end
  399. if isError then --捕获异常,并输出错误日志
  400. BattleLogManager.WriteServerFightDataB(time, "ErrorBEGINP")
  401. -- BattleLogManager.WriteServerFightData(errorCache,time, "ErrorLog")
  402. BattleLogManager.WriteServerFightDataB(time, "ErrorENDP")
  403. end
  404. --WYLog("return -1")
  405. -- BattleLogic.Clear()
  406. return { result = -1 }
  407. end
  408. -- BattleMain.Execute({seed=1614579919, type=1, maxTime=300},{enemyData={{{ai={0},camp=1,element=0,monsterId=10013,passivity={},position=2,professionId=2,property={1,509,509,65,43,0,88,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10011,skillArray={{21201,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{21211,0.2,{0},1,800,0,1,{cd=1,isCannon=1,release=1,slot=1},{230000,{1,0.87,1},{255,0.2,1}}}},star=4,type=1},{ai={0},camp=1,element=0,monsterId=10015,passivity={},position=4,professionId=2,property={1,450,450,85,41,0,85,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10011,skillArray={{21401,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{21411,0.2,{0},1,800,0,1,{cd=-1,isCannon=1,release=1,slot=1},{400000,{260,1,2,9,1,0.2},{260,1,2,10,1,0.2},{1,1.8,1}}}},star=4,type=1},{ai={0},camp=1,element=0,monsterId=10049,passivity={},position=6,professionId=2,property={22,1395,1395,290,133,0,157,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10011,skillArray={{11301,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{11311,0.2,{0},1,800,0,1,{cd=-1,isCannon=1,release=1,slot=1},{200004,{1,0.8,2},{3,0.1,8,2}}}},star=4,type=1},{ai={0},camp=1,element=0,monsterId=10025,passivity={},position=7,professionId=2,property={22,1973,1973,332,180,0,238,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10011,skillArray={{30701,0.2,{0.1,0.1,0.1,0.1,0.1,0.1},7,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{30711,0.5,{0},1,800,0,1,{cd=-1,isCannon=0,release=1,slot=1},{100000,{24,1,0.58},{211,1,1,22,1,0.1,2}}}},star=5,type=1},firstCamp=0,outData="",teamPassive={},teamSkill={}}},fightUnitData={},fightUnitDataAppend={},playerData={{camp=0,element=1,passivity={},position=2,professionId=1,property={30,509,2565,348,241,0,279,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10007,skillArray={{20601,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{20611,0.2,{0},1,800,0,1,{cd=-3,isCannon=1,release=1,slot=1},{230000,{219,19,1,0.4,4,2,0.73,1,0.6}}}},star=5,type=1},{camp=0,element=3,passivity={},position=4,professionId=1,property={30,450,2616,340,249,0,280,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10038,skillArray={{10201,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{10211,0.2,{0},1,800,0,1,{cd=-1,isCannon=1,release=1,slot=1},{210000,{10,1.45,1,0.1}}}},star=5,type=1},{camp=0,element=5,passivity={},position=6,professionId=4,property={1,694,408,73,38,0,70,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10090,skillArray={{51301,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{51311,0.2,{0},1,800,0,1,{cd=1,isCannon=0,release=1,slot=1},{200000,{24,1,0.98},{211,0.2,1,23,3,0.2,2}}}},star=3,type=1},{camp=0,element=4,passivity={},position=7,professionId=2,property={30,1284,1284,254,142,0,166,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10071,skillArray={{41301,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{41311,0.2,{0},1,800,0,1,{cd=1,isCannon=1,release=1,slot=1},{200111,{1,2.28,2}}}},star=3,type=1},{camp=0,element=3,passivity={},position=9,professionId=1,property={30,1369,1369,182,148,0,157,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10052,skillArray={{11801,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{11811,0.2,{0},1,800,0,1,{cd=1,isCannon=1,release=1,slot=1},{400000,{1,2.18,1}}}},star=3,type=1},firstCamp=0,outData="",teamPassive={},teamSkill={}},tankDataAppend={}})
  409. -- BattleMain.Execute({seed=1616223616, type=1, maxTime=300},{enemyData={{{ai={0},camp=1,element=0,monsterId=10015,passivity={},position=2,professionId=2,property={1,450,450,85,41,0,85,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10011,skillArray={{21401,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{21411,0.2,{0},1,800,0,1,{cd=-1,isCannon=1,release=1,slot=1},{400000,{260,1,2,9,1,0.2},{260,1,2,10,1,0.2},{1,1.8,1}}}},star=4,type=1},{ai={0},camp=1,element=0,monsterId=10051,passivity={},position=4,professionId=2,property={1,514,514,73,44,0,79,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10011,skillArray={{11501,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{11511,0.2,{0},1,800,0,1,{cd=-1,isCannon=1,release=1,slot=1},{400000,{10,1.4,1,1}}}},star=4,type=1},firstCamp=0,outData="",teamPassive={},teamSkill={}}},fightUnitData={},fightUnitDataAppend={},playerData={{camp=0,element=3,passivity={},position=2,professionId=2,property={1,441,441,99,42,0,83,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10049,skillArray={{11301,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{11311,0.2,{0},1,800,0,1,{cd=-1,isCannon=1,release=1,slot=1},{200004,{1,0.8,2},{3,0.1,8,2}}}},star=4,type=1},{camp=0,element=3,passivity={},position=4,professionId=4,property={1,459,459,86,42,0,79,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10047,skillArray={{11101,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{11111,0.2,{0},1,800,0,1,{cd=-1,isCannon=1,release=1,slot=1},{400000,{1,1.7,2},{254,0.3,1,1,3,21,0.15,2}}}},star=4,type=1},{camp=0,element=4,passivity={},position=6,professionId=3,property={1,798,798,179,53,0,135,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10063,skillArray={{40501,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{40511,0.2,{0},1,800,0,1,{cd=-1,isCannon=1,release=1,slot=1},{400000,{240,5,6,3,0.15},{260,1,1,23,3,0.3},{1,1.61,1}}}},star=5,type=1},{camp=0,element=5,passivity={},position=7,professionId=1,property={1,507,507,73,42,0,89,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10088,skillArray={{51101,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{51111,0.2,{0},1,800,0,1,{cd=0,isCannon=1,release=1,slot=1},{200111,{1,1.68,1},{261,0.45,3,1,0.15,2}}}},star=4,type=1},{camp=0,element=1,passivity={},position=9,professionId=2,property={1,408,408,94,38,0,79,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=0,roleId=10014,skillArray={{21301,0.3,{0},1,1200,0,1,{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{21311,0.2,{0},1,800,0,1,{cd=1,isCannon=1,release=1,slot=1},{400000,{1,1.8,2},{261,0.3,4,1,0.15,2}}}},star=4,type=1},firstCamp=0,outData="",teamPassive={},teamSkill={}},tankDataAppend={}})
  410. -- BattleMain.Execute({seed=1616228411, type=17, maxTime=0},{enemyData={{{ai={0},camp=1,element=0,passivity={},position=2,professionId=2,property={"1","450","450","85","41","0","85","0.0","0.0","1.0","0.0","0.0","1.5","0.0","0.0","0.0","0.0","0.0","0","0","0","0","0","0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0"},quality=0,roleId=10011,round=0,skillArray={{"21401",0.3,{0},1,1200,0,"0",{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"21411",0.2,{0},1,800,0,"0",{cd=-1,isCannon=1,release=1,slot=1},{400000,{260,1,2,9,1,0.2},{260,1,2,10,1,0.2},{1,1.8,1}}}},type=1},{ai={0},camp=1,element=0,passivity={},position=4,professionId=2,property={"1","514","514","73","44","0","79","0.0","0.0","1.0","0.0","0.0","1.5","0.0","0.0","0.0","0.0","0.0","0","0","0","0","0","0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0"},quality=0,roleId=10011,round=0,skillArray={{"11501",0.3,{0},1,1200,0,"0",{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"11511",0.2,{0},1,800,0,"0",{cd=-1,isCannon=1,release=1,slot=1},{400000,{10,1.4,1,1}}}},type=1},teamPassive={},teamSkill={}}},fightUnitData={{},{},{},{}},playerData={{camp=0,element=3,passivity={},position=2,professionId=4,property={1,459,459,86,42,0,79,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10047,skillArray={{"11101",0.3,{0},1,1200,0,"0",{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{"11111",0.2,{0},1,800,0,"0",{cd=-1,isCannon=1,release=1,slot=1},{400000,{1,1.7,2},{254,0.3,1,1,3,21,0.15,2}}}},type=1},{camp=0,element=1,passivity={},position=4,professionId=3,property={1,809,809,168,56,0,125,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10008,skillArray={{"20701",0.3,{0},1,1200,0,"0",{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"20711",0.2,{0},1,800,0,"0",{cd=-1,isCannon=1,release=1,slot=1},{200000,{1,0.9,1},{254,0.3,1,2,3,0.2,2}}}},type=1},{camp=0,element=5,passivity={},position=7,professionId=1,property={1,507,507,73,42,0,89,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10088,skillArray={{"51101",0.3,{0},1,1200,0,"0",{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"51111",0.2,{0},1,800,0,"0",{cd=0,isCannon=1,release=1,slot=1},{200111,{1,1.68,1},{261,0.45,3,1,0.15,2}}}},type=1},{camp=0,element=1,passivity={},position=6,professionId=1,property={1,524,524,71,36,0,86,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10012,skillArray={{"21101",0.3,{0},1,1200,0,"0",{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"21111",0.2,{0},1,800,0,"0",{cd=1,isCannon=1,release=1,slot=1},{400000,{260,1,1,23,3,0.2},{1,2.1,1}}}},type=1},{camp=0,element=4,passivity={},position=9,professionId=2,property={1,406,406,74,36,0,75,0,0,1,0,0,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10071,skillArray={{"41301",0.3,{0},1,1200,0,"0",{cd=-2,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{"41311",0.2,{0},1,800,0,"0",{cd=1,isCannon=1,release=1,slot=1},{200111,{1,2.28,2}}}},type=1},firstCamp=0,outData="",teamPassive={},teamSkill={}},tankDataAppend={}})
  411. -- BattleMain.Execute({seed=1624324885, type=1, maxTime=20},{enemyData={{{ai={0},camp=1,element=1,passivity={{{315},{0.5,5,12,0.07,1}}},position=2,professionId=0,property={"92","5931","5931","758","632","0","598","0.0","0.0","1.0","0.0","0.0","0.0","0.0","1.0","1.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10007,round=0,skillArray={{"20601",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"20611",0.2,{0},1,800,0,"0",{cd=0,isCannon=1,release=1,slot=1},{230000,{219,1.09,1,0.4,4,2,0.73,1,0.6}}}},type=1},{ai={0},camp=1,element=2,passivity={{{321},{0.7,2,5,1,0.15}}},position=4,professionId=0,property={"92","4985","4985","1085","577","0","581","0.0","0.0","1.0","0.0","0.0","0.0","0.0","1.0","1.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10022,round=0,skillArray={{"30401",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{"30411",0.2,{0},1,800,0,"0",{cd=1,isCannon=1,release=1,slot=1},{400000,{1,1.72,2},{3,0.6,4,1}}},{"30431",0.833,{0.2,0.2,0.2},4,2430,0,"0",{cd=3,isCannon=0,release=2,slot=3},{200003,{1,1.31,2},{229,4,2,5,1,0.15}}}},type=2},{ai={0},camp=1,element=3,passivity={{{304},{14,3,0.2,2}}},position=6,professionId=0,property={"92","5149","5149","1038","612","0","433","0.0","0.0","1.0","0.0","0.0","0.0","0.0","1.0","1.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10044,round=0,skillArray={{"10801",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{"10811",0.2,{0},1,800,0,"0",{cd=1,isCannon=1,release=1,slot=1},{210000,{1,1.2,2},{211,0.35,1,14,3,0.35,2},{234,4,0.3,8,2}}},{"10831",0.2,{0},1,800,0,"0",{cd=3,isCannon=1,release=2,slot=3},{200003,{1,1.08,2},{258,0.28,2}}}},type=3},{ai={0},camp=1,element=4,passivity={{{302},{0.6,1,1,1}}},position=7,professionId=0,property={"92","5529","5529","1150","645","0","335","0.0","0.0","1.0","0.0","0.0","0.0","0.0","1.0","1.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10063,round=0,skillArray={{"40501",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"40511",0.2,{0},1,800,0,"0",{cd=1,isCannon=1,release=1,slot=1},{400000,{240,5,6,3,0.15},{260,1,1,23,3,0.3},{1,1.61,1}}}},type=4},{ai={0},camp=1,element=5,passivity={{{343,344},{1,0.1},{0.3,2,1,0.3}}},position=9,professionId=0,property={"92","5499","5499","1140","634","0","405","0.0","0.0","1.0","0.0","0.0","0.0","0.0","1.0","1.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10079,round=0,skillArray={{"50401",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{"50411",0.2,{0},1,800,0,"0",{cd=1,isCannon=1,release=1,slot=1},{200000,{1,0.75,2},{268,0.45,2,1,0.3}}},{"50431",0.2,{0},1,800,0,"0",{cd=3,isCannon=1,release=2,slot=3},{200000,{1,1.05,2},{270,0.1,1,1}}}},type=5},teamPassive={},teamSkill={}}},fightUnitData={{},{},{},{}},fightUnitDataAppend={},playerData={{camp=0,element=1,passivity={{{309,310},{4,5,2,9,1,0.2},{3,2,2,5,1,0.2}}},position=2,professionId=3,property={225,237145,237145,48533,1493,0,1431,0,0,1,0,0.25,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10002,skillArray={{"20101",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"20113",0.2,{0},1,1500,0,"0",{cd=1,isCannon=0,release=1,slot=1},{200321,{1,2.6,1},{248,5,0.2,3,1,2}}},{"20133",0.2,{0},1,800,0,"0",{cd=3,isCannon=1,release=2,slot=3},{270000,{1,2.07,1},{261,0.9,1,4,1,0.2,2},{3,0.25,9,2}}}},type=1},firstCamp=0,outData="",teamPassive={},teamSkill={}},tankDataAppend={}})
  412. -- BattleMain.Execute({seed=1626848262, type=1, maxTime=20},{enemyData={{{ai={},camp=1,element=4,passivity={},position=2,professionId=0,property={"1","216","216","95","44","0","0","0.0","0.0","1.0","0.0","0.0","0.0","0.0","1.0","1.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10067,round=0,skillArray={{"40901",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{"40911",0.2,{0},1,800,0,"0",{cd=1,isCannon=1,release=1,slot=1},{400000,{1,1.68,2},{3,0.2,1,2}}}},type=4},{ai={},camp=1,element=3,passivity={},position=4,professionId=0,property={"1","220","220","80","42","0","0","0.0","0.0","1.0","0.0","0.0","0.0","0.0","1.0","1.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10049,round=0,skillArray={{"11301",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,2}}},{"11311",0.2,{0},1,800,0,"0",{cd=1,isCannon=1,release=1,slot=1},{200004,{1,0.8,2},{3,0.1,8,2}}}},type=3},{ai={},camp=1,element=1,passivity={},position=6,professionId=0,property={"1","975","975","77","41","0","0","0.0","0.0","1.0","0.0","0.0","0.0","0.0","1.0","1.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10015,round=0,skillArray={{"21401",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"21411",0.2,{0},1,800,0,"0",{cd=1,isCannon=1,release=1,slot=1},{400000,{260,1,2,9,2,0.2},{260,1,2,10,2,0.2},{1,1.8,1}}}},type=1},teamPassive={},teamSkill={}}},fightUnitData={{},{},{},{},{},{}},fightUnitDataAppend={},playerData={{camp=0,element=1,passivity={},position=2,professionId=1,property={1,509,509,65,43,0,88,0,0,1,0,0.1,1.5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},quality=1,roleId=10013,skillArray={{"21201",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"21211",0.2,{0},1,800,0,"0",{cd=3,isCannon=1,release=1,slot=1},{230000,{1,0.87,1},{255,0.2,1}}}},type=1},firstCamp=0,outData="",teamPassive={},teamSkill={}},tankDataAppend={{ai={},camp=0,element=4,passivity={},position=9,professionId=0,property={"50","841","841","99","42","0","118","0.0","0.0","1.0","0.0","0.0","0.0","0.0","1.0","1.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0","0.0"},quality=0,roleId=10057,round=2,skillArray={{"41501",0.3,{0},1,1200,0,"0",{cd=0,isCannon=1,release=1,slot=0},{400000,{1,1,1}}},{"41531",0.833,{0.2,0.2,0.2},4,2430,0,"0",{cd=3,isCannon=0,release=2,slot=3},{200211,{211,1,1,6,3,0.1,2}},{200000,{1,1.05,1}},{200221,{3,0.3,4,2}}},{"41511",0.2,{0},1,800,0,"0",{cd=3,isCannon=1,release=1,slot=1},{270000,{1,1.44,1}},{270321,{261,0.4,6,12,0.07,2}}}},type=4}}})
  413. return BattleMain