Sigmoid_poke's memo

極稀に思ったことを書くだけの場所

おわりのだいちの隠しコマンドについて

DiscordのBotがサ終する可能性があるらしいので去年作ったコマンドの取説を作ることにしました。別に隠れてるわけではないけど

DiscordのBotの音楽ファイルをGoogle Drive経由で搾取することができます。

ファイルの要求

(1つの)音楽ファイルを要求する

!reqbgm (音楽ファイルのファイル名)
で音楽ファイルを要求することができます。
コマンドをDMで送ったときのみgoogle driveのURLが得られます。URLは毎回同じですが…
コマンドの実行にはある程度時間がかかります。
f:id:poke_3_3_4:20220116143938p:plain
音楽ファイルのファイル名はトラック番号(先頭の数字)も拡張子(.mp3みたいなやつ)も含むので注意してください。



音楽ファイルをまとめて要求する

!reqbgmdir (フォルダ名)
でフォルダの直下にある音楽ファイルをまとめて要求できます。
あくまで音楽ファイルだけなので、フォルダの中に更にフォルダがある場合はそのフォルダは無視されます。
こちらもコマンドをDMで送ったときのみgoogle driveのURLが得られます。
当然ですが!reqbgmよりも時間がかかります。
f:id:poke_3_3_4:20220116144612p:plain



Google Driveを空にする

!driveclear
google driveを空にできます。
google driveの容量が15GBなので上限を超えないようにしてください。自分が回収し終えたら消すなどで対策してもらえると助かります。
同じタイミングでファイルを要求している人がいそうな場合は実行しないように気をつけてください。その場合はgoogle drive上のファイル/フォルダは手動でも削除できるのでそちらでお願いします。


要求のキャンセル

!uploadcancel
で中断できます。同じタイミングでファイルを要求している人がいた場合はそちらもキャンセルされてしまうので注意してください。
1ファイル処理するのに時間がかかる都合上、中断までに少し時間がかかることがあります。


要求したファイルの確認

!uploadqueue
で要求したファイルのうち、まだ処理されていないファイルの一覧を表示できます。





ファイルの探し方

!bgmlistについて

!bgmlist フォルダ名
でフォルダの中身が表示されます。フォルダの中にフォルダがあるならフォルダの一覧になります。
f:id:poke_3_3_4:20220116143504p:plain

フォルダの中にフォルダがなければ音楽ファイルの一覧になります。
f:id:poke_3_3_4:20220116143646p:plain

ただここで表示されるファイル名は拡張子などが抜けているので後述の!findbgmで探します。


!findbgmについて

!findbgm 単語
で単語を含むファイルを探すことができます。
f:id:poke_3_3_4:20220116145642p:plain

ここには1つ上のフォルダ名も含まれているので、ファイル名をコピペする場合は気をつけてください。



注意点

ファイル名/フォルダ名の指定について

Discord Botの仕様上、半角スペース及び全角スペースはそのまま使用することができません。
!reqbgmの例のように、スペースが含まれる場合はダブルクォーテーション("")で囲んでください。

実行中におわりのだいちの動作が不安定になることについて

ファイルのアップロード中にはBotは反応できないので、ファイルを1つアップロードし終える毎にそれまでに送られたコマンドの処理を行います。通話中などで!stや!piがよく使われる状況ではあまりファイルの要求をしないよう気を付けてもらえると助かります。逆にメンバーが寝ている間や平日昼はオススメ。
Botが動いてるPCと回線がクソ雑魚なので処理が予想以上に遅いですがご了承ください。




おわり

部内戦(10パートナーズ)ログ

今年最初の企画で10パートナーズルールを採用したのでメモ
f:id:Sigmoid_poke:20210108113053p:plain


うちのブロック

自分
f:id:Sigmoid_poke:20210108112745p:plain
莉音さん
f:id:Sigmoid_poke:20210108112743p:plain
しゅー
f:id:Sigmoid_poke:20210108112740p:plain
変なポケモンを使いそうな人どころか新規育成個体が限りなく少なそうな二人を引いたし勝てるやろ(適当)

