使用光遇徽章autojs脚本
This commit is contained in:
commit
52e423de61
36
README.md
Normal file
36
README.md
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# [auto.js]光遇徽章使用脚本
|
||||||
|
|
||||||
|
## 初衷
|
||||||
|
|
||||||
|
写本脚本的初衷是为了方便使用徽章,不用携带徽章也能随时使用徽章带来的魔法。
|
||||||
|
实际上光遇NTAG徽章设计,感应区为徽章背面的小圆点部分,而这部分感应区太小且徽章的针扣也在这一面,且手机nfc感应区位置问题导致徽章无法放平使用,也无法从背面扫描徽章,经常导致扫描无反应或者需要将徽章在手机nfc感应区移动很久才有反应。
|
||||||
|
|
||||||
|
## 当前功能
|
||||||
|
|
||||||
|
- 首先你需要有光遇实体徽章
|
||||||
|
|
||||||
|
- 目前只支持网易官方服
|
||||||
|
|
||||||
|
- 录入多个徽章信息
|
||||||
|
|
||||||
|
- 选择对应徽章使用
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
- 使用本脚本后如果使用实体徽章后需要重新录入徽章信息,原有的徽章信息会失效。
|
||||||
|
|
||||||
|
- 使用本脚本后也可能造成你的徽章失效,需要在NFC下多刷几次,手机有反应即可,无需打开app
|
||||||
|
|
||||||
|
# 相关问题
|
||||||
|
|
||||||
|
> 为什么实体徽章会有几次无法使用?
|
||||||
|
|
||||||
|
光遇的NTAG徽章中使用了NFC COUNTER(nfc计数器),每次徽章在nfc下使用徽章使用次次数加会加1(无论你是否打开光遇)。当你打开光遇app时,徽章使用次数会上传到光遇服务器,下一次使用时候会校验使用次数,小于上一次的使用次数时候会抛出异常(徽章验证错误:CANNOT_UPDATE_NFC_COUNTER)。
|
||||||
|
举个例子:如果你现在的徽章在光遇使用了10次,此时你将徽章信息录入本脚本,本脚本记录的使用次数也是10次。当你再次使用实体徽章时候此时徽章使用次数为11次。脚本中的使用次数依旧为10,打开光遇后就会报错徽章验证错误。当然如果你使用本脚本时次数为20次(使用次数可以手动修改NTAG中url的最后6位16进制数),而你实体徽章次数为15次,相差了5次,此时你需要使用实体徽章在nfc下刷5次后方可使用。
|
||||||
|
|
||||||
|
> 执行脚本打开光遇报错 徽章验证错误:CANNOT_UPDATE_NFC_COUNTER
|
||||||
|
|
||||||
|
重新录入最新的徽章信息
|
||||||
|
|
||||||
|
> 使用脚本后使用实体徽章报错 徽章验证错误:CANNOT_UPDATE_NFC_COUNTER
|
||||||
|
多在NFC下刷几次徽章(无需打开光遇app,手机有反应即可)更新徽章使用次数。
|
||||||
102
sky.js
Normal file
102
sky.js
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
"auto"
|
||||||
|
// console.show();
|
||||||
|
var storage = storages.create("com.netease.sky:badge");
|
||||||
|
// storage.clear();
|
||||||
|
var global_option = { "[O]录入徽章": "add", "[O]清空徽章": "clear", "[O]删除徽章": "delete" }
|
||||||
|
if (!storage.contains("menu")) {
|
||||||
|
storage.put("menu", global_option);
|
||||||
|
}
|
||||||
|
startSky();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打开app
|
||||||
|
*/
|
||||||
|
function startApp(url) {
|
||||||
|
var packageName = 'com.netease.sky';
|
||||||
|
var className = 'com.tgc.sky.netease.GameActivity_Netease';
|
||||||
|
app.startActivity({
|
||||||
|
action: "android.nfc.action.NDEF_DISCOVERED",
|
||||||
|
category: "android.intent.category.DEFAULT",
|
||||||
|
data: url,
|
||||||
|
type: "https",
|
||||||
|
packageName: packageName,
|
||||||
|
className: className
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function startSky() {
|
||||||
|
var menu_map = storage.get("menu");
|
||||||
|
var options = Object.keys(menu_map).map(function (data) {
|
||||||
|
return data;
|
||||||
|
})
|
||||||
|
var i = dialogs.select("请选择一个选项", options);
|
||||||
|
if (i >= 0) {
|
||||||
|
console.log(options[i]);
|
||||||
|
var value = menu_map[options[i]];
|
||||||
|
if (value.length > 0) {
|
||||||
|
switch (value) {
|
||||||
|
case "add":
|
||||||
|
toast("添加徽章");
|
||||||
|
var name = rawInput("输入徽章名称").trim();
|
||||||
|
var url = rawInput('输入徽章链接').trim();
|
||||||
|
var isBadge = /^https:\/\/sky.thatg.co\/\?s=[\S]+$/.test(url);
|
||||||
|
if (name.length > 0 && isBadge) {
|
||||||
|
// 录入信息
|
||||||
|
name = "[徽章]" + name;
|
||||||
|
menu_map[name] = url;
|
||||||
|
storage.put("menu", menu_map);
|
||||||
|
toast("徽章录入成功");
|
||||||
|
// 再次打开菜单
|
||||||
|
startSky();
|
||||||
|
} else {
|
||||||
|
toast("徽章链接格式不正确!");
|
||||||
|
// 再次打开菜单
|
||||||
|
startSky();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "clear":
|
||||||
|
var choice = dialogs.confirm("确定要清空所有徽章信息?");
|
||||||
|
if (choice) {
|
||||||
|
storage.put("menu", global_option);
|
||||||
|
}
|
||||||
|
startSky();
|
||||||
|
break;
|
||||||
|
case "delete":
|
||||||
|
var len = Object.keys(menu_map).length
|
||||||
|
if (len > 3) {
|
||||||
|
delete_options = [];
|
||||||
|
Object.keys(menu_map).map(function (key, index) {
|
||||||
|
console.log("key => " + key, "index => " + index);
|
||||||
|
if (!isOptions(key, menu_map)) {
|
||||||
|
delete_options.push(key);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var delete_index = dialogs.select("请选择需要删除的徽章", delete_options);
|
||||||
|
console.log(delete_options[delete_index]);
|
||||||
|
// 删除指定
|
||||||
|
delete menu_map[delete_options[delete_index]];
|
||||||
|
storage.put("menu", menu_map);
|
||||||
|
startSky();
|
||||||
|
} else {
|
||||||
|
toast("你没有录入任何徽章信息");
|
||||||
|
// 再次打开菜单
|
||||||
|
startSky();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// 启动app
|
||||||
|
console.log(value);
|
||||||
|
startApp(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
toast("您取消了选择");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isOptions(key, menu) {
|
||||||
|
if (menu[key] == "add" || menu[key] == "delete" || menu[key] == "clear") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user