package.path = package.path ..';luafight\\?.lua'; require("Modules.Battle.Logic.Misc.BattleDefine") require("Modules.Battle.Logic.Misc.BattleUtil") require("Modules.Battle.Logic.Misc.BattleQueue") require("Modules.Battle.Logic.Misc.BattleDictionary") require("Modules.Battle.Logic.Base.BattleEvent") require("Modules.Battle.Logic.Base.Random") require("Modules.Battle.Logic.Base.RoleData") require("Modules.Battle.Logic.Base.Buff") require("Modules.Battle.Logic.Base.Skill") require("Modules.Battle.Logic.Base.Passivity") require("Modules.Battle.Logic.BattleLogic") require("Modules.Battle.Logic.RoleLogic") --捕获异常,并输出错误日志 local function error( err ) local time = string.format("%d-%d-%d-%d-%d-%d", os.date("%Y"), os.date("%m"), os.date("%d"), os.date("%H"), os.date("%M"), os.date("%S")) local file = io.open("LogError/"..time..".txt", "a") file:write(debug.traceback(err)) io.close(file) end --测试战斗数据 local test_fight_data={ playerData = { [1] = { --角色id roleId = 10001, --职业id 0 无职业 1 秘法;2 天罚 3 武卫;4 玄策 5 生花 professionId = 4, --角色类型 1人形 2亡灵 3动物 4魔人 type = 1, --品质 1普通 2精英 3首领 4史诗 quality = 1, --camp 0我方, 1敌方 camp = 0, --skill = {cd, {目标id1, 效果时间, 效果1, 效果2, ...},{目标id2, 效果时间, 效果3, 效果4, ...}, ...} --效果 = {效果类型id, 效果参数1, 效果参数2, ...} skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, --同skill superSkill = { 0.5, {20011, 0.7, {1, 0.1, 1}} }, --passivity = {被动1, 被动2, ...} --被动 = {被动类型id1, 被动参数1, 被动参数2, ...} passivity = {}, --属性 {等级,生命,最大生命,攻击力,护甲,魔抗,速度,伤害加成系数(%,伤害减免系数(%),命中率(%),闪避率(%),暴击率(%),暴击伤害系数(%),治疗加成系数(%) -- ,火系伤害加成系数(%),火系伤害减免系数(%),冰系伤害加成系数(%),冰系伤害减免系数(%),雷系伤害加成系数(%),雷系伤害减免系数(%),风系伤害加成系数(%) -- ,风系伤害减免系数(%),地系伤害加成系数(%),地系伤害减免系数(%),暗系伤害加成系数(%),暗系伤害减免系数(%)} property = {1, 2390, 2390, 169, 271, 95, 176, 0, 0, 0.3, 0.15, 0.3, 1.5, 1, 0.05, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0}, }, [2] = { roleId = 10001, professionId = 4, type = 1, quality = 1, camp = 0, --阵营 0我方 1敌方 skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, passivity = { --{201011, {30, 1, 0.2, 24, 0}}, --passivity = {被动1, 被动2, ...} --被动 = {被动id, 被动参数1, 被动参数2, ...} }, property = {1, 10000, 10000, 169, 271, 95, 176, 0, 0, 0.3, 0.15, 0.3, 1.5, 1, 0.05, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0}, }, [3] = { roleId = 10001, professionId = 4, type = 1, quality = 1, camp = 0, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, passivity = { --{201011, {30, 1, 0.2, 24, 0}}, }, property = {1, 10000, 10000, 169, 271, 95, 176, 0, 0, 0.3, 0.15, 0.3, 1.5, 1, 0.05, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0}, }, [4] = { roleId = 10001, professionId = 4, type = 1, quality = 1, camp = 0, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, passivity = { --{201011, {30, 1, 0.2, 24, 0}}, }, property = {1, 10000, 10000, 169, 271, 95, 176, 0, 0, 0.3, 0.15, 0.3, 1.5, 1, 0.05, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0}, }, [5] = { roleId = 10001, professionId = 4, type = 1, quality = 1, camp = 0, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = {0.5, {20011, 0.7,{1, 0.1, 1}} }, passivity = { --{201011, {30, 1, 0.2, 24, 0}}, }, property = {1, 10000, 10000, 169, 271, 95, 176, 0, 0, 0.3, 0.15, 0.3, 1.5, 1, 0.05, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0}, }, }, enemyData = { [1] = { [1] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {1, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [2] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {9, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [3] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {7, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [4] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {5, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [5] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {3, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, }, [2] = { [1] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {1, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [2] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {9, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [3] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {7, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [4] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {9, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [5] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {7, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, }, [3] = { [1] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {1, 1044, 1044, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [2] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {9, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, [3] = { roleId = 1, professionId = 2, type = 1, quality = 1, camp = 1, skill = { 0.5, {20011, 0.7,{1, 0.1, 1}} }, superSkill = { }, passivity = { --{206021, {1,1}}, }, property = {7, 144, 144, 285, 152, 53, 154, 0, 0, 0.7, 0.35, 0.3, 1.5, 1, 0, 0, 0, 0, 0.05, 0, 0, 0, 0, 0, 0.05, 0}, }, } } } local optionData = { {14,1,0}, --{第几帧,操作类型,操作参数} {132,2,3}, {152,2,5}, {178,3,2}, {219,2,4}, {260,3,1}, {287,2,2}, {312,3,5}, {467,1,1}, } local BattleMain = {} function BattleMain.Execute(seed, fightData, optionData) --该开关用于输出战斗过程中的日志,用于验证前后端是否出现战斗不同步 --BattleLogic.IsOpenBattleRecord = true Random.SetSeed(seed) BattleLogic.Init(fightData, optionData) BattleLogic.StartOrder() if xpcall(function () while not BattleLogic.IsEnd do BattleLogic.Update() end end, error) then local resultList = {} if BattleLogic.Result == 1 then --胜利记录我方剩余血量 local arr = BattleLogic.Query(function (r) return r.camp == 0 end, true) for i=1, #arr do resultList[i] = arr[i]:GetRoleData(RoleDataName.Hp) end elseif BattleLogic.Result == 0 then --失败记录敌方剩余血量 local arr = BattleLogic.Query(function (r) return r.camp == 1 end, true) for i=1, #arr do resultList[i] = arr[i]:GetRoleData(RoleDataName.Hp) end end resultList.result = BattleLogic.Result -- print ----------------------------------------- --for i=1, #resultList do -- print("hp:"..resultList[i]) --end --print("最终运行帧数:"..BattleLogic.CurFrame()) --print("result:"..BattleLogic.Result) return resultList --[[ --TODO:需要导入cjson库 --local json = require("cjson") --local time = string.format("%d-%d-%d-%d-%d-%d", -- os.date("%Y"), -- os.date("%m"), -- os.date("%d"), -- os.date("%H"), -- os.date("%M"), -- os.date("%S")) --local file = io.open("BattleRecord/"..time..".txt", "a") --file:write(json.encode(test_fight_data)) --io.close(file) ]] end return { result = -1 } end --BattleMain.Execute(932590676, test_fight_data, optionData) return BattleMain --> hp:2084 --> hp:9934 --> hp:9781 --> hp:9868 --> hp:9752 --> 最终运行帧数:2735 --> result:1 (1胜,0负,-1战斗异常)