lua 游戏架构 之 游戏 AI (八)ai_tbl 行为和优先级

定义一系列的AI行为类型和它们的优先级,以及一个映射表`ai_tbl`来关联每种AI行为类型与对应的脚本文件和优先级。以下是对代码的详细解释:

lua 游戏架构 之 游戏 AI (一)ai_base-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/heyuchang666/article/details/140624481?spm=1001.2014.3001.5501lua 游戏架构 之 游戏 AI (二)ai_base_move_base-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/heyuchang666/article/details/140624583?spm=1001.2014.3001.5501

lua 游戏架构 之 游戏 AI (三)ai_attack-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/heyuchang666/article/details/140625113?spm=1001.2014.3001.5501

定义AI行为类型
代码中首先定义了一系列的AI行为类型,使用枚举的方式表示不同的AI行为。例如:

  • - `eAType_BASE` 表示基础AI行为,数值为0。
  • - `eAType_IDLE` 表示空闲状态,数值为5。
  • - `eAType_ATTACK` 表示攻击行为,数值为50。
  • - `eAType_DEAD` 表示死亡状态,数值为130。

这些类型用于区分不同的AI行为模式,每个类型都有一个唯一的数值标识。

定义优先级
接着定义了两个优先级常量:

  • - `eAI_Priority_Low` 表示低优先级,数值为0。
  • - `eAI_Priority_High` 表示高优先级,数值为1。

优先级用于控制AI行为的执行顺序,高优先级的行为会优先执行。

AI行为映射表 `ai_tbl`

  • `ai_tbl` 是一个Lua表,用于映射AI行为类型到具体的脚本文件和它们的优先级。表中的每个元素是一个表,包含`script`和`priority`两个字段:
  • - `script` 字段是一个字符串,表示实现该AI行为的脚本文件名。
  • - `priority` 字段是一个数值,表示该AI行为的优先级。

例如:

[ eAType_BASE ] = { script = "ai_base", priority = eAI_Priority_High },
[ eAType_IDLE ] = { script = "ai_idle", priority = eAI_Priority_High },
[ eAType_ATTACK ] = { script = "ai_attack", priority = eAI_Priority_Low },

这意味着当AI需要执行基础行为时,会加载`ai_base`脚本,并且由于其高优先级,它会优先于其他低优先级的行为执行。类似地,`eAType_IDLE` 表示空闲状态,也会加载`ai_idle` 脚本,并具有高优先级。而`eAType_ATTACK` 表示攻击行为,会加载`ai_attack` 脚本,但具有低优先级。

总结
这段代码为游戏的AI系统提供了一个灵活的框架,根据不同的AI行为分配不同的处理脚本和优先级。通过这种方式,可以轻松地管理和扩展AI的行为逻辑,同时保持代码的组织性和可维护性。

