签到天数: 208 天 [LV.7]常住居民III

♪(^∇^*)
- UID
- 58302
- 僵尸币
- 27935
- 贡献度
- 100
- 注册时间
- 2019-5-8
- 在线时间
- 691 小时
- 最后登录
- 2024-11-4
  
|
不注册个乐园论坛账号能玩??
您需要 登录 才可以下载或查看,没有账号?注册

×
-----------------------------------------------------------------------------------------
汇总贴:https://bbs.zombieden.cn/thread-67650-1-1.html
-----------------------------------------------------------------------------------------
1).和之前一样,我们先准备一个盒子,一个门,以及12个按钮.
(我们设置密码为12345),那么我们就准备6个logic_branch实体(逻辑分支实体),以及一个math_counter实体(计数器)
命名如下:
门:door
按钮:button_0,button_1 , ................. , button_9 , button_reset , button_ok
(所有按钮都不勾选Starts locked)
计数器:math
逻辑分支:bra_1 bra_2 bra_3 bra_4 bra_5 以及 open_bra
2).原理介绍:
逻辑密码门的实体看起来多,但实际上在触发逻辑上和part1的按钮密码门是一样的,都是一环套一环。
如果看的不太懂的话,可以配合酸奶dalao的视频观看:https://www.bilibili.com/video/av12929890
假设密码为1,2,3,4,5
核心逻辑如下:
***************************
a)对于按钮1和第一个逻辑分支bra_1
首先我们就给按钮1添加一个输出:
outpus : OnPressed bra_1 SetValueTest 1
意思是,当按钮1按下的时候,让bra_1(第一个逻辑分支实体)里面的值设置成1(SetValue),并且测试(Test)。
(在逻辑分支实体中,1代表真,0代表假)
然后我们在bra_1中添加一个输出:
outpus : OnTrue bra_2 SetValue 1
意思是:当自己为'真'(True)的时候,将bra_2的值设置成1。
注意,这里仅仅是设置(SetValue)成1,但是不进行测试(Test)。
这样,当我们按下按钮1,bra_1会被设置成真并且检测状态,将bra_2的状态设置成1(真),
***************************
b)对于按钮2和第二个逻辑分支bra_2
首先我们在按钮2添加一个输出:
outpus : OnPressed bra_2 Test
意思是:当按钮2按下的时候,检测逻辑分支bra_2的状态
然后在bra_2中添加一个输出:
outpus : OnTrue bra_3 SetValue 1
意思是:当自身为真的时候,就将逻辑分支bra_3设置成1(真)
这样,当我们按下按钮1,bra_1会被设置成真并且检测状态,将bra_2的状态设置成1(真),
当我们按下按钮2,就会检测bra_2的状态,bra_2为真的时候将bra_3被设置成1(真)
***************************
c)对于按钮3和第三个逻辑分支bra_3
首先我们在按钮3添加一个输出:
outpus : OnPressed bra_3 Test
意思是:当按钮3按下的时候,检测逻辑分支bra_3的状态
然后在bra_3中添加一个输出:
outpus : OnTrue bra_4 SetValue 1
意思是:当bra_3自身为真的时候,就将逻辑分支bra_4设置成1(真)
这样,当我们按下按钮1,bra_1会被设置成真并且检测状态,将bra_2的状态设置成1(真),
当我们按下按钮2,就会检测bra_2的状态,bra_2为真的时候将bra_3被设置成1(真)
当我们按下按钮3,就会检测bra_3的状态,bra_3为真的时候将bra_4被设置成1(真)
***************************
d)对于按钮4和第四个逻辑分支bra_4
首先我们在按钮4添加一个输出:
outpus : OnPressed bra_4 Test
意思是:当按钮4按下的时候,检测逻辑分支bra_4的状态
然后在bra_4中添加一个输出:
outpus : OnTrue bra_5 SetValue 1
意思是:当bra_4自身为真的时候,就将逻辑分支bra_5设置成1(真)
这样,当我们按下按钮1,bra_1会被设置成真并且检测状态,将bra_2的状态设置成1(真),
当我们按下按钮2,就会检测bra_2的状态,bra_2为真的时候将bra_3被设置成1(真)
当我们按下按钮3,就会检测bra_3的状态,bra_3为真的时候将bra_4被设置成1(真)
当我们按下按钮4,就会检测bra_4的状态,bra_4为真的时候将bra_5被设置成1(真)
***************************
e)对于按钮5和第五个逻辑分支bra_5
首先我们在按钮5添加一个输出:
outpus : OnPressed bra_5 Test
意思是:当按钮5按下的时候,检测逻辑分支bra_5的状态
然后在bra_5中添加一个输出:
outpus : OnTrue open_bra SetValue 1
意思是:当bra_5自身为真的时候,就将逻辑分支open_bra设置成1(真)
这样,当我们按下按钮1,bra_1会被设置成真并且检测状态,将bra_2的状态设置成1(真),
当我们按下按钮2,就会检测bra_2的状态,bra_2为真的时候将bra_3被设置成1(真)
当我们按下按钮3,就会检测bra_3的状态,bra_3为真的时候将bra_4被设置成1(真)
当我们按下按钮4,就会检测bra_4的状态,bra_4为真的时候将bra_5被设置成1(真)
当我们按下按钮5,就会检测bra_5的状态,bra_5为真的时候将open_bra被设置成1(真)
***************************
f)对于第六个逻辑分支open_bra 与 math_counter实体(计数器实体)
首先,我们要设置计数器的属性:将Maximum Legal Value 设置成5 (也就是计数器的最大值为5)
我们在计数器中添加输出:
outpus : OnHitMax open_bra Test
意思是:当计数器达到最大值(5)的时候,就会检测open_bra的状态
然后选中所有按钮,添加一个输出:(除了button_reset重置按钮之外)
outpus : OnPressed math Add 1
意思是:当按钮按下时,让计数器增加1,所以计数器就是来记录按下按钮次数的,当按到5下的时候,就检测open_bra的状态
最后在open_bra中添加一个输出:
outpus : OnTrue door open
意思是:当open_bra自身为真的时候,就让门打开
这样,当我们按下按钮1,bra_1会被设置成真并且检测状态,将bra_2的状态设置成1(真),此时计数器为1
当我们按下按钮2,就会检测bra_2的状态,bra_2为真的时候将bra_3被设置成1(真),此时计数器为2
当我们按下按钮3,就会检测bra_3的状态,bra_3为真的时候将bra_4被设置成1(真),此时计数器为3
当我们按下按钮4,就会检测bra_4的状态,bra_4为真的时候将bra_5被设置成1(真),此时计数器为4
当我们按下按钮5,就会检测bra_5的状态,bra_5为真的时候将open_bra被设置成1(真),此时计数器为5
此时计数器为5所以会触发计数器OnHitMax的输出
outpus : OnHitMax open_bra Test
来检测逻辑分支open_bra的状态,当前open_bra的状态为1(真),所以门就会被打开。
于是,逻辑密码门的核心就做完啦,按照顺序正确按下1,2,3,4,5这5个按钮后,门开了。
这是核心逻辑,还需要一些重置的输出。
***************************
g)其他需要补充的输出:
***************************
首先:
对于逻辑分支open_bra要添加一个输出:
outpus : OnTrue !self SetValue 0
意思是:当open_bra自身为真的时候,就把自己设置成假
如果不加这一条输出,在第一个人正确输入12345,那么open_bra就一直是处于真的状态
第二个人无论按下什么按钮,只要按够5个按钮,就会触发计数器的OnHitMax,来检测open_bra的状态,此时状态为真,门就会开。
对于计数器,要额外添加这2条输出:
outpus : OnHitMax !self SetValueNoFire 0
意思是:当计数器达到最大值(5)的时候,就会将自身设置成0,
outpus : OnHitMax bra_* SetValue 0
意思是:当计数器达到最大值(5)的时候,就会将bra_*设置成假(0)
(bra_*是所有以bra_开头的实体,这里当计数器达到最大值的时候,bra_1,bra_2,bra_3,bra_4,bra_5都会被设置成假)
对于重置按钮button_reset,添加输出:
outpus : OnPressed math SetValue 0
意思是:当按下重置按钮的时候,让计数器归0
***************************
逻辑密码门的实体看起来多,但实际上在触发逻辑上和part1的按钮密码门是一样的,都是一环套一环。
如果看的不太懂的话,可以配合酸奶dalao的视频观看:https://www.bilibili.com/video/av12929890
以上,便是逻辑密码门的原理。
制作稍微有些复杂,但是破解起来也算简单,首先看门的inputs,就可以发现是当open_bra为真的时候开门
然后我们看open_bra的inputs,会发现是当bra_5为真的时候,自己会被设置成真
所以我们要看bra_5的inputs,会发现,是当按钮5按下的时候检测状态。也就是密码的最后一位为5.
同时我们会发现,是当bra_4为真的时候,bra_5会被设置成真
所以我们要看bra_4的inputs,会发现,是当按钮4按下的时候检测状态。也就是密码的倒数第二位为5.
同时我们会发现,是当bra_3为真的时候,bra_4会被设置成真
所以我们打开bra_3的inputs.....
依次类推,可以得到密码12345
如果作者命名非常规范的话,更方便的方法是直接看bra_1的输入,会发现是当按钮1按下的时候,将bra_1设置成真并且测试,所以密码第一位是1
然后看bra_2的输入,会发现是是当按钮2按下的时候,会检测(Test)bra_2的状态,所以密码第第二位是2
然后看bra_3的输入,会发现是是当按钮3按下的时候,会检测(Test)bra_3的状态,所以密码第第二位是3
然后看bra_4的输入,会发现是是当按钮4按下的时候,会检测(Test)bra_4的状态,所以密码第第二位是4
然后看bra_5的输入,会发现是是当按钮5按下的时候,会检测(Test)bra_5的状态,所以密码第第二位是5
***************************
逻辑密码门制作起来有点小麻烦,而且,破解起来很简单(了解制作过程的话),同时这个密码门无法阻挡观察者。
2020年2月17日03:34:38 |
|