miduo_server/luafight/BattleMain.lua

418 lines
14 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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战斗异常)