----------------------------------------------------------------
eAType_BASE							=   0;
eAType_IDLE							=   5;
eAType_IDLE_NPC						=  10;
eAType_IDLE_STAND					=  11;
eAType_IDLE_JUST_STAND				=  12;
eAType_GUARD						=  13;
eAType_AUTO_NORMALATTACK			=  14;
eAType_AUTOFIGHT_FIND_WAY			=  15;
eAType_AUTOFIGHT_SKILL				=  16;
eAType_AUTOFIGHT_STUNT_SKILL		=  17;
eAType_AUTOFIGHT_MISSION_SKILL		=  18;
eAType_AUTOFIGHT_CAST_FIND_TARGET	=  19
eAType_MERCENARY_AUTO_FIND_TARGET	=  20;
eAType_MOVE							=  21;
eAType_SKILLENTITY_MOVE				=  22;
eAType_NETWORK_SKILLENTITY_MOVE		=  23;
eAType_AUTO_MOVE					=  30;
eAType_NETWORK_MOVE					=  31;
eAType_FOLLOW						=  40;
eAType_FOLLOW_ARENA					=  41;
eAType_ATTACK						=  50;
eAType_NETWORK_ATTACK				=  51;
eAType_Blink						=  55;
eAType_MANUAL_ATTACK				=  60;
eAType_FIND_TARGET					=  70;
eAType_AUTOFIGHT_FIND_TARGET		=  71;
eAType_ARENA_MERCENARY_FIND_TARGET	=  72;
eAType_AUTO_SKILL					=  80;
eAType_MANUAL_SKILL					=  90;
eAType_FORCE_FOLLOW					= 100;
eAType_FEAR							= 105;
eAType_SPA							= 110;
--eAType_RUSH						= 119;
eAType_SHIFT						= 131;
eAType_RETREAT						= 121;
eAType_DEAD							= 130;
eAType_DEAD_MERCENARY				= 135;
eAType_DEAD_REVIVE					= 140;
eAType_NETWORK_CACHE				= 190;
eAType_AUTOFIGHT_MERCENARY_SKILL	= 199;
eAType_AUTO_SUPERMODE 				= 200;
eAType_AUTOFIGHT_TRIGGER_SKILL		= 201;
eAType_PRECOMMOND					= 300;
eAType_AUTOFIGHT_RETURN				= 310;
eAType_PET_CHECK_ALIVE				= 500;
eAType_DAMAGE_CAR					= 501;
eAType_CHECK_WATER                  = 502;------------------------------------------------------
eAI_Priority_Low	= 0;
eAI_Priority_High	= 1;------------------------------------------------------
ai_tbl =
{[eAType_BASE]						= { script = "ai_base",							priority = eAI_Priority_High },[eAType_GUARD]						= { script = "ai_guard",						priority = eAI_Priority_Low },[eAType_IDLE_STAND]					= { script = "ai_idle_stand",					priority = eAI_Priority_High },[eAType_IDLE_JUST_STAND]			= { script = "ai_idle_just_stand",				priority = eAI_Priority_High },[eAType_IDLE]						= { script = "ai_idle",							priority = eAI_Priority_High },[eAType_MOVE]						= { script = "ai_move",							priority = eAI_Priority_High },[eAType_AUTO_MOVE]					= { script = "ai_auto_move",					priority = eAI_Priority_High },[eAType_FOLLOW]						= { script = "ai_follow",						priority = eAI_Priority_Low },[eAType_FOLLOW_ARENA]				= { script = "ai_follow_arena",					priority = eAI_Priority_Low },[eAType_MERCENARY_AUTO_FIND_TARGET]	= { script = "ai_mercenary_auto_find_target",	priority = eAI_Priority_Low },[eAType_Blink]						= { script = "ai_blink",						priority = eAI_Priority_Low },[eAType_ATTACK]						= { script = "ai_attack",						priority = eAI_Priority_Low },[eAType_NETWORK_ATTACK]				= { script = "ai_network_attack",				priority = eAI_Priority_Low },[eAType_MANUAL_ATTACK]				= { script = "ai_manual_attack",				priority = eAI_Priority_Low },[eAType_FIND_TARGET]				= { script = "ai_find_target",					priority = eAI_Priority_Low },[eAType_ARENA_MERCENARY_FIND_TARGET]= { script = "ai_arena_mercenary_find_target",	priority = eAI_Priority_Low },[eAType_AUTO_SKILL]					= { script = "ai_auto_skill",					priority = eAI_Priority_Low },[eAType_AUTOFIGHT_SKILL]			= { script = "ai_autofight_special_skill",		priority = eAI_Priority_Low },[eAType_AUTOFIGHT_TRIGGER_SKILL]	= { script = "ai_autofight_trigger_skill",		priority = eAI_Priority_Low },[eAType_AUTOFIGHT_STUNT_SKILL]		= { script = "ai_autofight_stunt_skill",		priority = eAI_Priority_Low },[eAType_MANUAL_SKILL]				= { script = "ai_manual_skill",					priority = eAI_Priority_Low },[eAType_FORCE_FOLLOW]				= { script = "ai_force_follow",					priority = eAI_Priority_Low },[eAType_FEAR]						= { script = "ai_fear",							priority = eAI_Priority_Low },[eAType_SPA]						= { script = "ai_spa",							priority = eAI_Priority_Low },[eAType_SHIFT]						= { script = "ai_shift",						priority = eAI_Priority_Low },[eAType_RETREAT]					= { script = "ai_retreat",						priority = eAI_Priority_Low },[eAType_DEAD]						= { script = "ai_dead",							priority = eAI_Priority_High },[eAType_DEAD_MERCENARY]				= { script = "ai_dead_mercenary",				priority = eAI_Priority_High },[eAType_DEAD_REVIVE]				= { script = "ai_dead_revive",					priority = eAI_Priority_High },[eAType_NETWORK_MOVE]				= { script = "ai_network_auto_move",			priority = eAI_Priority_High },[eAType_NETWORK_CACHE]				= { script = "ai_network_cache",				priority = eAI_Priority_High },[eAType_PET_CHECK_ALIVE]			= { script = "ai_pet_check_alive",				priority = eAI_Priority_Low },[eAType_IDLE_NPC]					= { script = "ai_idle_npc",						priority = eAI_Priority_High },[eAType_AUTOFIGHT_MERCENARY_SKILL]	= { script = "ai_autofight_mercenary_skill",	priority = eAI_Priority_Low },[eAType_AUTOFIGHT_FIND_TARGET]		= { script = "ai_autofight_find_target",		priority = eAI_Priority_Low },[eAType_AUTOFIGHT_FIND_WAY]			= { script = "ai_autofight_find_way",			priority = eAI_Priority_Low },[eAType_PRECOMMOND]					= { script = "ai_precommond",					priority = eAI_Priority_Low },[eAType_AUTO_NORMALATTACK]			= { script = "ai_auto_normalattack",			priority = eAI_Priority_Low },[eAType_AUTOFIGHT_RETURN]			= { script = "ai_autofight_return",				priority = eAI_Priority_Low },[eAType_SKILLENTITY_MOVE]			= { script = "ai_skillentity_move",				priority = eAI_Priority_Low },[eAType_NETWORK_SKILLENTITY_MOVE]	= { script = "ai_network_skillentity_move",		priority = eAI_Priority_Low },[eAType_AUTOFIGHT_MISSION_SKILL]	= { script = "ai_autofight_mission_skill",		priority = eAI_Priority_Low },[eAType_AUTOFIGHT_CAST_FIND_TARGET]	= { script = "ai_autofight_cast_find_target",	priority = eAI_Priority_Low },[eAType_DAMAGE_CAR]					= { script = "ai_damage_car",					priority = eAI_Priority_Low },[eAType_AUTO_SUPERMODE]				= { script = "ai_auto_supermode",				priority = eAI_Priority_Low },[eAType_CHECK_WATER]				= { script = "ai_check_water",				    priority = eAI_Priority_Low },
};


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386467.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++题解】1069. 字符图形5-星号梯形

