2018年09月01日

「MHW スキルシミュ(泣)」用スキル再設定Bookmarklet作成

※BookmarkletやJavaScriptについてある程度理解している方向けの内容になります。

・概要
MHW スキルシミュ(泣)」では、マイセットに登録したスキルセットを検索オプションとして再度設定する事ができません。
「追加したいもの」として書かれてはいるので、実装されるまでの間繋ぎ用に作成しました。


・登録するBookmarklet本文
javascript:(function(d,l,e){var%20p,r,v,u,w,s=d.selection?d.selection.createRange().text:d.getSelection().toString();if(s==''){alert('Not%20selected');return}p=decodeURI('^%25E6%25AD%25A6%25E5%2599%25A8%25E3%2582%25B9%25E3%2583%25AD(%25E3%2581%25AA%25E3%2581%2597|LV[-123]+)');r=new%20RegExp(p);v=s.match(r);if(v!=null){s=s.replace(v[0],'');w=e(v[0])}else{w='%25E6%25AD%25A6%25E5%2599%25A8%25E3%2582%25B9%25E3%2583%25AD%25E3%2581%25AA%25E3%2581%2597'}s=e(s.replace(/^%20/,'').replace(/%20$/,'').replace(/%20/g,','));u='http://mhw.wiki-db.com/sim/#skills='+s+'&w='+w+'&l=200&d=0&rf=-100&rw=-100&rt=-100&ri=-100&rd=-100';l.href=u;l.reload(true)})(document,location,encodeURI);


・動作確認環境
Windows7上でのIE11・Chrome・Firefox。


・使用方法
「マイセット」タブにて下記の3通りのいずれかの様に範囲選択をした後、Bookmarkletを実行します。

1,武器スロを含めた全スキル
範囲選択−武器スロを含めた全スキル

2,全スキル
範囲選択−全スキル

3,一部スキルのみ
範囲選択−一部スキルのみ

2・3の場合、武器スロには「武器スロなし」が設定されます。
3の場合、範囲指定がスキル名に中途半端に掛からない様に気を付けて下さい。


・その他検索オプションの指定
Bookmarklet内の「'&l=200&d=0&rf=-100&rw=-100&rt=-100&ri=-100&rd=-100'」を変更する事で、
武器スロ・スキル以外の検索オプションを指定する事ができます。
●「&l=[半角数字]」…結果件数を指定できます。
●「&d=[半角数字]」…最低防御力を指定できます。
●「&rf=[-100 or -25〜25」…火耐性を指定でき、-100が指定なし、-25から25までの値を指定できます。
 以下、「&rw=」…水耐性・「&rt=」…雷耐性・「&ri=」…氷耐性・「&rd=」…龍耐性、となっている様です。

「&s=[1(男性) or 2(女性)]」を付け加える事で性別を指定する事ができますが、
この値だけは検索実行時にcookieに保存されるようなのでオプション指定からは外してあります。
また、検索結果に「&g=20]」というパラメータがあるのですが、
何のパラメータなのか分らないのでこれもオプション指定からは外してあります。


・元のJavaScriptコード
javascript:
(function(d,l,e){
var p,r,v,u,w,s=d.selection?d.selection.createRange().text:d.getSelection().toString();
if (s==''){
alert('Not selected');
return;
}
p=decodeURI('^%25E6%25AD%25A6%25E5%2599%25A8%25E3%2582%25B9%25E3%2583%25AD(%25E3%2581%25AA%25E3%2581%2597|LV[-123]+)');
r=new RegExp(p);
v=s.match(r);
if (v!=null){
s=s.replace(v[0],'');
w=e(v[0]);
}
else {
w='%25E6%25AD%25A6%25E5%2599%25A8%25E3%2582%25B9%25E3%2583%25AD%25E3%2581%25AA%25E3%2581%2597';
}
s=e(s.replace(/^ /,'').replace(/ $/,'').replace(/ /g,','));
u='http://mhw.wiki-db.com/sim/#skills='+s+'&w='+w+'&l=200&d=0&rf=-100&rw=-100&rt=-100&ri=-100&rd=-100';
l.href=u;
l.reload(true);
})(document,location,encodeURI);

上記コードを/packer/にて圧縮し、半角スペースを「%20」に置換した物がBookmarklet本文になります。
IE11だけ文字のURLエンコードやそれに伴う正規表現の動作が特殊な為、コードが冗長になってしまいました。
SafariとかOperaでBookmarkletが動かない場合は、このコードから修正してお使いください。
まぁ取り敢えず動いたので良しとします。誰かもっと綺麗なコードを書いて、参考にさせて頂きたいです。


以上、本当に久しぶりのモンハンネタでした。
posted by yakou at 18:49| Comment(0) | MHW | このブログの読者になる | 更新情報をチェックする