本站主推发布:新开传奇发布网,新开传奇,新开传奇发布,176复古传奇,迷失传奇,战神传奇,传奇私服,找搜服,仙剑传奇
当前位置: zhaosf首页 > 开服资料 > 开服技术 >

新手GM写脚本必看:脚本安全相关示例

时间:2019-07-20 00:47来源:传奇一条龙 作者:传奇私服发布网
关于脚本安全相关,部分新手写脚本不严谨,导致游戏脚本被封包利用造成损失,再这里给大家举例说明几个脚本安全相关示例 首先涉及到GOTO,CALL,和非NPC界面使用鼠标点击的脚本,我们可以利用引擎禁止点击字符进行强化安全,下面我们就使用系统禁止点击触发命令 :PlayDie ,这个命令是死亡触发命令,引擎文档也提到只要脚本头前缀涉及包含PlayDie 那么不允许点击,这个可
     关于脚本安全相关,部分新手写脚本不严谨,导致游戏脚本被封包利用造成损失,再这里给大家举例说明几个脚本安全相关示例
 
 
 首先涉及到GOTO,CALL,和非NPC界面使用鼠标点击的脚本,我们可以利用引擎禁止点击字符进行强化安全,下面我们就使用系统禁止点击触发命令 :PlayDie ,这个命令是死亡触发命令,引擎文档也提到只要脚本头前缀涉及包含PlayDie 那么不允许点击,这个可以搜索引擎文档进行了解,搜索关键词:为什么提示禁止点击该NPC触发字段   
 
 
 
风险脚本示例1------------下面----------看讲解为什么是风险----------------------------------
 
 
;下面是NPC脚本:
 
 
[@main]
 
<点击开始一键回收/@正常开始回收>\
 
 
[@正常开始回收]
#IF
EQUAL U108 0
#ACT
#CALL [\回收元宝系列\装备回收价格.txt] @回收装备正常
CLOSE
break
 
 
;下面....QuestDiary\回收元宝系列\装备回收价格.txt脚本(因为上面NPC脚本已经将脚本CALL到这里了)  
 
