你想修改脚本,实现当PK值达到11点(即杀死第11人)时触发另一条信息,但当前逻辑只在PK值达到10点时触发一次。问题出在判断条件单一且后续无递增判断。原始脚本将所有“杀人”行为都归为同一触发,无法区分是第10次还是第11次杀人。以下是分段触发的修改方案。
一、原始脚本逻辑缺陷分析
你的脚本核心问题是:#if判断条件checkpkpoint10只在当前PK值大于等于10时成立。一旦玩家PK值达到10,之后每次杀人都会执行#ELSEACT(因为PK值已大于10,不再等于10),但这只是简单地再加10点PK值,没有实现“达到11点”的独立判断。
简单来说,流程是:
1.第一次杀人后:PK值=1,checkpkpoint10不成立,执行#ELSEACT,PK值+10变成11。
2.第二次及之后杀人:PK值≥11,checkpkpoint10依然不成立,继续执行#ELSEACT,每次杀人PK值都+10。这完全偏离了你的本意。
二、实现“杀第11人触发”的两种修改方案
你需要将判断条件从“是否达到10点”改为“是否等于特定点数”。以下是两种写法,方案一更清晰。
方案一:使用EQUAL命令精确判断(推荐)
此方案思路清晰,易于后续扩展(如杀第20人再增加触发)。
[@KillPlay]
#if
EQUALG9910;检测自定义变量G99是否等于10(表示已杀10人)
#ACT
CHANGEPKOKPOINT+1;PK值正常+1
MOVG9911;将G99设为11,标记已杀11人
SENDMSG1★恶魔[%s]已屠杀11人,天怒人怨,人人得而诛之!
#SAY
\\
*>\
*><※十恶不赦※>\
【◆◆◆(O):::<======================================-\
*>您已累计杀害:<$STR(G99)>人\
*>当前PK值:<$PKPOINT>点\
*>\\
<血腥之路/@exit>
BREAK
#if
EQUALG999;检测是否已杀9人
#ACT
CHANGEPKPOINT+1;PK值正常+1
MOVG9910;将G99设为10,标记已杀10人
SENDMSG1★凶手[%s]大开杀戒,现背负10条人命!大家小心!
#SAY
\\
*>\
*><※谋杀罪名成立※>\
【◆◆◆(O):::<======================================-\
*>您已累计杀害:<$STR(G99)>人\
*>当前PK值:<$PKPOINT>点\
*>\\
<挺成功!/@exit>
BREAK
;以下是低于9人时的默认处理
#if
#ACT
INCG991;杀人计数G99+1
CHANGEPKPOINT+1;PK值正常+1
#SAY
\\
*>\
*><※杀戮记录※>\
【◆◆◆(O):::<======================================-\
*>您已累计杀害:<$STR(G99)>人\
*>当前PK值:<$PKPOINT>点\
*>\\
<继续/@exit>
方案一核心修改:
1.引入自定义变量G99:用于独立记录杀人次数,与系统PK值脱钩。
2.精确分段判断:用EQUALG999判断是否杀第10人,用EQUALG9910判断是否杀第11人。
3.PK值正常增加:CHANGEPKPOINT+1,每次杀人只增加1点PK值,符合游戏常规。
4.使用BREAK:执行完一段后跳出,避免继续执行后面的段落。
方案二:在原始脚本上增加嵌套判断(备用)
如果你不想新增变量,可在原始#ELSEACT段内增加对PK值的判断。
[@KillPlay]
#if
checkpkpoint10
#ACT
CHANGEPKPOINT+10
SENDMSG1★凶手[%s]大开杀戒,现身背10条人命!大家小心!
#SAY
...(原文显示内容)
BREAK
#ELSEACT
;在ELSEACT中增加对PK值的判断
#if
EQUAL<$PKPOINT>10;如果当前PK值正好是10(即刚杀完第10人)
#ACT
CHANGEPKPOINT+1;正常+1,变成11
SENDMSG1★恶魔[%s]已屠杀11人,天怒人怨,人人得而诛之!
#SAY
...(杀11人时的专属对话)
BREAK
#ELSEACT
CHANGEPKPOINT+10;其他情况(PK值非10),按原逻辑+10
#SAY
...(原ELSEACT的显示内容)
三、关键操作与测试步骤
1.变量初始化:如果采用方案一,必须在登录脚本(通常是QManage.txt)的[@Login]段或专门清理的脚本段中加入初始化命令,防止变量累加出错:
[@Login]
#IF
#ACT
MOVG990;每次登录时,杀人计数清零
2.脚本放置:将修改后的完整脚本,替换到原触发脚本文件(通常在MirServer\Mir200\Envir\Market_Def或QuestDiary的对应文本文件)中。
3.重载脚本:修改后,在M2引擎(M2Server.exe)窗口上方菜单栏,依次点击“查看”→“加载”→“加载NPC脚本”,使修改生效。
4.测试:在游戏中测试,分别杀死1人、10人、11人,查看聊天框的公告和NPC对话内容是否按预期触发。
最终提醒:方案一虽然需要增加变量,但逻辑更稳固,易于管理。请务必进行变量初始化,否则玩家下线再上线后,G99变量会保持原值,导致计数错误。
一、原始脚本逻辑缺陷分析
你的脚本核心问题是:#if判断条件checkpkpoint10只在当前PK值大于等于10时成立。一旦玩家PK值达到10,之后每次杀人都会执行#ELSEACT(因为PK值已大于10,不再等于10),但这只是简单地再加10点PK值,没有实现“达到11点”的独立判断。
简单来说,流程是:
1.第一次杀人后:PK值=1,checkpkpoint10不成立,执行#ELSEACT,PK值+10变成11。
2.第二次及之后杀人:PK值≥11,checkpkpoint10依然不成立,继续执行#ELSEACT,每次杀人PK值都+10。这完全偏离了你的本意。
二、实现“杀第11人触发”的两种修改方案
你需要将判断条件从“是否达到10点”改为“是否等于特定点数”。以下是两种写法,方案一更清晰。
方案一:使用EQUAL命令精确判断(推荐)
此方案思路清晰,易于后续扩展(如杀第20人再增加触发)。
[@KillPlay]
#if
EQUALG9910;检测自定义变量G99是否等于10(表示已杀10人)
#ACT
CHANGEPKOKPOINT+1;PK值正常+1
MOVG9911;将G99设为11,标记已杀11人
SENDMSG1★恶魔[%s]已屠杀11人,天怒人怨,人人得而诛之!
#SAY
\\
*>\
*><※十恶不赦※>\
【◆◆◆(O):::<======================================-\
*>您已累计杀害:<$STR(G99)>人\
*>当前PK值:<$PKPOINT>点\
*>\\
<血腥之路/@exit>
BREAK
#if
EQUALG999;检测是否已杀9人
#ACT
CHANGEPKPOINT+1;PK值正常+1
MOVG9910;将G99设为10,标记已杀10人
SENDMSG1★凶手[%s]大开杀戒,现背负10条人命!大家小心!
#SAY
\\
*>\
*><※谋杀罪名成立※>\
【◆◆◆(O):::<======================================-\
*>您已累计杀害:<$STR(G99)>人\
*>当前PK值:<$PKPOINT>点\
*>\\
<挺成功!/@exit>
BREAK
;以下是低于9人时的默认处理
#if
#ACT
INCG991;杀人计数G99+1
CHANGEPKPOINT+1;PK值正常+1
#SAY
\\
*>\
*><※杀戮记录※>\
【◆◆◆(O):::<======================================-\
*>您已累计杀害:<$STR(G99)>人\
*>当前PK值:<$PKPOINT>点\
*>\\
<继续/@exit>
方案一核心修改:
1.引入自定义变量G99:用于独立记录杀人次数,与系统PK值脱钩。
2.精确分段判断:用EQUALG999判断是否杀第10人,用EQUALG9910判断是否杀第11人。
3.PK值正常增加:CHANGEPKPOINT+1,每次杀人只增加1点PK值,符合游戏常规。
4.使用BREAK:执行完一段后跳出,避免继续执行后面的段落。
方案二:在原始脚本上增加嵌套判断(备用)
如果你不想新增变量,可在原始#ELSEACT段内增加对PK值的判断。
[@KillPlay]
#if
checkpkpoint10
#ACT
CHANGEPKPOINT+10
SENDMSG1★凶手[%s]大开杀戒,现身背10条人命!大家小心!
#SAY
...(原文显示内容)
BREAK
#ELSEACT
;在ELSEACT中增加对PK值的判断
#if
EQUAL<$PKPOINT>10;如果当前PK值正好是10(即刚杀完第10人)
#ACT
CHANGEPKPOINT+1;正常+1,变成11
SENDMSG1★恶魔[%s]已屠杀11人,天怒人怨,人人得而诛之!
#SAY
...(杀11人时的专属对话)
BREAK
#ELSEACT
CHANGEPKPOINT+10;其他情况(PK值非10),按原逻辑+10
#SAY
...(原ELSEACT的显示内容)
三、关键操作与测试步骤
1.变量初始化:如果采用方案一,必须在登录脚本(通常是QManage.txt)的[@Login]段或专门清理的脚本段中加入初始化命令,防止变量累加出错:
[@Login]
#IF
#ACT
MOVG990;每次登录时,杀人计数清零
2.脚本放置:将修改后的完整脚本,替换到原触发脚本文件(通常在MirServer\Mir200\Envir\Market_Def或QuestDiary的对应文本文件)中。
3.重载脚本:修改后,在M2引擎(M2Server.exe)窗口上方菜单栏,依次点击“查看”→“加载”→“加载NPC脚本”,使修改生效。
4.测试:在游戏中测试,分别杀死1人、10人、11人,查看聊天框的公告和NPC对话内容是否按预期触发。
最终提醒:方案一虽然需要增加变量,但逻辑更稳固,易于管理。请务必进行变量初始化,否则玩家下线再上线后,G99变量会保持原值,导致计数错误。

