当前位置:首页 > 引擎 > Blue引擎

传奇全套脚本触发功能详解 最新GOTO命令与各类触发脚本教程

admin17小时前3
传奇版本搭建与脚本定制过程中,各类触发功能、命令参数的熟练运用是实现个性化玩法、行会功能、物品机制、战斗特效的核心基础。本文将全面讲解传奇最新脚本触发功能,包含GOTO多模式触发、QM/QF/机器人脚本/QMap/QChat五大脚本场景、各类物品与人物状态触发、战斗触发、行会触发及特效扩展命令,搭配…


传奇版本搭建与脚本定制过程中,各类触发功能、命令参数的熟练运用是实现个性化玩法、行会功能、物品机制、战斗特效的核心基础。本文将全面讲解传奇最新脚本触发功能,包含GOTO多模式触发、QM/QF/机器人脚本/QMap/QChat五大脚本场景、各类物品与人物状态触发、战斗触发、行会触发及特效扩展命令,搭配完整实战案例,帮助传奇GM快速掌握脚本编写技巧,适配各类版本开发需求。

一、传奇GOTO多参数触发功能详解

GOTO命令是传奇脚本中高频使用的跳转触发指令,本次版本对其参数逻辑进行了全面扩展,支持多场景、多人群、多范围触发,适配组队、行会、地图范围、坐标范围等多种触发条件,是定制团队玩法、行会玩法的核心命令。

1.1 GOTO命令完整参数说明

命令格式:GOTO 参数1:@XXX标签 参数2:模式(1/2/3/4) 参数3:范围 参数4:脚本类型 参数5-9:自定义传输参数

参数释义

参数1:自定义跳转标签,用于匹配脚本对应执行模块;

参数2:触发模式,共4种模式,适配不同人群触发场景;

参数3:触发范围,仅模式4生效,无需求则填空字符;

参数4:脚本类型,1=QM、2=QF、3=机器人脚本、4=QMap、5=QChat;

参数5-9:自定义传输参数,非空时可传递至对应触发对象,支持<$PARAM(5~9)>调用。

1.2 四大触发模式规则

模式1:小组成员触发,仅当前组队队伍内成员生效;

模式2:行会成员触发,针对本行会在线成员生效;

模式3:当前地图人物触发,地图内所有在线玩家统一触发;

模式4:坐标范围触发,以执行者自身坐标为中心,按参数3设定范围触发范围内所有人物。

1.3 重要更新注意事项

模式4生效后,脚本参数起始位置发生变更,原有参数从参数4开始传递,更新后改为从参数5开始传递,编写脚本时需精准区分,避免参数调用失效。同时范围触发需搭配地图判定、条件判断语句使用,保障脚本稳定性。

1.4 GOTO命令实战案例

案例1:队伍编组模式触发脚本

#IF

ISGROUPMASTER

#ACT

GOTO @队伍 1

[@队伍]

#IF

!ISGROUPMASTER

#ACT

CHANGEATTACKMODE 1

#SAY

队伍中有人为您开启了【编组模式】!

案例2:QM全局队伍触发脚本

#IF

ISGROUPMASTER

#ACT

Goto @RESUME 1 50 1   //队伍成员将在任意地方执行QM里的脚本

案例3:QF行会招募触发脚本

[@招募成员]

#IF

ISGUILDMASTER

#ACT

Goto @xxx 2 50 2

#ELSEACT

messagebox 对不起,您不是行会会长!招募成员!

BREAK

[@xxx]

#IF

ISGUILDMASTER

#ACT

MOV G<$GUILDNAME>申请人数 0

MOV A行会1 <$GUILDNAME>

MOV A行会掌门1 <$USERNAME>

MOV A行会掌门1地图 <$CURRENTMAP>

MOV A行会掌门1X坐标 <$CURRENTX>

MOV A行会掌门1Y坐标 <$CURRENTY>