採用理由

パートナーズ提出当日になるまで何も考えていなかったのでHOMEの上位を眺めながら適当に決めた。
とりあえずf:id:Sigmoid_poke:20210108113310p:plainが強いらしいのでf:id:Sigmoid_poke:20210108113433p:plainf:id:Sigmoid_poke:20210108113456p:plainf:id:Sigmoid_poke:20210108113507p:plainが強いらしいのでf:id:Sigmoid_poke:20210108114229p:plainを投入した。
残りは何でも良かったが、上位に2種類いるf:id:Sigmoid_poke:20210108114606p:plainを入れないとただの逆張りに見えるような気がしたので水f:id:Sigmoid_poke:20210108114606p:plainと、相手のf:id:Sigmoid_poke:20210108114637p:plainが倒せないと困るのでf:id:Sigmoid_poke:20210108114656p:plainf:id:Sigmoid_poke:20210108114709p:plainを採用。
ここで相手のf:id:Sigmoid_poke:20210108114721p:plainの倒し方が分からないことに気が付いたのでf:id:Sigmoid_poke:20210108114737p:plainを入れて、残りは何でもできそうなf:id:Sigmoid_poke:20210108114916p:plainf:id:Sigmoid_poke:20210108114931p:plain、適当にf:id:Sigmoid_poke:20210108114839p:plainを入れて完成になった。

事前考察の部

前日になるまで放置してた
考え始めてようやく気が付いたけど何でこいつはサンダーもエースバーンも選んでないんだ…?

対莉音さん

鉢巻f:id:Sigmoid_poke:20210108114931p:plain止まらなくね?ということで確定。莉音さんのことだしf:id:Sigmoid_poke:20210108113507p:plainが特殊になることもないだろうということで自由枠でHBf:id:Sigmoid_poke:20210108120030g:plain、サンダー対策かつ通りが悪く無さそうなf:id:Sigmoid_poke:20210108113433p:plainも確定。あとはf:id:Sigmoid_poke:20210108113433p:plainが出せない時の保険のf:id:Sigmoid_poke:20210108113456p:plainf:id:Sigmoid_poke:20210108114931p:plain程ではないが通りがいい水f:id:Sigmoid_poke:20210108114606p:plain、ここまでで若干f:id:Sigmoid_poke:20210108120610p:plainf:id:Sigmoid_poke:20210108120620p:plainが重い気がしたので最後1枠はf:id:Sigmoid_poke:20210108114737p:plainにした。

水ウーラオス
f:id:Sigmoid_poke:20210108121444p:plain:h180:w320
特性:不可視の拳
陽気AS@こだわりスカーフ
初めてウーラオスを育てた気がする
普通のスカーフウーラオス

フェローチェ
f:id:Sigmoid_poke:20210108121815p:plain:h180:w320
特性:ビーストブースト
意地AS@こだわり鉢巻
Sに補正をかけると最速スカーフウオノラゴンより速くなるけど火力が欲しかったので意地っ張り
にどげりは無振りだった場合にヒードランマンムーの襷を貫通して倒せるが、ヒードランに関してはかなり怪しいので出てきた時の自分に任せることにした

ギャラドス
f:id:Sigmoid_poke:20210108122419p:plain:h180:w320
特性:威嚇
腕白HB@ゴツゴツメット
エースバーンに投げるポケモン
構築単位でレヒレがちょっと重いのでウィップ採用

ウツロイド
f:id:Sigmoid_poke:20210108122627p:plain:h180:w320
特性:ビーストブースト
臆病H84C172S252@パワフルハーブ
素のダイフェアリーでちょうど無振りウオノラゴンが倒せる
謎の特殊受けに流された後にポリ2に苦しめられたく無かったのでふしょくガスを入れてみた
ダイウォール媒体にもなる
ビーストブーストでSが上がる個体なので散り際に撃ちやすい
この技まともに使うの難しすぎるだろ…少なくともシングルで使う技じゃない

