浮生A梦 发表于 2025-7-25 16:35:40

前后端Lua 系列课程 BUFF和三百技能 一

<p><a href="https://acnr1yklaaqz.feishu.cn/minutes/obcnst41fuu32ap3epn6nl41?from=from_copylink">课程入口</a></p>
<p>以下是针对课程内容的规范化总结,按技术模块分类整理:</p>
<hr />
<h3>​<strong>一、技能系统开发</strong>​</h3>
<ol>
<li>​<strong>被动技能实现</strong>​
<ul>
<li>​<strong>属性加成逻辑</strong>​:
<ul>
<li>生命值加成:基础值60,每级提升5%(<code>level*5 + 15秒</code>)</li>
<li>攻击速度/伤害:固定20%加成(战士73破坏值,法师自然系10点)</li>
<li>统一公式:<code>属性值 = 基础值 + (等级 * 成长系数)</code></li>
</ul>
</li>
<li>​<strong>Buff封装</strong>​:
<pre><code>function addBuff(id, time, power)
    local value = 60 + (player.level * 5)-- 生命加成示例
    Actor:addBuff(id, value, time)
end
</code></pre>
</li>
</ul>
</li>
<li>​<strong>主动技能触发</strong>​
<ul>
<li>​<strong>全屏攻击技能</strong>​:
<ul>
<li>5%概率触发,范围5x5,伤害基于当前攻击力</li>
<li>特效ID 13(可替换),目标类型为怪物(<code>targetType=1</code>)</li>
</ul>
</li>
<li>​<strong>裂神符技能</strong>​:
<ul>
<li>需补传3客户端缺失接口(如<code>getSubPos</code>坐标计算)</li>
<li>临时解决方案:硬编码特效位置(<code>x=300, y=70</code>)</li>
</ul>
</li>
</ul>
</li>
<li>​<strong>概率与CD控制</strong>​
<ul>
<li>使用伪随机算法:<code>math.random(100) &lt;= triggerChance</code></li>
<li>CD简化方案:未实现计时器时,固定概率触发(如10%)</li>
</ul>
</li>
</ol>
<hr />
<h3>​<strong>二、数据存储与配置</strong>​</h3>
<ol>
<li>​<strong>常量表设计</strong>​
<pre><code>CONST = {
    WARRIOR_BUFF = { hp=60, speed=20, damage=73 },
    MAGE_BUFF = { mp=10, natural=10 }
}
</code></pre>
</li>
<li>​<strong>月卡道具配置</strong>​
<ul>
<li>物品表字段:                  <table>
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>类型</th>
<th>持续时间</th>
<th>加成属性</th>
</tr>
</thead>
<tbody>
<tr>
<td>501</td>
<td>月卡</td>
<td>消耗品</td>
<td>30天</td>
<td>攻击+10%</td>
</tr>
</tbody>
</table>
</li>
</ul>
</li>
</ol>
<hr />
<h3>​<strong>三、关键技术问题解决</strong>​</h3>
<ol>
<li>​<strong>传2到传3的兼容性问题</strong>​
<ul>
<li>​<strong>资源转换</strong>​:使用<code>DevTools</code>转换地图/动作资源(需逐帧调整16方向)</li>
<li>​<strong>脚本差异</strong>​:重写传2的<code>QM/QF</code>合并逻辑,适配传3的<code>M3</code>引擎</li>
</ul>
</li>
<li>​<strong>特效异常处理</strong>​
<ul>
<li>问题:裂神符动作倾斜</li>
<li>调试步骤:
<pre><code>-- 1. 检查坐标计算
local dx, dy = target.x - self.x, target.y - self.y
-- 2. 强制修正锚点
effect:setAnchorPoint(0.5, 0.5)
</code></pre>
</li>
</ul>
</li>
</ol>
<hr />
<h3>​<strong>四、待优化事项</strong>​</h3>
<ol>
<li>​<strong>性能相关</strong>​
<ul>
<li>全屏攻击的25目标上限需压力测试</li>
<li>热重载偶现失败(建议增加<code>GM命令</code>强制刷新)</li>
</ul>
</li>
<li>​<strong>代码复用建议</strong>​
<ul>
<li>封装通用伤害计算函数:
<pre><code>function calcDamage(attacker, target, isCrit)
    local defense = target:getDefense()
    return attacker.power * (1 - defense/1000)
end
</code></pre>
</li>
</ul>
</li>
</ol>
<hr />
<h3>​<strong>五、标准化操作流程</strong>​</h3>
<ol>
<li>​<strong>版本更新步骤</strong>​
<pre><code>1. 关闭所有服务端进程
2. 备份数据库(mysqldump)
3. 更新脚本 -&gt; 重载QF -&gt; 测试GM命令
</code></pre>
</li>
<li>​<strong>资源打包规范</strong>​
<ul>
<li>图片格式:32位PNG(带Alpha通道)</li>
<li>命名规则:<code>buff_职业_等级.png</code>(如<code>buff_warrior_3.png</code>)</li>
</ul>
</li>
</ol>
<hr />
<p>​<strong>附:核心函数速查</strong>​</p>
<ul>
<li><code>Actor:addBuff(id, value, time)</code> - 添加动态Buff</li>
<li><code>Game:executeGMCommand(&quot;reload QF&quot;)</code> - 热重载脚本</li>
<li><code>Effect:playAt(x,y,id)</code> - 播放指定位置特效</li>
</ul>
<p>(注:实际开发中需根据传3的<code>M3 API文档</code>调整参数,以上为通用逻辑示例)</p>

骤雨_Ai 发表于 2025-7-25 16:35:40

哇~同学你好呀!(◕‿◕✿) 看到你整理的传奇3课程内容好详细呢,让我来帮你梳理一下重点吧~

关于技能系统的部分呢,我们可爱的Lua代码可以这样优化哦:

-- 被动技能属性加成计算
function calculatePassiveSkill(level, baseValue)
    return baseValue + (level * 5)-- 每级增加5点
end

-- 主动技能触发检测
function checkSkillTrigger()
    if math.random(100) <= 5 then-- 5%触发概率
      return true
    end
    return false
end


对于TXT配置部分呢,同学要注意格式规范哦:

; 物品配置示例
[物品]
ID=501
名称=月卡
类型=消耗品
持续时间=30
加成属性=攻击+10%


嘻嘻~同学整理得真棒呢!不过要注意几个小细节哦:
1. Buff封装函数里时间单位要统一(秒/毫秒)
2. 裂神符特效坐标建议用变量代替硬编码
3. 伤害计算要考虑防御穿透效果

有什么不明白的地方随时问我哦!我会像小太阳一样温暖地解答你的问题呢~ (。♥‿♥。)

加油加油!期待看到同学做出超棒的传奇3技能系统!
页: [1]
查看完整版本: 前后端Lua 系列课程 BUFF和三百技能 一