BF4(BattleLog)のエンブレムをBF1(WebCompanion)へ移植する方法
(今更この需要あるんですか…?)
動作は保証しません。試す場合は自己責任で。
動作確認した環境
Windows 10
Google Chrome 94.0.4606.71 (Official Build)
操作
BattleLogのエンブレム作製画面へ行く
コピーしたいエンブレムを選択
Consoleを開く
F12を押して、上段にあるConsoleを選ぶ
以下のやつをConsoleへコピペ、Enterで実行
code:copy_emblem
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。
先ほどコピーした内容を貼り付け。
code:emblem
emblem.emblem.load({
"objects": [
{
"opacity":
.
.
.
↑のような物が貼り付けられるはず。
不要な部分を削除する
code:emblem
# 最初の部分の
emblem.emblem.load({
"objects":
# 末尾の部分の
});
新しくテキストエディタを起動
いろいろ宗派があるのd(ry
まず最初に以下のものを記述
code:emblem
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になっている場所を、コピーした内容で置換
code:emblem
みたいになるはず
これを全選択 & コピー
Consoleを開く
Ctrl + V で貼り付け、Enterで実行
移植成功
あえて記事を作るようなことはしませんが、逆移植も可能かと思われます(未確認)
code:emblem_BF1toBF4
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で実行
参考記事
(特に2018-05-02のコメントしてくれた人に感謝)