御丶 发表于 2020-4-13 01:04:44

制作伪随机激活码 呈现用户用完即报废的效果

本帖最后由 御丶 于 2020-4-13 01:27 编辑

这是不外接服务器纯单机为前提
分享一个刚点到的点子   制作伪随机激活码唯一获取的效果\n如果有朋友有更好的思路或者想法建议麻烦务必回复和我们分享一下!!
激活码简单的制作方法:帖子传送门这样做出来的激活码 如果别人分享是可以人人享用的这也是游戏里面很正常的现象


然后现在优化一下 尽量避免这种情况 我只能做到避免
由于单机游戏(纯单机不架设服务器的条件下)我无法同步获取玩家游戏内的数据
意味着 我哪怕实现了随机生成但无法实现我先获取这个激活码 然后我来告诉玩家
因此我换了一种思路来实现这种效果

首先思路说一下:即玩家进入游戏--然后联系我们领取激活码--发给玩家后避免玩家分享激活码导致人人领取
这是这次的目的效果
既然必须要提前设置   而玩家领到的激活码又不能让别人使用


我首先想到的是:复数设置激活码,单一领取
即我给每个存档做1个随机范围变量随机绑定一个编号   根据编号来判断需要用哪一个激活码   这样的话   就算把激活码分享出去但别人也不一定能用到.
记住只是不一定 既然是随机编号那他就存在随机数相同时即可使用我只能利用视觉效果来做一场骗局

下面正式开始.


本次制作一共需要设置3个变量   其中003号变量默认为ON   控制每个存档只会出现一个编号





如图所示,我这次例子把地图编号 改成了文字显示区别而已道理思路是一样的


例如我随机变量设置了1-3   
变量=1时显示的是 输入激活码   变量=2时显示的是填写激活码变量=3时显示输入兑换码
设定3个不同的激活码条件用小本本自己登记好
(PS:我这次例子是用了文字差异   你完全可以做到这里是完全相同,然后随便找个界面或者游戏角落显示这个存档的最终编号
例如 随便找个地方显示 游戏版本:0.1.5.5.19   红色字就是用\v[] 转译符填充随机编号的数值   你让玩家截图 你一看就知道了   玩家鬼知道啊 hhh)


那玩家联系你的时候 你让玩家截图 这样发给你看   你自己就知道需要给哪个激活码给玩家


而且当玩家用掉对应激活码后 去分享出去别人存档的随机编号却不一样便是使用不了这个激活码那我们的目的就达成了!


不要跟我说什么那你这样设置别人随机到相同那岂不是能用了?
那我很负责任的告诉你 那你3个不行 那你就做20个20个满足不了你你就做50个   50个不行就100个 赋值粘贴改一下数值的事
100个数值随机相同的概率有多低可以自己去体验一下   


只要玩家分享出去.那么2.3个人都用不了那我们这次的视觉骗局其实已经完全达成了!!


而且这不是什么全民大侦探   这只是一个小游戏不会说 这么明显 一看就知道了玩家游玩的时候 没你这么上帝视角哦!~!


希望路过的有能力的大佬可以提供更好的思路 与做法!!感谢!

官方群@完全不懂脚本的 御丶   御坂美琴的御!!! QQ513105991欢迎享受游戏制作过程的朋友一起交流学习!






youlong 发表于 2020-4-13 04:33:51

我的想法基本跟楼主您的差不多,只是就设置一个兑换码888,省的分歧一大堆累死人。

当玩家获取随机兑换码的时候,比如获得了888这个数组,系统会根据三位随机数【19:30:01】获取的变量计算,简单的公式比如:888+19+30+1=938

然后玩家获得的兑换码便显示938提供给你,你直接通过兑换码938 x 99得来激活码是92862

当他填写的92862的时候,需要再运算验证一下92862除以99-19-30-1 是否等于888

防止其他玩家拿着激活码就可以用,因为每个人几乎很难在同一秒去开启宝箱。


通这个关键便是自己的这套公式要复杂,不仅仅是我例子中的x99。

总结:公式为888+变量b+变量c+变量d= z 【兑换码】   作者将Z x 99 的激活码结果给玩家
填写激活码的时候,系统再次验证z/99-b-c-d是否=888

比如玩家把92862激活码放出来,另一个玩家获得的三个变量是【01:01:01】,那么他填写92862后,系统运算 92862/99-1-1-1 =935 不等于888

所以激活码无效。

大半夜有点头晕,算的不知道对不对,如有问题请指正,感谢~~~

滚动的天空 发表于 2020-4-13 09:18:16

牛逼牛逼

御丶 发表于 2020-4-13 12:55:04

youlong 发表于 2020-4-13 04:33
我的想法基本跟楼主您的差不多,只是就设置一个兑换码888,省的分歧一大堆累死人。

