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

TXT基础课程,常量_____2025年7月7日

[复制链接]

50

主题

2

回帖

241

积分

积分
241
发表于 6 天前 | 显示全部楼层 |阅读模式

视频课程

《传奇引擎脚本开发——常量解析与应用》教案


​一、课程基本信息​

  • ​课程名称​​:传奇引擎脚本开发——常量解析与应用
  • ​授课对象​​:已掌握基础脚本语法(变量、条件判断)的传奇引擎开发者(初级)
  • ​课时​​:90分钟
  • ​教学目标​​:
    1. 理解常量的定义、特性与核心作用;
    2. 掌握传奇引擎中常见常量的类型(人物属性、背包、地图、服务器等);
    3. 能在脚本中合理调用常量,优化脚本效率并降低服务器压力;
    4. 区分常量与变量的差异,避免混淆使用。

​二、教学重难点​

  • ​重点​​:
    • 常量的定义与核心作用(方便调用、减轻服务器压力);
    • 常见常量的类型及应用场景(人物属性、背包、地图、服务器信息等);
    • 常量与变量的区别(不可变性)。
  • ​难点​​:
    • 复杂场景下常量的嵌套使用(如CSV表格中套用常量);
    • 常量在触发字段中的实际应用(如击杀触发、死亡触发中的参数获取)。

​三、教学准备​

  • 软件:传奇引擎编辑器(M2引擎)、脚本测试工具;
  • 示例文件:
    • 常量调用模板脚本(含人物属性、背包、地图常量);
    • 时间检测脚本(利用服务器时间常量实现活动时段控制);
  • 教学PPT:常量分类图解、触发字段常量参数说明、变量与常量对比图。

​四、教学过程​


​1. 导入(10分钟)​
  • ​回顾旧知​​:提问上节课内容(变量与检测指令),确认学生对“变量可修改、可动态计算”的理解。
  • ​引入新课​​:通过实际需求引出常量的必要性:
    • 场景1:获取人物当前等级(无需手动编写获取逻辑,直接调用level常量);
    • 场景2:检测服务器时间(调用hourminute常量判断活动时段);
    • 场景3:读取背包星星数量(调用starcount常量快速获取,避免遍历背包);
    • 场景4:沙巴克行会名称(调用guildname常量,无需手动查询数据库)。
​2. 新授(50分钟)​
​2.1 常量的定义与特性(10分钟)​
  • ​定义​​:常量是引擎预先封装的固定数据(如人物属性、背包信息、服务器参数等),通过脚本直接调用,不可修改。
  • ​特性​​:
    • ​不可变性​​:仅可读取,无法通过脚本修改(如level常量存储当前等级,无法通过mov level 100修改);
    • ​高效性​​:直接调用引擎接口,读取速度快于变量(减少服务器计算压力);
    • ​丰富性​​:覆盖游戏全场景(人物、背包、地图、服务器、战斗等)。
​2.2 常见常量类型与应用场景(25分钟)​
  • ​人物属性类常量​​(最常用):
    • level:当前人物等级;
    • hp/maxhp:当前/最大生命值;
    • mp/maxmp:当前/最大魔法值;
    • attack/defense:攻击力/防御力;
    • exp:当前经验值;
    • pkpoints:PK点数(用于“天下第一”脚本);
    • ​应用示例​​:
      // 检测当前等级是否≥30级
      if level >= 30 then
          sendmsg "您已达到30级,开启高级功能!"
      else
          sendmsg "您的等级不足30级,继续努力!"
      endif
      
  • ​背包与装备类常量​​:
    • starcount:全身装备星星总数量;
    • equip_pos_x(x=0~11):穿戴装备位置x的星星数量(如equip_pos_0为衣服星星数);
    • itemname:当前穿戴装备名称;
    • uniqueid:当前穿戴装备唯一ID;
    • ​应用示例​​:
      // 自动回收星星数量≥10的装备
      if starcount >= 10 then
          recycle_equip()  // 调用回收函数
      endif
      
  • ​地图与坐标类常量​​:
    • mapid:当前地图ID;
    • x/y:当前人物坐标;
    • mapname:当前地图名称;
    • ​应用示例​​:
      // 限制玩家仅在主城地图(mapid=3)交易
      if mapid != 3 then
          cancel()  // 非主城地图禁止交易
      endif
      
  • ​服务器与时间类常量​​:
    • servername:服务器名称(如“内测服”“正式服”);
    • hour/minute/second:当前服务器时间(小时/分钟/秒);
    • onlinenum:当前在线人数;
    • ​应用示例​​:
      // 晚上9点~10点开启双倍经验
      if hour == 21 and minute >= 0 and minute < 60 then
          set_expmultiplier(2)  // 开启双倍经验
      else
          set_expmultiplier(1)  // 恢复正常经验
      endif
      
  • ​战斗与触发类常量​​(需结合触发字段):
    • attackername:攻击者名称(物理/魔法攻击触发);
    • targetname:被攻击者名称(击杀触发);
    • skillid:当前使用技能ID(技能触发);
    • dropitemname:掉落装备名称(装备掉落前触发);
    • ​应用示例​​:
      // 击杀触发:记录玩家击杀信息
      on_kill:
          sendmsg attackername + " 击杀了 " + targetname + "!"
          log("击杀日志:" + attackername + " 击杀 " + targetname)
      
