FC2ブログ

    BLT

    PAYDAY2 Luaいろいろ

    既存のMODの改変など個々に記事にするほどでもない雑多なものをまとめてここに書きます。

    一番下に開発環境や開発までの流れを書いていますので、いじりたい人は参考にしてね。

    ※全て自己責任で行ってください。変更前にバックアップを取ることをお勧めします。


    既存のMODの改変


    JackHUDのアイコン(hudlists)の大きさを変える


    20160320165115_1.jpg
    20160417051257_1.jpg

    ファイル名:HUDManagerPD2_ext.lua
    パス:\SteamLibrary\SteamApps\common\PAYDAY 2\mods\JackHUD\Lua\HUDManagerPD2_ext.lua
    変更箇所:257行目辺りの数字を適当に書き換える。(整数以外も設定可能)
    right_list_scale = 1, --Size scale of right list
    left_list_scale = 1, --Size scale of left list
    buff_list_scale = 1, --Size scale of buff list

    JackHUDのインタラクトホールド機能発動までの時間を設定する


    インタラクトは対象ごとにいくつかに分かれている。ここではBagやAssetsのインタラクトホールド機能を対象とする。

    ファイル名:PlayerStandard_ext.lua
    パス:\SteamLibrary\SteamApps\common\PAYDAY 2\mods\JackHUD\Lua\PlayerStandard_ext.lua
    変更箇所:
    ホールド機能発動までの時間: 18行目辺りの数字を適当に書き換える、もしくは新たに変数を定義する。(整数以外も設定可能)
    local TIMEOUT = 0.5

    ホールド機能発動までの時間を処理するコード:
    変更前:
    function PlayerStandard:_check_action_interact(t, input, ...)
    if not (self:_check_interact_toggle(t, input) and JackHUD:GetOption("push_to_interact")) then
    return _check_action_interact_original(self, t, input, ...)
    end
    end


    変更後
    function PlayerStandard:_check_action_interact(t, input, ...) 
    local is_locked = self._interact_expire_t and (t - (self._interact_expire_t - self._interact_params.timer) >= TIMEOUT)
    if not (self:_check_interact_toggle(t, input) and JackHUD:GetOption("push_to_interact") and is_locked ) then
    return _check_action_interact_original(self, t, input, ...)
    end
    end


    参考:PayDay 2:Custom PlayerMaskOff state and more - UnKnoWnCheaTs Game Hacking Wiki
    https://www.unknowncheats.me/wiki/PayDay_2:Custom_PlayerMaskOff_state_and_more

    参考:lastbullet - Press-2-Hold Standalone 2.1
    http://forums.lastbullet.net/mydownloads.php?action=view_down&did=13489


    開発環境


    Lua実行環境


    The Programming Language Lua http://www.lua.org/home.html
    Lua Builds http://joedf.users.sourceforge.net/luabuilds/
    ただし、PAYDAY2のMODの動作確認のためにはPAYDAY2に読み込ませるしかない。

    エディタ


    Visual Studio Code https://www.visualstudio.com/ja-jp/products/code-vs.aspx

    ファイル内文字列検索など


    Gow http://www.forest.impress.co.jp/docs/review/20111206_496043.html
    grepコマンドが便利
    例えば、hudlistを管理しているコードがどのファイルにあるのか、interactに関係しているコードがどこにあるのかなどを知りたい時には
    grep.jpg

    ファイル内文字列比較


    WinMerge http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html


    Luaリファレンス


    自作MODや既存のMODをいじる際に参考にしたサイトを列挙しておきます。
    Lua リファレンス 入門 などで検索するといくらでも出てきます。

    Lua入門講座


    http://starcode.web.fc2.com/

    Lua 5.2 リファレンスマニュアル


    http://milkpot.sakura.ne.jp/lua/lua52_manual_ja.html


    MODコード、MOD配布サイト


    lastbullet BLTカテゴリ


    http://forums.lastbullet.net/mydownloads.php?action=browse_cat&cid=4

    PAYDAY2 BLT


    http://paydaymods.com/

    UnKnoWnCheaTs Game Hacking Wiki PAYDAY2カテゴリ


    https://www.unknowncheats.me/wiki/PAYDAY_2


    ソースコードや内部ID


    Decompiled source code of PAYDAY 2's Lua scripts


    https://bitbucket.org/YaPh1l/payday-2-lua

    Payday 2 BLT Documentation


    payday-2-blt-docs.readthedocs.org/en/latest/

    lastbullet wiki


    http://wiki.lastbullet.net/Main_Page
    スポンサーサイト



    PAYDAY2 HoxHudとPAYDAY2 BLT:CSEの併用

    追記
    - 16/02/22
    v1.1がリリースされ、再び併用出来るようになった

    2015年9月のPAYDAY 2: Crimefest 2015以降
    PAYDAY 2 BLT: Club Sandwich Edition v1.0
    BLT-ClubSandwich-hook_r4.zip
    が使えなくなりました。
    つまり、新しいバージョンがリリースされるまではBLTHoxHudは共存できません。




    いつの間にか併用できるようになってるのを教えていただいたので覚書

    関連

    PAYDAY2 HoxHudの設定について

    情報元

    https://www.reddit.com/r/paydaytheheistmods/comments/35nrtu/need_help_getting_bltcse_and_hoxhud_to_work/

    PAYDAY2のフォルダ(初期設定)

    C:SteamLibrarySteamAppscommonPAYDAY 2


    ①インストール済みのHoxHudとPD2 BLTをアンインストールする

    それぞれ追加したファイルを削除するだけでよい

    ②PAYDAY 2 BLT: Club Sandwich Editionをダウンロード

    https://github.com/Olipro/Payday-2-BLT_Club-Sandwich-Edition/releases

    ③PAYDAY 2 BLT: Club Sandwich Edition書庫を解凍し、以下をPAYDAY 2フォルダに入れる

    libフォルダ
    modsフォルダ
    IPHLPAPI.DLL

    HoxHudの最新版マニュアルインストールをダウンロード


    https://steamcommunity.com/groups/HoxHud

    ⑤HoxHud書庫を解凍し、以下をPAYDAY 2フォルダに入れる

    HoxHudフォルダ
    libフォルダ

    ⑥PAYDAY 2を起動

    コンソール画面とPAYDAY2が立ち上がる
    コンソールを眺めながら待つ

    ⑦PAYADAY2 BLT:CSE UPDATE AVAILABLEのダイアログが出たらUPDATE PAYDAY2 BLE:CSE NOWを押す

    コンソールを眺めながら待つ
    PD2hoxwblt.jpg

    ⑧アップデートが完了したらPAYDAY2を終了させる

    自分の環境ではプログレスが98%で止まってしまったが、完了したとは出ていたので終了させた。

    ⑨PAYDAY 2/HoxHud/hoxhud-initialised.mp3を削除する



    ⑩追加したいMODを探してきてPAYDAY 2/mods/に追加する



    おわり

    おまけ

    MODのskip end screen
    HoxHudのAUTO-CONTINUE MISSION END SCREENS
    を併用するとホストは経験値がもらえない
    お金はわからないとのこと

    すぐ試せることなので変だなと思ったら設定いじってみてね

    ↑経験値はもらえない、お金はもらえることを確認しました。
    経験値が必要な方は
    HoxHudのAUTO-CONTINUE MISSION END SCREENSはオフにしておきましょう。

    PAYDAY2 GageHUD StatsとLobby Player Info Statsが競合する問題の解消に関する覚書

    Lobby Player Infoの最新版で(Body bagの所持数などがみられる)Tab画面にプレイヤーのスキルとパークの装備状況が表示されるようになったが、GageHUD導入環境であれば、同じ画面に命中率や兵種ごとのキル数などが表示されるため、文字が被って非常に見づらくなってしまう。

    2016-01-11_00003.jpg

    そこで、どちらかの表示の位置をずらす、もしくは、消そうと思ったのだがオプションからはいじれないようなのでLuaファイルを直接編集することになった。

    結論から言うと、LPIの表示を下にずらすとおさまりが良い。
    ただし、小さなウィンド画面でプレイしている場合はGageHUDのALL TIME表記を消し、横に並べたほうが良いかもしれない。

    実験的にALL TIME表記を消しLPIを下や横に配置したとのSS
    2016-01-12_00004.jpg

    編集方法(編集は自己責任で)


    ※編集前にオリジナルのファイルのバックアップを取ろう

    LPIの表示を下にずらす場合


    PAYDAY 2\mods\Lobby Player Info\lua\hudstatsscreen.lua
    local y = math.round(gt:bottom() + 20)
    20を適当な数字に変更(上の参考画像では160)



    GageHUDのALL TIMEを消し、LPIの表示を横にずらす場合


    PAYDAY 2\mods\GageHud\Lua\HUDStatsScreen_ext.lua

    いくつかの関数をコメントアウトする。
    複数行のコメントアウトは
    --[[
    コメント
    ]]--

    一行のコメントアウトは
    -- コメント

    以下にコメントアウトする関数の例を示す。

    353行付近の以下の関数をコメントアウト

    --[[
    local tanks_killed_total_text = day_wrapper_panel:text({
    layer = 0,
    x = 0,
    y = 0,
    name = "tanks_killed_total_text",
    color = Color.red,
    font_size = 16,
    font = tweak_data.hud_stats.objectives_font,
    text = "",
    align = "right",
    vertical = "top",
    w = day_wrapper_panel:w()/2-5,
    h = 18
    })

    local tanks_killed_total_title = day_wrapper_panel:text({
    layer = 0,
    x = 0,
    y = 0,
    name = "tanks_killed_total_title",
    color = Color.red,
    font_size = 16,
    font = tweak_data.hud_stats.objectives_font,
    text = "ALL TIME:",
    align = "left",
    vertical = "top",
    w = day_wrapper_panel:w()/2-5,
    h = 18
    })
    ]]--


    上でコメントアウトした関数を呼び出している行をさらにコメントアウトする。

    385行付近

    --tanks_killed_total_text:set_top(tanks_killed_text:top())
    --tanks_killed_total_title:set_top(tanks_killed_text:top())
    --tanks_killed_total_text:set_left(tanks_killed_text:right()+10)
    --tanks_killed_total_title:set_left(tanks_killed_text:right()+10)


    更にファイル最下部の
    function HUDStatsScreen:update(day_wrapper_panel)
    関数でも呼び出しているのでこちらもコメントアウトする。

    --day_wrapper_panel:child("tanks_killed_total_text"):set_text(managers.statistics._global.killed.tank.count)


    以上の例の通りにすると、ブルドーザーのALL TIMEの表記が消える。
    同じことを、クローカーやシールドの項目で行えばよい。

    ALL TIMEの項目を消したのちは、LPIの
    local y = math.round(gt:bottom() + 20)

    x = 0,
    の値を調整してやればよい

    PAYDAY2 BLT系MOD紹介

    ※使用を推奨するものではなく、「こういうものがある」程度の紹介。
    ※他人に影響のあるMODも含まれます、使用の際は考えて使いましょう。
    ※使用は自己責任で。

    前提MOD

    名前 Payday2 BLT
    配布サイト https://github.com/JamesWilko/Payday-2-BLT/releases
    説明 BLT系MODの導入に必要なMOD
    導入解説 http://rinatl.blog.fc2.com/blog-entry-713.html
    名前 Payday2 BLT:CSE
    配布サイト https://github.com/Olipro/Payday-2-BLT_Club-Sandwich-Edition/releases
    説明 BLT:CSE系MODの導入に必要なMOD
    (現状HoxHudとBLT系MODが共存するためのMOD)
    導入解説 http://rinatl.blog.fc2.com/blog-entry-686.html
    更新履歴
    16/01/06 PocoHUDのBLT配布所を追加
    

    PAYDAY2 BLT導入方法

    検索すると携帯向け記事のほうが引っかかるようなのでPC向け記事への誘導
    りんが廃人を目指す・・・かも - PAYDAY2 BLT導入方法
    http://rinatl.blog.fc2.com/blog-entry-713.html

    関連記事
    PAYDAY2 HoxHudとPAYDAY2 BLT:CSEの併用
    http://rinatl.blog.fc2.com/blog-entry-686.html

    ##########

    ●どんなMOD?


    PAYDAY2のMODを管理するMOD。
    個々のMODファイルを直接いじることなく有効無効の切り替えが出来たり、アップデートの告知と補助をしてくれる。

    ●動作環境


    OS Windows7以降
    Visual Studio 2013 の Visual C++ 再頒布可能パッケージ x86 version導入済み
    http://www.microsoft.com/ja-JP/download/details.aspx?id=40784

    未導入の場合は上記リンクよりvcredist_x86.exeをダウンロードし、インストールすること。

    ●導入方法



    ①下記サイトよりPayday 2 BLT最新バージョンをダウンロードし解凍する。


    https://github.com/JamesWilko/Payday-2-BLT/releases

    Latest releaseのzipファイルをダウンロードすればよい(ファイル名例:Payday2BLT_r6_r5.zip)

    PAYDAY2のフォルダに①で解凍したファイル群を入れる。


    BLTint_1.jpg

    PAYDAY2のフォルダは初期設定では
    C:\SteamLibrary\SteamApps\common\PAYDAY 2


    場所がわからなければSteamクライアントから開くことができる。
    BLTint_2.jpg

    ③PAYDAY2を立ち上げ、BLTの導入が完了しているか確認する。




    おわり

    ●MODの導入方法


    ⓪MODを探してくる


    大体この辺りにある
    Last Bullet › MyDownloads › Payday 2 >BLT
    http://forums.lastbullet.net/mydownloads.php?action=browse_cat&cid=4


    Game Modifications for Payday 2 Mods
    http://paydaymods.com/mods/


    BLT対応ではないが、こちらにも少しある。
    nexusmods PAYDAY2
    http://www.nexusmods.com/payday2/mods/categories/?


    ①MODをダウンロード、解凍する。



    ②BLT導入時にPAYDAY2フォルダに入れたmodsフォルダと統合する。


    例としてblacklist modで解説する。
    blacklist modのフォルダ/ファイル構成は次の通り。
    []はフォルダ

    [blacklist_BLT2]
    ┗[vBLT2]
      ┗[mods]
        ┣blacklist.txt
        ┣readme.txt
        ┗[blacklist]
          ┣mod.txt
          ┗[lua]

    正しい配置
    [PAYDAY 2]
    ┗[mods]
      ┣[base]
      ┣[downloads]
      ┣[logs]
      ┣[saves]
      ┗[blacklist] ←導入したMOD

    誤った配置(modsフォルダの中にmodsフォルダを入れる)
    [PAYDAY 2]
    ┗[mods]
      ┣[base]
      ┣[downloads]
      ┣[logs]
      ┣[saves]
      ┗[mods]
        ┗[blacklist] ←導入したMOD

    参考画像
    BLTint_3.jpg