在传奇游戏服务器架设过程中,确保游戏安全性和稳定性至关重要。以下是一种有效的方法,用于防止玩家通过点击NPC触发非法字段,从而避免封包调用标签漏洞。
防止客户端非法跳转的脚本标签使用
为了防止客户端通过修改封包数据非法跳转到特定的脚本标签,可以在这些标签前加上特定的前缀 @ESP-。这样做可以禁止插件允许其他方式跳转到加前缀的标签。
例如,原本的脚本标签如下:
<点我给物品/@给物品>
Copy
可以修改为:
[@给物品]
#act
call @ESP-设置
Copy
在 @ESP-设置 标签中,即使玩家尝试通过修改封包数据来跳转,插件也不会允许这样的行为。
引擎内部触发字段的保护
在传奇引擎中,大部分触发字段都不允许玩家通过NPC触发,例如死亡触发 @PlayDie,物品触发 @StdModeFunc,套装触发 @GroupItemOn、@GroupItemOff,魔法触发 @MagTagFunc,以及穿脱装备触发 @TakeOn、@TakeOff 等。
以下是一个示例,说明如何保护这些内部触发字段:
[@PlayDie]
<下一页/@下一页>
[@下一页]
<返回/@PlayDie>
; 注意:这里的 “@PlayDie” 是引擎内部触发字段,不允许玩家通过NPC前往触发。
; 任何以 “@PlayDie” 开头的字段,如 “@PlayDie1”、“@PlayDie2”、“@PlayDie死亡” 等都将被禁止。
; 如果需要使用NPC前往触发,可以进行如下修改,使用 `goto` 进行跳转。
[@PlayDie]
<下一页/@下一页>
[@下一页]
<返回/@返回>
[@返回]
#ACT
goto @PlayDie
Copy
其他触发字段的保护
除了上述提到的触发字段,还有其他一些触发字段也需要进行类似的保护。例如:
DelayCall 5000 @再次复活
SendCenterMsg 180 251 还剩余%d发放新手给予. 0 30 @GiveNewHumanItem
Copy
在这里,@再次复活 和 @GiveNewHumanItem 也会变成引擎内部触发,不允许玩家通过NPC前往触发。
防客户端非法跳转脚本标签,GOGO、DELAYGOTO等不允许的脚本标签前缀可加 @ESP-
如:
<点我给物品/@给物品>\ \
[@给物品]
#act
call @ESP-设置
[@ESP-设置]
;加了前缀 @ESP-,插件就不会允许其他通过修改封包数据跳转到此标签,其他标签都可以这么使用,但是文字排版不能使用前缀
下面以一个死亡触发为例,不仅仅是死亡触发,引擎的大部分触发都不允许玩家前往NPC触发,
例如:物品触发[@StdModeFunc],套装触发[@GroupItemOn] [@GroupItemOff],魔法触发[@MagTagFunc],穿脱装备触发[@TakeOn] [@TakeOff]等等,就不一一举例了。
[@PlayDie]
<下一页/@下一页>
[@下一页]
<返回/@PlayDie>
;<返回/@PlayDie> 新引擎这里“@PlayDie”是引擎内部触发字段,禁止用户通过NPC前往来触发这个字段
;不仅仅“@PlayDie”不允许“@PlayDie1、 @PlayDie2、 @PlayDie死亡”等等都不允许,只有前面的字符和“@PlayDie”一样的后面不管增加什么字符都将不允许
;如果非要使用玩家前往NPC触发的,可以把上面的脚本改成如下,使用goto转一下
[@PlayDie]
<下一页/@下一页>
[@下一页]
<返回/@返回>
[@返回]
#ACT
goto @PlayDie
还有其他一些触发,也属于这类的,比如:
DelayCall 5000 @再次复活
SendCenterMsg 180 251 还剩余%d发放新手给予. 0 30 @GiveNewHumanItem
“@再次复活”和“@GiveNewHumanItem”就会变成引擎内部触发,也是不允许用使用NPC前往来触发的
还有一些其他脚本命令带字段触发的,就不一一举例了。