バンギラス
f:id:Sigmoid_poke:20210108123212p:plain:h180:w320
特性:すなおこし
慎重HD@カゴの実
特殊受け要員
ポリ2とかのBを下げられると嬉しいので嚙み砕くを入れた

ナットレイ
f:id:Sigmoid_poke:20210108123349p:plain:h180:w320
特性:鉄のトゲ
呑気HB@残飯
普通のHBナットレイ
ヒレ対策枠なのでタネマシンガンを採用

~対戦結果~
ウツロイドがメテオビームで相手のカミツルギをワンパンして勝った
タイプ相性をご存じでない???

対しゅー

なんで君カバルドン持ってるの?ついでにブリザポスの倒し方分からんが?(半ギレ)
カバルドンのためにとおせんぼうねをはるf:id:Sigmoid_poke:20210108124805p:plainを自由枠にしようかとも思ったが中身がバレている上にf:id:Sigmoid_poke:20210108114637p:plainにしか勝てないのでやめた。
が、f:id:Sigmoid_poke:20210108114709p:plainの対策くらいはされそうだったのでこいつはあんまり出したくない→f:id:Sigmoid_poke:20210108114916p:plainf:id:Sigmoid_poke:20210108114637p:plainを起点にすればいいのでは?ということでねをはるf:id:Sigmoid_poke:20210108114916p:plainを使うことにした
次に、f:id:Sigmoid_poke:20210108114637p:plainが採用されていなかった場合に岩技の通りが良いので岩技を覚えて、負けん気f:id:Sigmoid_poke:20210108125318p:plainにそれなりに強いポケモンを探した結果、弱保f:id:Sigmoid_poke:20210108125506g:plainが自由枠になった
f:id:Sigmoid_poke:20210108125506g:plainを使うにあたってステロくらいは撒いておきたかったので襷f:id:Sigmoid_poke:20210108113433p:plain、ストッパーとしてスカーフf:id:Sigmoid_poke:20210108114931p:plainを基本選出として、f:id:Sigmoid_poke:20210108114721p:plain以外の物理に投げるf:id:Sigmoid_poke:20210108114229p:plainf:id:Sigmoid_poke:20210108113507p:plain以外に投げるf:id:Sigmoid_poke:20210108114737p:plainで完成となった

テッカグヤ
f:id:Sigmoid_poke:20210108125944p:plain:h180:w320
特性:ビーストブースト
図太いHB@おおきなねっこ
f:id:Sigmoid_poke:20210108114637p:plainに対する殺意の塊に見えるが、なんと根を張るの隠し効果に地面技が当たるようになるというものがあるため、実はとても不利になる
このため当初の予定ではエアスラッシュではなく守るで使う予定だったが、f:id:Sigmoid_poke:20210108114606p:plainが挑発を持っている可能性がそれなりにあったためエアスラワンウェポンになった
戦闘狂の彼はこの仕様を知らない読みで使った(対戦後に聞いたら知らなかったらしい)が、構築単位でf:id:Sigmoid_poke:20210108114637p:plainに勝てないように見せていたため知られていたら厳しかった(と思う)

ギルガルド
f:id:Sigmoid_poke:20210108130656p:plain:h180:w320
特性:バトルスイッチ
意地っ張りH252 A52 B124 D4 S76@弱点保険
S+2でf:id:Sigmoid_poke:20210108113507p:plain抜き、諸刃でH振りf:id:Sigmoid_poke:20210108113310p:plain確1、ダイジェットで非ダイマf:id:Sigmoid_poke:20210108114606p:plain確1
f:id:Sigmoid_poke:20210108114709p:plain対面でとりあえず押すためのキングシールドも欲しかったが、エアスラが無いとf:id:Sigmoid_poke:20210108114606p:plainに手も足も出ないので入れざるを得なかった
構築の見た目がf:id:Sigmoid_poke:20210108114721p:plainに強くなるのも偉い

