コードのライセンス
# Auto Highlight Ren'Py Module # 2021 Daniel Westfall <SoDaRa2595@gmail.com> # http://twitter.com/sodara9 # I'd appreciate being given credit if you do end up using it! :D Would really # make my day to know I helped some people out! # http://opensource.org/licenses/mit-license.php # Github: https://github.com/SoDaRa/Auto-Highlight # itch.io: https://wattson.itch.io/renpy-auto-highlight
説明
今話している人の立ち絵に自動でフォーカスをくれて、
話していない人の立ち絵は暗くしてくれる素晴らしい機能です。
ピンとこない方は上記のitch.ioページの親切なGIFを見ればすぐに分かります。
ソースコード内の解説の一部を日本語訳して引用
""" セットアップ(重要) """ - これを動作させるためには、このファイルをプロジェクトに置くだけでなく、さらに2つのことを行う必要があります。 - まず、これをサポートするために、character定義を設定する必要があります。 example: define eil = Character("Eileen", callback = name_callback, cb_name = "eileen") - cb_name は,関数 'name_callback' に 'name' パラメータを提供します. - Renpy が say_with_arguments をサポートしていることを忘れないでください。 - そのため、以下のようにすれば、特定の行に対して引数を指定することができます: eil "I think someone else should be focused" (cb_name = "pileen") - 最後に、特別なナレーターが全てのスプライトを非フォーカス化したりすることを望むなら、これをコピーすればいい。 define narrator = Character(callback = name_callback, cb_name = None)
- 次に、すべての画像にsprite_highlightトランスフォームを適用する必要があります。layeredimagesを使っている人にとっては、これはとても簡単なことです。一例として layeredimages eileen: at sprite_highlight('eileen') ... - ただし、個別のスプライトを使う場合は、これがすべてのスプライトに適用されていることを確認する必要があります。 image eileen happy = At('eileen_happy', sprite_highlight('eileen')) image eileen sad = At('eileen_sad', sprite_highlight('eileen')) あるいは、ATLの例がお望みなら image eileen happy: 'eileen_happy' function SpriteFocus('eileen')
""" 一般的な注釈 """
- このファイルは、これを使用する画像を定義するスクリプトの前にコンパイルする必要があります。
そのため、このファイルの名前は00auto-highlight.rpyとし、その手助けをしています。
- 同じスプライトハイライト名を共有したいすべてのイメージが、同じイメージタグを使用していることを確認してください。
""" 変数 """
- sprite_focus - (Dictionary) 誰をアニメーションさせるかを知らせるために使用され、時にはタイミングデータを保持することがある。SpriteFocus __call__関数で項目を追加することができます。defineを使うことにしたのは、その状態がストーリーに影響しないことと、プレイヤーがゲームを閉じたときに安全にクリアできるためです。そして、再び起動したときに、必要な項目が追加されるだけです。プレイセッションの間、ステータスを維持したい場合は、「define」を「default」に変更します。
- speaking_char - (Varient) 現在の発言キャラクターが誰であるかを知るために、キャラクターコールバックによって操作されます。現在どのキャラクターが話しているかを追跡します。name_callbackで更新され、SpriteFocus __call__でチェックされ、スプライトのキャラクターが話しているかどうか判断されます。
実装する
1. rpyを入れる
ダウンロードした00auto-highlight.rpyをgameフォルダに入れる(エディタで表示すると下線で真っ赤になるが気にしない)
2.layeredimageの中身を作る
layeredimageの名前を"1"にする場合は、
このように名前を付ける。
意味わかんなくなるな……という人はTaro_eye_eye1とかでもいい。
3.layeredimageを定義
オートハイライトを付けるため、at sprite_highlight('1')を追加する。
1はlayeredimageの名前を指定する。そこが共通するならlayeredimage inuhiko: at sprite_highright("inuhiko")でもよい。
layeredimage 1: at sprite_highlight('1') always "1_base" group a: attribute a1 default attribute a2 attribute a3 attribute a4 attribute a5 group b: attribute b1 default attribute b2 attribute b3 group c: attribute c1 default attribute c2 attribute c3 attribute c4 attribute c5 attribute c6 group d: attribute d1 default attribute d2 attribute d4 attribute d5
4.Character変数の編集
callback=name_callback は共通、cb_nameはlayeredimageの名前を入力する
define S = Character("[persistent.name_keep]", callback=name_callback, cb_name='0') define I = Character(_('戌彦'), kind=S, cb_name = "1") define A = Character(_('あやみー'), kind=S, cb_name = "2") define K = Character(_('クグさん'), kind=S, cb_name = "3")
5.ナレーター話す時は誰もフォーカスを当てたくない場合(任意)
define narrator = Character(callback = name_callback, cb_name = None)
とする。