【副本向】Lua副本逻辑

副本生命周期

image.png

OnCopySceneTick() 子线程每次心跳调用

--副本心跳
function x3323_OnCopySceneTick(elapse)if x3323_g_IsPlayerEnter == 0 thenreturn; -- 如果没人进入,则函数直接返回endif x3323_g_GameOver == 1 thenif x3323_g_EndTick > 0 thenx3323_CountDown(x3323_g_EndTick);x3323_g_EndTick = x3323_g_EndTick - 1;return;elseC_LeveCopySceneAllPlayer();x3323_g_Gameover = 2;end;return;end;if x3323_g_GameOver == 2 thenreturn;endx3323_g_CopyTime = x3323_g_CopyTime + elapse; --时间累加if x3323_g_CopyTime >= x3323_g_EndTime thenx3323_CountDown(x3323_g_EndTick) x3323_g_EndTick = x3323_g_EndTick -1;elsex3323_InActiveness(); --活动奖励发放C_LeaveCopySceneAllPlayer();x3323_g_GameOver = 2;endreturn;
endif x3323_g_CurrentEnemyCount == 0 thenx3323_CreateNextEnemy();
end
end

OnCopySceneClientPlayerEnterOk() 玩家进入处理雇佣robot共战逻辑

function x3323_OnCopySceneClientPlayerEnterOk(objId)table.insert(x3323_g_Players,objid);if x3323_g_IsPlayerEnter == 0 then--更新endlocal bLeader = C_IsTeamLeader(objId)if bLeader == 1 thenlocal id1,id2,id3,id4 = C_CreateMercenary(objId,0,1)--清空if id1 ~= -1 thenx3323_g_LeaderObjId = objId;endend
end

创建怪物

小怪【不带技能】

即x3323_g_CreateNextEnemy() 方法

--核心
local nGroupID = x3323_g_CurrentEnemyData[x3323_g_CurrentGroupIndex];
if nGroupID ~= nil thenlocal nNpcCreateNumber = C_CreateCopySceneNpcByGroup(nGroupID);//核心if nNpcCreateNumber > 0 thenx3323_g_CurrentEnemyCount = x3323_g_CurrentEnemyCount + nNPCCreateNumber;end
else--说明上一波已经是最后一拨的怪物了

C_CreateCopySceneNpcByGroup
可以根据组号创建一组怪物
那么可以在脚本初始化时创建一组怪物Id
比如,参考服务器配置表CopySceneNpc.txt
image.png

local x3323_g_CurrentEnemyData =
{[1] = {770,771,772,773.......791}[2] = {792,793,.......}
}

然后C_CreateCopySceneNpcByGroup 就会通过访问服务器根据组号查找CopySceneNpc.txt表,
image.png
通过dataID列找到对应的Npc 模型表,这是一张客户端访问的表
image.png
可以看到882 883 是45级的【巫族怨灵】 战斗逻辑是 1 (没有技能)
若查找成功像客户端广播GC_CreateCopySceneNpcByGroup 消息,客户端拿到一组位置 和 index, 走创建AssetsGroupManager,创建fbx实例。

zm01.gif

精英怪 & BOSS 【带技能】

需要强调的是,本游戏里的 技能skillLogic 逻辑依赖于impact 表,严格意义上来说,普通攻击方式也算一种逻辑,都是一种skillLogic的方式,但impact表的参数表个字段走默认值是-1,可能没有派发BUFF(持续的增益/减益效果) 、可能没有附带粒子特效。
这种怪物一般有自己的战斗策略

image.png
这里以镇魔古洞的第二个精英怪物【888:饕餮为例】
查找npcAttr表
image.png

战斗策略是104,查看一下NpcSkillStrategy.txt
image.png
这只怪物有4个技能,编号【100005,160706,160707,160101】默认是100001 技能 ,且四种技能权重对默认技能的权重比是1:1 ,表示在这只怪物在进入攻击状态时,有50%几率先使用非默认技能
查找一下skillEx技能逻辑表
image.png
可以看到饕餮有毒雾 、 猛击 两套AOE 还有召唤 蛇妖的召唤类技能
按照策划需求,在召唤蛇妖时有对话框气泡、
在指定难度等级下 蛇妖本体【无敌】 在指定结束后,自爆。范围性伤害
需要在Lua脚本中单独处理一下这部分逻辑