ウツロイド
f:id:Sigmoid_poke:20210108131602p:plain:h180:w320
特性:ビーストブースト
陽気HSa@襷
電磁波ステロ枠
電磁波が通らないf:id:Sigmoid_poke:20210108125318p:plainに対して、起点回避のために岩石封じ→イカサマの処理ルートを持たせた。自由枠で電磁波が通らないポケモンが来た時も岩石封じで上を取られないようにできる
途中まで何も考えずに臆病ミントで育ててたけど特殊技を持っていないことにギリギリで気が付いたので陽気ミントを使った

フェローチェ
f:id:Sigmoid_poke:20210108132036p:plain:h180:w320
特性:ビーストブースト
控え目CSa@こだわりスカーフ
相手のダイジェットポケモンを止める枠。ランドロスとかランドロスとかランドロスとか
吹雪にすることでf:id:Sigmoid_poke:20210108113310p:plainf:id:Sigmoid_poke:20210108114637p:plainにダイアイスがいいダメージになるので吹雪にした

ナットレイ
f:id:Sigmoid_poke:20210108132557p:plain:h180:w320
特性:鉄のトゲ
呑気HB@残飯
普通のHBナットレイ
f:id:Sigmoid_poke:20210108114709p:plainf:id:Sigmoid_poke:20210108114721p:plainが見えている以上入れざるを得なかった

ランドロス
f:id:Sigmoid_poke:20210108132726p:plain:h180:w320
特性:威嚇
腕白HB@カゴの実
物理受けその2。f:id:Sigmoid_poke:20210108113507p:plain等に投げてビルドを積んだ後に寝てダイマターンを枯らす。
剣舞f:id:Sigmoid_poke:20210108114229p:plainとビルドf:id:Sigmoid_poke:20210108113507p:plainは知らない

~対戦結果~
最後にフェローチェが吹雪を外して敗北
どう考えてもとんぼ返りじゃなくて冷凍ビームのほうがいい

予選敗退しました

おわりのだいち

最終更新:2020/12/29:BGM関連について追記

(~)は引数

コマンド一覧

「!」の後ろに以下のコマンドを打つことでbotが反応する

役職の管理

・add (役職)

(役職)がslaveなら「レイドの奴隷」、callなら「通話通知」の役職を付与する。

・rm (役職)

自分に付いた役職を除去する。(役職)はaddコマンドと同じ。

レイド関連

・check (ポケモン名)

(ポケモン名)レイドを開催済みかどうかを確認する。色違いの在庫確認はこちらから。
開催済みであった場合は、開催された個体の概要の一覧が返ってくる。

・store (ポケモン名)

開催した色違いレイドを追加する。追加する際にはポケモン名を「夢ピカチュウ」「通常最遅イーブイ」等のように、ある程度どのような個体であるか分かるようにすることが望ましい。

raid (コマンド) (ポケモン名)

主にデバッグ及びHOST用。
(コマンド)がadd、checkのときは上記のコマンドが実行される。また、HOSTに限り(コマンド)に「del」を指定した場合、対象となる開催済みレイドの情報を削除することができる。

ステータス関連

・st (ポケモン名) (Lv)

(Lv)を指定しなかった場合には指定したポケモン個体値が返ってくる。
(Lv)を指定した場合、指定したLvにおける実数値が返ってくる。この時返ってくる値は4行で上の行から
正確補正込み252振り(個体値31)
正確補正無し252振り(個体値31)
正確補正無し 0振り(個体値31)
正確補正下降 0振り(個体値0)
となっている。
(ポケモン名) (Lv)は順不同。

・calciv (ポケモン名) (Lv) (実数値、能力)

指定したポケモンの無振り時のステータスから個体値を計算する。
(実数値)に6つの値を入れた場合(例:!calciv メタモン 50 123 68 68 68 68 68)には、HABCDSの順にステータスを入力したものとする。
また、HABCDSを指定して検索することもできる。(例:!calciv メタモン 50 H A 123 68 C 68)。
なお、正確補正を考慮する場合には数値の後ろに「+」や「-」を付ける(例:!calciv メタモン 50 A 100+ B 47-)

