传奇脚本PK值分段触发条件修改详解

来源: 作者: 点击:
你想修改脚本,实现当PK值达到11点(即杀死第11人)时触发另一条信息,但当前逻辑只在PK值达到10点时触发一次。问题出在判断条件单一且后续无递增判断。原始脚本将所有“杀人”行为都归为同一触发,无法区分是第10次还是第11次杀人。以下是分段触发的修改方案。

一、原始脚本逻辑缺陷分析

你的脚本核心问题是:#if判断条件checkpkpoint 10只在当前PK值大于等于10时成立。一旦玩家PK值达到10,之后每次杀人都会执行#ELSEACT(因为PK值已大于10,不再等于10),但这只是简单地再加10点PK值,没有实现“达到11点”的独立判断。

简单来说,流程是:
1. 第一次杀人后:PK值=1,checkpkpoint 10不成立,执行#ELSEACT,PK值+10变成11。
2. 第二次及之后杀人:PK值≥11,checkpkpoint 10依然不成立,继续执行#ELSEACT,每次杀人PK值都+10。这完全偏离了你的本意。

二、实现“杀第11人触发”的两种修改方案

你需要将判断条件从“是否达到10点”改为“是否等于特定点数”。以下是两种写法,方案一更清晰。

方案一:使用EQUAL命令精确判断(推荐)
此方案思路清晰,易于后续扩展(如杀第20人再增加触发)。

[@KillPlay]
#if
EQUAL G99 10 ; 检测自定义变量G99是否等于10(表示已杀10人)
#ACT
CHANGEPKOKPOINT + 1 ; PK值正常+1
MOV G99 11 ; 将G99设为11,标记已杀11人
SENDMSG 1 ★恶魔[%s]已屠杀11人,天怒人怨,人人得而诛之!
#SAY
\ \
*> \
*> <※十恶不赦※> \
【◆◆◆(O):::<======================================-\
*> 您已累计杀害:<$STR(G99)>人 \
*> 当前PK值:<$PKPOINT>点 \
*> \ \
<血腥之路/@exit>
BREAK

#if
EQUAL G99 9 ; 检测是否已杀9人
#ACT
CHANGEPKPOINT + 1 ; PK值正常+1
MOV G99 10 ; 将G99设为10,标记已杀10人
SENDMSG 1 ★凶手[%s]大开杀戒,现背负10条人命!大家小心!
#SAY
\ \
*> \
*> <※谋杀罪名成立※> \
【◆◆◆(O):::<======================================-\
*> 您已累计杀害:<$STR(G99)>人 \
*> 当前PK值:<$PKPOINT>点 \
*> \ \
<挺成功!/@exit>
BREAK

; 以下是低于9人时的默认处理
#if
#ACT
INC G99 1 ; 杀人计数G99+1
CHANGEPKPOINT + 1 ; PK值正常+1
#SAY
\ \
*> \
*> <※杀戮记录※> \
【◆◆◆(O):::<======================================-\
*> 您已累计杀害:<$STR(G99)>人 \
*> 当前PK值:<$PKPOINT>点 \
*> \ \
<继续/@exit>

方案一核心修改:
1. 引入自定义变量G99:用于独立记录杀人次数,与系统PK值脱钩。
2. 精确分段判断:用EQUAL G99 9判断是否杀第10人,用EQUAL G99 10判断是否杀第11人。
3. PK值正常增加:CHANGEPKPOINT + 1,每次杀人只增加1点PK值,符合游戏常规。
4. 使用BREAK:执行完一段后跳出,避免继续执行后面的段落。

方案二:在原始脚本上增加嵌套判断(备用)
如果你不想新增变量,可在原始#ELSEACT段内增加对PK值的判断。

[@KillPlay]
#if
checkpkpoint 10
#ACT
CHANGEPKPOINT + 10
SENDMSG 1 ★凶手[%s]大开杀戒,现身背10条人命!大家小心!
#SAY
...(原文显示内容)
BREAK
#ELSEACT
; 在ELSEACT中增加对PK值的判断
#if
EQUAL <$PKPOINT> 10 ; 如果当前PK值正好是10(即刚杀完第10人)
#ACT
CHANGEPKPOINT + 1 ; 正常+1,变成11
SENDMSG 1 ★恶魔[%s]已屠杀11人,天怒人怨,人人得而诛之!
#SAY
...(杀11人时的专属对话)
BREAK
#ELSEACT
CHANGEPKPOINT + 10 ; 其他情况(PK值非10),按原逻辑+10
#SAY
...(原ELSEACT的显示内容)


三、关键操作与测试步骤

1. 变量初始化:如果采用方案一,必须在登录脚本(通常是QManage.txt)的[@Login]段或专门清理的脚本段中加入初始化命令,防止变量累加出错:

[@Login]
#IF
#ACT
MOV G99 0 ; 每次登录时,杀人计数清零

2. 脚本放置:将修改后的完整脚本,替换到原触发脚本文件(通常在MirServer\Mir200\Envir\Market_Def或QuestDiary的对应文本文件)中。
3. 重载脚本:修改后,在M2引擎(M2Server.exe)窗口上方菜单栏,依次点击“查看”→“加载”→“加载NPC脚本”,使修改生效。
4. 测试:在游戏中测试,分别杀死1人、10人、11人,查看聊天框的公告和NPC对话内容是否按预期触发。

最终提醒:方案一虽然需要增加变量,但逻辑更稳固,易于管理。请务必进行变量初始化,否则玩家下线再上线后,G99变量会保持原值,导致计数错误。