设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5860|回复: 17

[已经解决] 怎样实现不联机的情况下,相同游戏的物品可以互换

[复制链接]

Lv5.捕梦者

梦石
0
星屑
31689
在线时间
5077 小时
注册时间
2012-11-19
帖子
4877

开拓者

发表于 2015-3-10 12:01:54 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
   嘛~,讨论区捏冷清,给 恐惧剑刃 添点人气。

最近突然就想到了这么个,怎样实现不联机的情况下,相同游戏的物品可以互换或给予,当然要通过一定媒介,比如网页—RM论坛。

举例:比如A和B同样玩某个单机游戏,A得了件好装备,欲给予B。我的思路是:A在游戏的“打包”功能里,将装备打包,也就是单独的将该装备各数据生成一个rxdata存档,然后A就失去该装备。A将装备存档上传到论坛给B,B下载后,把装备存档放到制定文件夹,然后在游戏里“导入”该装备,B就得到了该装备。

下面有2个问题未解决:
1,装备存档可随意复制,A就相当于什么都没有失去。也可以用此BUG来无限复制东西。
2,装备存档只是一个 rxdata 文件,无法知道里面到底是什么东西。

评分

参与人数 1星屑 +30 收起 理由
恐惧剑刃 + 30 塞糖

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制

Lv5.捕梦者

梦石
0
星屑
33043
在线时间
10470 小时
注册时间
2009-3-15
帖子
4756
发表于 2015-3-10 19:52:03 | 显示全部楼层
本帖最后由 soulsaga 于 2015-3-10 19:55 编辑

1是无解的...
换个思维吧..
可以的话是游戏通关后
让玩家创造一件个性装备..属性随角色等级增加 制作时附加特殊能力消耗玩家在游戏中得到的特殊物品数量来附上....复制存档也自然改变不了特殊能力的上限
这样复制装备也没太大意义...

评分

参与人数 1星屑 +100 收起 理由
恐惧剑刃 + 100 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9467
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

发表于 2015-3-10 20:07:07 | 显示全部楼层
问题1如果不借助服务器这类统一收集信息的东西的话应该是无解的,因为你无法确定什么样的存档被用过,什么样的存档没用。换言之,这种“交易”一定要有个统一的标准,否则一定有方法让人钻空子。
例如我们给手机充值,就要输入充值卡密码,一个充值卡用过一次之后,就不能重复使用。但是只有10086知道哪个密码被用过,哪个没有。如果不借助服务器,这一定是没有办法的事情。
我想的这个方法,原理和“充值卡”类似,给每一个rxdata文件设置一个独特的密码,最好长一点。然后再打包装备的时候,就随机生成一个密码。用其他客户端收取的时候,先检查这个“密码”有没有被使用,如果已经被使用,则拒绝识别;如果未被使用,那么记录这个密码,然后接受装备即可。记录的位置可以放在$game_system里面,和存档连成一体。这样可以防止一般的无脑复制,不过这里有个问题就是一个人发出的rxdata文件可以被多人接受,那么这种方法下,多人都可以收到这个文件,而且都可以识别。因此三个人还是可以“无限刷装备”,例如A发出一个文件,复制2份给B和C,B和C接收之后,再原封不动发回去,此时密码已经改变,A可以同时接收,这样A就有2个装备了。
总之,不借助服务器这种统一标准,此问题无解。

评分

参与人数 1星屑 +200 收起 理由
恐惧剑刃 + 200 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31689
在线时间
5077 小时
注册时间
2012-11-19
帖子
4877

开拓者

 楼主| 发表于 2015-3-10 21:13:02 | 显示全部楼层
看来只有有限制的共享,比如生成一个新的装备或其它什么东西时,生成一个该装备或东西独有的序列号,比如 计算机名+装备序号
这样在“导入”时,如果判断游戏里有该物品的序列号时,删除物品存档。
这样就能防玩家无限复制,但是能大范围的共享。

点评

钱多烧的~。把游戏稍微做难点,鼓励玩家共享“神器”  发表于 2015-3-10 21:37
所以还是买一台服务器吧  发表于 2015-3-10 21:35
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

发表于 2015-3-11 09:49:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
150
在线时间
332 小时
注册时间
2013-7-6
帖子
356
发表于 2015-3-11 11:16:34 | 显示全部楼层
本帖最后由 wolves 于 2015-3-11 11:18 编辑

1那个save-load大法只能把物品信息全存在数据库里,开启游戏时自检才能解决。
2那个可以通过数据库实现。

A的rmxp把信息通过api传给vb,vb直接用post的方式与php交互修改数据库,B的rmxp可以调用vb并指定数据获取php信息。
当然有免费的数据库空间,我用起来还不错。我这里就不做广告了。

