(今更この需要あるんですか…?)
動作は保証しません。試す場合は自己責任で。
動作確認した環境
- Windows 10
- Google Chrome 94.0.4606.71 (Official Build)
操作
- BattleLogのエンブレム作製画面へ行く
- コピーしたいエンブレムを選択
- Consoleを開く
- F12を押して、上段にあるConsoleを選ぶ
- 以下のやつをConsoleへコピペ、Enterで実行
copy('emblem.emblem.load('+JSON.stringify(emblem.emblem.data,null,2)+');');
- エンブレムの情報が記録されたものがクリップボードへコピーされる
$('body').html('<pre style="color:#000;">emblem.emblem.load('+JSON.stringify(emblem.emblem.data,null,2)+');</pre>');
だめならこっち。
上のやつでコピーされる内容が表示されるページに遷移する。
なんか背景と同化して見づらいけどCtrl + Aで全選択してCtrl + Cでコピーすればいいと思います。
恐らく、右クリックをしてもペーストできないのでCtrl + Vを使いましょう
テキストエディタを開く
- いろいろ宗派があるので深くは突っ込まない。私はVSCodeを使いました。メモ帳でもOK。
先ほどコピーした内容を貼り付け。
emblem.emblem.load({
"objects": [
{
"opacity":
.
.
.
- ↑のような物が貼り付けられるはず。
- 不要な部分を削除する
# 最初の部分の
emblem.emblem.load({
"objects":
# 末尾の部分の
});
新しくテキストエディタを起動
- いろいろ宗派があるのd(ry
まず最初に以下のものを記述
var request=new XMLHttpRequest;request.open("POST","https://companion-api.battlefield.com/jsonrpc/web/api?Emblems.newPrivateEmblem",!0),request.onreadystatechange=function(){if(request.readyState==XMLHttpRequest.DONE){var e=JSON.parse(request.responseText);e.result?window.location.href=window.location.href.replace("/new","/edit/")+e.result.slot:alert("Error")}},request.setRequestHeader("Content-Type","application/json;charset=UTF-8"),request.setRequestHeader("X-GatewaySession",localStorage.gatewaySessionId),data={jsonrpc:"2.0",method:"Emblems.newPrivateEmblem",params:{data:'XXXXXXX'},id:"00000000-0000-0000-0000-000000000000"},request.send(JSON.stringify(data));
- 先ほど作製した不要な部分を削除したやつを全選択 & コピー
- ↑のXXXXXXXになっている場所を、コピーした内容で置換
var request=new (中略) ,params:{data:'[{"opacity"...(中略)..."fill":"#FFFFFF"}]()'},id:"00000000-0000-0000-0000-000000000000"},request.send(JSON.stringify(data));
- みたいになるはず
- これを全選択 & コピー
- BF WebCompanionのエンブレム作成ページへいき、新規作成。
- Consoleを開く
- Ctrl + V で貼り付け、Enterで実行
- 移植成功
補足
- あえて記事を作るようなことはしませんが、逆移植も可能かと思われます(未確認)
var request=new XMLHttpRequest;request.open("POST","https://companion-api.battlefield.com/jsonrpc/web/api?Emblems.fetchPrivateEmblem",!0),request.onreadystatechange=function(){if(request.readyState==XMLHttpRequest.DONE){var e=JSON.parse(request.responseText);if(e.result){document.body.innerHTML='<h1>Copy that code:</h1><textarea style="width:100%;height:200px;padding:10px;">'+e.result+'</textarea>'}else{alert("Error")}}},request.setRequestHeader("Content-Type","application/json;charset=UTF-8"),request.setRequestHeader("X-GatewaySession",localStorage.gatewaySessionId);data={jsonrpc:"2.0",method:"Emblems.fetchPrivateEmblem",params:{personaId:window.location.href.split("career/")[1]().split("/")[0](),platform:"pc",slot:window.location.href.split("/").pop()},id:"00000000-0000-0000-0000-000000000000"},request.send(JSON.stringify(data));
↑をConsoleで実行し、エンブレムのデータを取得
emblem.emblem.load({"objects":XXXXXXX});XXXXXXXの部分を取得したデータで置換し、BattleLogのエンブレム作成画面に行き、Consoleで実行
参考記事
- EMBLEMS FOR BATTLEFIELD http://emblemsbf.com/add.html
- BF1Wiki_エンブレム
- (特に2018-05-02のコメントしてくれた人に感謝)