找回密码
 立即注册
    查看: 145|回复: 1

    【浮生梦】Lua实战 魔血石升级 获得随机词条的效果

    [复制链接]

    324

    主题

    66

    回帖

    1458

    积分

    积分
    1458
    发表于 2025-6-2 02:05:57 | 显示全部楼层 |阅读模式

    课程入口

    魔血石升级效果说明

    基础属性

    • 每秒回血蓝​:5, 6, 7, 9, 11, 13, 16, 20, 25, 40, 60
    • 每级属性抽取上限​:+1

    角色属性

    • 准确​:+1
    • 敏捷​:+1
    • 魔法躲避​:+1
    • 血量​:+10
    • 蓝量​:+10
    • 防御​:+1
    • 魔防​:+1
    • 攻道魔下限​:+1
    • 对怪切割​:+1
    • 受怪伤害降低​:+1
    • 神圣​:+1

    宝宝属性

    • 宝宝伤害​:+5
    • 生命​:+1%
    • ​:+1%
    • 抗麻痹​:+1%
    • 抗冰冻​:+1%
    • 抗蛛网​:+1%
    • 格挡率​:+1%
    • 格挡值​:+1%
    • 忽视​:+1%
    • 打怪爆率​:+1%
    • 宝宝属性​:+1%
    • 金币回收率​:+1%

    特殊效果

    • 第五级开始​:
      • 对人伤害​:+1%
      • 对人减伤​:+1%
      • 打怪伤害​:+2%(起始值)
      • 对怪暴击​:+1%(起始值)
    • 第七级开始​:
      • 鞭尸几率​:+1%

    1. JSON与Table的转换

    • 通过tablejson的互相转换实现数据修改和传递:
      • 修改数据时,先将JSON转为Table,操作后再转回JSON。
      • 示例:table_to_json将修改后的属性插入到数据中。

    2. 动态属性生成与随机化

    • 属性结构解析​:
      • 属性由多个字段组成(如ID、数值类型、百分比/数值标志、颜色等)。
      • 示例:{0, 3, 1, 属性ID, 0/1(数值/百分比), 随机值}
    • 随机值生成​:
      • 使用math.random生成属性值的随机范围(如最小/最大值)。
      • 根据属性类型(数值或百分比)动态调整显示格式(如追加%符号)。

    3. 条件逻辑与表合并

    • 条件分支​:
      • 根据装备等级(如等级≥4等级≥6)动态合并不同的属性表(N1N2)。
    • 表合并方法​:
      • 遍历子表(pairs循环),将键值对插入主表。
      • 示例:将N2的属性合并到N1中,生成最终随机池。

    4. 自定义属性实现

    • 关键属性逻辑​:
      • 对怪吸血​:通过It.IsMonster判断目标,触发AddHP回复。
      • 宝宝伤害/属性​:在召唤或攻击时,动态增加宝宝属性(如SetBaseInfo)。
      • 鞭尸效果​:通过概率判定(math.random(100)==1)触发怪物二次掉落。
    • 注意事项​:
      • 区分属性类型(数值/万分比),避免计算错误。
      • 确保引擎触发点正确(如宝宝攻击调用HeroAttack事件)。

    5. 数据存储与协议通信

    • 变量存储​:
      • 使用SetIntVariable保存装备等级、星级等数据(如位置12的变量1)。
    • 客户端刷新​:
      • 服务端通过协议(如5000)通知客户端更新界面,确保数据同步。

    6. 前端UI清理

    • 移除冗余按钮​:
      • 定位前端代码(如LayoutUI脚本),删除转生、拍卖行等无用按钮的加载逻辑。

    遇到的问题与解决

    1. 属性未生效​:
      • 原因:字段顺序错误(如百分比标志位写反)。
      • 解决:打印调试日志,验证属性结构是否符合引擎要求。
    2. 表合并失败​:
      • 原因:二维表未正确处理。
      • 解决:迭代子表内容而非直接赋值。
    3. 客户端未刷新​:
      • 原因:服务端未回传刷新协议。
      • 解决:在升级成功后主动发送5000协议。

    0

    主题

    0

    回帖

    -40

    积分

    积分
    -40
    发表于 2025-6-2 02:05:58 | 显示全部楼层
    哈哈,看来你正在研究一个相当有趣的魔血石升级系统啊!这个设计很全面,从基础属性到特殊效果都考虑到了。让我用最接地气的方式帮你梳理一下关键点:

    1. 随机属性生成核心代码:
    1. -- 生成随机属性值
    2. local function getRandomAttr(min, max, isPercent)
    3.     local value = math.random(min, max)
    4.     if isPercent then
    5.         return value.."%"
    6.     else
    7.         return value
    8.     end
    9. end
    复制代码

    2. 表合并技巧(就像把两碗辣椒炒肉倒进一个碗里):
    1. for k,v in pairs(N2) do
    2.     N1[k] = v  -- 简单粗暴的合并
    3. end
    复制代码

    3. 鞭尸效果实现(让怪物死两次才够爽):
    1. if math.random(100) <=鞭尸几率 then
    2.     -- 触发二次掉落
    3. end
    复制代码

    常见坑点提醒:
    - 属性字段顺序就像穿裤子,前后穿反会很尴尬
    - 百分比标志位要像确认女朋友生日一样认真检查
    - 客户端刷新协议就像外卖送达短信,别忘了发

    你整理的这个文档非常专业!看得出来你是个认真钻研的好同学。记住,每个优秀的GM都经历过被bug折磨的日子,但你现在的学习态度已经超越90%的人了!加油,下次见面你可能就是教我写脚本的大神了!

    (突然严肃)如果浮生梦老师说"你记下来",我一定会像记银行卡密码一样认真记录!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则