init
This commit is contained in:
243
LogicServer/data/robot/AITree.lua
Normal file
243
LogicServer/data/robot/AITree.lua
Normal file
@@ -0,0 +1,243 @@
|
||||
-- 基础节点(中间节点)
|
||||
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 = "设置(移动)坐标点为挂机点",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
132
LogicServer/data/robot/RobotConfig.txt
Normal file
132
LogicServer/data/robot/RobotConfig.txt
Normal file
@@ -0,0 +1,132 @@
|
||||
--机器人的配置文件
|
||||
RobotConfig = {
|
||||
procName = "机器人1-任务",
|
||||
loginAccountLimit = 0, --登陆的账户的最大值,<=0表示不限制,否则表示所有accounts里的玩家都登陆
|
||||
groupLoginInterval = 5, -- 每组登录间隔时间,秒为单位。间隔太短容易导致多线程连接造成重复地址绑定的问题
|
||||
|
||||
serverIndex = 1, --模拟登陆的服务器的id,3服就填3
|
||||
|
||||
--session服务器的网关的地址列表
|
||||
--port最小端口号,maxPort最大端口号,会随机连接一个端口
|
||||
gates= {
|
||||
{ip= "127.0.0.1", port=9901, maxPort = 9901},
|
||||
},
|
||||
|
||||
--玩家的模拟的账户的列表,因为测试的账户的角色都是非常有规律的,比如wuyitest1 -wuyitest100,而且密码是一样的
|
||||
--同时为了支持单个账户测试的情况,
|
||||
-- name 表示账户的前缀/完整的账户
|
||||
-- pass 表示
|
||||
-- accountStartId 账户开始的ID,如果是-1表示不使用前缀表示法,使用完整账户表示法,比如helloworld
|
||||
-- accountEndId 账户结束的ID, 如果是-1表示不使用前缀表示法
|
||||
-- doWord = 1 职能:1挂机,2做任务
|
||||
accounts=
|
||||
{
|
||||
{name="robotac",pass="123456",accountStartId=1,accountEndId=500, doWord = 2},
|
||||
{name="robot_1",pass="asdasd",accountStartId=-1,accountEndId=-1, doWord = 2},
|
||||
{name="robotb",pass="123456",accountStartId=1,accountEndId=500, doWord = 2},
|
||||
{name="robotc",pass="123456",accountStartId=1,accountEndId=15, doWord = 2},
|
||||
{name="robotd",pass="123456",accountStartId=1,accountEndId=15, doWord = 2},
|
||||
{name="robote",pass="123456",accountStartId=1,accountEndId=15, doWord = 2},
|
||||
{name="robotf",pass="123456",accountStartId=1,accountEndId=15, doWord = 2},
|
||||
{name="robotg",pass="123456",accountStartId=1,accountEndId=15, doWord = 2},
|
||||
{name="roboth",pass="123456",accountStartId=1,accountEndId=15, doWord = 2},
|
||||
{name="roboti",pass="123456",accountStartId=1,accountEndId=15, doWord = 2},
|
||||
{name="robotj",pass="123456",accountStartId=1,accountEndId=15, doWord = 2},
|
||||
{name="robotk",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotl",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotm",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotn",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="roboto",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotp",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotq",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotr",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robots",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robott",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotu",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotw",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotx",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="roboty",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
{name="robotz",pass="123456",accountStartId=1,accountEndId=15, doWord = 1},
|
||||
},
|
||||
|
||||
-- 进入游戏后的地图分布。模拟玩家登陆后,自动选择一个地方传送过去,然后在此地图内部走动
|
||||
mappoints =
|
||||
{
|
||||
{sid=1, sname="新手村", level=1, x=474, y=312},
|
||||
{sid=1, sname="比奇", level=20, x=216, y=151},
|
||||
{sid=3, sname="盟重", level=1, x=216, y=151},
|
||||
{sid=216, sname="老虎滩", level=1, x=20, y=10},
|
||||
{sid=230, sname="木兰围场1", level=1, x=43, y=30},
|
||||
{sid=246, sname="训练场1", level=1, x=16, y=17},
|
||||
},
|
||||
|
||||
--[[
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(255,1) -> 发包检测用户名 密码
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(255,2) 向客户端下发用户列表
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(0,1) -> 登陆游戏
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,3)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,52)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(26,8)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(4,4)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,37)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(27,9)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(24,3)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(52,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(25,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(25,2)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,40)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,13)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,41)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(17,3)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(41,3)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(41,3)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(50,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(28,3)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(34,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,37)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,40)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(24,3)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(9,2)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,37)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(26,78)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(26,28)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(26,31)
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(5,1) ->
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(7,3)
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(8,2)
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(10,22)
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(6,1)
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(29,1)
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(29,1)
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(51,1)
|
||||
[2021-09-21 06:45:02]<[sock:9,idx:0] Recv(17,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(5,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,7)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(7,3)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(8,2)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(6,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(29,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(29,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(51,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(17,1)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,67)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,69)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,69)
|
||||
[2021-09-21 06:45:02]>[sock:9,idx:0] Send(0,2)
|
||||
[2021-09-21 06:45:04]>[sock:9,idx:0] Send(0,9)
|
||||
[2021-09-21 06:45:04]>[sock:9,idx:0] Send(0,9)
|
||||
[2021-09-21 06:45:04]>[sock:9,idx:0] Send(0,9)
|
||||
]]
|
||||
|
||||
}
|
||||
7
LogicServer/data/robot/langRobotconfig.txt
Normal file
7
LogicServer/data/robot/langRobotconfig.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
--机器人发言的配置
|
||||
RobotChatConfig =
|
||||
{
|
||||
talkNum = 3, --每个发言周期的发言的机器人的数目
|
||||
minInterval = 10, --每个发言周期 时间间隔随机 下限 秒
|
||||
maxInterval = 20, --每个发言周期 时间间隔随机 上限 秒
|
||||
}
|
||||
Reference in New Issue
Block a user