传奇SETABILITY临时属性脚本完整教程 附带实战案例代码
在传奇版本制作与脚本开发中,SETABILITY是核心的临时属性拓展命令,可实现破盾几率、属性增益、状态控制、倒计时触发、技能附加威力等多种特色功能,同时支持人物与英雄双端生效,搭配各类状态脚本、变量系统可打造多样化BUFF效果、技能特效及玩法机制。本文将完整讲解传奇SETABILITY脚本参数、功…
在传奇版本制作与脚本开发中,SETABILITY是核心的临时属性拓展命令,可实现破盾几率、属性增益、状态控制、倒计时触发、技能附加威力等多种特色功能,同时支持人物与英雄双端生效,搭配各类状态脚本、变量系统可打造多样化BUFF效果、技能特效及玩法机制。本文将完整讲解传奇SETABILITY脚本参数、功能特性、变量用法及全套实战案例,方便版本开发者直接套用。
一、SETABILITY核心基础功能介绍
SETABILITY是传奇服务端核心临时属性拓展命令,主打临时属性赋值、状态计时、特效绑定、事件触发四大核心能力,广泛应用于版本BUFF制作、技能强化、状态限制、CD倒计时、特殊攻防属性等玩法开发,是传奇自定义特色玩法的核心脚本命令。
该命令支持全局属性、单体属性配置,兼容人物与英雄体系,可搭配QF脚本事件、Hash存档命令、自定义特效文件实现高自由度的版本定制,同时自带完善的计时与状态重置机制,稳定性极强。
二、SETABILITY详细参数规则
2.1 基础ID功能规则
SETABILITY 50:专属破盾几率ID,专门用于配置人物临时破盾属性,是版本攻防玩法常用核心ID。
ID数值区间划分:0~600为常规属性ID,其中500~600为全局专属ID,全局ID不支持特效绑定,仅可搭配Hash存档、[@OnStart]、[@OnStop]事件使用;601~855为技能附加威力专属ID,对应技能ID=AID-600,可自定义技能额外伤害效果。
2.2 核心触发机制
属性赋值成功后,自动触发QF脚本的[@SETABILITY_ID]事件;当临时属性计时结束、状态失效后,将触发[@RESETABILITY_ID]重置事件,可用于自定义属性生效、失效提示及配套玩法逻辑。
该命令全面支持英雄临时属性配置,通过参数可区分触发主体:$PARAM(0)=0为玩家主体触发,$PARAM(0)=1为英雄触发,脚本执行主体统一为英雄主人。
2.3 倒计时与暂停规则
新增专属计时变量,精准读取属性剩余生效时间,适配各类倒计时提示与机制判断:
人物倒计时变量:$ABILTTL0~600
英雄倒计时变量:$H.ABILTTL0~600
变量数值判定规则:数值为0代表属性未生效/不存在;数值小于0代表倒计时暂停,显示剩余暂停时间;数值大于0代表属性正常运行,显示剩余生效时间。
特殊计时规则:SETABILITY ID 0 -1,秒数设置为-1时,可实现倒计时暂停或恢复操作,可高效搭建各类CD倒计时触发系统。
2.4 全局清理命令
SETABILITY cleanup 1:参数1代表清理所有全局ID(500~600区间)的临时属性,可一键重置全局状态。
2.5 特效绑定参数规则
SETABILITY第五参数为自身效果ID,ID对应服务端ABILITYEFFECTS.TXT条目,客户端需将该文件放置于data目录方可正常加载特效。
特效配置标准格式:ID(1~65535唯一不重复) WIL名称 起始图片 帧数 帧间隔 声音 声音循环(0/1) 特效模式(0/1)
常用特效示例:
1 PRGUSE2 110 15 80 WAV\POWERUP.WAV 1 1
2 PRGUSE2 90 19 80 WAV\POWERUP.WAV 1 1
2.6 完整参数释义
SetAbility 完整参数顺序:参数1=位置/类型,参数2=数值999,参数3=秒数,参数4=特效结束文字描述,参数5=自身效果id,参数6=1(特效仅对自身生效)
技能附加威力配置示例:SetAbility 611 999 10 雷电术附加威力消失了!(611对应601+1,绑定雷电术技能增伤)
三、MAKEPOISON生物状态系统详解
MAKEPOISON为传奇核心生物状态控制脚本,可搭配SETABILITY实现属性联动触发,支持16种自定义状态,可实现中毒、控制、攻防增幅、特殊buff等效果,参数格式:类型(0~16) 秒数 点数,首参数为CLEARUP时可清理所有状态。
16种状态类型明细:
0:绿毒、1:红毒、2:人物变色、3:雷击、4:冰冻、5:石化、6:禁锢(轻量麻痹)、7:重伤(丧失防御)、8:隐身、9:战甲术、10:幽灵盾、11:魔法盾、12:四级魔法盾、13:神龙附身(刀刀暴击)、14:龙化(攻防增强、抵抗石化,搭配专属首饰可触发神龙之怒神技)、15:滴血(百分比掉血绿毒)、16:诅咒(攻防百分比增减,状态可存档)
四、传奇专属拓展变量大全
SETABILITY配套新增多组专属变量,覆盖人物、英雄、随从状态判定,适配各类脚本逻辑编写:
人物倒计时变量:$ABILTTL0~599
英雄倒计时变量:$H.ABILTTL0~599
人物BUFFER位置变量:$ABILITIES0~500
英雄BUFFER位置变量:$H.ABILITIES0~500
随从判定变量:$TARINFO_ISSLAVE(判定目标是否为随从)
系统预留规则:内置49个固有属性,50~100区间可自由作为临时计时变量与通用计时器使用
五、可视化倒计时解析规则
传奇NPC对话、聊天栏、任务栏、跑马灯、自定义按钮标题,均可解析SETABILITY倒计时代码,实现可视化时间展示,核心语法:<ACD=ID>
自定义样式示例:攻速剩余有效时间:<ACD=45{ax=66,ay= 0}>(45为SETABILITY对应ID,客户端配套后可显示天/时/分/秒精准时间)
六、SETABILITY位置对应属性明细(0-50)
所有常规属性ID对应固定人物状态,可精准配置各类临时增益、限制效果,具体对应如下:
0:腕力、1:负重、2:背包重量、3:准确、4:敏捷、5:魔法躲避(1点=10%)、6:毒物躲避(1点=10%)、7:中毒恢复(1点=10%)、8:生命恢复(1点=10%)、9:魔法恢复(1点=10%)、10:暴击、11:目标爆率、12:防爆、13:忽视属性(百分比上限100)、14:增伤(百分比上限100)、15:反射(百分比上限100)、16:物减(百分比上限100)、17:魔减(百分比上限100)、18:吸血、19:幸运、20:GM隐身、21:GM无敌、22:禁止使用物品、23:禁止丢弃、24:禁止移动、25:禁止跑步、26:禁止物理攻击、27:禁止魔法攻击、28:稳如泰山、29:禁止召唤英雄、30:禁止修改攻击模式、31:禁止使用仓库、32:麻痹模式、33:魔道麻痹、34:复活、35:护身、36:传送、37:探测、38:隐身、39:破麻、40:防毒、41:破复活、42:破护身、43:背包不掉、44:装备不掉、45:攻击加速、46:禁止交易、47:禁止摆摊、48:禁止出售物品、49:禁止使用商铺、50:破盾
七、特殊BUFF属性ID配置规则
新增400-407专属BUFFID,可快速配置人物基础属性大幅增益,适配高阶buff、套装效果、活动增益等玩法:
400:最大HP、401:最大MP、402:防御、403:魔防、404:攻击、405:魔法、406:道术、407:合击伤害减少(数值1-100)
八、全套实战脚本案例(可直接复制使用)
案例一:单属性多动画BUFF效果
SETABILITY 51 80 15 "" 1
SETABILITY 51 80 15 "" 2
SETABILITY 51 80 15 某BUFFER恢复正常 3
案例二:石化+冰冻双属性增益
[@SETABILITY]
#ACT
SETABILITY 50 20 900 石化技能恢复正常
SETABILITY 51 20 900 冰冻技能恢复正常
SENDMSG 7 获得20%几率的石化技能,持续15分钟
SENDMSG 7 获得20%几率的冰冻技能,持续15分钟
案例三:商铺禁用限制效果
[@SETABILITY]
#ACT
SetAbility 49 1 99999999
SENDMSG 7 禁止使用商铺
案例四:破盾几率临时增益
[@SETABILITY]
#ACT
SETABILITY 50 88
SENDMSG 7 获得88%的破盾几率
案例五:属性触发石化状态联动脚本
QF:
[@ATTACK]
#IF
COMPVAL <$TARINFO_RACE> ! 1 // 非人物
COMPVAL <$TARINFO_ISSLAVE> = 0 // 非随从
COMPVAL <$ABILITIES50> > 0 // ABILITIES的50位置有数值
#ACT
SETRANDOMNO 100 // 按100随机
#ELSEACT
BREAK
#IF
COMPVAL <$ABILITIES50> > <$RANDOMNO> // 命中触发
#ACT
T.MAKEPOISON 5 5
案例六:暴击属性临时增益与清理
[@SETABILITY]
#ACT
SETABILITY 10 15 30 暴击附加属性恢复正常。
SENDMSG 5 获得暴击附加属性15点,持续30秒。
;SETABILITY 10 0 0 暴击附加属性恢复正常。 // 立即清理位置10的属性
;SETABILITY CLEARUP // 清理所有属性
案例七:全基础属性高阶BUFF增益
[@BUFF]
#IF
#ACT
SETABILITY 400 10000 500
SETABILITY 401 10000 500
SETABILITY 402 10000 500
SETABILITY 403 10000 500
SETABILITY 404 10000 500
SETABILITY 405 10000 500
SETABILITY 406 10000 500
SETABILITY 407 10000 50
SendMsg 6 附加HP+10000、将在【<$ABILTTL400>】到期!
SendMsg 6 附加MP+10000、将在【<$ABILTTL401>】到期!
SendMsg 6 附加防御+10000、将在【<$ABILTTL402>】到期!
SendMsg 6 附加魔御+10000、将在【<$ABILTTL403>】到期!
SendMsg 6 附加攻击+10000、将在【<$ABILTTL404>】到期!
SendMsg 6 附加魔法+10000、将在【<$ABILTTL405>】到期!
SendMsg 6 附加道术+10000、将在【<$ABILTTL406>】到期!
SendMsg 6 附加合击伤害减少+50、将在【<$ABILTTL407>】到期!
案例八:治疗CD倒计时完整NPC脚本
[@main]
#ACT
Hash <$USERNAME> GetE 治疗CD S1
SETABILITY 499 0 <$STR(S1>
#SAY
治疗师\
行走玛法大陆,难免受点刀枪棍棒的伤,受伤不要怕!!!\
快来找我治疗。\\
<帮我治疗一下/@治疗>冷却CD:<ACD=499{ax=124,ay=60,c=clRed}><清除CD{c=$00FC7C,AX=150,AY=58}/@清除CD>剩余次数:{c=$00FC7C,AX=190,AY= 58}<$HASH(<$USERNAME>)剩余次数>/300\\
<购买次数/@购买次数>:<$HASH(<$USERNAME>)剩余次数>/300
[@治疗]
#IF
Compval <$ABILTTL499> > 0
#ACT
MESSAGEBOX 当前CD冷却时间剩余:<$ABILTTL499>、无法进行恢复!
BREAK
#IF
Compval <$HP> ? <$MAXHP>
#ACT
MESSAGEBOX 您当前生命状态、无需进行治疗!
BREAK
#IF
InSafeZone
#ACT
HUMANHP + <$MAXHP>
HUMANMP + <$MAXMP>
H.HUMANHP + <$MAXHP>
H.HUMANMP + <$MAXMP>
MOV M_治疗CD 60
SETABILITY 499 0 <$STR(M_治疗CD)>
SendMsg 6 免费治疗剩余时间:<$ABILTTL499>,倒计时秒:<ACD=499{c=clBlue}>
Hash <$USERNAME> Set 治疗CD 1 <$STR(M_治疗CD)>
GOTO @main
MessageBox 血量已经恢复满了!
#ELSEACT
MESSAGEBOX 安全区才可以恢复血量
BREAK
[@购买次数]
#IF
Compval <$HASH(<$USERNAME>)剩余次数> < 300
#ACT
Hash <$USERNAME> Set 剩余次数 300
SendMsg 6 增加次数:300次
GOTO @main
#ELSEACT
MESSAGEBOX 最高只能购买300次!
BREAK
[@清除CD]
#ACT
Hash <$USERNAME> DEC 剩余次数 1
SETABILITY cleanup 499
GOTO @治疗
#if
!HashExists <$USERNAME> 当天日期
#act
Hash <$USERNAME> Set 当天日期 <$TIMESTAMP>
九、脚本使用核心注意事项
1、特效文件适配:ABILITYEFFECTS.TXT必须放置于客户端data目录,否则自定义特效无法正常加载,ID需保证唯一不重复。
2、全局ID规则:500~600全局ID无特效功能,仅适用于存档、倒计时事件,不可绑定视觉特效。
3、事件触发逻辑:SETABILITY赋值与过期会分别触发专属QF事件,可按需拓展属性生效、失效的自定义玩法。
4、倒计时显示:可视化倒计时<ACD=ID>需客户端配套适配,方可正常展示天时分秒格式。
5、状态清理:单个ID清理可使用对应赋值归零命令,全局清理可使用SETABILITY cleanup 1命令,避免状态残留。