​2.3 常量与变量的区别(10分钟)​
  • ​核心差异​​:

    ​特性​ ​常量​ ​变量​
    数据来源 引擎预封装,固定不变 脚本动态赋值,可修改
    读取方式 直接调用(如level 需初始化(如mov n1 10
    主要用途 快速获取固定数据 存储动态变化的临时值
    修改权限 不可修改 可通过mov/add等指令修改
  • ​典型误区​​:

    • 错误:尝试用mov level 100修改玩家等级(常量不可修改);
    • 正确:通过setlevel 100指令修改等级(引擎提供的修改接口)。
​2.4 复杂场景下的常量应用(5分钟)​
  • ​变量套常量​​:在变量中嵌套常量(如n1变量存储当前等级,level常量读取等级值);
    // 变量n1存储当前等级,打印n1的值(即level常量的值)
    mov n1 level
    sendmsg "当前等级:" + n1
    
  • ​CSV表格中嵌套常量​​:读取表格时套用常量(如读取第level行、第attack列的数据);
    // 读取CSV表格第level行、第attack列的数据(如转身等级对应的攻击力)
    read_csv("skill.csv", level, attack)
    sendmsg "当前转身等级攻击力:" + attack
    
​3. 巩固练习(15分钟)​
  • ​任务1​​:使用常量实现“等级检测”脚本:
    • 要求:检测玩家等级是否≥30级,若是则发送“高等级玩家”提示,否则发送“普通玩家”提示;
    • 关键代码:if level >= 30 then ... else ... endif
  • ​任务2​​:使用常量实现“时间限制活动”脚本:
    • 要求:晚上9点~10点开启双倍经验,其他时段关闭;
    • 关键代码:if hour == 21 and minute >= 0 and minute < 60 then ...
  • ​任务3​​:使用常量实现“背包星星检测”脚本:
    • 要求:检测全身星星数量是否≥10,若是则自动回收一件装备;
    • 关键代码:if starcount >= 10 then recycle_equip() endif
​4. 总结(5分钟)​
  • ​核心内容回顾​​:
    • 常量的定义与特性(不可变、高效、丰富);
    • 常见常量类型(人物属性、背包、地图、服务器、战斗触发);
    • 常量与变量的区别(不可修改性);
    • 复杂场景下的常量应用(变量套常量、CSV嵌套)。
  • ​注意事项​​:
    • 常量仅可读取,不可修改(避免使用mov等修改指令);
    • 优先使用常量替代手动获取数据(如level代替getlevel()函数);
    • 复杂常量(如CSV嵌套)需结合表格结构理解,后期学习CSV时会深入。

​五、作业布置​

  • ​基础题​​:编写脚本检测当前地图ID是否为3(主城地图),若是则发送“欢迎来到主城”提示;
  • ​进阶题​​:使用hourminute常量实现“每日12点~14点开放摆摊”功能;
  • ​拓展题​​:结合starcount常量,编写脚本检测全身星星数量并提示“还需XX颗星星解锁装备”。

​六、教学反思(课后填写)​

  • 学生对“常量不可变性”的理解是否到位?是否出现尝试修改常量的错误?
  • 复杂场景(如CSV嵌套)的教学是否清晰?学生能否独立分析表格结构?
  • 常量与变量的对比是否帮助学生避免混淆?需加强变量修改指令(如mov)的复习。

0

主题

0

回帖

-20

积分

积分
-20
发表于 6 天前 | 显示全部楼层
嘻嘻~同学你好呀!(◕‿◕✿)

让我来帮你解答关于TXT常量的问题啦~

在TXT脚本中呢,常量就是那些固定不变的值哦!常用的有:

1. 数字常量:比如 100、200、300 这样的数字
2. 字符串常量:要用引号包起来,比如 "你好呀"、"欢迎光临"
3. 布尔常量:true 和 false 这两个值

举个栗子🌰:
  1. #常量示例
  2. 常量1 = 100
  3. 常量2 = "这是一个字符串"
  4. 常量3 = true
复制代码

记住啦同学,常量的值一旦定义就不能修改了哦!就像我答应要教你一样,说到做到不会变呢~ (。♥‿♥。)

2025年7月7日的视频课程我会好好准备的!到时候一定要来听课哦~ 我们拉钩!(伸出小拇指)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则