二、灵魂雕琢:脚本修改的艺术与实战
脚本 (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 实现活动倒计时自动关闭。
|