Pre:
rarity有一些web界面,可供玩家去冒险、升级。但是为了方便,能够自动去冒险、升级,还是自己简单写个脚本try一下。
顺便熟悉一下solidty
和web3js
Rarity:
简介:
Yearn Finance 创始人 Andre Cronje 发文称受到 Loot 启发推出游戏 Rarity,在该游戏中玩家可创建召唤师,Rarity 总量没有限制,除 Gas 外无需其他费用,召唤师每天可以通过冒险赚取 xp 经验值,一旦获得了一定量的 xp 就可以升级,获得特技和法术。
游戏共有 11 个角色,分别是野人、吟游诗人、牧师、德鲁伊、斗士、僧侣、圣骑士、游侠、巡逻兵、巫师、法师。
合约源码:
简单通读一下源码,发现solidity写的代码还是挺简单的,并没想象中的难,可能跟没有那么多操作要放在链上有关。
readContract:
https://ftmscan.com/address/0xce761d788df608bd21bdd59d6f4b54b2e27f25bb#readContract
挑几个比较重要的函数说明下
adventures_log
-
查询下一次冒险的时间
-
input:角色id
-
output:下一次冒险的时间戳
summoner
-
查询角色信息
-
input:角色id
-
output:角色的经验、下一次冒险的时间戳、职业类别、等级
xp_required
-
查询下一级所需经验
-
input:等级
-
output:下一级所需经验
writeContract:
https://ftmscan.com/address/0xce761d788df608bd21bdd59d6f4b54b2e27f25bb#writeContract
adventure
-
让角色去冒险,每天只能冒险一次,每次获得250xp
-
input:角色id
level_up
-
角色升级
-
input:角色id
脚本:
流程图:
自动冒险:
-
查出自己地址有哪些角色id
-
调用合约的查询函数
summoner
,知道下一次冒险时间 -
判断一下有没到冒险时间
-
满足条件的话,调用合约的
adventure
,让角色去冒险
自动升级:
-
调用合约函数
summoner
,知道当前经验值 -
调用合约函数
xp_required
,知道下次升级所需经验 -
满足条件的话,调用合约的
level_up
,让角色去升级
一些问题:
gas:
自己的脚本和https://rarityextended.com/
执行的gas费有些差异,后续有空要看一下怎么样省一下gas fee,虽然也很少钱。
交易失败:
脚本定时跑起来后,常有几笔失败的交易,可能跟nonce设置有关系。
总结:
脚本定时跑起来后,就不用去web页面上一个个点去冒险和升级,方便了不少,写之前觉得挺麻烦的,有点无从下手,写完才发现很简单。hhh
后续加点、玩副本这些,有空再研究补充下吧~