Project1

标题: 【专业伸手党】在不联机的情况下,如何实现“兑换码” [打印本页]

作者: 一瞬间的幻觉    时间: 2013-3-14 23:26
标题: 【专业伸手党】在不联机的情况下,如何实现“兑换码”
以前的作法是,在游戏里面设定一个兑换人员,或者是宝箱
然后在里面设定一个变量123456,设定分歧,当玩家输入123456数字
就能获得一些额外的赠品或者是打开宝箱。

这个123456就是所谓的作弊码,或者可以说是兑换码

一般情况下我会把作弊码放在我其他游戏里面,一旦玩家下载了我的另外游戏
就能看到里面的兑换码,但是这样一来,也造成了数据的固定化

玩家A获知了兑换码后,将它发布出来,另外的玩家即使不下载我的另外一个游戏
也能知道兑换码就是123456,那么我的目的就达不到了。


如何能让游戏里面的兑换码在不同的阶段变化呢?为的就是让玩家不要这么快发现规律
RM是单机游戏,你们懂的,不能联机去验证兑换码,只能通过一些模式来实现了

小瞬有个思路,大家看看可行不可行?
打个比方,设定一个循环模式,当打开兑换码的界面,游戏就读取当前系统的时间,
并且提取其天数的数值,如果当天是1月5号,那么就是数值5,如果是2月2日,就是33

游戏中再进行判断,兑换码的数值会随着天数的变化,而变化。
这样子,365天每一天的兑换码都不一样了。

最后,大家肯定会问,那如何发布正确的兑换码呢?

答:我另外的游戏里面,也会搭载一样的模式,
当你在当天打开我另一个游戏里面的兑换码系统,就能得出我前一个游戏里面的兑换码
不过必须在同一天内打开另一个游戏,不然兑换码又不一样了。

所以这套构思中的“兑换码系统”是这样的形态:

游戏1的兑换码  来自  游戏2,  游戏2的兑换码  来自  游戏3,每个游戏之间的兑换码不共通,
之间的规律由我自由制定,比如游戏2的兑换码比游戏1的兑换码每位数都增加了数字2之类。


希望提供有更好的思路。。。当然最好是完整的工程。
只要能实现以下的目标,可以完全无视小瞬设定的思路:
【让玩家找不到规律,但是作者自己能掌握规律,动态化的兑换码】

作者: 怪蜀黍    时间: 2013-3-14 23:26
本帖最后由 protosssonny 于 2013-3-15 13:22 编辑

P叔做了一个公式密码系统,你看看好不好用。
除非是存档取档密码才不变,否则即使是同一玩家,如果重新玩,密码也会改变。
防止名叫@main的人在脚本中被@,先把你@了再说。
脚本第20行真心没辙了,请使用这个工具吧http://rpg.blue/thread-287646-1-3.html
范例: P叔的公式密码系统.rar (242.26 KB, 下载次数: 101)
截图:



脚本(使用时请务必注明来源):
RUBY 代码复制
  1. #==============================================================================
  2. # ■P叔的公式密码系统
  3. #------------------------------------------------------------------------------
  4. #                        本脚本来自[url]www.66rpg.com[/url]
  5. #                          使用时请注明脚本来源
  6. #==============================================================================
  7. class Game_Interpreter
  8.   #--------------------------------------------------------------------------
  9.   #本游戏一共需要多少密码,请在下面写好(默认是100个):
  10.   Code_Num = 100
  11.   #--------------------------------------------------------------------------
  12.   attr_accessor   :save_code            # 密码存储的数组变量
  13.   #--------------------------------------------------------------------------
  14.   # ● 初始化对像
  15.   #     depth : 堆置深度
  16.   #     main  : 主标志
  17.   #--------------------------------------------------------------------------
  18.   def initialize(depth = 0, main = false)
  19.     @depth = depth
  20.     [url=home.php?mod=space&uid=217648]@Main[/url] = main
  21.     @save_code = {} if @save_code.nil?  # 生成密码哈希表
  22.     for i in 0...Code_Num               # 每一个密码都经过公式计算生成
  23.       @save_code[i] = formula(1 + rand(99999999)) if @save_code[i].nil?
  24.     end
  25.     if @depth > 100
  26.       print("已经调用过多公共事件。")
  27.       exit
  28.     end
  29.     clear
  30.   end
  31.   #--------------------------------------------------------------------------
  32.   # ● 公式设定(可以自己重新设计,亦可使用默认,默认公式已经够复杂了)
  33.   #--------------------------------------------------------------------------  
  34.   def formula(x)
  35.     # 将给定的数值求正弦
  36.     value = Math.sin(x)
  37.     # 如果值为负数则取相反数
  38.     value = - value if value < 0
  39.     # 不断把值扩大10倍,直到值大于或等于10
  40.     until value >= 10
  41.       value *= 10
  42.     end
  43.     # 将给定的数值求余弦
  44.     value = Math.cos(x)
  45.     # 如果值为负数则取相反数
  46.     value = - value if value < 0
  47.     # 不断把值扩大10倍,直到值大于或等于10000000(也就是最小的8位数,密码要求)
  48.     until value >= 10000000
  49.       value *= 10
  50.     end
  51.     # 值取整
  52.     value = value.round
  53.     return value
  54.   end  
  55. end

