FC2ブログ

    技術

    Logicool Gaming Softwareでスクリプトを書こう

    Logicool Gaming Software(以下LGS)さん実はLuaスクリプトを書けます。 

    その前に、LGSのマクロのお話を少し。

    LGSには一定の操作を簡単に自動化できるマクロ機能が実装されています。

    マクロを使うと、「コピー(Ctrl+C)」をワンクリックでできたり、するわけですね。

    ただ「コピー」するだけならショートカット押せばいいじゃないかと思われますので、パッと思いついた使いみちを書くと。
    例えば、「AとDを交互に連打したい」場合があったとすると、通常ならキーボードで「ADADADAD・・・」と打たなければならないわけですが、マクロを使うと「AD」を「1秒ごとに繰り返す」ということができるわけですね。
    (DbDで使っている人がいるかも知れない)
    この操作を、LGSのマクロ機能で書くと画像のようになります。

    s-CB_0006.jpg

    ちょっと説明
    ○キーストローク
    ・下矢印がキーを押し込む操作
    ・上矢印がキーを離す操作
    ・X秒の遅延はX秒何も操作しない時間

    ○繰り返しオプション
    ・ボタンを押している間、1秒ごとにキーストロークを繰り返す

    ●LGSマクロの長所・短所
    ○長所
    ・お手軽
    「記録を開始」ボタンを押したあとに、再現したいキー入力を押すだけでマクロが作れる

    ○短所
    ・可読性が悪い
    上矢印のキーがどこで押されていて、どこで離されているのか分かりづらい。
    ・編集性が悪い
    「AD」と入力していたけれど、「ACD」としたいと思ったときには、「AD」の操作の間を選択して「ここより前/後から記録」としてキー入力を足すわけですが、複雑なマクロをトライアル・アンド・エラーしようと思うと可読性の悪さと相まって、もはや新規にマクロを作り直すことになります。
    ・繰り返しに弱い
    「ABCDEF」「Q」「ABCDEF」「Z」と入力したい場合、素直に「ABCDEF」「Q」「ABCDEF」「Z」とマクロを組むしかない。
    何当たり前のことを言っているんだと思われるかもしれませんが、プログラミングをしたことのある人なら「ABCDEF」の入力は「関数にしてやればいい」とか「for」で回せばいいとか思うことでしょう。

    ●マクロとスクリプトの比較
    イマイチ長所と短所が伝わりづらいと思いますので、「ABCDEF」「Q」「ABCDEF」「Z」をマクロとスクリプトで組んだ場合の違いをお伝えします。

    ○マクロ
    左から右にキー入力のマクロが進んでいきます、記録した直後に見ても、もはや何をしているのかよくわからない状態になっています。
    (マクロ画像はまだ続きますが、ここまでにしておきます。)
    s-CB_0007.jpg s-CB_0008.jpg


    ○スクリプト
    キーの入力(押し込みと離す操作)を1行で書けるので、マクロと比べると非常にスッキリしているかと思います。
    s-CB_0011.jpg 

    PressAndReleaseKey()は「キーを押して離す」操作をしています。
    例えば、PressAndReleaseKey("a")ならAキーを押して、離すということですね。
    PressAndReleaseKey("a", "b")だと、Aキーを押して離したあとに、Bキーを押して離すといった具合になります。

    ○「ABCDEF」「Q」「ABCDEF」「Z」から「ABCDEF」「Q13」「ABC2DEF」「Z3」に変えたい
    マクロの場合は、「Qの後から記録」で「13」をいれて・・・とできないこともないですが、非常に分かりづらいです。

    一応編集したマクロをペタリ。
    s-CB_0013.jpg 

    「Qを離して」から「1を押す」までに遅延が入っていませんね・・・とか、「Q13」としたつもりが「ABCDEF13」になっていたということが容易に起こりうる可読性の悪さです。

    スクリプトをペタリ
    s-CB_0014.jpg 

    非常にわかりやすいですね。
    また、テキストなので、編集が非常に簡単です。
    マクロで、「ああでもないこうでもない」「間違えた・・・」「なんじゃこりゃー」となるところを、スクリプトなら数行でしかも読みやすく、編集しやすくかけるわけです。

    これはもうスクリプトを使うしかない!

    ということで、スクリプトを書きたい方は、先人が書いている解説を参考に学んでみましょー!
    (丸投げ)

    参考:

    自分用に作った関数たち
    昨日スクリプト機能に気がついて書いたのでまだまだ編集中

    -- sleepTime キー入力後待機時間(ミリ秒)
    -- messageInterval ログ出力間隔(ミリ秒)
    _sleepTime = 1000
    _messageInterval = 5000


    -- key 入力キー 文字またはコード
    -- modifierKey lctr, lshift, lalt 省略可
    -- sleepTime キー入力後待機時間(ミリ秒) 省略可
    -- messageInterval ログ出力間隔(ミリ秒) 省略可
    function PressKeyEx(key, modifierKey, sleepTime, messageInterval)
    modifierKey = modifierKey or nil
    sleepTime = sleepTime or _sleepTime
    messageInterval = messageInterval or _messageInterval

    if(modifierKey == "lctrl" or modifierKey == "lshift" or modifierKey == "lalt") then
    PressKey(modifierKey)
    Sleep(50)
    PressAndReleaseKey(key)
    Sleep(50)
    ReleaseKey(modifierKey)
    else
    PressAndReleaseKey(key)
    end
    if(sleepTime < 101) then
    Sleep(100)
    elseif(sleepTime > 999) then
    SleepEx(sleepTime, messageInterval)
    else
    Sleep(sleepTime)
    end
    end


    -- sleepTime スリープ時間(ミリ秒) 省略可
    -- messageInterval ログ出力間隔(ミリ秒) 省略可
    -- debug デバッグログ 省略可
    function SleepEx(sleepTime, messageInterval, debug)
    sleepTime = sleepTime or _sleepTime
    messageInterval = messageInterval or _messageInterval
    debug = debug or false

    loopInterval = 100

    -- 一定時間ごとにログ術力
    for millisecond = 0, sleepTime, loopInterval do
    Sleep(loopInterval)
    if(debug) then
    OutputLogMessage("%s, %s\n", millisecond, millisecond / messageInterval)
    end

    if((millisecond ~= 0) and (millisecond % messageInterval == 0)) then
    OutputLogMessage("Sleep : %s second\n", millisecond / 1000)
    end
    end
    end



    スポンサーサイト

    Minecraft MOD設定ファイルの更新方法

    Forge導入済みクライアントの各種MODの設定更新方法についてです。

    ① Minecraftクライアントから任意のバージョンのゲームファイルフォルダを開く


    画像の赤枠を参考にゲームファイルフォルダを開く。
    minecraft_mod_config1.png
    minecraft_mod_config2.png
    minecraft_mod_config3.png

    configフォルダを開く


    このフォルダにMODの設定ファイル(cfg)が保存されている。
    設定を変更したいMODの設定ファイルをメモ帳等で開き、編集、上書き保存する。
    なお、必要に応じて設定ファイルのバックアップを取っておくとよい。(sampleMod.cfg.bakなど)
    minecraft_mod_config4.png

    身内向けconfig更新方法


    Discordのピン止めされた設定ファイルをダウンロードし、configフォルダのファイルに上書き保存(置き換え)する。

    minecraft_mod_config5.png
    minecraft_mod_config6.png

    Minecraftマルチプレイサーバの建て方 Forge編

    同様の内容の記事は各所で公開されているが、先日解説する機会があったため記事にまとめておく。

    バニラサーバの建て方とForge導入サーバの建て方と2種類分けて書くので、自分の用途に合わせて読んでください。
    バニラサーバは前の記事で書いています。
    Minecraftマルチプレイサーバの建て方 バニラ編
    http://rinatl.blog.fc2.com/blog-entry-782.html

    サーバを立てる費用は無料ですが、若干のPC操作知識が必要です。

    環境はWindowsを想定しています。

    前準備


    Javaバージョンの確認


    お使いのPCにJavaが導入されているか確認する。
    [Windows key + R]で「ファイルを指名を指定して実行」のウィンドを表示し、名前に[cmd]を入力して[OK]を選択。
    黒い画面(コマンドプロンプト)に[java -version]と入力する。

    こちらの画面の場合は、下記URLからJavaをインストールする。(画像では--versionとなっていますが-versionの誤りです)
    minecraft_server_mae1.png
    Windows版Javaのダウンロード
    https://java.com/ja/download/


    こちらの画面の場合は、バニラまたはForgeサーバの建て方に進む。
    バージョンが若干違う程度であれば問題ない。気になるようであれば上記URLから最新版をインストールする。
    minecraft_server_mae2.png

    バニラ(MODなどを導入しない)サーバの建て方


    ⓪ サーバ建て成功時のファイルやフォルダの配置状況


    この画像の配置になることを目指す。
    minecraft_server_forge9.png

    ① サーバファイル群を置くフォルダを作成する


    フォルダの場所や名前は自由。

    ここでは、Cドライブ直下に[MinecraftServer]フォルダを作成したものとして解説を進める。
    フォルダパス [C:\MinecraftServer]

    ② 遊びたいバージョンのForgeインストーラをダウンロード


    下記URLから使用したいバージョンの[Windows Installer]をダウンロードし、①のフォルダに配置する。
    最新のマインクラフトのバージョン以外は左のメニューからバージョンを指定する必要がある。
    [Latest]ではなく、[Recommended]バージョンのダウンロードをお勧めする。

    ここでは、バージョン1.7.10の1.7.10 - 10.13.4.1558 Windows Installerをダウンロードしたものとして解説を進める。
    Minecraft Forge
    https://files.minecraftforge.net/

    この時点での[MinecraftServer]フォルダ内の状況
    minecraft_server_forge1.png

    ③ Forgeのインストーラーを実行する


    ②でダウンロードしたインストーラーを実行する
    [Install client]から[Install server]に変更し、[...]から①で作成したフォルダを指定する。
    赤文字でエラー文のようなものが出るが無視してよい。
    minecraft_server_forge2.png

    サーバファイルのダウンロードが始まるのでしばらく待ち、下の画面が出たら[OK]を押して閉じる。
    画像の赤枠のファイルとフォルダが作成されていない場合はやり直す。
    minecraft_server_forge3.png


    ④ サーバ起動用batファイルを作成する


    メモ帳を開き、以下を書き込み、[ファイルメニュー]から[名前を付けて保存]を選択し、
    保存場所を[MinecraftServer]に、[ファイルの種類]を[すべてのファイル]として、名前を[ServerStart.bat]として保存する。
    [forge-1.7.10-10.13.4.1558-1.7.10-universal.jar]の部分は各自の状況に合わせて変更すること。
    @echo off
    java -Xms512M -Xmx1024M -jar forge-1.7.10-10.13.4.1558-1.7.10-universal.jar nogui
    pause
    minecraft_server_va2.png

    ⑤ ServerStart.batを起動する


    ④で作成した[ServerStart.bat]をダブルクリックから実行し、「続行するにはキーを押してください」と表示されるまで待つ。
    「続行するにはキーを押してください」と表示されたら、いずれかのキーを入力し黒い画面を閉じる。
    minecraft_server_forge4.png

    この時点での[MinecraftServer]フォルダ内の状況
    minecraft_server_forge5.png

    ⑥ eula(end-user license agreements 利用規約)に同意する


    [MinecraftServer]フォルダ内に作成された、[eula.txt]をメモ帳で開き、
    [eula=false]を[eula=true]に書き換え、上書き保存する。
    minecraft_server_forge6.png

    ⑦ 再度ServerStart.batを起動する


    再び黒い画面に文字が表示されるので、しばらく待つ。

    この画面になれば導入成功、ならなければ手順⓪から見直す。
    minecraft_server_forge7.png

    完成時のファイル配置は画像の通り、正常に動作しない場合は手順⓪から見直す。
    minecraft_server_forge9.png

    Minecraftマルチプレイサーバの建て方 バニラ編

    同様の内容の記事は各所で公開されているが、先日解説する機会があったため記事にまとめておく。

    バニラサーバの建て方とForge導入サーバの建て方と2種類分けて書くので、自分の用途に合わせて読んでください。
    Forge導入変は次の記事で書いています。
    Minecraftマルチプレイサーバの建て方 Forge編
    http://rinatl.blog.fc2.com/blog-entry-783.html

    サーバを立てる費用は無料ですが、若干のPC操作知識が必要です。

    環境はWindowsを想定しています。

    前準備


    Javaバージョンの確認


    お使いのPCにJavaが導入されているか確認する。
    [Windows key + R]で「ファイルを指名を指定して実行」のウィンドを表示し、名前に[cmd]を入力して[OK]を選択。
    黒い画面(コマンドプロンプト)に[java -version]と入力する。

    こちらの画面の場合は、下記URLからJavaをインストールする。(画像では--versionとなっていますが-versionの誤りです)
    minecraft_server_mae1.png
    Windows版Javaのダウンロード
    https://java.com/ja/download/


    こちらの画面の場合は、バニラまたはForgeサーバの建て方に進む。
    バージョンが若干違う程度であれば問題ない。気になるようであれば上記URLから最新版をインストールする。
    minecraft_server_mae2.png

    バニラ(MODなどを導入しない)サーバの建て方


    ⓪ サーバ建て成功時のファイルやフォルダの配置状況


    この画像の配置になることを目指す。
    minecraft_server_va7.png

    ① サーバファイル群を置くフォルダを作成する


    フォルダの場所や名前は自由。

    ここでは、Cドライブ直下に[MinecraftServer]フォルダを作成したものとして解説を進める。
    フォルダパス [C:\MinecraftServer]

    ② 遊びたいバージョンのサーバファイル(jar)をダウンロード


    以下のサイトの左列Stable Releasesから使用したバージョンのServer Jarをダウンロードし、①で作成したフォルダに入れる。
    ダウンロードの際に「この種類のファイルはコンピュータに損害を与える可能性があります~」と表示されることがありますが、サーバを建てたい場合は保存してください。破棄する場合はサーバ建てをあきらめてください。

    ここでは、バージョン1.7.10のServer Jarをダウンロードしたものとして解説を進める。
    MCVersions.net
    https://mcversions.net/

    この時点での[MinecraftServer]フォルダ内の状況
    minecraft_server_va1.png

    ③ サーバ起動用batファイルを作成する


    メモ帳を開き、以下を書き込み、[ファイルメニュー]から[名前を付けて保存]を選択し、
    保存場所を[MinecraftServer]に、[ファイルの種類]を[すべてのファイル]として、名前を[ServerStart.bat]として保存する。
    @echo off
    java -Xms512M -Xmx1024M -jar server.jar nogui
    pause
    minecraft_server_va2.png

    ④ ServerStart.batを起動する


    ③で作成した[ServerStart.bat]をダブルクリックから実行し、「続行するにはキーを押してください」と表示されるまで待つ。
    「続行するにはキーを押してください」と表示されたら、いずれかのキーを入力し黒い画面を閉じる。
    minecraft_server_va3.png

    ⑤eula(end-user license agreements 利用規約)に同意する


    [MinecraftServer]フォルダ内に作成された、[eula.txt]をメモ帳で開き、
    [eula=false]を[eula=true]に書き換え、上書き保存する。
    minecraft_server_va4.png

    ⑥ 再度ServerStart.batを起動する


    再び黒い画面に文字が表示されるので、しばらく待つ。

    待っている間にファイアウォールの設定が表示された場合は、自分の環境に合わせて設定する。
    minecraft_server_va5.png

    黒い画面に黄色枠の表示が出ればサーバが正常に稼働している。
    赤枠はMinecraftのワールド生成の進み具合であり、緑枠でエラーが表示されているが、これは初回サーバ稼働時に作成されるファイルであるため問題はない(2回目起動時には起こらないエラー)。
    minecraft_server_va6.png

    完成時のファイル配置は画像の通り、正常に動作しない場合は手順⓪から見直す。
    minecraft_server_va7.png

    Minecraftクライアントから接続を試す


    Multiplayer -> Add server -> Server Addresに[localhost]と入力 -> Done
    追加したサーバに接続
    接続できれば成功、できなければ手順⓪から見直す。

    東京オリンピックのチケット価格をグラフにしてみた

    Twitterで投稿したが、グラフの作り方忘備録としてこちらでも投稿する。

    価格情報はこちらから
    東京五輪チケット価格決定 最高は開会式の30万円
    tps://www3.nhk.or.jp/news/html/20180720/k10011541651000.html

    「種目ごとのチケット価格は」の項目が見づらすぎたのでなんとかならないのかと思ったのがきっかけ。
    引用すると以下のような文章
    「マラソン」は新国立競技場で観戦するチケットが2500円から6000円
    「競歩」はチケット販売がありません。
    「バドミントン」は4000円から4万5000円となっています。
    「野球」は4000円から6万7500円
    「ソフトボール」は2500円から2万5500円

    「バスケットボール」は3000円から10万8000円
    3人制のバスケットボール「3×3」は3000円から1万8000円
    「ボクシング」は3500円から4万5000円

    カヌーの「スラローム」は3000円から1万円、「スプリント」は3000円から9500円

    自転車の「BMXフリースタイル」は4000円から1万円、「BMXレーシング」は3000円から1万2500円、「マウンテンバイク」は3500円から5000円、「ロード」はゴール地点の静岡県のサーキット施設富士スピードウェイで観戦するチケットが3500円から5500円、「トラック」は4000円から1万4500円

    ここが気になる
    ・変なところで改行
    ・競技名を「」でくくっているのかと思いきやそうでもない
    ・価格は全角半角まぜまぜ
    ・注釈の入れ方も微妙
    ・そもそも表にしろよ(HTMLテーブルが無理でもエクセルでまとめて画像にするくらいできただろう)
    ・「となっています。」の文章が変なところで入る。(どこから引用してコピペしたのか?)

    で、結局、価格帯どのへんなの?がわかりづらいので簡単に可視化した。

    1枚目は開会式から全種目合わせたグラフ、2,3枚目は全種目を半種目ずつで2つの画像に分断した。
    なぜ2つの画像に各種目を分けたのかと言えば、もともとTwitterで投稿するように作った画像なので、縦長すぎると、横軸が見づらいのではと思ったため。

    縦軸「競技名」、横軸「価格」、タイトルは自明であるので省略。
    (タイトルはTwitter用なのでシンプルにしたかった。)
    色付き棒の範囲がチケットの価格帯

    5rin1.png
    5rin2.png
    5rin3.png
    補足
    ・マラソンは国立競技場での観戦
    ・競歩はチケット販売無し
    ・自転車ロードは静岡県サーキット施設富士スピードウェイで観戦
    ・サーフィンは価格未定

    室内競技とか屋外競技とか、場所別で作ればよかったのではとも思うのだが、ソースを見てすぐに可視化してのウケ狙いだったのでそういった手間は掛けていない。
    (まったくウケなかった。)

    ------------------------------

    〇作り方
    方針:
    ・種目名と価格を手動入力するのは避ける
    ・Excelで視覚化

    方法:
    1. 価格情報のテキストをサイトからコピーし、ちょっと高機能なテキストエディタに張り付ける。
    (自分はサクラエディタを使用。)


    2. Excelで使えるように簡単にデータを整える
    ・"、"を"\r\n"で置き換え(\r\nは改行コード)
    ・"「"を""で置き換え
    ・"」は"を"\t"で置き換え(\tはタブ、 Excelに張り付けた際にセルを分けてくれる)
    ・"から"を"\t"で置き換え
    ・"円"を""で置き換え
    ・"となっています。"を""で置き換え
    だいたいこんなところ。


    3. 2を終えた後のテキスト
    上述した「引用すると以下のような文章」の範囲を整えた例
    (ブラウザで表示するため\tはスペース4つで置き換え済み)

    マラソン 新国立競技場で観戦するチケットが2500 6000
    競歩 チケット販売がありません。
    バドミントン 4000 4万5000
    野球 4000 6万7500
    ソフトボール 2500 2万5500

    バスケットボール 3000 10万8000
    3人制のバスケットボール3×3 3000 1万8000
    ボクシング 3500 4万5000

    カヌーのスラローム 3000 1万
    スプリント 3000 9500

    自転車のBMXフリースタイル 4000 1万
    BMXレーシング 3000 1万2500
    マウンテンバイク 3500 5000
    ロード ゴール地点の静岡県のサーキット施設富士スピードウェイで観戦するチケットが3500 5500
    トラック 4000 1万4500

    4. Excelに張り付けデータを整える
    マラソンや自転車のロードが若干変だが、おおむね「種目名、最低価格、最高価格」で並んでいると思う。
    不要な文章の入っているセルを数値のみにし、〇万〇とないっているセルも手動で数値に整える。
    数百行以上あればマクロなど組むほうがいいだろうが、数十行なら手作業のほうが速い。
    5rin_tejun4.png


    5. 4を終えたExcel
    大体こういう表になっているはず。
    「-」は「0」にしておくほうが手間が減る。
    5rin_tejun5.png

    6. 棒グラフを作る
    最低価格から最高価格までだけを色付けしたい。
    とりあえず、ラベル込みで横棒グラフを作る。
    出来るグラフは種目名が省略されているので、グラフの高さ幅を大きくし、すべて表示させる。
    5rin_tejun6.png
    5rin_tejun6-2.png

    7. 6のグラフをさらに加工する
    6のグラフでは最低価格、最高価格が描かれているものの、最低から最大までの間のみの横棒にはなっていない。
    間だけ色を付けるには?
    最低最高価格の棒をかぶせて、最低価格の棒の色を白にすればいい!
    グラフの最高または最小の棒を選択し、選択対象の書式設定を開く。(小さくて選択しづらいのでレイアウトの系列から選択してもOK)
    5rin_tejun7.png


    8. 「系列の重なり」を「重ねる側の100%」にして閉じる
    5rin_tejun8.png


    8-2. 重なりの順番を変える
    8の手順の後、最低価格の棒が最高価格の後ろに隠れてしまっている場合は、重なり方を変える必要がある。
    隠れてしまっている場合のグラフ
    5rin_tejun9.png

    グラフを右クリックし、データの選択をクリック。
    5rin_tejun9-1.png

    矢印ボタンで、系列の順番を変える。
    5rin_tejun9-2.png

    ここまでの手順を行うとこうなっているはず。
    5rin_tejun10.png


    9. 最低価格のグラフの色を白にする
    色を変えるところは解説いらないでしょう。
    はい、完成。
    5rin_tejun10-2.png

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。