・lang (日本語のポケモン用語) (言語)

(日本語のポケモン用語)を(言語)に翻訳する。(言語)を省略した場合には英語となる。
(日本語のポケモン用語)にはポケモン・道具・特性・性格・技が含まれる。ただし、平仮名や片仮名には注意する必要がある。
(言語)は、英語・中国語・ドイツ語・韓国語に対応しており、言語名及び言語名から語尾の「語」を抜いたもの、英字3文字、単漢字で指定できる。
中国語を指定した場合には繫体字と簡体字両方が返ってくるが、繫体字と簡体字を指定した場合には指定した言語のみが返る(正確には簡or繫の文字が含まれるか否かで判定している)
(日本語のポケモン用語) (言語)は順不同。

・korippo (ポケモン名)

指定したポケモンの捕獲率をコオリッポを使って表す(?)
Lvは60固定とし、コオリッポを1回捕獲する間におおよそ何匹捕獲できるかを表している。

SQL

sql (SQL文)

(SQL文)を実行する。テーブルは下記。(SQL)文はSELECTから始まるもの限定であり、実行結果が返ってくる。
f:id:poke_3_3_4:20201208203151p:plain

・addsql (コマンド名) (SQL文)又はaddsql (コマンド名) (addsqlで作成したコマンド)

SQL文をコマンドとして登録する。SQL文中に現れる引数は「?」と置く。
ここで作成したコマンドはコマンド名の頭に「?」を付けることで実行できる。
また、ここで作成したコマンド同士で新しいコマンドを作るとコマンド同士の共通項を返すコマンドが作成できる。(例:!addsql newcmd ?cmd1 ?cmd 2)
ただし、コマンドを結合したコマンドを更に結合することはできない。

・editsql (SQLコマンド名) (改行) (説明文)

addsqlで作成したコマンドに説明文を付加する。

・delsql (SQLコマンド名)

addsqlで作成したコマンドを削除する。

・showsql (SQLコマンド名) (SQLコマンド名) …

(SQLコマンド名)を指定しなければ登録されているSQLコマンド一覧が返ってくる。
(SQLコマンド名)を指定した場合(複数選択可)、指定したコマンドの説明文が返ってくる。

ポケモンHOME関連

・rate (ルール) (順位)

(ルール)が1ならシングル、2ならダブル(省略はシングル)。
(順位)は1~1000
(順位)に対応するレートが返ってくる。

・rank (ルール) (レート)

(レート)に対応する順位が返ってくる。ただし、1000位圏外の場合は常に1001となる。

・pokerank (ルール) (順位)

HOMEの使用率ランキングで(上限)位~(下限)位までのポケモンを表示する。

・pokeinfo (ルール) (ポケモン名)

HOMEでのポケモンの情報(持ち物、性格etc)が返ってくる。
(ポケモン名)はフォルムを除いた形で入力し、全てフォルムのデータが返ってくる。

・イベント関連

・plan (イベント名) (詳細1) (詳細2) …
イベントの企画を発言する。
この発言に対してリアクション(絵文字を張り付けること)をすることで参加者と見なす。

・cancel (イベント名)
イベントの企画を取り下げる。誤送信防止のため確認メッセージが送られるので、続けて「y」を送信することでキャンセルが確定する。

・start (イベント名)
イベントの参加者募集を締め切る。キャンセルと同様に確認メッセージが送られ、締め切りが確定すると参加者の一覧が送信される。

・BGM管理

・bgm (ファイル名orフォルダ名)
発言者が居るボイスチャンネルで音楽ファイルを再生する。
ファイル名(拡張子無し)を指定した場合はそのファイルを再生する。
フォルダ名を指定した場合はそのフォルダ下にある全ての音楽ファイルをランダム再生する。これには指定したフォルダの下にあるフォルダに含まれる音楽ファイルも含まれる。
既に再生中であった場合は、再生予定の音楽ファイル(以下再生キュー)の再生が全て終わった後に再生される。
再生キューの上限はとりあえず100件までとする。