作者: 黄亦天    时间: 2013-3-15 15:37
本帖最后由 黄亦天 于 2013-3-15 18:13 编辑

继承系统.rar (253.29 KB, 下载次数: 75)
继承系统02.rar (253.45 KB, 下载次数: 71)

和P叔用的是完全不同的方式
彻底偷懒的方法233

『1号工程』会在指定的路径内生成指定的文件
密码则是随机的
只要运行【密码继承设定】这个公共事件就可以
需要设置的内容:
【变量ID】:用来代入对话框或者其他地方的变量 两个工程的ID可以不同
【子密码】:用来核对密码出自哪个游戏  2号工程的ID必须和1号工程的ID相同 可以用来制作多个游戏的继承密码 并且也可以储存在同一文件内
【存档】/【读档】公共事件的ID:如题
【目录】:格式为;
  1. $save_path_jc = "盘符:/路径/"
复制代码
“/”不要少了 也不要打反了
【文件名】:格式为;
  1. "文件名.后缀"
复制代码
后缀应该随意 打成.avi都没人管

公共事件【存档】里面
可以设置后面的内容 请自行修改
也可以放到地图事件里再读取 因为变量已经代入完毕了

『2号工程』就会判断有没有这个文件
依旧只要运行【密码继承设定】这个公共事件就可以
设定同上
公共事件【读档】里面
■■■■■■■■■■■■■■■■■■■■■
■ 需要修改使用的变量ID ■
■■■■■■■■■■■■■■■■■■■■■

以下的内容是需要修改的地方
【数值输入处理】的变量ID需要自行修改
【条件分歧:变量1==变量2】 的两个变量ID也需要自行修改 就是数值处理的ID 和前面需要代入的ID
【密码正确/错误的场合】这两个地方根据需求修改
【标签 空白下面】:标签千万别删 标签下面的内容是没有指定的文件下的情况 可以随意修改

之后如果再运行工程1的事件 密码还会随机改变
但是同样工程2依旧可以读取

貌似路径中的文件夹最前面可以带个"."(小数点) minecraft的游戏文件夹就是这样的 路径是 XXX/.minecraft
手动创建这样的文件夹是不允许的 可以防止乱复制

其实不需要密码就能够验证了 如果这个密码存在 其实就代表前面的游戏已经通关了或者怎么怎么样了
不需要密码的话 把【数值输入处理】、【条件分歧:变量1==变量2】  这两个东西删掉  直接修改成验证成功的结果也可以
当然也可以让他输入密码来多费一些功夫

多个游戏的继承密码的话 依旧是复制多个【密码继承设定】这个公共事件 修改参数设置就可以了
【读档】或者【存档】里面的内容如果需要多种 可以自行增加判定 或者自行复制多个重新修改
作者: 一瞬间的幻觉    时间: 2013-3-15 18:56
纠结了。。。。。。两个都挺好,,,明天给答复哈哈哈
作者: 一瞬间的幻觉    时间: 2013-6-21 13:15
黄亦天 发表于 2013-3-15 15:37
和P叔用的是完全不同的方式
彻底偷懒的方法233

这个方法简单有效。。。。

也想评最佳答案啊,等我VIP多起来再回来补给亦天兄啊
作者: 上贺茂润    时间: 2013-6-21 20:56
润有一个方法,就是在游戏中写一个密码事件,随机生成一个数字,比如27685278364902648926……好吧太长了,比如随机生成了10,然后赋予一个变量,作为某一个宝箱的开关,同时显示玩家:兑换码是10*2,也就是20,然后玩家带着20询问“密码是多少”你就告诉他是“10”。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1