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

传奇红名武器配置与脚本命令修正

热度:
你提供的命令<$STR(S0)>.pkpoint+300确实是错误的。在主流引擎(GOM/GEE/HERO)中,不存在直接对字符串变量执行.pkpoint的语法。正确的逻辑是使用CHANGEPKPOINT命令操作被攻击者的PK值。

一、脚本命令错误修正

错误命令分析:
<$STR(S0)>.pkpoint+300
•错误原因:<$STR(S0)>是字符串变量(通常存储怪物或人物名称),引擎无法将其作为对象直接修改属性。pkpoint也不是标准的属性修改指令。

-引擎差异:部分极老引擎支持INC<$STR(S0)><$PKPOINT>300的写法,但现代引擎已废弃。

正确命令(GOM/GEE/HERO通用):
#ACT
S0.CHANGEPKPOINT+300

关键说明:
•S0:攻击触发脚本中的内置变量,代表被攻击目标(怪物/人物)。红名武器是砍中谁,就给谁加PK值,所以对象必须是S0。

-CHANGEPKINT:标准的PK值修改命令,支持+(增加)、-(减少)、=(设置)。
-300:增加的PK点数。通常100点对应1点PK值(具体换算看M2设置),300点足以让玩家瞬间红名。

二、红名武器完整配置流程

红名武器的核心原理是:利用地图攻击触发(HITMON)检测武器,命中后给目标增加巨额PK值。

1.修改地图触发参数

打开MirServer\Mir200\Envir\MapInfo.txt,找到需要生效的地图(通常是盟重安全区外),添加HITMON参数。
[3盟重省]HITMON(@红名武器触发)

注意:若地图已有HITMON(如经验猪脚本),不能重复添加,需将逻辑合并到同一个标签下。

2.编写攻击触发脚本

打开MirServer\Mir200\Envir\Market_Def\QFunction-0.txt,添加以下脚本:
[@红名武器触发]
#IF
CheckItemW斩马刀1;检测攻击者是否手持“斩马刀”
CHECKHITMONNAME<$STR(S0)>;检测攻击目标S0是否存在
#ACT
S0.CHANGEPKPOINT+300;给被攻击者增加300PK点
SendCenterMsg255150【<$STR(S0)>】被【<$USERNAME>】的红名斩马刀砍中,PK值暴涨!15
Break

脚本逻辑详解:
•CheckItemW:检测攻击者背包或手上是否有指定武器(“斩马刀”需替换为你的武器数据库名称)。

-CHECKHITMONNAME:确认攻击目标是有效对象(防止砍空气触发)。
•SendCenterMsg:屏幕中央公告,增强效果(可选)。

3.重载脚本生效

在M2Server中点击“管理”→“重新加载”→“NPC脚本”,使修改生效。无需重启服务端。

三、常见配置误区与排查

1.地图未触发:确认MapInfo.txt中的地图编号正确,且HITMON参数后跟的标签名与QFunction-0.txt中的[@]标签完全一致。
2.PK值不增加:
◦检查武器名称是否与数据库(StdItems.DB)中的Name字段完全一致(区分大小写和空格)。

-确认S0对象正确。若想给攻击者自己加PK(自残刀),需改为CHANGEPKPOINT+300(去掉S0.)。
3.引擎兼容性:
◦GOM/GEE:完全支持上述S0.CHANGEPKPOINT语法。

◦Blue/HERO:若报错,尝试改用INC<$PKPOINT>300(需配合变量检测)。

◦LEGEND:部分版本需使用KILLATTACKPKPOINT命令。

四、高级功能:定时器持续红名

若想要“持有武器即持续增加周围玩家PK值”,需改用穿戴触发+定时器,但此方式消耗资源较大,需谨慎使用。
;在QFunction-0.txt中
[@TakeOn1];穿戴武器触发
#IF
CheckItemW红名光环刀1
#ACT
SetOnTimer101;开启10号定时器,每秒执行一次
Break

[@OnTimer10];定时器执行段
#IF
CheckItemW红名光环刀1
#ACT
;此处需用范围检测命令(如GetRangeObject)获取周围玩家并循环增加PK值
;命令较复杂,非新手向
Break


最终建议:直接使用“地图攻击触发+S0.CHANGEPKPOINT”方案,稳定且易调试。修改脚本后务必重读NPC脚本,并在游戏内实测砍玩家或怪物验证PK值变化。
[顶部]