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

传奇红名武器配置与脚本命令纠错

热度:
一、命令错误诊断:语法与对象双重失效

你提供的脚本片段<$STR(S0)>.pkpoint+300存在根本性语法错误,引擎无法识别。主要问题如下:

1.命令格式错误:传奇主流引擎(GEE/GOM/LEG等)调整PK值的标准命令是CHANGEPKPOINT,而非.pkpoint。pkpoint通常是属性变量名,不能直接作为执行命令使用。
2.对象引用错误:<$STR(S0)>是字符串变量显示格式(类似<$USERNAME>),用于在对话框显示文本。在脚本执行段(#ACT)中,不能使用<$STR(S0)>作为对象前缀来操作角色属性。操作他人属性的正确前缀是S0.(假设S0存储了对方名字)。
3.运算符错误:即使命令正确,+300的写法也不规范。标准格式应为+300(无空格)或+300作为参数整体。

正确命令示例:
;给自己加PK值
#ACT
CHANGEPKPOINT+300

;给目标/变量对象加PK值
#ACT
S0.CHANGEPKPOINT+300


二、红名武器标准配置流程(攻击触发)

“红名武器”通常指佩戴后攻击他人,能大幅增加对方PK值的武器。配置需修改MapInfo.txt和QFunction-0.txt文件。

1.地图触发配置

编辑MirServer\Mir200\Envir\MapInfo.txt,为允许PK的地图添加HITMON参数。
[3盟重省]NORECONNECT(3)HITMON(@HITMON)

此行表示在盟重省地图攻击人物时,会触发QFunction-0.txt中的[@HITMON]段。

2.攻击触发脚本(QF脚本)

在MirServer\Mir200\Envir\Market_Def\QFunction-0.txt中编写核心逻辑。
[@HITMON]
#IF
CheckItemW红名之刃1;检测攻击者是否佩戴特定武器
Random5;50%触发几率(可根据需要调整)
#ACT
GetOppositeHumNameS0;获取被攻击者的名字存入S0
S0.CHANGEPKPOINT+300;给被攻击者增加300点PK值
SendMsg6【红名之刃】触发了诅咒效果,<$STR(S0)>的罪恶值大幅提升!
Break

关键点:
•GetOppositeHumNameS0是获取被攻击者名字的关键命令。

-S0.CHANGEPKPOINT+300是给对方加PK值的正确写法。

三、进阶:带安全区检测的防刷脚本

为防止在安全区恶意刷红名,需在脚本中加入安全区检测。
[@HITMON]
#IF
CheckItemW红名之刃1
#ACT
GetOppositeHumNameS0
MovP0<$X>;记录攻击者坐标X
MovP1<$Y>;记录攻击者坐标Y
#IF
!CheckSamePos<$STR(S0)><$STR(P0)><$STR(P1)>;检测是否与攻击者同坐标(排除远程触发)
#ACT
Break;不同坐标(可能是远程技能),不触发红名效果
#IF
CheckInSafeZone<$STR(S0)>;检测对方是否在安全区
#ACT
Break;对方在安全区,不触发
#IF
Random5;通过上述检测后,再判断概率
#ACT
S0.CHANGEPKPOINT+300
SendMsg6【红名之刃】触发了诅咒效果,<$STR(S0)>的罪恶值大幅提升!
Break


四、数据库标记与生效方法

1.数据库设置:在StdItems.DB中,找到你的武器,确保Shape(外观)和AniCount(动作)字段设置正确,但这两个字段不直接影响红名逻辑。红名效果完全由上述脚本控制。
2.脚本重载:修改脚本后,在游戏中GM输入@重读QF或@ReloadQFunction使脚本生效(无需重启服务器)。
3.测试:佩戴武器攻击非安全区的玩家,观察对方PK值是否快速增加并变为红名。

总结:你的命令错误在于混淆了显示变量与执行命令。红名武器的核心是HITMON触发配合S0.CHANGEPKPOINT命令,而非直接修改数据库字段。
[顶部]