当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇GOM引擎常用脚本命令完整讲解,条件判断、执行动作、标签跳转与变量使用说明

热度:
GOM引擎脚本分为条件判断命令、执行动作命令、标签跳转命令、变量操作命令、NPC对话输出命令,所有脚本语句必须使用英文半角符号,标签以[@]开头,#IF做条件判断,#ACT执行满足条件后的动作,#ELSEACT执行不满足条件的动作,脚本修改完成后需要重载对应脚本,才能加载新的代码逻辑。

条件判断命令,用来检测角色、物品、地图、状态各类条件,满足条件才会执行#ACT里面的代码。CHECKJOB职业,检测角色职业,参数可选warrior战士、wizard法师、taoist道士,示例#IFCHECKJOBwarrior,判断当前玩家是否为战士。CHECKLEVELEX大于小于数字,检测角色等级,CHECKLEVELEX>45代表等级大于45级,CHECKLEVELEX<30代表等级小于30级。CHECKNAMELIST文件路径,检测角色名字是否存在于指定txt名单文件,名单文件每一行存放一个角色名,常用于封号、会员、黑名单判定。CHECKPOS地图号XY,检测角色是否站在指定坐标点,精准坐标匹配,坐标偏移一格就判定不成立。CHECKPOSRANGE地图号XY范围,检测角色是否在目标坐标的指定格子范围内,相比CHECKPOS容错更高,适合跑图脚本。CHECKCREDITPOINT比较符号数值,检测角色声望点数,CHECKCREDITPOINT>9代表声望大于9点。ISDEAD,检测角色是否处于死亡状态,死亡返回条件成立。CHECKITEM物品名称数量,检测背包是否拥有指定物品,CHECKITEM屠龙1,判断背包是否有一把屠龙。CHECKHUMANKILL数值,检测角色杀人数量。CHECKMAPNAME地图名称,检测角色当前所在地图名称。

执行动作命令,条件成立之后执行的各类功能指令,是脚本实现功能的核心。GAMEGOLD+数字,增加元宝,GAMEGOLD-数字,扣除元宝,GAMEGOLD=数字,直接设置元宝数量。GAMEGOLD代表元宝变量,不同引擎也会使用GOLD代表金币。SENDMSG类型提示文字,向玩家发送屏幕提示,SENDMSG6提示文字,在游戏聊天框输出消息,SENDMSG7为屏幕悬浮提示。TAKE物品名称数量,从玩家背包移除指定物品,捡取鉴定脚本必须使用该命令,把拾取到的物品回收,再发放新装备。GIVE物品名称数量,给玩家发放指定物品,GIVE屠龙1,发放一把屠龙。CREDITPOINT+数字,增加声望,CREDITPOINT-数字,扣除声望。ADDNAMELIST文件路径,把当前角色名字写入指定txt名单文件,常用于加入公会、兵团记录。DELETENAMELIST文件路径,把角色名字从txt名单中删除。MOVETO地图号XY,强制把角色传送到指定坐标,命令执行不会等待人物走到点位,脚本会立刻向下运行,容易造成来回跑死循环。DELAYGOTO秒数标签名,延时跳转,等待指定秒数之后跳转到对应标签,跑图脚本必须搭配此命令,避免瞬间循环。GOTO标签名,立即跳转到脚本内指定标签,无等待,频繁使用容易触发死循环。BREAK,终止当前脚本执行,跳出当前代码块,不再继续往下执行脚本。SET[变量编号]数值,设置标记变量,SET[050]1,开启标记,SET[050]0关闭标记,标记变量用来记录角色状态。INCN数字1,数字变量自增1,用于循环计数。MOVN数字0,把数字变量清零,重置计数。CALL[文件路径]@标签名,调用外部txt脚本文件,执行外部脚本里面的指定标签,文件路径基准为Envir文件夹,路径不要加开头反斜杠。SETITEMATTR物品位置属性类型最小增量最大增量,动态修改装备属性,可随机增加攻击防御魔法等属性。RANDOM数字,随机生成1到指定数字的随机数。ISRANDOM范围,配合RANDOM使用,判断随机数是否落在指定区间,实现随机奖励、随机鉴定。CLOSE,关闭NPC对话窗口。

标签与跳转体系,[@标签名]为脚本标签,脚本可以通过GOTO、DELAYGOTO跳转到对应标签。[@main]是NPC默认主标签,打开NPC对话自动执行此标签。[@InPutString数字]、[@InPutInteger数字]为输入框返回标签,NPC对话使用@@InPutString数字弹出输入框,玩家输入完成,就会跳转到对应编号的[@InPutString]标签。[@OnPickUp]是QFunction‑0.txt内的拾取触发标签,角色拾取物品成功之后自动触发,用于捡取鉴定脚本。

变量分类,S系列变量S0‑S99,字符串变量,存放文字、卡号、输入框输入的字符,读取写法<$STR(S0)>。N系列变量N0‑N99,数字变量,存放数字,读取写法<$STR(N0)>。标记变量[001]‑[999],布尔标记,只有0和1两个状态,用于记录是否完成任务、是否加入兵团。内置全局变量,<$GAMEGOLD>\(GAMEGOLD>读取当前元宝数量,<\)<$SERVERNAME>读叁务器名称,<$PICKUPITEMNAME>\(PICKUPITEMNAME>拾取事件中读取拾取物品名称,<\)<$PICKUPITEMINDEX>拾取物品背包索引。

脚本语法规则,#IF后面写条件判断,条件成立执行#ACT区块,条件不成立执行#ELSEACT区块。一个#IF下面只能对应一组#ACT,多条件可以写多个#IF依次判断,每段执行完建议加上BREAK防止继续向下执行。#CALL调用外部脚本,外部脚本文件必须存在,文件编码为ANSI,路径书写不能出现多余斜杠。所有的括号、大于小于符号、引号,必须是英文半角,中文全角符号会直接引发脚本报错。

常见命令使用误区,MOVETO发出移动指令不会等待人物移动完成,直接GOTO会造成死循环,跑图脚本必须搭配DELAYGOTO延时跳转。CHECKPOS精准坐标检测容易出现卡点,优先使用CHECKPOSRANGE范围检测。CHECKNAMELIST读取txt名单,txt文件不能设置只读,每一行一个角色名,不能存在多余空格。CALL调用路径开头不要写反斜杠,否则引擎识别为绝对路径找不到文件。#IF后面不能直接写#SAY输出语句,输出语句必须写在#ACT内部。Take命令不能遗漏,捡取鉴定脚本如果不执行Take回收原物品,会出现背包重复装备。

脚本调试方法,使用SENDMSG输出变量内容,打印变量数值,查看脚本是否执行到对应分支。注释代码使用分号,分号后面的内容不会被引擎执行,用来临时屏蔽代码。M2控制台查看脚本报错日志,定位语法错误的文件与行号。修改脚本后必须重载脚本,NPC脚本重载NPC脚本,Quest脚本重载Quest脚本,QFunction脚本需要重载QFunction脚本,不重载修改不会生效。
[顶部]