;执行条件为  检测 U108变量不等于0则CALL到下面脚本执行
 
 
[@回收装备正常]
{
#IF
check [100] 1
#ACT
goto @战狂回收检测A
#IF
check [101] 1
#ACT
goto @神武回收检测B
#IF
check [102] 1
#ACT
goto @烈火回收检测C
break
 
 
;--下面是上方GOTO执行脚本,
;执行条件为  分别检测个人标识100  101  102等于1则GOTO进行执行下面对应脚本
 
 
 
[@战狂回收检测A]
#OR
Checkitem 战狂精铁剑 1
Checkitem 战狂精铁铠 1
Checkitem 战狂头盔 1
Checkitem 战狂项链 1
Checkitem 战狂手镯 1
Checkitem 战狂护腕 1
Checkitem 战狂戒指 1
Checkitem 战狂指环 1
Checkitem 战狂腰带 1
Checkitem 战狂靴子 1
#ACT
TakeBagItem 战狂头盔|战狂项链|战狂手镯|战狂护腕|战狂戒指|战狂指环|战狂腰带|战狂靴子 46 20 0 0 38000 N0 1
TakeBagItem 战狂精铁剑|战狂精铁铠 46 40 0 0 76000 N1 1
MOV N$回收金额A <$STR(n0)>
MUL N$回收金额A 20
MOV N$回收金额B <$STR(n1)>
MUL N$回收金额B 40
INC U89 <$STR(N$回收金额A)>
INC U89 <$STR(N$回收金额B)>
SENDMSG 0 【装备回收】:恭喜{[<$USERNAME>]|250:0:1}成功回收{战狂套装|254:0:1},获得海量[{元宝,经验|254:0:255}]...!!! 31 0
break
 
[@神武回收检测B]
#OR
Checkitem 神武嗜血剑 1
Checkitem 神武嗜血铠 1
Checkitem 神武头盔 1
Checkitem 神武项链 1
Checkitem 神武手镯 1
Checkitem 神武护腕 1
Checkitem 神武戒指 1
Checkitem 神武指环 1
Checkitem 神武腰带 1
Checkitem 神武靴子 1
#ACT
TakeBagItem 神武头盔|神武项链|神武手镯|神武护腕|神武戒指|神武指环|神武腰带|神武靴子 46 40 0 0 40000 N0 1
TakeBagItem 神武嗜血剑|神武嗜血铠 46 80 0 0 80000 N1 1
MOV N$回收金额A <$STR(n0)>
MUL N$回收金额A 40
MOV N$回收金额B <$STR(n1)>
MUL N$回收金额B 80
INC U89 <$STR(N$回收金额A)>
INC U89 <$STR(N$回收金额B)>
SENDMSG 0 【装备回收】:恭喜{[<$USERNAME>]|250:0:1}成功回收{神武套装|254:0:1},获得海量[{元宝,经验|254:0:255}]...!!! 31 0
break
 
[@烈火回收检测C]
#OR
Checkitem 烈火焚天剑 1
Checkitem 烈火焚天铠 1
Checkitem 烈火头盔 1
Checkitem 烈火项链 1
Checkitem 烈火手镯 1
Checkitem 烈火护腕 1
Checkitem 烈火戒指 1
Checkitem 烈火指环 1
Checkitem 烈火腰带 1
Checkitem 烈火靴子 1
#ACT
TakeBagItem 烈火头盔|烈火项链|烈火手镯|烈火护腕|烈火戒指|烈火指环|烈火腰带|烈火靴子 46 60 0 0 45000 N0 1
TakeBagItem 烈火焚天剑|烈火焚天铠 46 120 0 0 90000 N1 1
MOV N$回收金额A <$STR(n0)>
MUL N$回收金额A 60
MOV N$回收金额B <$STR(n1)>
MUL N$回收金额B 120
INC U89 <$STR(N$回收金额A)>
INC U89 <$STR(N$回收金额B)>
SENDMSG 0 【装备回收】:恭喜{[<$USERNAME>]|250:0:1}成功回收{烈火套装|254:0:1},获得海量[{元宝,经验|254:0:255}]...!!! 31 0
break
 
讲解风险:以上脚本可以使用封包工具直接执行@回收装备正常  @MAIN  和 @战狂回收检测A  @神武回收检测B @烈火回收检测C ,因为这才是整段脚本的核心,前面所做一切检测就是为了这段核心执行脚本所准备,反而到了执行脚本可以忽略前面所做的一切检测,如果在执行脚本or下执行检测好像又不好做,那么我们就可以利用引擎禁用点击字段进行设置,比如上面所说的死亡触发字段PlayDie,因为这段执行脚本是不需要NPC点击,所以可以使用禁止点击字符来进行规避风险
 
下面修正脚本进行讲解,
 
               风险2.CALL过来的脚本第一个字段是[@回收装备正常] ,再QFunction-0.txt 是有检测U108变量值的,但是封包可以无视NPC脚本中的[@正常开始回收]检测字段,依然可以直接点击@回收装备正常],解决方式有2个,第一个就是把检测U108放入到@回收装备正常]内如下:
 
 [@回收装备正常]
{
#IF
 
EQUAL U108 0
check [100] 1
 
#ACT
 
goto @战狂回收检测A
#IF
 
EQUAL U108 0
check [101] 1
#ACT
goto @神武回收检测B
#IF
 
EQUAL U108 0
check [102] 1
#ACT
goto @烈火回收检测C
break
 
 
这样处理就可以了,当时封包依然可以跳过上面的检测直接执行@战狂回收检测A @神武回收检测B @烈火回收检测C,因为这三段脚本都OR检测,所以不好做检测,我们我们可以利用禁止点击字符进行规避风险,因为@回收装备正常 属于引擎内部跳转脚本,也是不需要NPC点击的,所以我们可以使用禁止点击字符来进行规避(关于禁止点击字段,下面讲解)
(责任编辑:找搜服传奇发布网)
------分隔线----------------------------
栏目列表
推荐内容