问题&#xff1a;1069. 字符图形5-星号梯形 类型&#xff1a;嵌套循环、图形输出 题目描述&#xff1a; 打印字符图形。 输入&#xff1a; 一个整数&#xff08; 0<n<10 &#xff09;。 输出&#xff1a; 一个字符图形。 样例&#xff1a; 输入&#xff1a; 3输…

【公式解释】《系统论》《控制论》《信息论》的共同重构:探索核心公式与深度解析

《系统论》《控制论》《信息论》的共同重构&#xff1a;探索核心公式与深度解析 关键词&#xff1a;系统论、控制论、信息论、状态空间方程、系统矩阵。 Keywords: System theory, Control theory, Information theory, State-space equations, System matrices. 核心公式与…

访问控制列表(ACL)

文章目录 ACL原理与基本配置ACL分类ACL组成ACL规则的匹配与应用 ACL原理与基本配置 ACL(Access Control List&#xff0c;访问控制列表) 读取二层、三层、四层报文信息根据预先定义好的规则对报文进行过滤和分类实现网络访问控制、防止网络攻击和提高网络带宽利用率等目的提高…

Linux(虚拟机)的介绍

Linux介绍 常见的操作系统 Windows&#xff1a;微软公司开发的一款桌面操作系统&#xff08;闭源系统&#xff09;。版本有dos&#xff0c;win98&#xff0c;win NT&#xff0c;win XP , win7, win vista. win8, win10&#xff0c;win11。服务器操作系统&#xff1a;winserve…

论文阅读【检测】:商汤 ICLR2021 | Deformable DETR

文章目录 论文地址AbstractMotivation技术细节多尺度backbone特征MSDeformAttention 小结 论文地址 Deformable DETR 推荐视频&#xff1a;bilibili Abstract DETR消除对目标检测中许多手工设计的组件的需求&#xff0c;同时表现出良好的性能。然而&#xff0c;由于Transfor…

学习笔记之JAVA篇(0724)

p 方法 方法声明格式&#xff1a; [修饰符1 修饰符2 ...] 返回值类型 方法名&#xff08;形式参数列表&#xff09;{ java语句;......; } 方法调用方式 普通方法对象.方法名&#xff08;实参列表&#xff09;静态方法类名.方法名&#xff08;实参列表&#xff09; 方法的详…

软考:软件设计师 — 7.软件工程

七. 软件工程 1. 软件工程概述 &#xff08;1&#xff09;软件生存周期 &#xff08;2&#xff09;软件过程 软件开发中所遵循的路线图称为 "软件过程"。 针对管理软件开发的整个过程&#xff0c;提出了两个模型&#xff1a;能力成熟度模型&#xff08;CMM&#…

unity2D游戏开发06稳定,材质,碰撞器

稳定性 在操控玩家时,我们会发现玩家移动时,摄像头会有抖动,这是摄像机过度精确造成的。 创建名为RoundCameraPos的C#脚本,用Visual Studio打开 代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using Cinemachine;//导入Cinemac…

DC系列靶场---DC 3靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sS -sV -T4 -p- -O 172.30.1.142//-sS TCP的SYN扫描 //-sV 服务版本检测 //-T4 野蛮的扫描&#xff08;常用&#xff09; //-O 识别操作系统 使用Nmap扫描只看到一个80端口&#xff0c;Apache的2.4.18版本。 http探测 使用Wappalyzer插件可以到…

SN65MLVD080使用手册

8通道半双工M-LVDS线路收发器 特性 低压差分30欧姆至55欧姆线路驱动器和接收器&#xff0c;支持信号速率高达250 Mbps&#xff1b;时钟频率高达125 MHz 满足或超过M-LVDS标准TIA/EIA-899多点数据交换规范 受控驱动器输出电压转换时间&#xff0c;提高信号质量 -1V至3.4V共模…

QQ微信头像制图工具箱小程序纯前端源码

QQ微信头像制图工具箱小程序纯前端源码&#xff0c;主要功能有文字九格、头像挂件生成、爆趣九宫格、形状九宫格、创意长图、情侣头像、猫狗交流器。 这个QQ微信小程序源码是纯前端的&#xff0c;基本上拿去就可以用&#xff0c;不过好像调用了很多API&#xff0c;由于最近时间…

前端web开发HTML+CSS3+移动web(0基础,超详细)——第1天

一、开发坏境的准备 1&#xff0c;在微软商店下载并安装VS Code 以及谷歌浏览器或者其他浏览器&#xff08;我这里使用的是Microsoft Edge&#xff09; 2&#xff0c;打开vs code &#xff0c;在电脑桌面新建一个文件夹命名为code&#xff0c;将文件夹拖拽到vs code 中的右边…

空气处理机组系统中的设计和选型参考

1、静压的选择&#xff1a; 1.机组所承受的正压值和负压值既不是指机组的机外静压&#xff0c;也不是指风机的压头&#xff0c;而是指机组内部与机组外部大气压的差值&#xff0c;具体的计算方法如下&#xff1a; 如图所示&#xff0c;机组的新、回、送风管阻力分别为A、B、C帕…

【轨物方案】开关柜在线监测物联网解决方案

随着物联网技术的发展&#xff0c;电力设备状态监测技术也得到了迅速发展。传统的电力成套开关柜设备状态监测方法主要采用人工巡检和定期维护的方式&#xff0c;这种方法不仅效率低下&#xff0c;而且难以保证设备的实时性和安全性。因此&#xff0c;基于物联网技术的成套开关…

Qt自定义MessageToast

效果&#xff1a; 文字长度自适应&#xff0c;自动居中到parent&#xff0c;会透明渐变消失。 CustomToast::MessageToast(QS("最多添加50张图片"),this);1. CustomToast.h #pragma once#include <QFrame>class CustomToast : public QFrame {Q_OBJECT pub…

图——“多对多”的逻辑结构

目录 1.什么是图&#xff1f; 图包含&#xff1a; 2.图的基本术语 无向图&#xff1a; 有向图&#xff1a; 权重&#xff1a;边上的数字 度&#xff1a; 邻接点&#xff1a; 完全图&#xff1a; 3.图的抽象数据类型定义 4.怎么在程序中表示一个图&#xff1f; 邻接矩…

Java的日期类

1.第一代日期类 ① Date类&#xff1a;精确到毫秒&#xff0c;代表特定的瞬间 public static void main(String[] args) { // 获取当前系统时间 // 这里的Date类是在java.util包 // 默认输出的格式是国外的格式Date date new Date();System.out.println…

C#体检系统源码,医院健康体检系统PEIS,C#+VS2016+SQLSERVER

体检中心/医院体检科PEIS系统源码&#xff0c;C#健康体检信息系统源码&#xff0c;PEIS源码 开发环境&#xff1a;C/S架构C#VS2016SQLSERVER 2008 检前&#xff1a; 多种预约方式网站预约、电话预约、微信平台预约及检前沟通&#xff0c;提前制作套餐&#xff0c;客人到达体检…

【原创】java+ssm+mysql医生信息管理系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 开发背景&#xff1a; 随着信息技术的…

【七】Hadoop3.3.4基于ubuntu24的分布式集群安装

文章目录 1. 下载和准备工作1.1 安装包下载1.2 前提条件 2. 安装过程STEP 1: 解压并配置Hadoop选择环境变量添加位置的原则检查环境变量是否生效 STEP 2: 配置Hadoop2.1. 修改core-site.xml2.2. 修改hdfs-site.xml2.3. 修改mapred-site.xml2.4. 修改yarn-site.xml2.5. 修改hado…