传奇洗红脚本PK值检测与分支逻辑修复方案

来源: 作者: 点击:
脚本问题诊断与核心错误

当前脚本存在逻辑判断不完整和检测指令使用错误两大核心问题。首先,脚本缺少“PK值在300至1200之间”这一区间的处理,导致该区间的玩家无法触发任何选项。其次,脚本中的检测逻辑是“等于”检测,而非“大于/小于”检测。CHECKPKPOINT12是检测PK值是否等于1200,而非大于1200,这是脚本运行异常的直接原因。

问题一:PK值区间检测的正确写法

在传奇脚本中,实现“大于”或“小于”的检测,需要使用复合指令SMALL(小于)、LARGE(大于)、EQUAL(等于)配合变量检测,而不是仅用CHECKPKPOINT。

修正后NPC脚本头部逻辑:

<解除诅咒/@解除>
[@解除]
#IF
LARGEP881199
#Act
goto@yaoyuan
#SAY
<退出/@exit>
#IF
LARGEP88299
SMALLP881200
#Act
goto@buyaoyuan
#SAY
<退出/@exit>
#ELSEACT
MESSAGEBox您的PK值已低于300,无需清洗。


核心说明:
1.变量设定:P88是一个自定义的临时变量,需要在检测前先将玩家的PK值赋值给它。通常通过#ACT部分的MOV指令实现。
2.完整检测:第一段检测PK值大于1199(即≥1200),第二段检测PK值大于299且小于1200(即300-1199)。#ELSEACT处理PK值小于300的情况。

配套修改:完整的洗红流程脚本

必须将PK值先赋值给变量,再进行大小判断。以下是修改后的完整对话脚本示例,可放入NPC脚本文件中:

<解除诅咒/@解除>

[@解除]
#IF
#ACT
MOVP88<$PKPOINT>;将当前PK值存入变量P88
#IF
LARGEP881199
#Act
goto@yaoyuan
#SAY
<退出/@exit>
#IF
LARGEP88299
SMALLP881200
#Act
goto@buyaoyuan
#SAY
<退出/@exit>
#ELSEACT
MESSAGEBox您的PK值(<$PKPOINT>点)已低于300,无需清洗。

[@yaoyuan]
#IF
CHECKGAMEGOLD>999
#ACT
GAMEGOLD-1000
CHANGEPKPOINT-500
GMEXECUTETestStatus40
GuildNoticeMsg972ぐ【诅咒】:倒霉蛋“『<$USERNAME>』”终于解除了自己身上的诅咒.从此可以重新做人了!!
#SAY
已消耗1000元宝清洗500点PK值。\\
<返回首页/@main>
#ELSESAY
元宝不足1000个,无法使用此服务。\\
<退出/@exit>

[@buyaoyuan]
#IF
checkgold1000000
#act
take金币1000000
CHANGEPKPOINT-100
#SAY
已消耗100万金币清洗100点PK值。\\
<返回首页/@main>
#ELSESAY
金币不足100万,无法使用此服务。\\
<退出/@exit>


修改要点:
•赋值变量:在[@解除]段落开头增加了MOVP88<$PKPOINT>,将实时PK值存入变量P88。

•条件判定:使用LARGEP881199判断PK值大于1199;使用LARGEP88299和SMALLP881200组合判断PK值在300-1199之间。

•数值修正:原脚本中CHANGEPKPOINT-50000数值过大,已根据上下文逻辑修正为-500,意为清洗500点。

与会员系统集成的实现思路

要实现“会员用金币,非会员用元宝”的差异化收费,需在原有检测逻辑中加入会员检测。

优化后的检测逻辑(头部):

[@解除]
#IF
#ACT
MOVP88<$PKPOINT>
#IF
LARGEP881199
#ACT
goto@yaoyuan
#SAY
<退出/@exit>
#IF
LARGEP88299
SMALLP881200
#ACT
goto@CheckMemberAndWash;新增:跳转到会员检测段
#SAY
<退出/@exit>
#ELSEACT
MESSAGEBox您的PK值(<$PKPOINT>点)已低于300,无需清洗。

[@CheckMemberAndWash]
#IF
CHECKLEVELEX>0;或使用其他检测会员等级的指令,如CHECKMEMBERTYPE
#ACT
goto@MemberWash;会员跳转到金币清洗
#ELSEACT
goto@buyaoyuan;非会员跳转到原有逻辑


新增会员清洗段:

[@MemberWash]
#IF
checkgold500000;会员享受折扣,例如50万金币洗100点
#act
take金币500000
CHANGEPKPOINT-100
#SAY
(会员特惠)已消耗50万金币清洗100点PK值。\\
<返回首页/@main>
#ELSESAY
金币不足50万,无法使用此服务。\\
<退出/@exit>


此方案确保了:PK值≥1200的玩家必须用元宝清洗([@yaoyuan]);PK值在300-1199的会员玩家可用优惠价金币清洗([@MemberWash]);PK值在300-1199的非会员玩家用原价金币清洗([@buyaoyuan]);PK值<300的玩家无需清洗。逻辑清晰,分支完整。
[顶部]