SENDMSG 1 【<$STR(A行会1)>】老大:<$STR(A行会掌门1)>,等级:<$LEVEL>级、职业:<$JOB>,在%m,诚邀各位加入!

#IF

!ISGUILDMASTER

CHECKOFGUILD <$STR(A行会1)>

#ACT

SENDMSG 16 【<$STR(A行会1)>】老大:【<$STR(A行会掌门1)>】、正在召集您!

#SAY

您是否愿意参加【<$STR(A行会1)>】老大:【<$STR(A行会掌门1)>】的召唤令!\

<前往/@前往> <不去/@不去>

#ACT

BREAK

#IF

HAVEGUILD

#ACT

CLOSE

BREAK

#ELSEACT

GMEXECUTE 加入行会

INC G<$STR(A行会1)>申请人数 1

MOV A行会申请人<$STR(G行会申请人数)> <$USERNAME>

SENDMSG 1 【<$STR(A行会1)>】当前在线玩家:<$STR(A行会申请人<$STR(G行会申请人数)>>

#ELSESAY

您是否愿意加入行会【<$STR(A行会1)>】\

<同意/@同意> <拒绝/@拒绝>

[@前往]

#IF

!ISGUILDMASTER

CHECKOFGUILD <$STR(A行会1)>

#ACT

MAPMOVE <$STR(A行会掌门1地图)> <$STR(A行会掌门1X坐标)> <$STR(A行会掌门1Y坐标)>

CLOSE

BREAK

[@不去]

#IF

!ISGUILDMASTER

CHECKOFGUILD <$STR(A行会1)>

#ACT

<$STR(A行会掌门1)>.SENDMSG 17 行会玩家:<$USERNAME>、拒绝前往支援!

CLOSE

BREAK

[@同意]

#IF

HAVEGUILD

#ACT

MESSAGEBOX 对不起,您已有行会,无法申请加入!

CLOSE

BREAK

#ELSEACT

SENDMSG 1 当前申请人:<$STR(A行会申请人<$STR(G行会申请人数)>>、申请加入:【<$STR(A行会1)>】

AFFILIATEGUILD <$STR(A行会1)>

CLOSE

BREAK

[@拒绝]

#IF

!HAVEGUILD

#ACT

SENDMSG 1 当前申请人:<$USERNAME>、拒绝加入:【<$STR(A行会1)>】

DEC G<$STR(A行会1)>申请人数 1

CLOSE

BREAK

二、传奇脚本基础功能补充更新

2.1 SendMsg消息发送类型扩展

新增专属消息弹窗位置类型,适配不同界面展示需求:

15-17类型:左下角弹窗消息;

25-27类型:右下角弹窗消息。

原有SendMsg功能支持自定义字体颜色、背景颜色、延迟执行时间,格式为:SENDMSG 类型 发送信息 字体颜色(0-255) 背景颜色(0-255) 延迟时间(秒),可实现延时触发NPC脚本。

2.2 Take拾取命令扩展

Take命令新增第5参数触发字段,参数非空时,拾取物品将临时存入自定义装备框。配套专属调用参数:$PARAM(7)角色名、$PARAM(8)物品名、$PARAM(9)物品ID。该触发支持GetEquipProps、DLGITEM系列NPC命令操作,编写脚本时禁止添加延时操作,避免物品对象销毁导致脚本失效。

示例:Take 物品名 1 "" 0 ~OnTakeItem

2.3 宝箱掉落功能优化

宝箱物品掉落概率最大支持1000万数值,同步优化算法逻辑,加载配置时自动检测错误物品并提示。新增[@OpenTreasureChest]触发参数<$PARAM(4)>,用于获取物品ID,多物品掉落时默认匹配最后一个物品ID,重叠物品无ID返回。

2.4 QM启停专属触发

QM脚本新增服务器关闭触发标签[@OnStop],与原有服务器启动[@OnStart]形成成对触发,可用于服务器启停数据加载、保存、初始化等操作。

QM启停脚本示例:

[@OnStart]

#act

; 服务器启动时,加载物品描述数据并设置后台自动保存

; 注意“H_ItemDesc”为系统保留标识,请勿占用

Hash H_ItemDesc Load ..\QuestDiary\ItemData\ItemDesc.csv

Hash H_ItemDesc BGSave ..\QuestDiary\ItemData\ItemDesc.csv

三、QF脚本全新新增触发功能大全

3.1 物品出产触发[@ProduceItem]

该功能为AC专属脚本触发,物品表中RareItem字段包含128时,物品出产瞬间自动触发。配套完整参数可精准获取物品出产信息。

专属参数:

$PARAM(0):出产来源、$PARAM(1):物品ID、$PARAM(2):出产时间、$PARAM(3):物品名、$PARAM(4):出产地图、$PARAM(5):出产者、$PARAM(6):归属击杀人物。

脚本实战示例:

[@ProduceItem]

#act

; 注意物品的描述文字里不要带逗号“,”

; <字符串|c=clRed>,“字符串”是红色,没有在尖括号内的字符为普通白色

FormatStr"来源:<%s|c=clRed>\地图:<%s|c=$4AD663>\产者:<%s|c=$E9A000>\<物主:|c=clSkyBlue><%s|c=$5CF4FF>\<时间:%s|c=clLime>" <$PARAM(0)> <$PARAM(4)> <$PARAM(5)> <$PARAM(6)> <$PARAM(2)>

; 设置此物品ID的附加描述

SetItemDesc <$PARAM(1)> <$CALCRESULT>

3.2 人物状态专属触发

1. 顶号触发:[@KickDoubleConnect],账号异地登录顶号时自动触发;

2. 组队触发:[@JoinGroup]加入组队触发、[@LeaveGroup]离开组队触发;

3. 英雄装备触发:[@HeroTakeOn+位置]英雄穿戴装备触发、[@HeroTakeOff+位置]英雄取下装备触发,逻辑同步人物装备触发;

4. 假人专属触发:支持[@PickupItem]拾取物品、[@HeroLogin]英雄登录触发;

5. 聚灵珠使用触发:[@OnUseExpBall]玩家使用、[@OnHeroUseExpBall]英雄使用,参数包含物品名、价格、价格类型;

6. 魔法释放触发:[@MagSelfFuncXX]、[@MagTagFuncXX],支持玩家与英雄区分,$PARAM(0)=0为玩家触发、=1为英雄触发。

3.3 物品操作全场景触发

3.3.1 死亡掉落触发[@DroppingItem]

物品表RareItem包含8时生效,区分死亡掉落与手动丢弃,$PARAM(0)=0为死亡掉落、=1为手动丢弃,可精准统计物品掉落数据,禁止用于实时硬盘读写操作。

3.3.2 商店交易触发[@DealingGoods]

物品表RareItem包含32时生效,玩家在NPC商店购买、出售物品前触发,可用于限制物品交易、记录交易日志。

3.3.3 仓库存取触发[@StorageItem]

物品表RareItem包含64时生效,仓库存取物品前触发,可禁止指定物品存入仓库、记录存取数据。

3.3.4 装备鉴定触发[@EvalEquipSucceed]

装备鉴定成功后触发,支持调用GetEquipProps、UpgradeDlgItem等命令,编写时需规避死循环问题。

3.3.5 物品拾取丢弃触发

拾取触发[@PickupItem]:区分掉落类型、拾取主体,新增$PARAM(10)区分玩家/英雄拾取;

丢弃触发[@DropItem]:记录丢弃物品信息、坐标、角色信息,不建议用于实时硬盘操作。

3.4 武器诅咒触发[@OnCursingWeapon]

玩家或英雄武器产生诅咒时自动触发,可获取武器名称、幸运值、诅咒值、操作主体,常用于防止武器掉幸运、锁诅咒等玩法。

防武器掉幸运示例脚本:

[@OnCursingWeapon]

#if

CompVal <$PARAM(1)> > 0 Int

#act

;阻止武器被扣幸运诅咒

Approve 0

3.5 淬炼极品属性扩展

淬炼属性配置区间升级,普通属性支持0-25配置、鉴定属性支持0-19配置,扩展功能涉及二进制计算,无脚本基础建议谨慎使用。淬炼成功后触发[@RefineItem_Succeed],支持装备属性读取、弹窗刷新等操作。

四、物品表RareItem字段细分规则

传奇物品表RareItem字段为多触发功能核心开关,通过数值叠加可开启多项触发权限,具体数值对应功能如下:

1:怪物掉落通知、2:拾取触发、4:商铺购买通知、8:人物丢弃/死亡掉落触发、16:队伍拾取通知、32:NPC商店交易触发、64:仓库存取触发。

多功能开启方式:将对应数值相加即可,例如开启拾取触发+商店交易触发,设置数值为34(2+32)。

五、人物掉落物品进阶触发规则

传奇脚本中[@DroppingItem]作为物品掉落核心触发,针对英雄、玩家的掉落、丢弃逻辑做了精细化区分,仅物品表RareItem包含8时生效,可精准识别不同掉落场景,适配各类防掉落、掉落记录、专属掉落玩法开发。

专属参数场景划分

$PARAM(0)=1000:玩家死亡掉落背包物品触发;

$PARAM(0)=2000:玩家手动丢弃背包物品触发;

$PARAM(0)数值在0-16区间:玩家死亡掉落身上穿戴装备,数值对应装备位置;

$PARAM(9):判定是否为装备掉落,0=非装备、1=装备。

其余通用参数与[@DropItem]一致,包含物品名、物品外观、角色名、地图坐标、物品ID等信息,可全方位记录物品掉落数据。该触发严禁用于实时硬盘读写操作,避免服务器卡顿崩溃。

六、拾取物品触发参数进阶适配

QF脚本[@PickupItem]拾取触发新增专属参数,完美适配英雄拾取场景,区分玩家与英雄拾取逻辑,解决以往英雄拾取物品无法单独判定、脚本适配不全的问题。

新增核心参数:$PARAM(10)=0/1,0代表玩家拾取至玩家背包,1代表英雄拾取至英雄背包。

英雄拾取适配脚本案例

[@pickupitem]

#if

CompVal <$PARAM(9)> ! 1

#act

break

#if

CompVal <$PARAM(10)> = 0

#act

GetEquipProps 10000

#elseact

;临时放回主人背包以便使用GetEquipProps

H.MoveBagItem <$PARAM(7)>

GetEquipProps 10000

;用完,放回英雄背包

MoveBagItem <$PARAM(7)>

七、商店交易与仓库存取脚本实战案例

7.1 NPC商店交易触发脚本

基于[@DealingGoods]触发,可实现物品交易限制、交易日志记录,支持区分玩家购买、出售两种场景,是商城管控、交易溯源的核心脚本。

[@DealingGoods] // 如果不需要此功能删除掉QF的[@DealingGoods]字段即可

#IF

CheckLevelEx > 0

#ACT

MOV M48 <$PARAM(7)>

#if

CompVal <$PARAM(0)> = 0

#act

INSERTLINE ..\QuestDiary\商店购买.ini 1 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!找【<$PARAM(9)>】、购买:<$PARAM(1)>、单价:<$PARAM(8)>

#if

CompVal <$PARAM(0)> = 1

#act

INSERTLINE ..\QuestDiary\商店出售.ini 1 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!找【<$PARAM(9)>】、出售:<$PARAM(1)>、单价:<$PARAM(8)>

7.2 仓库存取管控脚本

依托[@StorageItem]触发,可自定义禁止存入仓库的物品,同时记录玩家存取日志,适配专属物品绑定、仓库管控玩法。

[@StorageItem]        //如果不需要此功能删除掉QF的[@StorageItem]字段即可

#if

CompVal <$PARAM(1)> = 英雄幽灵盾

#act

Approve 0

sendmsg 0 角色名:<$PARAM(3)>、禁止存放:<$PARAM(1)>

BREAK

#if

CompVal <$PARAM(0)> = 0

#act

INSERTLINE ..\QuestDiary\测试.ini 1 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>、存放:<$PARAM(1)>、NPC:<$PARAM(9)>

#if

CompVal <$PARAM(0)> = 1

#act

ADDLINELIST ..\QuestDiary\测试.txt 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>、取回:<$PARAM(1)>、NPC:<$PARAM(9)>

INSERTLINE ..\QuestDiary\测试.ini 1 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>、取回:<$PARAM(1)>、NPC:<$PARAM(9)>

八、死亡掉落与手动丢弃日志脚本

通过[@DroppingItem]触发,精准区分死亡掉落和手动丢弃场景,自动记录玩家操作信息、物品信息、坐标时间,方便GM后台溯源管控,适配防刷物品、掉落限制玩法。

[@DroppingItem]    //如果不需要此功能删除掉QF的[@DroppingItem]字段即可

#IF

CompVal <$PARAM(0)> = 1000

#ACT

INSERTLINE ..\QuestDiary\死亡掉落.ini 1 角色名:<$PARAM(3)>、在【<$PARAM(4)>】坐标:<$PARAM(5)>、<$PARAM(6)>处!死亡掉落装备:【<$PARAM(1)>】、物品ID:<$PARAM(7)>、死亡日期:<$TIMESTAMP>

BREAK

#if

CompVal <$PARAM(0)> = 2000

#act

INSERTLINE ..\QuestDiary\丢掉道具.ini 1 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>:、<$PARAM(7)>、手动:<$PARAM(0)>丢弃:<$PARAM(1)>、物品ID:<$PARAM(7)>、丢弃日期:<$TIMESTAMP>

BREAK

九、战斗攻击全套触发与专属变量

9.1 攻防触发核心说明

[@Attack]、[@UnderAttack]为传奇战斗核心触发,支持玩家、英雄、随从、怪物攻防判定,自带专属独立变量,仅可在攻防触发标签内使用,挪用至其他脚本会直接导致引擎崩溃。可实现攻防扣血、随从联动、攻击提示、反击特效等个性化战斗玩法。

9.2 攻防专属变量大全

攻击者变量:$TARINFO_RACE(目标种族)、$TARINFO_ISHERO(是否英雄)、$TARINFO_NAME(目标名称)、$TARINFO_FNAME(目标全名)、$ATTINFO_SKILLID(技能ID)、$ATTINFO_RACE(攻击者种族)、$ATTINFO_ISHERO(攻击者是否英雄)、$ATTINFO_NAME(攻击者名称)、$ATTINFO_FNAME(攻击者全名)。

目标属性变量:包含当前地图、坐标、等级、血量、蓝量、攻防属性、命中、攻速等全套人物属性变量,可精准读取目标实时状态。

9.3 攻防实战脚本案例

[@Attack]    // 人或随从攻击列表指定怪物,会触发

#IF

COMPVAL <$TARINFO_FNAME> = 蜈蚣

COMPVAL <$T.HP> > 50

#ACT

T.HUMANHP - 50

SENDMSG 7 目标【<$TARINFO_NAME>】血量<$T.HP>

#IF

COMPVAL <$ATTINFO_RACE> ! 1  // Race=1 是玩家,这里就是非玩家(即随从)

#ACT

SENDMSG 7 你的随从<$ATTINFO_NAME>正在攻击<$TARINFO_NAME>

[@UnderAttack]      // 被人或随从或列表指定怪物攻击,会触发

#IF

COMPVAL <$ATTINFO_FNAME> = 蜈蚣    // 蜈蚣打随从或自己

#ACT

HUMANHP - 50      // 主人扣血

#IF

COMPVAL <$ATTINFO_MNAME> ! ""    // 攻击者主人名称不为空

#ACT

SENDMSG 7 【<$ATTINFO_MNAME>】的随从<$ATTINFO_NAME>正在攻击你

#ELSEIF

COMPVAL <$TARINFO_RACE> ! 1     // 自己的随从

#ACT

SENDMSG 7 【<$ATTINFO_NAME>】正在攻击你的随从【<$TARINFO_NAME>】

#ELSEACT

SENDMSG 7 【<$ATTINFO_NAME>】正在攻击你

十、丢弃物品规范脚本写法

官方不建议在[@DropItem]中使用实时硬盘读写操作,推荐采用日志批量写入方式,降低服务器负载,脚本规范写法如下:

[@DropItem]

#IF

#ACT

ADDLINELIST ..\QuestDiary\测试.txt 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>:、手动丢弃:<$PARAM(1)>、物品ID:<$PARAM(7)>、丢弃日期:<$TIMESTAMP>

INSERTLINE ..\QuestDiary\测试.ini 1 角色名:<$PARAM(3)>、在<$PARAM(4)>:<$PARAM(5)>:<$PARAM(6)>:、手动丢弃:<$PARAM(1)>、物品ID:<$PARAM(7)>、丢弃日期:<$TIMESTAMP>

十一、击杀主体判定触发脚本

[@KillPlayXX]、[@KillPlayMonXX]击杀触发支持KILLERTYPE参数区分击杀主体,可单独给玩家、英雄、宝宝设置不同击杀奖励、经验、提示,精细化定制击杀玩法。

[@KillPlay1]

#IF

KILLERTYPE = 1  //1人物,2英雄,3宝宝

#ACT

SENDMSG 5 人物杀死

十二、行会全套操作触发功能

传奇脚本内置五大行会专属触发,覆盖行会创建、加入、退出、踢人、解散全流程,可定制行会专属福利、行会公告、行会变动提示等玩法。

[@BuildGuild]:创建行会触发,携带参数$PARAM(0)为对应行会名称;

[@JoinGuild]:玩家加入行会触发,携带参数$PARAM(0)为对应行会名称;

[@LeaveGuild]:玩家退出行会触发,携带参数$PARAM(0)为对应行会名称;

[@KickOutOfGuild]:成员被踢出行会触发,携带参数$PARAM(0)为对应行会名称;

[@DismissGuild]:行会解散触发,携带参数$PARAM(0)为对应行会名称。

十三、PLAYEFFECT全屏特效扩展命令

PLAYEFFECT是传奇自定义特效核心命令,支持微端自定义资源,可针对单人、行会、全服、指定地图播放动态特效,广泛用于礼包弹窗、活动开启、行会团战、技能特效等场景,需配套M2引擎与客户端资源使用。

13.1 完整命令参数

格式:PLAYEFFECT WIL名称/X/Y 起始图片 帧数 间隔 循环次数 声音 声音循环(0/1) 对象(""/All/Guild/地图名) 特效模式(0/1)

核心参数:X=-1跟随人物坐标,固定数值为定点播放;对象支持单人、全服、行会、指定地图;特效模式0为普通特效、1为技能特效模式。

13.2 特效触发脚本案例

<播放特效/@PlayEffect>\

[@PlayEffect]

#act

PLAYEFFECT Prguse2/1/1 110 15 80 1 Wav\powerup.wav 0 "" 1

[@OnPlayEffect]

#act

SENDMSG 3 播放了一个动画效果


扫描二维码推送至手机访问。

本文章九路游发布,如需转载请注明出处。如有侵权请联系站长删除。

本文链接:https://www.9luu.com/539.html

分享给朋友: