作者laechan (小太保)
看板mud_sanc
标题[wizs] 数字图程式
时间Fri Oct 7 10:57:43 2011
假设底下为显示范围
┌──────────────────────────┐
│1234567890123456789012345678901234567890123456789012│
│2 │
│3 │
│4 │
│5 │
│6 │
│7 │
│8 │
└──────────────────────────┘
2005年时写过类似的东西,不过当时功力还不足,玩家有写出
过辨识程式。
现在的话,要写出程式无法辨识的数字图基本上是办得到的。
基本流程简述如下..
一、r=random(数字范围)
二、进行每个数字的显示大小及字样定义
a.先决定大小
b.再跑出字样
c.储存起来
三、再进行每个数字之间的「起始显示位置设定」,以显示图
范围为例,假设要显示六位数字,那基本上最大宽度公式
max w = 2x2 + 7 x 6 + (7-1) = 52
四、加入杂讯
五、秀图
这支程式并不难写,出来的数字图类似底下...
┌──────────────────────────┐
│1234567890123456789012345678901234567890123456789012│
│2 * **** * * ** * ****** * *** ** ** │
│3 * * ****** * * * * │
│4 *** ** **** ** * * * * ** *** │
│5 * * * ** **** ****** * * │
│6 *** ** *** *** * * * ** * ** * │
│7 * * * * * * * * * *│
│8 * * ***** * ****** │
└──────────────────────────┘
答案:284739
上面的意思就是..
一、数字的大小至少就有三种样式(占5、6、7行)
二、数字的起始显示位置(从左上算起)最多有 3x5 种,不过依
数字的大小最少则是 5 种(平移区间)。
三、数字的字样是随机的,也就是残缺or肿瘤显示,例如4那个
字,左上就出现多余的 *,而中段就缺少一个 *。
四、数字之间是可以交叠的,例如 7 跟 3。
五、数字图搀了一定数量的「杂讯」,例如你会看到空白处有出
现 * 号。
像这种图要破解就有一定难度了。若要做为防机程式,则有几个
原则必须掌握..
一、我们允许程式跑出「真的无法辨识的图」。
然後请玩家等待一段时间等图更新再试一次即可。这时的重
点就放在「这类图的出现机率真的很低」。
二、我们允许玩家输入错误的重试,但是重试必须限制时间及次
数。
然後失败次数超过就要等待一段时间等图更新再试一次。
比方容错三次,这样真正手动的玩家才能有机会在三次内猜
到答案。
三、程式无法百分之百防止挂机
这是因为不可能玩家每做什麽就跑出该判断(会被玩家骂死)
,所以这时应该把程式摆在「重点处」,例如说 recall 点
、补品补充店、公会adv/train、以及像是不应该被经常使
用但偶尔必须用到的 en 指令、go 指令(行走)、login 时..
然後设定好周期触发时间即可,例如玩家走动时只要判断时
间到了就自动出现数字图,然後玩家未回答出正确答案前就
不允许其走动、以及做其它相关的指令(en、recall等)。
然後允许玩家即使看到了数字图也可以不必马上回答,有空
时再回答即可(比方它正在战斗中这样)。
也就是说不需要要求 100% 的防堵率,反而才能让防机效率
达到最好。
以上心得跟大家分享。
Laechan@Sanc
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.81.23.70
※ laechan:转录至看板 mud 10/07 10:58
1F:推 justinj :图我看不出来是那几个数字... 10/07 11:13
2F:→ justinj :基本上只要看的出来就可以写出来..如果看不出来当然 10/07 11:15
3F:→ justinj :写不出来... 10/07 11:15
4F:→ justinj :现在炸弹客的那个就看不大出来了(有时要cp出来加个空 10/07 11:17
5F:→ justinj :格来平移..但那是只加个一两次而已...太多就没法度了 10/07 11:18
6F:→ justinj :要嘛就用色盲辨别的那种来用<颜色>..不然根本看不懂 10/07 11:20
7F:推 justinj :ps.第1个数字看不大出来了...2 or 3..其它完全无法辨 10/07 11:41
8F:→ justinj :识 10/07 11:41
9F:推 AresMars :我觉得比起很多免空的 这个已经算好辨识了= = 10/07 11:52
看不出来你可以猜。
猜n次没猜中,就请你等一分钟等图更新再猜。
猜错没关系,不会有任何惩罚,只是你无法 go、recall、heart、etc..
这个程式如果要做为防机用的基本原则就是「允许玩家猜错or猜不到」。
而且他顶多 1 小时跑出来一次,以及登入时、到公会 train 技能时、
adv lv 时....才会出现,不会对手动玩家造成什麽太大困扰
※ 编辑: laechan 来自: 115.81.23.70 (10/07 12:35)
10F:→ hlead :来个答对送10点学点也不错.. 10/07 14:54
11F:推 justinj :现在最怕的是...猜那个猜了十几次都猜不中... 10/07 16:39
12F:→ justinj :我只有第一个看的懂..也就是说剩200000种可能..sob 10/07 16:40
13F:→ justinj :..这个还是有答案的情况下去看...到时出一个要怎麽办 10/07 16:42
14F:→ justinj :.....amem 10/07 16:42
15F:→ justinj :这个还是认定它是写"正体"的情况下..如果再变成斜体 10/07 16:44
基本上,你看不懂,你可以贴出来问别人看看。
又或者还有一个方法,你把图贴到记事本,然後把那些杂讯
先消掉,把残缺的部份试着补一下,那或许你就能懂了。
这是稍微处理完之後的结果
****** * * ****** ******
* * * ****** * * *
****** ******* * * * * ******
* * * ******* ****** *
****** ******* * * * *
* * * * * *
******* * ******
2 8 4 7 3 9
实际上出现数字图时是上面的型式(不会有边框),然後某些
地方会残缺或长瘤,外加一些杂讯。
※ 编辑: laechan 来自: 115.81.23.70 (10/07 18:19)
16F:推 justinj :现在看的懂了...这是在认定它是正体字的情况下.. 10/07 18:18
17F:→ justinj :第二个方法是要知道那些是才能做..也就是说第2方法no 10/07 18:19
18F:推 hmml :要交叠的话,至少颜色要有所不同... 10/08 02:32
19F:→ laechan :看不懂没关系,弃答即可 10/08 02:55