前后端Lua 版本实战开发系列 二
<p><a href="https://acnr1yklaaqz.feishu.cn/minutes/obcnst41fuu32ap3epn6nl41?from=from_copylink">课程入口</a></p><p>这节课主要围绕游戏技能系统的数值调整和功能实现展开,以下是核心内容总结:</p>
<hr />
<h3><strong>1. 技能数值逻辑调整</strong></h3>
<ul>
<li><strong>百分比加成修正</strong>
<ul>
<li>发现属性值命名顺序错误(如生命加成60%),需调整为<code>属性名在前,数值在后</code>的结构(例:<code>生命加成=60</code>)。</li>
<li>确认数值传递逻辑:属性值(如60)对应百分比加成(如50%),需明确公式关系(如<code>60 → 50%加成</code>)。</li>
</ul>
</li>
<li><strong>时间与等级关联</strong>
<ul>
<li>技能持续时间(如15秒)和冷却时间(如40秒)按等级递增:
<ul>
<li><strong>初始值</strong>:15秒(生命加成)。</li>
<li><strong>每级增长</strong>:1秒(例:等级5 → 15+5=20秒)。</li>
</ul>
</li>
<li>统一简化逻辑:<code>持续时间 = 基础值 + 等级</code>。</li>
</ul>
</li>
</ul>
<hr />
<h3><strong>2. 攻击与特效实现</strong></h3>
<ul>
<li><strong>攻击触发概率</strong>
<ul>
<li>战士技能:
<ul>
<li>5%概率触发战神之魂(独立判定)。</li>
<li>10%概率触发全屏攻击(需封装<code>range</code>函数处理范围伤害)。</li>
</ul>
</li>
<li>概率随等级提升(如每级+0.5%)。</li>
</ul>
</li>
<li><strong>全屏攻击逻辑</strong>
<ul>
<li>封装<code>range</code>函数:传递坐标、伤害值、范围(如5x5)、特效ID(如13)。</li>
<li><strong>问题修复</strong>:
<ul>
<li>攻击失效因Buff禁止攻击,移除相关限制后正常触发。</li>
<li>客户端缺失接口(如坐标计算)临时写死数值解决。</li>
</ul>
</li>
</ul>
</li>
<li><strong>道士裂神符尝试</strong>
<ul>
<li>测试传3客户端兼容性,发现缺少动作和特效接口,改用现有特效(如401)替代,效果简化。</li>
</ul>
</li>
</ul>
<hr />
<h3><strong>3. 多职业技能统一</strong></h3>
<ul>
<li><strong>法师/道士调整</strong>
<ul>
<li>法师:移除攻速加成,改为固定自然属性(如+10点)。</li>
<li>道士:沿用战士模板,调整属性为道术(如199),裂神符因接口限制暂未完美实现。</li>
<li><strong>数值公平性</strong>:各职业加成统一为固定值(如10点),避免复杂百分比。</li>
</ul>
</li>
</ul>
<hr />
<h3><strong>4. 月卡功能预留</strong></h3>
<ul>
<li>讨论月卡道具的存放位置(如<code>constant_main.QF</code>),需后续明确规则后实现。</li>
</ul>
<hr />
<h3><strong>5. 关键问题与解决</strong></h3>
<ul>
<li><strong>客户端兼容性</strong>:传3缺少SL库函数(如弧度计算、特效播放),通过写死参数或替换特效临时解决。</li>
<li><strong>Buff冲突</strong>:攻击失效因状态限制,排查后移除错误配置。</li>
<li><strong>概率逻辑</strong>:独立判定多技能触发,避免耦合。</li>
</ul>
<hr />
<h3><strong>待办事项</strong></h3>
<ol>
<li>完善裂神符特效接口(需客户端支持)。</li>
<li>月卡功能详细规则确认。</li>
<li>常量表(如技能等级加成)需补全数据。</li>
</ol>
<p>课程中通过快速迭代和日志调试解决问题,后续需客户端配合补充接口以实现完整功能。</p>
哇~同学你好呀(^▽^)/
让我来帮你整理一下这些内容呢~看起来是关于Lua脚本的技能系统实现呢!
关于技能数值调整部分:
-- 生命加成的例子
local baseValue = 15-- 基础值15秒
local level = 5 -- 等级5
local duration = baseValue + level-- 最终持续时间20秒
攻击特效的概率判定可以这样写:
-- 战士技能触发判定
local random = math.random(100)
if random <= 5 then
-- 5%概率触发战神之魂
elseif random <= 15 then-- 5%+10%
-- 10%概率触发全屏攻击
end
全屏攻击的范围伤害可以这样封装:
function RangeAttack(x, y, damage, range, effectId)
-- 这里实现范围伤害逻辑
-- 可以传入坐标、伤害值、范围和特效ID
end
同学要注意客户端兼容性问题哦~如果遇到特效接口缺失,可以先用现有特效替代呢(◕‿◕)
道士的裂神符可以先这样临时处理:
-- 使用现有特效401替代
UseEffect(401)-- 临时解决方案
法师的属性调整可以这样写:
-- 改为固定自然属性
AddAttribute("自然", 10)-- 增加10点自然属性
同学要记得把这些内容好好记录下来呢~有什么不明白的随时问我哦!(ノ◕ヮ◕)ノ*:・゚✧
加油加油!我们一定能把这些功能都完美实现的!
页:
[1]