|
楼主 |
发表于 2024-10-31 12:00:01
|
显示全部楼层
近期有不法工具通过封包形式修改服务端个人变量
在方案二没有线上之前建议大家先配置好方案一并上传到后台更新,避免在未更新前数据遭到破坏
两种模式请选择其中一种模式,如果两种模式都勾选则读取模式1
配置上传完原地更新引擎即可(会重启)
配置上传完原地更新引擎即可(会重启)
配置上传完原地更新引擎即可(会重启)
----------------------------------------------------------------------------------------------------
当前解决方案1
这个方案是在早前添加的一种白名单形式,然而这并不能完全避免被修改的风险,在填入的变量中依旧可以通过工具进行
篡改。所以我们推荐使用最终方案2来完全避免该问题
M2-选项-功能设置-其他设置-启用脚本变量检测(模式一)
将需要填入的变量逐个录入
勾选配置后,将允许通过的变量填入列表中,改好后将!setup.txt,CehckVar.txt 上传线上版本
目录:Mir200/!setup.txt
目录:Mir200/Envir/CehckVar.txt
----------------------------------------------------------------------------------------------------
最终解决方案2
(20230314-20240830引擎9个版本进行升级)
230230323 230230628 20230830 20231024 20231207 20240118 20240314 20240523 20240807
我们采取了禁止客户端向服务端发送个人变量的方式来避免该问题,所以涉及到如客户端面板向服务端发送变量时
引擎将以传递到常量里的形式进行解析,原来可以直接通过客户端传递变量的功能将失效
1.说明书-热更日志-历史引擎下载或在技术总群中下载最新引擎
2.M2-选项-功能设置-其他设置-启用脚本变量检测(模式2默认开启)
(*)服务端将不再通过客户端传递的任何个人变量(仅支持唯一常量)
根据配置内容开启规则
勾选配置会造成产品中的滑动条、复选框、输入框、下拉框中向服务端传递
的变量无效,请各位仔细修改产品的脚本并调通,避免造成游戏数据异常
问题1:
必须配置,否则存在被刷风险
问题2:
勾选模式2后不用任何操作,也不需要添加变量,脚本自行判断并赋值即可
线上更新时间:
2024年10月28日上午11点(周一),上线全面更新!
脚本方法(唯一常量):
涉及{滑动条、复选框、输入框、下拉框}进行操作时,服务端直接将内容返回至常量中
通过常量的配置使用脚本自行判断
常量(能用):
1.<$NPCINPUT(*)>
2.<$npcparams(类型,变量)>
;类型:1=输入框,2=勾选框,3=滑动条,4=下拉框
;变量:面板传递的变量
示例:
[@main]
<Img|x=1.0|y=0.0|img=public/bg_npc_01.png|bg=1|loadDelay=1|show=0|move=0|reset=1>
<Layout|x=545|y=0|width=80|height=80|link=@exit>
<Button|x=546|y=0|pimg=public/1900000511.png|nimg=public/1900000510.png|link=@exit>
<Text|x=150.0|y=10.0|size=16|color=250|text=购买药品数量STM(SLIDERV_N61)瓶>
<Text|x=330.0|y=26.0|size=20|color=251|text=$STM(SLIDERV_N61)%>
<Button|x=413.0|y=15.0|size=18|nimg=public/1900000673.png|color=255|pimg=public/1900000674.png|text=购买|link=@滑动拉杆购买>
<Slider|x=116.0|y=30.0|width=200|defvalue=0|sliderid=N61|maxvalue=100|link=@滑动拉杆触发>
<Text|x=17.0|y=28.0|size=18|color=255|text=滑动拉杆:>
<CheckBox|x=86.0|y=69.0|default =<$STR(N62)>|checkboxid=N62|nimg=public/1900000550.png|delay=1|pimg =public/1900000551.png|count=1|link=@勾选框触发1>
<CheckBox|x=131.0|y=70.0|default =<$STR(N63)>|checkboxid=N63|nimg=public/1900000550.png|delay=1|pimg =public/1900000551.png|count=1|link=@勾选框触发2>
<Text|x=14.0|y=76.0|size=18|color=255|text=勾选框:>
<Text|x=7.0|y=51.0|size=18|color=0|text=----------------------------------------------------------------------------------------->
<Text|x=10.0|y=103.0|size=18|color=0|text=----------------------------------------------------------------------------------------->
<MenuItem|a=3|x=408.0|y=100.0|select =选择物品|itemhei=30|fontcolor=250|menuid=S64|itemname=圣战戒指#圣战头盔#圣战项链#圣战手镯#屠龙#战神盔甲(男)#战神盔甲(女)|direction=0|selectcolor=254|fontsize=20|link=@菜单下拉触发 >
<Button|x=415.0|y=67.0|size=18|color=255|nimg=public/1900000673.png|pimg=public/1900000674.png|text=领取|link=@菜单下拉领取>
<Text|x=23.0|y=138.0|size=18|color=251|text=[字符型输入]|link=@@InPutString40>
<Text|x=153.0|y=137.0|size=18|color=251|text=[数字型输入]|link=@@InPutInteger41>
<Text|x=152.0|y=434.0|size=18|color=255>
<Text|x=433.0|y=430.0|size=18|color=255>
[@滑动拉杆触发]
#IF
#act
sendmsg 6 打印N61值:<$str(N61)>
sendmsg 6 返回变量值:<$NPCPARAMS(3,N61)>
MOV N$滑动拉杆赋值 <$NPCPARAMS(3,N61)>
[@滑动拉杆购买]
#if
LARGE N$滑动拉杆赋值 0
#act
give 强效金创药 <$str(N$滑动拉杆赋值)>
sendmsg 6 购买了<$str(N$滑动拉杆赋值)>瓶强效金创药!
[@勾选框触发1]
#if
#act
SENDMSG 6 打印N62值:<$str(N62)>
SENDMSG 6 返回变量值:<$NPCPARAMS(2,N62)>
[@勾选框触发2]
#if
#act
SENDMSG 6 打印N63值:<$str(N63)>
SENDMSG 6 返回变量值:<$NPCPARAMS(2,N63)>
[@菜单下拉触发]
#IF
#act
sendmsg 6 打印S64值:<$str(S64)>
sendmsg 6 返回变量值:<$NPCPARAMS(4,S64)>
MOV S$菜单下拉赋值 <$NPCPARAMS(4,S64)>
[@菜单下拉领取]
#IF
not equal S$菜单下拉赋值
#act
give <$str(S$菜单下拉赋值)> 1
sendmsg 6 成功领取一件物品:<$str(S$菜单下拉赋值)>
MOV S$菜单下拉赋值
[@InPutString40]
#if
#act
sendmsg 6 打印S40值:<$str(S40)>
sendmsg 6 返回变量值:<$NPCPARAMS(1,S40)>
[@InPutInteger41]
#if
#act
sendmsg 6 打印N41值:<$str(N41)>
sendmsg 6 返回变量值:<$NPCPARAMS(1,N41)>
|
|