设为首页收藏本站
  • 官方微信
    lmkj_wx 微信公众号 添加方式:
    1:扫描左侧二维码
  • 手机访问
    lmkj_sj
  •  找回密码
     立即注册

    QQ登录

    只需一步,快速开始

    查看: 13|回复: 0

    传奇私服技术探秘:架设、脚本与高频难题解析(二)

    [复制链接]
    avatar
    • 打卡等级:祈祷套勇士
    • 打卡总天数:49
    • 打卡月天数:3
    • 打卡总奖励:6584
    • 最近打卡:2025-06-03 00:36:17

    3831

    主题

    24

    回帖

    5271

    积分

    管理员

    本站站长

    积分
    5271
    online_admin 发表于 6 天前 | 显示全部楼层 |阅读模式
    二、灵魂雕琢:脚本修改的艺术与实战
    脚本 (Envir\Market_Def, Envir\QuestDiary, Envir\Robot_def) 是赋予传奇私服独特玩法与活力的灵魂。掌握脚本语言是 GM 进阶的必经之路。
    1. 脚本语言基础:命令与变量
    • 核心命令:

      • 对话框:#SAY (显示), #ACT (执行), #ELSESAY (否则显示), BREAK (跳出) 等。
      • 流程控制:GOTO (跳转), IF/ELSE (条件判断)。
      • 物品操作:GIVE (给予), TAKE (拿走), CHECKITEM (检查物品)。
      • 货币操作:GAMEGOLD (元宝), GAMEPOINT (游戏点), CREDITPOINT (声望) 等。
      • 人物属性:CHANGELEVEL (改变等级), CHANGEEXP (改变经验), ADDSKILL (添加技能)。
      • 地图传送:MAPMOVE (地图传送), MAP (当前地图名), X/Y (坐标)。
      • 怪物操作:MISSION (刷怪), PARAM1/PARAM2/PARAM3/PARAM4 (刷怪参数)。
      • 行会操作:CHECKGUILD (检查行会), ADDGUILDMEMBER (添加成员)。
      • 时间操作:CHECKDAYTIME (检查白天/黑夜), HOUR (小时)。

    • 变量系统:
      • 个人变量: P0-P9 (临时), D0-D9 (数字型,下线保存), S0-S9 (字符型,下线保存), M0-M9 (数字型,仅在线)。
      • 全局变量: G0-G999 (数字型), A0-A999 (字符型)。所有玩家共享,常用于全服活动标志、计数。
      • 自定义变量: 高级引擎支持自定义名称变量 (VAR, GLOBALVAR),增强可读性。
      • 变量操作: INC (加), DEC (减), MOV (赋值), CALCVAR (计算)。


    2. 经典脚本实例剖析
    (1) 智能NPC任务脚本 (如土城老兵):
    [@main]
    #SAY
    你好,勇士!最近城外半兽人肆虐,严重威胁村庄安全。\ \
    你是否愿意为村民们清除这些祸患?\ \
    <领取任务/@getquest> <我已经完成了/@finishquest> <离开/@exit>

    [@getquest]
    #IF
    CHECK [101] 0 // 检查任务标记[101]是否为0(未领取)
    #ACT
    SET [101] 1 // 设置任务标记[101]为1(已领取未完成)
    MISSION 土城 330 330 半兽人战士 10 3 // 在土城330,330附近刷10只半兽人战士,范围3
    #SAY
    太好了!请前往土城(330,330)附近消灭10只半兽人战士,完成后回来找我领取丰厚奖励!\
    <返回/@main>
    #ELSESAY
    你已领取了该任务,请先完成它!\
    <返回/@main>

    [@finishquest]
    #IF
    CHECK [101] 1 // 已领取未完成
    CHECKKILLMONCOUNT 半兽人战士 >= 10 // 检查击杀半兽人战士数量是否>=10
    #ACT
    SET [101] 2 // 设置任务完成标记
    GIVE 金条 1 // 给予金条1根
    GAMEGOLD + 50 // 增加50元宝
    CHANGEEXP + 1000000 // 增加100万经验
    #SAY
    干得漂亮,勇士!这是你应得的奖励!\
    <返回/@main>
    #ELSESAY
    你尚未完成消灭10只半兽人战士的任务,请继续努力!\

    <返回/@main>

    关键技术点: GetRandomText 读取外部配置文件实现动态概率;RANDOM 进行概率判定;UPGRADEITEMEX 核心强化命令,参数控制属性、点数、是否破碎消失。
    (3) 定时全服活动 (如每晚8点天降财宝):
    Envir\Robot_def\AutoRunRobot.txt 添加:
    #AutoRun NPC SEC 1 @SystemTimeCheck // 每秒触发一次时间检查
    Envir\Robot_def\RobotManage.txt 添加:
    [@SystemTimeCheck]
    #IF
    EQUAL $HOUR 20 // 判断小时是否为20点(晚8点)
    CHECK [全服财宝活动] 0 // 检查活动是否未开启
    #ACT
    SET [全服财宝活动] 1 // 标记活动开启
    Gmexecute 开始提问 @财宝活动开始 // 全服公告
    SENDMSG 0 [系统]:天降财宝活动已开启!大量金币和宝物散落在土城安全区!速去拾取! 255 0
    PARAM1 土城
    PARAM2 330
    PARAM3 330
    PARAM4 50 // 范围50
    MISSION 金币堆 100 // 刷100堆金币堆
    MISSION 宝物袋 30 // 刷30个宝物袋
    BREAK

    [@财宝活动开始]
    #ACT
    SENDMSG 0 [天降财宝]:财宝已降临土城安全区(330:330),持续10分钟! 251 0
    DelayCall 600 @CloseTreasureEvent // 600秒(10分钟)后调用关闭事件

    [@CloseTreasureEvent]
    #ACT
    SET [全服财宝活动] 0 // 标记活动结束
    Gmexecute 清除地图物品 土城 // 清除土城地面物品
    SENDMSG 0 [系统]:天降财宝活动已结束! 255 0

    BREAK
    关键技术点: Robot 机器人脚本实现自动触发;$HOUR 获取系统时间;Gmexecute 执行GM命令;SENDMSG 发送彩色公告;MISSION 刷活动物品;DelayCall 实现活动倒计时自动关闭。



    您需要登录后才可以回帖 登录 | 立即注册 qq_login

    本版积分规则

    QQArchiver 手机版 小黑屋 39传奇素材网 ( 蜀ICP备2022016510号-3 )

    快速回复 快速发帖 返回顶部 返回列表