在 GOM/GEE/LEG/KSD? 等主流
传奇引擎中,实现佩戴特定武器或首饰杀人不加PK值(不红名)? 的脚本逻辑,核心原理是在 QF(QFunction)? 的 [@PlayDie]或 [@KillMonster]或 [@Attack]段检测杀人事件,判断玩家是否佩戴指定物品,若佩戴则清除 PK 值或阻止 PK 值增加。
下面给你 GOM/GEE 引擎的标准实现方案(其他引擎思路相同,命令名微调)。
一、核心原理
引擎在玩家击杀其他玩家时会触发 [@KillPlay]段(GOM/GEE 标准 QF 段)
在该段内检测玩家身上是否有指定装备(武器/首饰)
若有,执行 ChangePKPoint - 9999或 PKPoint = 0清除 PK 值
二、完整脚本(QF 段)
打开 MirServer\Mir200\Envir\Market_Def\QFunction-0.txt,在末尾或合适位置加入:
;===========================================
; 佩戴"嗜魂法杖"或"杀戮戒指"杀人不加PK值
;===========================================
[@KillPlay]
#IF
CheckItemW 嗜魂法杖 ; 检测武器栏是否佩戴
#ACT
ChangePKPoint - 9999 ; 清除 PK 值(负数为减少)
BREAK
#IF
CheckItemW 杀戮戒指 ; 检测首饰栏(戒指位)
#ACT
ChangePKPoint - 9999
BREAK
; 也可用 CheckItem 检测背包(不限制佩戴位置)
; #IF
; CheckItem 和平勋章 1
; #ACT
; ChangePKPoint - 9999
; BREAK
三、GEE 引擎的补充写法(支持多部位检测)
[@KillPlay]
#IF
CheckItemW 嗜魂法杖
#ACT
ChangePKPoint - 9999
SendMsg 5 [提示] 嗜魂法杖庇护,杀人不沾因果!
BREAK
#IF
CheckItemW 杀戮戒指
#ACT
ChangePKPoint - 9999
SendMsg 5 [提示] 杀戮戒指庇护,PK值已清除!
BREAK
四、其他引擎命令对照
引擎
检测佩戴命令
清除PK值命令
GOM / GEE
CheckItemW 物品名
ChangePKPoint - 9999
LEG / Blue / Hero
CheckItemW 物品名
ChangePKPoint - 9999
KSD
CheckItemW 物品名
ChangePKPoint - 9999
?? 注意:CheckItemW检测的是当前佩戴在身上的物品(武器/衣服/头盔/项链/手镯/戒指/腰带/鞋子等),若想检测背包里有就行(不限佩戴),用 CheckItem 物品名 数量。
五、进阶:杀人不红名 + 不爆装备
[@KillPlay]
#IF
CheckItemW 嗜魂法杖
#ACT
ChangePKPoint - 9999
SetOnDieDropUseItems 0 ; 被杀时不掉落身上装备(需GOM/GEE支持)
SetOnDieDropGold 0 ; 被杀不掉金币
SendMsg 5 [提示] 嗜魂法杖庇护,杀人不红名不掉装!
BREAK