244 lines
10 KiB
Lua
Executable File
244 lines
10 KiB
Lua
Executable File
-- 基础节点(中间节点)
|
|
ANBT_SELECT = 1 --选择节点
|
|
ANBT_SEQUENCE = 2 --顺序节点
|
|
ANBT_PARALLEL = 3 --并列节点
|
|
ANBT_NOT = 4 --取反节点
|
|
ANBT_FINAL = ANBT_NOT
|
|
|
|
-- 判断节点(叶子节点)
|
|
ANCT_IsDeath = ANBT_FINAL + 1 --是否死亡
|
|
ANCT_HasTask = ANBT_FINAL + 2 --是否有可接任务
|
|
ANCT_CanTask = ANBT_FINAL + 3 --是否能进行任务
|
|
ANCT_HasFlyShoes = ANBT_FINAL + 4--是否还有小飞鞋
|
|
ANCT_HasMonster = ANBT_FINAL + 5 --周围是否有怪物
|
|
ANCT_CanAttack = ANBT_FINAL+6 --能否攻击目标
|
|
ANCT_TarInAttkRange = ANBT_FINAL+7--目标在可攻击范围内
|
|
ANCT_MovePointIsNearTar = ANBT_FINAL+8 --(移动)坐标点为目标旁边
|
|
ANCT_MovePointIsPosi = ANBT_FINAL+9 --(移动)坐标点为当前位置
|
|
ANCT_PiCanArrive = ANBT_FINAL+10 --(移动)坐标点为可到达的
|
|
ANCT_CanNextAction = ANBT_FINAL+11--能进行下一个动作
|
|
ANCT_FINAL = ANCT_CanNextAction
|
|
|
|
-- 功能节点(叶子节点)
|
|
ANFT_ReturnRelive = ANCT_FINAL + 1 --请求回城复活
|
|
ANFT_YBRelive = ANCT_FINAL + 2 --请求元宝复活
|
|
ANFT_MovePoint = ANCT_FINAL + 3 --往 (移动)坐标点 移动一步
|
|
ANFT_SetTarMonster = ANCT_FINAL + 4 --设置目标 - 怪物(如果目标死亡或不存在了)
|
|
ANFT_SetTarItem = ANCT_FINAL + 5 --设置目标 - 物品
|
|
ANFT_SetMovePointAsHook = ANCT_FINAL + 6 --设置(移动)坐标点 - 挂机点(并寻路)
|
|
ANFT_SetMovePointAsTar = ANCT_FINAL + 7 --设置(移动)坐标点 - 目标旁(并寻路)
|
|
ANFT_AttackTarget = ANCT_FINAL + 8 --攻击目标
|
|
ANFT_ChangeTarMonster = ANCT_FINAL+9--改变目标 - 怪物(非本目标)
|
|
ANFT_SetHook = ANCT_FINAL+10 --设置挂机点
|
|
|
|
AITreeConfig =
|
|
{
|
|
ntype = ANBT_SELECT,
|
|
desc = "根节点-任务/挂机",
|
|
nodes =
|
|
{
|
|
[1] =
|
|
{
|
|
ntype = ANBT_SEQUENCE,
|
|
desc = "如果死亡,则回城复活",
|
|
nodes=
|
|
{
|
|
[1]=
|
|
{
|
|
ntype = ANCT_IsDeath,
|
|
desc = "死亡了,要复活",
|
|
},
|
|
[2]=
|
|
{
|
|
ntype = ANFT_ReturnRelive,
|
|
desc = "回城复活",
|
|
}
|
|
}
|
|
},
|
|
[2] =
|
|
{
|
|
ntype = ANBT_SEQUENCE,
|
|
desc = "有可进行任务,则跑任务",
|
|
nodes=
|
|
{
|
|
[1]=
|
|
{
|
|
ntype = ANCT_CanTask,
|
|
desc = "是否有可进行任务",
|
|
},
|
|
}
|
|
},
|
|
[3] =
|
|
{
|
|
ntype = ANBT_SELECT,
|
|
desc = "否则,挂机打怪/跑挂机点",
|
|
nodes =
|
|
{
|
|
[1]=
|
|
{
|
|
ntype = ANBT_SEQUENCE,
|
|
desc = "周围有怪物,则去打怪",
|
|
nodes=
|
|
{
|
|
[1] =
|
|
{
|
|
ntype = ANCT_HasMonster,--这里要优化,如果周围有“可攻击/可到达”的怪物
|
|
desc = "周围如果有怪物",
|
|
},
|
|
[2] =
|
|
{
|
|
ntype = ANCT_CanNextAction,
|
|
desc = "动作超时检查",
|
|
},
|
|
[3] =
|
|
{
|
|
ntype = ANFT_SetTarMonster,
|
|
desc = "设置目标怪物",
|
|
},
|
|
[4] =
|
|
{
|
|
ntype = ANBT_SELECT,
|
|
desc = "如果一直无法接近目标,则切换,否则移动到怪物旁打怪",
|
|
nodes =
|
|
{
|
|
[1]=
|
|
{
|
|
ntype = ANBT_SEQUENCE,
|
|
desc = "检查切换目标",
|
|
nodes =
|
|
{
|
|
[1] =
|
|
{
|
|
ntype = ANBT_NOT,
|
|
desc = "",
|
|
node = { ntype = ANCT_PiCanArrive, desc = "如果目标不能到达" }
|
|
},
|
|
[2] =
|
|
{
|
|
ntype = ANFT_ChangeTarMonster,
|
|
desc = "切换怪物目标",
|
|
}
|
|
}
|
|
},
|
|
[2]=
|
|
{
|
|
ntype = ANBT_SELECT,
|
|
desc = "移动到怪物旁打怪",
|
|
nodes =
|
|
{
|
|
[1]=
|
|
{
|
|
ntype = ANBT_SEQUENCE,
|
|
desc = "打怪",
|
|
nodes =
|
|
{
|
|
[1] =
|
|
{
|
|
ntype = ANCT_TarInAttkRange,
|
|
desc = "目标在可攻击范围",
|
|
},
|
|
[2] =
|
|
{
|
|
ntype = ANFT_AttackTarget,
|
|
desc = "攻击目标",
|
|
}
|
|
}
|
|
},
|
|
[2]=
|
|
{
|
|
ntype = ANBT_SELECT,
|
|
desc = "追怪",
|
|
nodes =
|
|
{
|
|
[1] =
|
|
{
|
|
ntype = ANBT_SEQUENCE,
|
|
desc = "走向怪物",
|
|
nodes =
|
|
{
|
|
[1] =
|
|
{
|
|
ntype = ANCT_MovePointIsNearTar,
|
|
desc = "(移动)坐标点为目标附近",
|
|
},
|
|
[2] =
|
|
{
|
|
ntype = ANFT_MovePoint,
|
|
desc = "往怪物移动一次",
|
|
}
|
|
}
|
|
},
|
|
[2] =
|
|
{
|
|
ntype = ANFT_SetMovePointAsTar,
|
|
desc = "设置(移动)坐标点为目标(怪物)",
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
[2]=
|
|
{
|
|
ntype = ANBT_SEQUENCE,
|
|
desc = "没怪物,则跑挂机点",
|
|
nodes=
|
|
{
|
|
[1] =
|
|
{
|
|
ntype = ANBT_NOT,
|
|
desc = "",
|
|
node = { ntype = ANCT_HasMonster, desc = "周围如果没有怪物" }
|
|
},
|
|
[2] =
|
|
{
|
|
ntype = ANFT_SetHook,
|
|
desc = "设置挂机点",
|
|
},
|
|
[3] =
|
|
{
|
|
ntype = ANCT_CanNextAction,
|
|
desc = "动作超时检查",
|
|
},
|
|
[4] =
|
|
{
|
|
ntype = ANBT_SELECT,
|
|
desc = "跑挂机点",
|
|
nodes =
|
|
{
|
|
[1] =
|
|
{
|
|
ntype = ANBT_SEQUENCE,
|
|
desc = "走向挂机点",
|
|
nodes =
|
|
{
|
|
[1] =
|
|
{
|
|
ntype = ANBT_NOT,
|
|
desc = "",
|
|
node = { ntype = ANCT_MovePointIsPosi, desc = "还没走到挂机点" }
|
|
},
|
|
[2] =
|
|
{
|
|
ntype = ANFT_MovePoint,
|
|
desc = "往挂机点移动一步",
|
|
}
|
|
}
|
|
},
|
|
[2] =
|
|
{
|
|
ntype = ANFT_SetMovePointAsHook,
|
|
desc = "设置(移动)坐标点为挂机点",
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|