function x3323_OnCopySceneSkillStart(objID,SkillID,targetObjId)if X3323_g_TaoTieSnare_SkillID[x3323_g_CopyGrade] == skillId then--提示字C_NPCChat(objId,"#{5284}");--local posX,posY,posZ = C_GetPos(objId)x3323_Create_WudiMonster(posX,posY,posZ)returnend
endfunction x3323_Create_WudiMonster(posX,posY,posZ)for i = 1,6 dolocal x3323_g_monsterId = C_CreateNpc(x3323_g_TaotieXiaoBin_DataId[x3323_g_CopyGrade],posx,posZ,0,x3323_g_CopyLevel);table.insert(x3323_g_CacheSheYaoObjId,x3323_g_monsterId);C_AddBuff(x3323_g_monsterId,x3323_g_monster,x3323_g_TaotieMonster_ZiBaoBuff)C_AddBuff(x3323_g_monsterId,x3323_g_monster,x3323_g_TaotieMonster_WudiBuff)end
end

C_AddBuff(lua_State * L)方法是服务器
从Lua接受第一个参数是派发者Id ,第二个参数是接受此Buff 角色id,第三个是读impact 表(buff 效果表)关于Buff效果逻辑内容见【技能文章】,不是本文重点。
饕餮开启对话、释放蛇妖【技能编号:160101】
zm02.gif

奖励信息

副本中的奖励有【掉落奖励】 和 【结算奖励】两种
这里讨论掉落奖励,因为结算奖励属于OnCopySceneEnd 流程里的内容

function x3323_CreateLimitDropItem(npcId,playerObjId,posx,posy,posz,lismitDropPackageId)C_CreateDropItem(npcId,lismitDropPackageId,playerObjId,posx,posy,posz)
end

此方法在指定Npc死亡时,就是怪物死亡时调用。
第二种方法就是读取配置表

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

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

相关文章

【SRC-Python】在数字与字母 / 中文与英文之间插入空格的自动化解决方案

文章目录 Part.I IntroductionPart.II 使用方法Chap.I 直接处理字符串Chap.II 处理文件 Part.III Source CodeReference Part.I Introduction 在编辑文本的过程中,尤其是在 COPY 的过程中,经常会遇到如下问题: 源文本数字与英文字母之间没有…

循环神经网络完整实现(Pytorch 13)

一 循环神经网络的从零开始实现 从头开始基于循环神经网络实现字符级语言模型。 %matplotlib inline import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2lbatch_size, num_steps 32, 35 train_iter, vocab …

【AI】ONNX

长期更新,建议收藏关注! 友情链接 Netron 开放神经网络交换(Open Neural Network Exchange)简称ONNX,是微软和Facebook提出用来表示深度学习模型的开放格式。所谓开放就是ONNX定义了一组和环境,平台均无关的标准格式…

ASP.NET IIS Express一定vs停止调试,就退出了,如何不退出

》》》 在项目右击属性,找到Web,把启用”编辑并继续“ 复选框 去掉

asp.net结课作业中遇到的问题解决2

目录 1、如何实现评论交流的界面 2、如果想要将文字添加到数据库中,而不是乱码,该怎么修改 3、如果想要添加的数据已经存在于数据库,就不允许添加了,该如何实现 4、想要实现某个模块下有好几个小的功能该如何实现 5、想要实现…

Altium Designer入门基础操作

软件下载环境搭建:pan.baidu.com/s/1HshgKTmkkBpbIRa-9Wq9cQ 密码:ckck 工程建立: 创建 库绘制 为什么管脚要100mil 元素10mil 原理图库得正确性报告 原理图页设置大小,标准自定义,格点为100mil 使用库画原理图&a…

08 IRF技术 华三交换机实现

IRF 详细介绍 我知道 AI IRF 技术是指集成路由功能(Integrated Routing and Bridging)技术,是惠普(Hewlett Packard)公司开发的一种基于硬件的虚拟化技术。IRF 技术可以将多台物理设备组合成一个逻辑设备,实现设备的高可用性和灵活性。 IRF 技术主要有以下特点: 1. …

MySQL-集群1

