miduo_server/luafight/BattleMain.lua

418 lines
14 KiB
Lua
Raw Normal View History

2019-03-12 14:05:45 +08:00
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 -----------------------------------------
2019-03-12 17:01:40 +08:00
--for i=1, #resultList do
-- print("hp:"..resultList[i])
--end
--print("最终运行帧数:"..BattleLogic.CurFrame())
--print("result:"..BattleLogic.Result)
2019-03-12 14:05:45 +08:00
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
2019-03-12 17:01:40 +08:00
--BattleMain.Execute(932590676, test_fight_data, optionData)
2019-03-12 14:05:45 +08:00
return BattleMain
--> hp:2084
--> hp:9934
--> hp:9781
--> hp:9868
--> hp:9752
--> 最终运行帧数2735
--> result:1 (1胜0负-1战斗异常)