・remove
botをボイスチャンネルから離脱させる。このコマンドを実行後、次にbotがボイスチャンネルに参加する際には再生キューがリセットされる。

・stop
再生中の曲を停止する。再生キューに予約してあるファイルがあれば直後に再生される。

・pause
音楽ファイルの再生を一時停止する。

・resume
一時停止した音楽ファイルを続きから再生する。

・queue
再生キューの中身を表示する。

・clear
再生キューを空にする。

・bgmlist (フォルダ名)
(フォルダ名)の中身を表示する。
(フォルダ名)の下にフォルダがある場合はそれらのフォルダを表示する。
(フォルダ名)の下にフォルダが無ければ、そこにある音楽ファイルの一覧を返す。

・addbgm (フォルダ名) (フォルダ名) ... (ファイル名) (音楽ファイル)
botに音楽ファイルを登録する。コマンド送信時に音楽ファイルを添付すること。
例えば、dir1/dir2/dir3/の位置にmusic.mp3を登録する場合、
「!addbgm dir1 dir2 dir3 music」に音楽ファイルを添付する。

その他

・shuffle (引数1) (引数2) …
引数をシャッフルする。当botはFisher-Yates shuffleアルゴリズムを採用しています。

・=(計算式)
簡単な計算をさせることができる。現在対応している演算子は「+,-,*,/,^,()」のみ。
1**2のように演算子が連続すると1*0*2のように0を補完して解釈する。

・?(コマンド) (引数)
SQL関連で触れたコマンドを実行できる。

・help (コマンド)
(コマンド)を指定しなければ登録済みのコマンド一覧が返ってくる。
指定した場合には、指定したコマンドの説明が返ってくる

・bkp
HOST専用。botが扱っているファイルのバックアップを取る。

コマンド以外の機能

通話通知

通話が始まると「通話通知」の役職に対して通知を送る

制作協力・感謝
うどんの粉さん
にほんばれメンバー一同
にほんばれのdiscordサーバにいる方々

mci_player

2020/08/07 ver0.0.0


WMPのランダム再生が面倒だったので適当に作ってみた。

wmpとの差別化点

wmp:CDから音楽を取り込める,アーティストなどで検索できる,PC内の曲をある程度自動的に取得してくれる
これ:重複無しランダム再生が簡単,前回の再生記録が使える,曲に対応した歌詞を表示させられる

使い方

本体(playlist.exe)
初期状態
f:id:poke_3_3_4:20200807223827p:plain
選択   :選択したプレイリストに登録されてる曲の一覧を表示する。
新規作成 :新しいプレイリストを作成する。
再生   :選択したプレイリストをランダム再生する。
停止   :曲の停止(途中から再生する機能は未実装)
歌詞の編集:現在選択している曲の歌詞を編集する。
歌詞の表示:曲が始まるタイミングで登録してある歌詞を表示する。

曲の追加方法

f:id:poke_3_3_4:20200807224324p:plain
プレイリストを選んでから「選択」ボタンをクリックし、右側に現れたリストに追加する音楽ファイルをD&Dする(何故か追加されないことがあるので上半分に落とすように意識してください)。

歌詞データの追加(auto_kashi)
歌詞を登録したいプレイリストを選んで「歌詞の取得」ボタンを押すと、予め登録されているサイトから歌詞を取得します。検索対象となるサイトは気が向いたら増えるかもしれません。auto_kashi_v〇.exeの〇に入っている数字が現在対応してあるサイトの数です。
※拡張子がmp3でないファイルやmp3ファイルであってもid3v2(ver2.30)以外は現状正しく行われない場合があります。
※BGM等と区別するために以下の要件を満たしていないMP3ファイルは歌詞の取得が行われません
・プロパティ→詳細→タイトルに正しいタイトルが書かれていない
・プロパティ→詳細→参加アーティストに歌手名が書かれていない