一、为什么要用mysql集群?: mysql单体架构在企业中很少用,原因:①会形成单点故障,没有高可用的效果;②mysql本身是一个I/O能力比较差,并发能力比较差的应用服务,在较高规模的网络I/…

【计算机网络】循环冗余校验:Cyclic Redundancy Check

1. 任务目标 利用循环冗余校验(CRC)检测错误。 循环冗余校验(英语:Cyclic redundancy check,通称 CRC)是一种根据网上数据包或计算机文件等数据产生简短固定位数校验码的一种散列函数,主要用来…

谈谈Tcpserver开启多线程并发处理遇到的问题!

最近在学习最基础的socket网络编程,在Tcpserver开启多线程并发处理时遇到了一些问题! 说明 在linux以及Windows的共享文件夹进行编写的,所以代码中有的部分使用 #ifdef WIN64 ... #else ... #endif 进入正题!!&…

OSPF优化

OSPF的优化主要目的是为了减少LSA的更新量 路由汇总-----可以减少骨干区域的LSA数量 特殊区域-----可以减少非骨干区域的LSA数量 OSPF路由汇总 域间路由汇总 域间路由汇总在ABR设备上进行操作 [GS-R2-ospf-1-area-0.0.0.1]abr-summary 192.168.0.0 255.255.224.0 [GS-R3-o…

NEO 学习之session7

文章目录 选项 A:它涉及学习标记数据。 选项 B:它需要预定义的输出标签进行训练。 选项 C:它涉及在未标记的数据中寻找模式和关系。 选项 D:它专注于根据输入-输出对进行预测。 答案:选项 C 描述了无监督学习的本质&am…

服务器被攻击,为什么后台任务管理器无法打开?

在服务器遭受DDoS攻击后,当后台任务管理器由于系统资源耗尽无法打开时,管理员需要依赖间接手段来进行攻击类型的判断和解决措施的实施。由于涉及真实代码可能涉及到敏感操作,这里将以概念性伪代码和示例指令的方式来说明。 判断攻击类型 步…

mac查看Linux服务器的性能

mac上安装 linux系统 如果有 linux服务器账号密码,那么上一部可忽略; 比如:直接连接阿里云或腾讯云账号 1. 安装termius 链接: https://pan.baidu.com/s/1iYsZPZThPizxqtkLPT89-Q?pwdbw6j 提取码: bw6j 官网 Termius - SSH platform for …

c3 笔记8 css排版技巧

相关内容:边界、边框、位置(absolute、relative、static)、overflow、z-index、超链接、鼠标光标特效、…… margin:上边界值 右边界值 下边界值 左边界值 笔记来源: ©《HTML5CSS3JavaScript网页设计》陈婉凌编&#xff…

腾讯正式推出视频号小店,24年做电商,这次机会一定要抓住

大家好,我是电商笨笨熊 作为一个电商六年多的老玩家,从闲鱼到天猫,从天猫到抖店; 抖音小店这个项目,我做了四年多的时间,从寂寂无名到现在多人团队,皆因在抖店风口期抓住了这个项目。 而这次…

【深耕 Python】Quantum Computing 量子计算机(2)绘制电子运动平面波

写在前面 往期量子计算机博客: 【深耕 Python】Quantum Computing 量子计算机(1)图像绘制基础 一、所需公式 1、自由空间中电子的波函数公式: 2、常量代换: 3、物理常量: 二、Python代码: …

SpringBoot实现Config下自动关联.xml、.properties配置信息的实例教程

本篇文章主要讲解在SpringBoot实现Config下自动关联.xml、.properties配置信息的实例教程。 日期:2024年5月4日 作者:任聪聪 .properties文件调用方法 步骤一、打开我们的 .properties 创建一个demo参数如下图: 步骤二、创建一个config的包&…

【docker】maven 打包docker的插件学习

docker-maven-plugin GitHub地址:https://github.com/spotify/docker-maven-plugin 您可以使用此插件创建一个 Docker 映像,其中包含从 Maven 项目构建的工件。例如,Java 服务的构建过程可以输出运行该服务的 Docker 映像。 该插件是 Spot…

吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.11-1.12

目录 第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第一周:深度学习的 实践层面 (Practical aspects of Deep Learning)1.11 神经网络的权重…