熊教授 发表于 2022-4-13 00:08:35

永久成就系统:存档在不同地图共用,正式进入网游时代

效果:每次游戏后获得永久奖励,永久存档,如初始资源+5,生命值+2.
下局新开游戏,可以重复累计奖励,多次游戏可以积累到天文数字。
玩不同游戏,不同作者互动,可以互相积累成就奖励。形成优秀网游地图联盟。
帝国时代正式进入网游时代。

使用方式:开局输入自己姓名最后一个字,再输入每局结束后的密码,领取所有奖励,奖励积累后密码有所不同。
大部分玩家的同样成就的密码不一样。

实现思路:转化每个玩家的id为特殊数字,对玩家本局的累计奖励转化为数字,与id的特殊数字进行数学计算加密。
只要每个玩家id能转化为不一样的数字,就能达到一人一码的成就系统。


实现方式:
ai使用up-store-player-name获取玩家id
储备3个无用资源使用up-cc-add-resource做计数
使用up-chat-data-to-all转化缓冲区%s的玩家id加结尾标记(最好是独特的)
使用up-compare-text c: text-name-one对结尾标记进行缓冲区与结尾标记本身对比
获得结尾标记在玩家id中的序号。
穷举2-32枚标记数目,每次对1号无用资源倒减计数。
穷举完毕,1号无用资源等于玩家id长度。
获得初步玩家id特有数字(id长度)。

1号无用资源加密(乘以20?)后,获得成就密码。
开局输入(taunt-detected 1 gl-data)变量后验证密码成功。
发送ai信道,激活成就。
因此每个玩家获得成就的密码都不一样。



为避免地图被破解,只能简单说下可以更进一步的问题:
1、id长度大家都知道,这也太容易重叠密码了吧。
已有更强的特例加密方式,可以加密特殊组合的id,使用(defconst text-name-one "*")的关键词组合可以补充对特例的加密。
2、除了密码一致以外,加密方式也容易被破解。
已有更强的混沌加密方式,可以使用defconst text-name-one,对字母筛选。
甚至说可以做到各字符进行区别赋值,在完成初步筛选加密后获得的数字,结合id中的已有部分进行二次加密。
可以做到除了特殊长度的,id中所有内容均非英文均非符号的进行加密。
3、输入密码有字数限制
可以连续输入多组数字,进行资源转换乘以一百至1,等同于3万以内,甚至数十万种可选密码。
4、ai信道少,成就奖励多
使用成就奖励组合。信道1+生命。信道2+生命+攻击。信道3:+生命+攻击+资源。

目前只完成雏形,已证实确实可不同id不同密码(大部分id)获取奖励。
仍有大量工作需要进一步完善。
文末有测试版的ai脚本,但是此测试ai不通用于所有地图,仅用专用测试地图
仅供修改参考,各位可以在id加密上多多研究推进。
希望能完善成为许多地图通用的成就系统,让玩家有不停玩下去的乐趣
让更多作者增加交流,共同学习,共同进步,共同推广。
让许多老旧的历史战役,联机场景焕发新生。



标本 发表于 2022-4-25 21:05:02

嗯,以前就有玩家输入密码防止跳关的战役,不过那个密码是固定的,这个就是根据玩家ID生成密码,每个人的密码只能自己用。
页: [1]
查看完整版本: 永久成就系统:存档在不同地图共用,正式进入网游时代