playlist.exeを使いながら歌詞の取得を行っても、追加された歌詞は自動で更新されるためplaylistの再起動を行う必要はありません。

各種設定

一度playlist.exeを起動するとconfig.txtが作成されるので、必要に応じて編集してください。
・random_per:シャッフルの度合い(%)です。プレイリストに登録されている曲のうち、全体の何%が再生されるまでは現在流れている曲が選ばれないかを示します。例:100→リストを1巡するまで同じ曲は再生されない、0→2連続で同じ曲が流れる可能性がある。
movie_x, movie_y:mp4やwma等の動画ファイルを再生する際の表示サイズを指定します。
movie_posx, movie_posy:動画が表示される場所の初期座標を指定します。マイナスをつけることでデスクトップ画面の右側,下側からの距離になります。例:movie_posx=-300→画面右端から300の位置
can_move:動画を移動させることができるかを選択します。0なら移動不可、それ以外なら一度だけD&Dで動画を移動させることができます。
log_per:前回再生したときの何割を再生ログとして引き継ぐかを指定します。例としてこの値を100にすると、前回再生時の再生順が全て読み込まれるため、前回再生時の続きのように曲を再生することが可能です。

ja_voice

2020/08/06 ver0.0.0


・きっかけ 
 とあるサークル民「雀魂の〇〇〇〇のボイスがほc」

というわけで適当なキャラの各種ボイスを貰ってくるソフトです。
現段階だとキャラもボイスも限られているので、必要に応じてデータを追加してください。

使い方

DLしてvoice_DL.exeを起動し、ボイスが欲しいキャラを選んでGETボタンを押すだけです。
DLした音声はvoiceフォルダ内に保存されます。

データの追加方法

Data内部にあるData.txtを書き換えることでDLできるキャラを、actlist.txtを書き換えることでボイスの種類を変更することができます。

以上

ポケモンの大雑把な耐久調整(ダメ計)ツール

2020/07/05 ver0.0.0

 

タイトルの通りです。物理特殊の耐久ラインを決めてよさげな努力値を探るツール。H252振りが常に正しいとは限らないので昔作ったものを引っ張り出してきました。精度に関してはかなり怪しいので使う際は自己責任でお願いします。

剣盾の新ポケ未実装

 

使い方

1つしか.exeファイルがないのでそれを開くだけ。

f:id:poke_3_3_4:20200705203721p:plain

こんな画面になると思うので、左から順に

物理技を使用するポケモン、特殊技を使用するポケモン、耐久ラインを調整するポケモン

の順にこのリストの中から選択してください。検索ボタンは3つありますがどれを押しても3つのリスト全てにおいて検索が反映されます。

選択できたらOKを押してください。

↓こんな感じの画面になります

f:id:poke_3_3_4:20200705204554p:plain

ここに必要な数値を書き込んでください。特性や持ち物の後ろに()と書いてあるのは補正がかかる場所です。例えば力持ちなら(攻撃)のほうに2を入れてください。

特化ガブリアス地震と特化ウルガモスの大文字を耐えるギルガルドの場合はこんな感じになります。

f:id:poke_3_3_4:20200705204934p:plain

防御側の特性等については記入する場所を設けていないので、最終ダメージ補正にでも記入しておいてください(被弾側特性がハードロックなら0.75など)。

記入が終わったら調整ボタンを押してください。

結果が出力されます。

f:id:poke_3_3_4:20200705205203p:plain

正確なダメージ計算式を使っている訳ではないので、多少のズレが生じていることがあります。ここにあるように、細かい数値は手元のダメ計サイトやダメ計アプリで行うようにしてください。

discordの役職追加botの作り方メモ(node.js使用)

とりあえずサンプルの動作確認ができたのでメモとして
何のためにHOSTになっているのか分からないし

前提

