====== r2i.io排行榜使用方法 ======
注意:由于r2i.io绑定了更多服务,原服务地址更改为 http://r2i.io/rank/ 请及时调整
===== 注册排行榜 =====
[[http://r2i.io/rank/regnew.php]]
点击左下角“New”按钮,注册新的排行榜(此功能将不定期开放)
注册后将看到 NNNN_CCCCCCCC : CCCCCCCC 格式的提示信息,NNNN为数字,CCCCCCCC为字母数字组合(大小写敏感),NNNN_CCCCCCCC为排行榜列表ID,CCCCCCCC为默认密码。密码的功能是用于数据传输中XOR的加密和解密,可以在注册页面修改此密码。(XOR数据传输加密解析详见文章:[[通过xor技术对数据传输进行加密]],建议务必阅读并理解本文内容)
在注册页面同样可以修改排行榜其他设置,如排行榜显示数量,正序或逆序排行等
===== 基础接口使用 =====
==== 需要使用的插件 ====
目前这套方法的一个重要缺陷是,需要的插件较多,如果能整合成一个插件固然是最好……然而……
* 官方:AJAX,WebStorage
* Rex:SimpleXOREncryption,JSON
* 其他:CBHash
==== 变量和本地存储的使用 ====
* ListID:即一开始获得的排行榜列表ID
* ListPass:一开始获得的排行榜密码(不建议用变量保存,而是在每次传输数据时临时写进去)
* UserID:用户ID,第一次调用ready接口时获得(格式为16位随机字母,大小写敏感),之后需要保存到本地(webStorage或localStorage)
* UserName:用户昵称,用于在排行榜中展示,如果没有昵称,则会在排行榜中显示用户ID
* GameTime:Ready接口返回的时间戳,上传分数时必须带此数据一起上传,否则会被判数据无效
==== ready接口 ====
* 游戏开始前调用此接口,将用户信息传递给服务器,服务器将返回一串已加密的数据
* 调用:http://r2i.io/rank/?a=rd&l={ListID}[&n={UserName}&u={UserID}] [..]内为可选项
* 返回结果需要用XOR解密(使用ListPass作为密码,XOR.Decrypt(AJAX.LastData, CBHash.MD5({ListPass})))
* 返回格式为:{UserID}|0|{GameTime}
==== Submit接口 ====
* 游戏完成时,通过此接口上传分数,服务器将返回用户ID和当前最高得分
* 调用:http://r2i.io/rank/?a=sub&l={ListID}&d={data}
* data的结构:URLEncode(XOR.Encrypt({UserID}|{Score}|{GameTime}, CBHash.MD5({ListPass})) 注意:所有XOR加密后的数据带入data前,需要用URLEncode进行转义,防止XOR产生的空格和换行干扰数据传输
* 返回结果格式为:{UserID}|{MaxScore}
==== List接口 ====
* 获取排行榜接口可以获取到当前游戏的排行榜
* 调用:http://r2i.io/rank/?a=list&l={ListID}[&u={UserID}] [..]为可选内容,如果传入用户ID,则会额外返回当前用户得分与排名
* 返回JSON:"listID":排行榜ID,"listCount":当前排行榜显示数据数,"myScore":我的得分,"myRank":我的排名,"data":数据表
* 数据表结构:"name":玩家昵称,"score":玩家得分.....
* 建议使用JSON插件解析并展示数据
==== 演示地址 ====
* [[http://t.0tw.cn/rt/]]
* {{ :ranktest.zip |示例程序}}