TXT实战课程 传送系统

2周前发布 152 00

课程核心内容总结 ​主题:​​ 使用GOM引擎的脚本功能(特别是建制队和CSV循环)实现一个“时装激活”系统。 ​核心目标:​​ 理解并掌握建制队(Key-Value Pair)​​ 的动态控制方法,以及如何将其与CSV表读取、界面容器循环结合,实现界面元素(如特效)的状态(如灰化/高亮)管理。 按时间划分的重点内容 ​00:00 - 0...

收录时间:
2025-10-01
招生信息

课程核心内容总结

主题:​​ 使用GOM引擎的脚本功能(特别是建制队CSV循环)实现一个“时装激活”系统。

核心目标:​​ 理解并掌握建制队(Key-Value Pair)​​ 的动态控制方法,以及如何将其与CSV表读取界面容器循环结合,实现界面元素(如特效)的状态(如灰化/高亮)管理。


按时间划分的重点内容

00:00 – 02:00 | 课程引入与回顾

  • 核心联系:​​ 本节课内容与昨天(传送脚本)有关联,都使用了 ​CSV循环​ 和 ​建制队
  • 以下是按时间线整理的课程核心内容与重点总结(重要内容已标记🌟):

    00:00 – 05:30 课程目标与问题解答
    问题处理
    学员提问:如何将装备添加到外挂拾取列表(F12)?
    需修改 data/pick_set表,但未详细讲解(课后解决)。
    确认基础课进度:循环和CSV未学,今日结合两者实现传送功能。
    今日目标
    🌟 ​用CSV+循环实现传送功能,位置坐标 320,320

    05:30 – 12:00 界面搭建与CSV基础
    界面层编写
    使用 if 景say显示文本,L11控制布局。
    按钮容器:列表容器(可滑动) + 基础容器(固定坐标)。
    🌟 ​层级关系​:按钮挂载到容器需遵守父子集规则(如 ID=按钮1,按钮2...)。
    CSV表创建
    格式:UTF-8 CSV(注意避免空格,否则读取失败)。
    内容示例:
    地图名
    地图编号
    货币类型
    金额
    等级限制
    东林间
    100
    金币
    100
    10

    12:00 – 30:00 循环与动态加载
    循环初始化
    🌟 关键代码:
    MOV N(循环变量) 0 -- 初始化计数器 MOV S(按钮ID) "" -- 初始化按钮ID字符串 WHILE N < CSV.总行数 -- 循环读取CSV行 INC N 1 -- 计数器+1 INC S(按钮ID) "按钮"..N.."," -- 生成按钮ID链(如"按钮1,按钮2,...") ENDWHILE
    作用​:动态生成按钮,避免硬编码。
    容器挂载规则
    🌟 列表容器需配置:方向(竖向)、间隔像素、弹性滑动(参数见引擎文档)。
    问题:按钮错位 → 需调整容器高度或嵌套基础容器。

    30:00 – 50:00 交互优化与参数传递
    按钮特效
    点击高亮:通过 IMG图片 + 九宫格锐化实现。
    🌟 ​参数传递​:
    LINK = @传送(参数) -- 点击按钮传递参数(如地图编号)
    示例:判断参数值决定显示不同二级菜单。
    问题调试
    按钮回弹:容器长度不足 → 解决方案:
    嵌套基础容器 + 调整坐标。
    关闭界面刷新(POSTBACK 0)。

    50:00 – 01:16:00 条件判断与传送逻辑
    条件检测
    🌟 代码示例:
    -- 检查等级 IF CHECKLEV < CSV.等级列[参数] SENDMSG "等级不足!" BREAK ENDIF -- 检查货币 IF CHECKMONEY 金币 < CSV.金额列[参数] SENDMSG "金币不足!" BREAK ENDIF -- 满足条件后传送 MAP CSV.地图编号列[参数]
    重点​:从CSV动态读取条件,避免写死数值。
    CSV灵活应用
    横读/竖读:通过行列参数切换(如 CSV.读(行,列))。
    扩展:可添加转生、材料消耗等列。

    01:16:00 – 结尾 总结与答疑
    核心总结
    🌟 ​循环+CSV核心作用​:
    动态生成界面(80%显示层问题)。
    灵活配置条件(等级、货币等)。
    减少硬编码,提升脚本可维护性。
    课后任务
    尝试用循环实现通天塔骰子传送功能。
    调试死亡爆率问题(需检查引擎底层逻辑)。

    重点标记
    🌟 ​层级关系​:容器与按钮的父子集挂载。
    🌟 ​CSV格式​:无空格、GB18030编码。
    🌟 ​循环动态生成​:避免硬编码ID。
    🌟 ​参数传递​:通过 LINK=@函数(参数)实现交互。
    🌟 ​条件判断​:从CSV读取动态条件。
    建议学员结合代码实操,重点理解循环与CSV的联合应用!
  • 新内容预告:​​ 今天实现的是“时装激活”界面,功能类似但实现方式有差异,重点讲解建制队的应用。