Windowsしか知りません。
自分が管理者権限を持つDiscordサーバーでやること。

環境

・discordのアカウントを用意する.
・node.jsとdiscord.jsを適当にDL&インストールするだけ。(コマンドプロンプトでnode -vと打ってみてバージョンが出力されれば正しくインストールされています)
・PC版discordが手元にあると動作確認がしやすくて良き。

botの作成

Discord Developer Portalにアクセスして、右上あたりにあるボタンから新しいアプリケーションを作る。
・アプリケーションが作成できたら,それをクリックしてクライアントIDとクライアントシークレットを控える(誰にも見せないこと)。
・アイコンや名前は適宜設定する。
・左のタブからBotを選択し,botを追加しTokenをメモする(これも誰にも見せてはいけない)。
・下のほうにBotの権限を設定する場所があるので,必要な権限にチェックを入れて下に生成された数字をメモ(今回作ったのは考えるのが面倒だから管理者権限(=8)が付与してある)。

botをサーバーに入れる

以下のurlを、「クライアントID」と「権限」を上で求めたクライアントIDと権限にチェックを入れて得た数字に置き換えて踏む
https://discordapp.com/api/oauth2/authorize?client_id=「クライアントID」&permissions=「権限」&scope=bot
ジャンプ後にどのサーバーにbotを導入するかを聞かれるので選択し、権限を確認する。
f:id:poke_3_3_4:20200623151413p:plain
サーバーにbotがやってくるので、discordを開いて確認する。

botが動きやすくなるようにする

よく分からないdiscordの仕様として、ロールの付与等は操作を行う側が操作を行われる側よりも強い権限を持つ必要があるとか何とからしい(有識者の方がいれば教えて下さい)ので、botの地位を上げる。
何かしらの権限を持ったbotにはサーバーに入った段階で専用のロールが付与されているので、discordのサーバー設定からロールを開いて、botの役職を適切な位置まで上昇させる。f:id:poke_3_3_4:20200623152040p:plain

ようやくプログラミング

詳しいことはnode.jsとかでググってもらったほうが早いと思います。そもそも最初からググったほうが(ry
今回サンプルとして書いてみたのがこんな感じ。java scriptの要領なのかな。
トークン」は上でメモしたTokenの値に置き換えて下さい。

const Discord = require('discord.js');
const client = new Discord.Client();

client.on('ready', () => {
   console.log('ログインしました。');
});

client.on('message', message => {
   if (message.content.startsWith('!add slave')) {
        //役職名から役職IDの取得(役職IDをそのまま入力する場合は不要)
	const role = message.guild.roles.cache.find(role => role.name === 'レイドの奴隷');
        //役職の付与(ここでエラーが出る場合は、botの役職の位置が想定よりも下にある可能性があります)
	message.guild.member(message.author.id).roles.add(role);
        //成功した場合にメッセージ送信テストも兼ねて送るメッセージ。
	message.channel.send(message.author.username);
	message.channel.send('Added');

   }
});

client.login('「トークン」');

これを任意の場所に好きな名前で保存する。拡張子は.js。
コマンドを増やすならswitch文とかに変えるべき。
今回は導入したサーバーにレイドの奴隷という役職がある前提で行っていますが、もう少ししっかりとしたものを作るのであれば、対象の役職の有無を確認→無ければ生成とかにしたほうがいいと思います。

実行

コマンドプロンプトを開いて
・「node 」と打つ(スペースを忘れないこと)。
コマンドプロンプトに上で書いたプログラムのファイルをドラッグアンドドロップしてEnterを押す。
コマンドプロンプトに「ログインしました。」と出力されれば起動に成功しています。
・discordを開いて対象のbotがいるサーバーで「!add slave」と打ってみてレイドの奴隷の役職が自分に付与されれば成功です。何も起こらなかった場合はコマンドプロンプトにエラーメッセージが出ていると思うので確認してみてください。
f:id:poke_3_3_4:20200623154028p:plainf:id:poke_3_3_4:20200623153936p:plain