当前位置 : 745v传奇网 | 传奇教程 | 

传奇服务器架设教程:预防NPC触发字段非法调用与封包漏洞的解决方案

来源: 作者: 点击:
在传奇游戏服务器架设过程中,确保游戏安全性和稳定性至关重要。以下是一种有效的方法,用于防止玩家通过点击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
其他触发字段的保护
除了上述提到的触发字段,还有其他一些触发字段也需要进行类似的保护。例如:

DelayCall5000@再次复活
SendCenterMsg180251还剩余%d发放新手给予.030@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

还有其他一些触发,也属于这类的,比如:

DelayCall5000@再次复活
SendCenterMsg180251还剩余%d发放新手给予.030@GiveNewHumanItem

“@再次复活”和“@GiveNewHumanItem”就会变成引擎内部触发,也是不允许用使用NPC前往来触发的
还有一些其他脚本命令带字段触发的,就不一一举例了。
[顶部]