当玩家获取随机兑换码 ...

懂了 其实思路都是一样利用随机数组然后通过自己的计算或者转换来提供另一样东西你这个利用公式的也很方便 因为这样就不用设置那么多了 hhhhh

youlong 发表于 2020-4-13 20:12:21

本帖最后由 youlong 于 2020-4-13 20:18 编辑

御丶 发表于 2020-4-13 12:55
懂了 其实思路都是一样利用随机数组然后通过自己的计算或者转换来提供另一样东西你这个利用公式的也 ...
对,反正玩家鬼知道你的公式是啥,哈哈哈哈,试了别人的码又不管用,只能死乞白赖求制作者要码了,哈哈哈哈哈
话说一开始我还想通过获取时间得到三个变量再计算,后来想想更麻烦,还不如随机数来的省事

次元文明 发表于 2020-4-13 21:21:25

原来大家都想到了啊。
我之前想的是这样的路子。
玩家打开礼包A   礼包A页面显示由5个双数变量随机组成的数字串。
比如1222231455
然后在显示数字串之后,系统后台就已经通过算式计算出了一个变量。
比如12+1+1   22+1+123+1+114+1+155+1+1
             14          24       25             16            57
输入框提前设置一个总变量分分之条件。这个总变量就是上面的算法计算的5个变量之和。
然后玩家找到我,我计算好给他。他在输入。
这样,每次打开都是完全随机的变量组,且随机率很大,几乎很难再次遇到同样的变量。
但是 这是我之前的理论阶段。完全没实际操作、。。。

MCCF 发表于 2020-4-13 21:37:35

本帖最后由 MCCF 于 2020-4-13 21:58 编辑

其实可以用一些奇怪的方法让单机游戏礼包码难以被多次使用。

比如 礼包码通过可逆加密当前时间戳生成,并规定5分钟后即报废不可再用。

然后游戏端把礼包码解密并与时间对比,如果与生成时间相距超过5分钟则不可被使用。

至于时间跳跃大法?可以用API大法(无需自建服务器但需联网),用已有的IWeb.get得到在线北京时间。如淘宝APIhttp://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp。

-----------------------------------------------手动分割-----------------------------------------------

如果允许联系作者取得验证码的话,我刚刚也想出另外一种做法。

[*]客户端获得用户IP等硬件数据;
[*]客户端取随机数,并将随机数、时间戳等与刚才的硬件数据拼合,签名加密;
[*]客户端把加密后的结果作为“序列号”显示在用户面前;
[*]作者要求玩家提供序列号,后台根据序列号进行一系列处理;
[*]把处理结果作为激活码返还给玩家,玩家将激活码输入回游戏;
[*]游戏将序列号与激活码比对,如无误则使用成功,否则提示使用失败。
这种做法的好处在于能够识别机器,做到一机一码(不过也很脆弱就是了……)

比如,第4步直接将序列号再次签名的结果作为激活码,客户端只需要验签即可。
省事许多,还不需要耍小伎俩(逃

桌游邻客 发表于 2020-4-18 17:50:09

额……原谅我没细看,但是既然是需要玩家联系作者索取激活码的话   好像不需要做这么麻烦啊…

就在客户端生成个码,玩家来索取激活码的时候提供一下这个码就好了,就简单到不用思考了

御丶 发表于 2020-4-18 19:03:34

本帖最后由 御丶 于 2020-4-18 19:59 编辑

桌游邻客 发表于 2020-4-18 17:50
额……原谅我没细看,但是既然是需要玩家联系作者索取激活码的话   好像不需要做这么麻烦啊…

就在客户端 ...
emm,..这个是纯单机为前提的没有服务器提供远程读取功能   
所以要解决2个问题
1.如何玩家来找我后必须由我来提供这个码给玩家 让玩家在自己下载的游戏用
2.而且要避免玩家拿到码之后   分享出去人人可用

如果是接口服务器的 那就是简单的不行随便做一个随机生成 然后远程读取 发给玩家即可
:D

youlong 发表于 2020-4-21 22:08:19

8楼给了我另一个伪兑换码的实现方式,玩家如果再跑来问作者,多少有点繁琐,可以来个伪联网获取激活码,然后自己填写,搞得好像在玩联网游戏一样:
点击获取兑换码按钮,随机出现一堆数字

系统变量获取该数字

玩家把当前数字填写进对话框


判断填写数字是否和之前变量一致,

出现文字
联网获取中...
物资正在发放途中...
到货...

获得奖励。

自娱自乐,哈哈哈哈哈哈哈哈哈哈哈哈哈

页: [1] 2
查看完整版本: 制作伪随机激活码 呈现用户用完即报废的效果