由battle_ai.c研究关于怪物的战斗AI在enemy1.txt的设定

这裡的AI不是指练功的时你的宠物的AI
而是野外战斗、任务战斗NPC的AI

以下是程式码的部分

#define B_AI_NORMAL_ATTACKOPTION "at" //普通攻击设定
#define B_AI_NORMAL_GUARDOPTION "gu" //防御设定
#define B_AI_NORMAL_MAGICOPTION "ma" //魔法设定
#define B_AI_NORMAL_ESCAPEOPTION "es" //逃脱设定
#define B_AI_NORMAL_WAZAOPTION "wa" //使用技能设定
#ifdef _ENEMY_ATTACK_AI
  #define B_AI_NORMAL_RANDAOPTION "rn" //随机设定
  #define B_AI_NORMAL_RANDOMOPTIONNUM 1 //rn 可以设定的参数有1个
#endif

#define B_AI_NORMAL_ATTACKSUBOPTIONNUM 3 //at 可以设定的参数有3个
#define B_AI_NORMAL_GUARDSUBOPTIONNUM 1 //gu 可以设定的参数有1个
#define B_AI_NORMAL_MAGICSUBOPTIONNUM 1 // ma 可以设定的参数有1个
#define B_AI_NORMAL_ESCAPESUBOPTIONNUM 1 //es 可以设定的参数有1个
#define B_AI_NORMAL_WAZASUBOPTIONNUM 7 //wa 可以设定的参数有7个


举个例来说 萨登,at:2;4;4|gu:0|es:0|rn:|wa:3;2;1;2;0;0;0;

at = 普通攻击设定
at:2;4;4 => at[0] = 2、at[1] = 4、at[2] = 4

//at[0] 设定值可以是0与正整数,当at[0]=0的时候,几乎就是不进行普通攻击,而数字越高越容易进行普通攻击 (若搭配其他参数设定的话)

//at[1]可以用的参数设定是 1~4
#define B_AI_NORMAL_TARGET_ALL 1 //不分玩家人物或者宠物,没有优先攻击
#define B_AI_NORMAL_TARGET_PLAYER 2 //先攻击玩家人物
#define B_AI_NORMAL_TARGET_PET 3 //先攻击玩家宠物
#ifdef _ENEMY_ATTACK_AI
  #define B_AI_NORMAL_TARGET_LEADER 4 //先攻击玩家队长人物
#endif

//at[2]可以用的参数设定是 1~7
//会从at[1]所选出的种类再由以下条件选择先攻击谁
#define B_AI_NORMAL_SELECT_RANDOM 1 //随机攻击一个
#define B_AI_NORMAL_SELECT_HP_MAX 2 //先攻击血最多的
#define B_AI_NORMAL_SELECT_HP_MIN 3 //先攻击血最少的
#ifdef _ENEMY_ATTACK_AI
  #define B_AI_NORMAL_SELECT_STR_MAX 4 //先攻击力量最高的
  #define B_AI_NORMAL_SELECT_DEX_MAX 5 //先攻击敏捷最高的
  #define B_AI_NORMAL_SELECT_DEX_MIN 6 //先攻击敏捷最低的
  #define B_AI_NORMAL_SELECT_ATT_SUBDUE 7 //先攻击有利的属性
#endif

gu = 

 

ma = 

 

es = 

 

wa = 

 

rn = 随机的设定

rn 可以设定1个参数,共0、1两种,不设定的话预设是1
当at[2]设定的对象都没了,攻击对象要怎麽随机
 


免责声明:本内容来于网络,不代表本站的观点和立场。

相关阅读

  • group1.txt详解

    group1.txt详解

    【教学名称】:group1.txt详解【用途说明】:遇怪时会遇到的怪物  看一下教学因该会懂喔^^【教学开始】: 沙姆岛魔兽,1509,19421,19422,5146,,,,,,,,,,1,,,,,,,,,这是2诶人龙...

    2019.11.06 10:53:27作者:石器
  • skillcode.txt详解

    skillcode.txt详解

    【教学名称】:skillcode.txt详解【用途说明】:限制某些技能只给该宠物学习【教学开始】: 以下为例:首先在skillcode加入 限制捐献只给扑满乌力学习的条件如下资料:扑满乌力 1558 725 Aa&pets...

    2019.11.06 10:53:05作者:石器
  • 修改代码仿石器官方显示经验值

    修改代码仿石器官方显示经验值

    我不知道是不是目前的端都是仿官方化的经验值我的端是经验直跑完升级后NEXT那栏会显示的不是累计经验值而是下ㄧ级跟前ㄧ级的经验差然后我的上面经验值则变回0正服是下面是下次升级所需的总累计经验值上面是目前你所得到的累计经验值原本以为要动很多档案...

    2019.11.06 10:52:38作者:石器时代
  • 老石器实现自动寻路的相关代码

    老石器实现自动寻路的相关代码

    距离估计与实际值越接近,估价函数取得就越好例如对于几何路网来说,可以取两节点间曼哈顿距离做为距离估计,即f=g(n) + (abs(dx - nx) + abs(dy - ny));这样估价函数f(n)在g(n)一定的情况下,会或多或少的受...

    2019.11.06 10:51:53作者:石器
  • 发属于自己的石器时代,都需要哪一些东西?

    发属于自己的石器时代,都需要哪一些东西?

    「第一篇」由于很多原因,所以我决定用源代码进行二次开发学习,创造属于自己的石器时代的版本和功能。相信很多朋友也曾经想过,如果能够拥有一套完全属于自己的石器时代的版本,该是多么自由与方便。这里说的完全属于石器时代的版本,具体应该包括哪一些?很...

    2019.11.06 10:51:15作者:石器时代
  • 用 SDL2 处理石器精灵图

    用 SDL2 处理石器精灵图

      一个精灵图,由多个固定间隔的图标组成。利用精灵图的好处就是不必将图标逐个读入内存进行操作。我们可以将精灵图中需要的部分用一个个矩形截取下来,然后再输出到渲染器上。环境:SDL2 + VC++2015下面的代码将打开sprite...

    2019.11.06 10:50:43作者:石器