找回密码
 点一下
查看: 1070|回复: 5

关于玩家名与玩家分数绑定的读取代码系统?

[复制链接]
发表于 2013-12-15 21:09:45 | 显示全部楼层 |阅读模式
有下载过一个演示但里面说明不清,看不太懂。知道GA的人才多。就过来请教一下了!
应该如何游戏结束后转换玩家名字与玩家分数成一个代码,在玩家下次游戏时输入后。获得上次分数?
能否详说说制作思路,只知道是各种进制转换。


发表于 2013-12-15 23:14:44 | 显示全部楼层
魔兽向游戏外保存数据的手段无非两种,一种是游戏缓存,另一种是PreloadGen***系列函数,LZ可以搜索这两种东西的用法
玩家名+分数转成代码这一步仅仅是为了让普通玩家看不懂代码是如何生成的,防止他们修改而已,LZ可以用任何你自己的方法来加密,或者不加密直接存
回复

使用道具 举报

发表于 2013-12-16 13:24:31 | 显示全部楼层
进制转换只是一个数学问题,和WE无关……
不过那是否是真的禁止转化呢……
回复

使用道具 举报

发表于 2013-12-18 20:33:36 | 显示全部楼层
进制转换是数学问题,没什么好说的
在魔兽里面怎样用记录码表示转换过进制的数字是一个难点
可以用SubString(s,i,i+1)来表示n进制的数字i,s是记录码字符串
但是读取的时候又是一个问题
因为魔兽里面没有在字符串里查找字符位置的函数,所以你必须自己写一个
逐个搜索,获得字符的位置,从而得知字符所代表的n进制数字
逐个查找的坏处在于,字符串太长容易导致超过运行上限
使用StringHash函数获得字符的哈希值,是一种不错的思路
注:StringHash可以将字符转换为整数,可以取得玩家名的哈希值,然后加上分数,再转换进制获得记录码
回复

使用道具 举报

发表于 2013-12-19 16:59:06 | 显示全部楼层
其实个人觉得这种代码无所谓什么进制的...甚至数值是否明文保存都不是重点...直接在最后附加hash做检验就行的说...
某些游戏就使用这种方式进行存档加密,嗯,比如fruit ninja~
这是需要保存的信息:
code="level=5;item=i000, i001;str=9;agi=9;int=9"
然后计算一个hash值,hash_id=StringHash(code+GetPlayerName(...))
hash函数你可以用自带的StringHash,也可以换别的,比如elf hash之类的~
丧心病狂者还可以自行编写md5

玩家读取时需要同时提供code与hash_id,由code和玩家名字重新计算出的值,如果和玩家提供的一致,那么放行的说~
这样是可以防止玩家随意篡改数据的...因为每动一个字符,hash值就会产生巨大变化...

当然你无法防住某些人拆开.j脚本,按你的hash函数重新计算一个正确的hash值...
不过也无所谓,既然都拆地图了,要改其他什么也都是简简单单了喵~这类系统的初衷也只是防住手段最低级的作弊者而已啦~
回复

使用道具 举报

发表于 2013-12-20 15:28:06 | 显示全部楼层
字符串记录码现在的情况已经不是很推荐了,星际平台已经有一些线上保存数据功能,而魔兽平台,简单的可以用YDWE的存档系统或自行开发一个,相比记录码,可保存的数据更多(魔兽输入字符串是有长度上限的限制的),更方便也更自由。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-22 12:56 , Processed in 0.111785 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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