半肾
精华
|
战斗力 鹅
|
回帖 0
注册时间 2017-6-8
|
楼主 |
发表于 2024-4-29 21:45
|
显示全部楼层
关于salmdroidNW的数据上传stat.ink,salmdroidNW的数据没加密玩家名,不用ikawidget3的--blackout那步,但有其他的一些坑,要改不少代码:
- 报错 (!) Proceeding without weapon names. See https://github.com/frozenpandaman/s3s/issues/95 to fix this.
salmdroid似乎是把武器名等数据保存为日文,但s3s要求英文,日文也能上传但武器名会为空。点进作者给出的这个issue,解决方法是使用Mysterium-Mystery的fork版本,该fork版本会查译名字典并将不同语言的翻译转换为英文。该fork是2022年12月版本的,后续版本的一些信息可能不支持(比如团队打工竞赛),所以最好从中抄代码到新版的s3s里。(几处“WLDFile”相关的代码)
- 下载Mysterium-Mystery的fork版本,把Splat3_WPLangDict.json文件复制到新版的s3s.py的目录下
- 补足一些这个译名字典里缺少的,在最下面的大括号之前添加这些:(逗号不能丢,加在原本的最后一条后面)
- ,
- "\u30af\u30de\u30b5\u30f3\u5370\u306e\u30d6\u30e9\u30b9\u30bf\u30fc": "Grizzco Blaster",
- "\u30af\u30de\u30b5\u30f3\u5370\u306e\u30c1\u30e3\u30fc\u30b8\u30e3\u30fc": "Grizzco Charger",
- "\u30af\u30de\u30b5\u30f3\u5370\u306e\u30b9\u30c8\u30ea\u30f3\u30ac\u30fc": "Grizzco Stringer",
- "\u30af\u30de\u30b5\u30f3\u5370\u306e\u30b7\u30a7\u30eb\u30bf\u30fc": "Grizzco Brella",
- "\u30af\u30de\u30b5\u30f3\u5370\u306e\u30ef\u30a4\u30d1\u30fc": "Grizzco Splatana",
- "\u30af\u30de\u30b5\u30f3\u5370\u306e\u30b9\u30ed\u30c3\u30b7\u30e3\u30fc": "Grizzco Slosher",
- "\u30e9\u30f3\u30c0\u30e0": "random"
复制代码
- 抄代码到新版s3s.py,第18行左右插入一行:
- WLDFile = os.path.join(os.getcwd(), "Splat3_WPLangDict.json");
复制代码
- 继续抄代码到新版s3s.py:
原本s3s.py的代码:(直接用下面的覆盖到同样的地方)
- weapons = []
- gave_warning = False
- for weapon in player["weapons"]: # should always be returned in in english due to headbutt() using forcelang
- wep_string = weapon["name"].lower().replace(" ", "_").replace("-", "_").replace(".", "").replace("'", "")
复制代码
| 修改后:
- with open(WLDFile, encoding="utf-8") as File:
- WLData = json.load(File);
- weapons = []
- gave_warning = False
- for weapon in player["weapons"]: # should always be returned in in english due to headbutt() using forcelang
- EngWep = WLData.get(weapon["name"]);
- #print(f"{weapon['name']} : {EngWep}");
- if (EngWep == None):
- print(f"Is {weapon['name']} a translation of ""random""? Input (y/n) for yes / no");
- Inp = input().lower();
- if (Inp == "y"):
- WLData.update({weapon["name"]:"random"});
- with open(WLDFile, "w" ,encoding="utf-8") as File:
- json.dump(WLData, File, indent=4);
- elif (Inp == "n"):
- print(f"Input translation for {weapon['name']}:");
- WLData.update({weapon["name"]:input()});
- with open(WLDFile, "w" ,encoding="utf-8") as File:
- json.dump(WLData, File, indent=4);
- else:
- print("Invalid Input... Continuing execution (This will most likely result in an error)");
- wep_string = EngWep.lower().replace(" ", "_").replace("-", "_").replace(".", "").replace("'", "");
复制代码
|
- 报错 KeyError: 'weaponId'
游戏本体更新2.0版之后,打工记录做了一些改动。2022.11及之前的版本,打工大招的键名为“id”,数值为base64编码;2022.12及之后的版本,打工大招的键名为“weaponId”,数值为5位数字。而2022.12之后的版本,salmdroid中打工大招的键名仍为“id”,数值改为了5位数字。所以s3s按旧版的读取就会报错。需要修改s3s代码。
原本s3s.py的代码:(直接用下面的覆盖到同样的地方)
- try:
- special_id = player["specialWeapon"]["weaponId"] # post-v2.0.0 key
- except KeyError:
- special_id = utils.b64d(player["specialWeapon"]["id"])
复制代码
| 修改后:
- try:
- special_id = player["specialWeapon"]["weaponId"] # post-v2.0.0 key
- except KeyError:
- if(len(player["specialWeapon"]["id"]) <= 5): # for salmdroid data
- special_id = int(player["specialWeapon"]["id"])
- else:
- special_id = utils.b64d(player["specialWeapon"]["id"])
复制代码
|
如果一切顺利的话,上传后像这样:
称号那栏左边(上一局结束后的分数)是问号,似乎是s3s上传时上一次称号是从overview.json文件里读的,我们用的overview是空文件,所以会这样。嘛,反正这个也没什么用,知道结果可以反推开始时的分数
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|