点评

第二个可以列清单,第一个可以在别的rxdata里做记录,然后读档时核对,不被发现就好了。  发表于 2015-3-11 12:01
我指的东西是以数据库数据为基础生成的新的“物品”类,这些包括“打包”和“导入”都能实现,只要是相同的游戏。只有吾提到的2点是个死结。  发表于 2015-3-11 11:56
要想动态处理必须要用数据库。  发表于 2015-3-11 11:55
可以对应物品形成对应的哈希表核对,如果用过的话就不能再用  发表于 2015-3-11 11:54
话说不改存档那save load不可能解决  发表于 2015-3-11 11:53

评分

参与人数 1星屑 +150 收起 理由
恐惧剑刃 + 150 塞糖

查看全部评分

偶是熬夜学编程的傻子
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
31689
在线时间
5077 小时
注册时间
2012-11-19
帖子
4877

开拓者

 楼主| 发表于 2015-3-11 12:06:21 | 显示全部楼层
wolves 发表于 2015-3-11 11:16
1那个save-load大法只能把物品信息全存在数据库里,开启游戏时自检才能解决。
2那个可以通过数据库实现。

我的那个 仿网游装备 就是这样。
首先一个装备空数组,生成新装备时,根据这个数组的 size 决定装备的索引,然后装备数组再添加这个新装备。调用该装备时,装备数组[装备索引]  ,而不是数据库ID 。删除时:装备数组[装备索引] = nil

所以在”打包“时:打包文件数据 = 装备数组[装备索引]  ;  装备数组[装备索引] = nil
在”导入“时:装备 = 打包文件数据 ; 装备.索引 = 装备数组.size ;装备数组添加装备 ; 删除打包文件

点评

其实不删也可以的,所以说只能共享。只能防止无限复制。  发表于 2015-3-11 13:40
这个不行,得只这样存档复制出去再倒回来就。。。  发表于 2015-3-11 13:30
对,可以在打包时 遍历所有存档,如果有打包装备的序列号,就删除。  发表于 2015-3-11 13:09
在打包之后就应该马上另保存一个rxdata记录整个装备数组并隐藏起来,每次读档时都进行核对,以防SL  发表于 2015-3-11 12:58
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1803
在线时间
133 小时
注册时间
2013-10-6
帖子
193
发表于 2015-3-13 00:40:20 | 显示全部楼层
如果你想脱机进行交换的话,倒是有一个方法
想要交换的时候,先让接收方根据目前的装备、状态等信息生成一个hash校验码c1,然后发送方根据c1运算得c2(增加的因子为要导入的装备信息),放到存档文件中。接收方接收的时候再根据生成c1的方式生成c3,使用相同算法运算得c4,与存档中的c2比对,如果符合则通过
一旦导入装备后当前状态会改变(你也可以每导入一次后固定地增加某变量的值作为区分因子),这样一个文件经指定目标导入一次后就失效,而且其他目标不可导入;无脑将文件中的c2提取出来拿到其他文件中也是不可能欺骗导入的

点评

要么我做个范例出来,你帮我实现下你这个效果?  发表于 2015-3-13 23:13
相当于:我要给你钱了,先把你的口袋打开。也和 接头口令 类似。  发表于 2015-3-13 20:53
这就需要你保护存放本身了。否则本地环境下无解,用户可以任意回放你的一切操作。只需要加入防止存档回放的手段即可  发表于 2015-3-13 19:21
存档 --> 导出物品 ---> 关闭游戏 ---> 读档 物品还在~  发表于 2015-3-13 18:10

评分

参与人数 1梦石 +1 收起 理由
恐惧剑刃 + 1 或许

查看全部评分

←你看到一只经常潜水的萌新。
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
发表于 2015-3-13 10:21:26 | 显示全部楼层
复制一下存档就两份了
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
发表于 2015-3-13 19:12:20 | 显示全部楼层
只能联网,用 hash 什么的都是不行的!!
就算给每个用户随机生成一个10位数的ID,选择ID给予物品,也会因为无限复制rxdata而无限复制

点评

8L的解决方案可以处理接收方问题。发送方进行自验证即可。有空我写个Demo,试试就知道了。  发表于 2015-3-13 20:34
...............个人拙见,无解的。毕竟不联网,你只有发送方的信息而接收方的任何信息你都不能采集!!这样的话不管怎么做,都有BUG的。  发表于 2015-3-13 19:38
接收方有解决方案,发送方需要防止存档回放。hash只是一个工具,具体效果看你怎么用。  发表于 2015-3-13 19:25
判断ID啊,游戏里有该ID的物品,不能导入。其实不是用ID来理解,可以称作为专用序号。  发表于 2015-3-13 19:15
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-3-29 21:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表