02:00 – 07:00 | 界面搭建与资源准备

  • 界面布局:​
    • 使用 ​<ShowDlg>​ 创建界面,位置参数为 4(居中显示,适配移动端)。
    • 使用 ​列表容器(ListControl)​​ 和 ​基础容器(BasicControl)​​ 的组合来排列时装图标。​基础容器必须套在列表容器之上才能实现滚动等效果。
    • 界面美工可根据个人喜好调整。
  • 数据准备:​
    • 创建 ​CSV​(如 Fashion.csv)来管理时装数据。
    • 表结构至少包含:​序列ID时装名称核销(所需物品)ID外观/特效ID
    • 重点:​​ 装备(包括时装)的相关数据(内外观、属性等)都在服务端的装备表中定义。

07:00 – 15:00 | 循环生成时装展示列表

  • 循环初始化:​
    • MOV N$循环变量 0(例如 MOV N$循环序号 0
    • MOV S$容器挂载名 ""(例如 MOV S$时装容器挂载 ""
  • 循环主体(与昨日传送脚本原理相同):​
    1. #CALL​ 读取 CSV表。
    2. While​ 循环开始,条件是循环变量小于总行数。
    3. 创建基础容器并挂载到列表容器:​​ 这是为了实现可点击的按钮效果。
      • AddBasicControl并设置其 ID为循环变量值(如 A<$STR(N$循环序号)>)。
      • 使用 Father=父容器IDChild=子容器ID建立挂载关系。
    4. 创建特效并挂载到基础容器:​​ 这样特效才能有点击事件。
      • AddImage或其他显示命令,其 ParentID指向刚才创建的基础容器的ID。
    5. 调整基础容器的 ​Space(间距)​​ 和坐标,使特效正确排列。
    6. 为每个基础容器添加 ​<Link>​ 点击事件,如 Link=@选择时装|#参数=<$STR(N$循环序号)>
    7. Inc​ 循环变量,EndWhile结束循环。

15:00 – 25:00 | 【重点】建制队(Key-Value Pair)的原理与应用

  • 建制队的作用:​​ 像一个字典,可以存储、修改、删除“键(Key)”和“值(Value)”的对应关系。非常适合用来管理一组UI元素的状态。
  • 本项目中的应用逻辑:​
    1. 初始化状态:​​ 所有时装图标默认是“未激活”(灰化)状态。在建制队中,用 ​键(时装ID)​​ 对应 ​值(1)​​ 来表示灰化。
    2. 激活后改变状态:​​ 玩家激活某个时产后,通过脚本修改建制队中该时装ID对应的 ​值为(0)​,表示高亮。
  • 初始化建制队(在 [@Main]中):​#IF Equal <$STR(T$10)> "" ;// 判断建制队变量是否为空,防止重复初始化 #ACT Mov T$10 1=1,2=1,3=1,4=1,5=1,6=1,7=1,8=1,9=1,10=1 ;// 初始化所有键值都为1(灰化)
    • 小技巧:​​ 使用文本编辑器的 ​多行编辑(Alt+Shift+鼠标拖动)​​ 功能快速生成键值对。

25:00 – 35:00 | 【难点】利用建制队控制特效灰化与刷新

  • 实现灰化:​​ 在循环显示每个特效的代码处,添加灰化命令,其状态由建制队控制。
    • 命令示例:灰化=1Gray=1
    • 关键常量:​​ ​<GetKeyValue>,用于从建制队变量(如 T$10)中,根据 ​键(Key)​​ 获取对应的 ​值(Value)​
  • ​【重要】为什么用循环变量 N$循环序号而不是参数 S$参数作为键?​
    • 错误示范(用参数):​​ 如果你点击“时装1”,参数就是1。在循环中,所有特效都会去获取建制队中“键=1”的值,导致所有特效状态都和“时装1”一样。​结果是点击一个,全部亮起或全部灰化。​
    • 正确做法(用循环变量):​​ 在循环中,N$循环序号会从1到10依次变化。这样每个特效都会去获取自己对应的那个键的值(特效1取键1,特效2取键2…),从而实现独立控制

35:00 – 45:00 | 激活时产的逻辑实现

  • [@选择时装]标签下:
    1. 检测背包:​​ 使用 CheckItem检测玩家是否拥有该时装所需物品。
    2. 执行操作:​​ 如果拥有,则 Take收回物品,并 ​修改建制队​ 中对应键的值。
      • 使用 ​ModifyKeyValue​ 命令,例如:ModifyKeyValue T$10 <$STR(S$参数)> 0。这将把点击的那个时装ID对应的值改为0(高亮)。
    3. 刷新界面:​​ 操作完成后,使用 ​GoTo​ 跳转回 @Main重新加载界面,此时循环会读取新的建制队值,使对应特效高亮。

45:00 – 结束 | 补充与答疑

  • 合成功能:​​ 可以添加另一个按钮,逻辑类似,检测材料并给予更高级的时装。
  • 建制队的其他用途:​​ 除了控制UI状态,还可用于排行榜排序等场景。
  • 常见错误:​
    • 大小写敏感:​​ 脚本命令和变量名严格区分大小写,写错会导致功能失效。
    • 逻辑刷新:​​ 修改状态后一定要有刷新界面的操作(如 GoTo @Main)。

总结:​​ 本节课的核心是 ​​“建制队”​​ 这一数据结构的实战应用。通过将界面元素(ID)与其状态(值)动态绑定,并通过循环和CSV来批量管理,实现了高效且灵活的UI交互功能。理解 ​​“键”的独立性​ 和 ​<GetKeyValue>常量的用法​ 是掌握本节课内容的关键。

数据统计

相关导航

暂无评论

none
暂无评论...