Ren'Py のスクリプトを Python コードで記述できるようにするため、それぞれの Ren'Py のステートメントには Python のコードで相当するものがあります。これは通常 Python の関数で構成されていますが、ステートメントに相当した動作をする複数のコードで構成されることもあります。
元のステートメントの代わりに相当するステートメントを使用すると、通常 Lint によるチェックがされなくなってゲームのチェックが容易にできなくなり、予測最適化がなくなるため動作の軽快さも低下する可能性があるので注意してください。
Ren'Py の say ステートメント はキャラクターオブジェクトの関数としての呼び出しに相当します。次は、同じ行を2回表示させるコードです
e "Hello, world."
$ e("Hello, world.")
台詞の表示は narrator
キャラクターを用いて同様に行えます。キャラクターを呼び出すときは、キーワード引数 interact
を与えられます。interact
が False なら、 Ren'Py はキャラクターのダイアログボックスを表示しますが、インタラクションを実行する前に処理を戻します。
キャラクターと関数オブジェクトの対応はその他の面でも同様に働きます。 python 関数を宣言して、キャラクターオブジェクトの代わりに使用できます。例えば、以下の関数は二人のキャラクターを選択するために変数を使用しています。
define lucy_normal = Character("Lucy")
define lucy_evil = Character("Evil Lucy")
init python:
def l(what, **kwargs):
if lucy_is_evil:
lucy_evil(what, **kwargs)
else:
lucy_normal(what, **kwargs)
label start:
$ lucy_is_evil = False
l "Usually, I feel quite normal."
$ lucy_is_evil = True
l "But sometimes, I get really mad!"
このように使用された関数は未知のキーワード引数を無視するか、 キャラクター関数に渡すべきです。これによりゲームは Ren'Py が追加のキーワード引数をキャラクター呼び出しに加えても動作し続けます。
renpy.
say
(who, what, *args, **kwargs) linksay ステートメントに相当するものです。
発言するキャラクターか、キャラクター名の文字列です。 None ならナレーターが使用されます。文字列なら say()
を使用して発言するキャラクターが作成されます。
発言する文字列です。 % 置換文字列はこの文字列で使用されます。
True なら Ren'Py は台詞表示時にプレイヤーの入力を待ちます。 False なら Ren'Py は台詞を表示しますが、インタラクションを実行しません(これはキーワード引数として渡されます)。
次の3行が相当するため、この関数は滅多に必要ありません。 :
e "Hello, world."
$ renpy.say(e, "Hello, world.")
$ e("Hello, world.")
image, scene, show, hide ステートメントはそれぞれ相当する python 関数を持ちます (元のステートメントは 画像の表示 を参照してください。)
renpy.
get_at_list
(name, layer=None, camera=False) linklayer 上の name タグの画像に適用されている transform のリストを返します。 transform が適用されていなければ空のリストを返し、画像が表示されていなければ None 返します。
layer が None なら、指定されたタグのデフォルトレイヤーを使用します。
renpy.
hide
(name, layer=None) linkレイヤーから画像を非表示します。 hide ステートメントに相当する python コードです。
非表示する画像の名前です。画像タグのみが使用され、そのタグのすべての画像が非表示されます(正確な画像名は必要ありません)。
この関数が処理するレイヤーです。None ならタグのデフォルトレイヤーを使用します。
renpy.
image
(name, d) link画像を定義する。この関数は image ステートメントに相当する python コードです。
表示する画像の名前で、文字列です。
その画像名に関連付けられる displayable です。
この関数は init ブロック内でのみ実行されます。一旦ゲームが実行されてからこの関数が実行されると、エラーになります。
renpy.
scene
(layer=u'master') linklayer からすべての displayable を除去します。これは表示する画像が与えられない時の scene ステートメントに相当します。
scene ステートメントは renpy.scene とそれに続く renpy.show()
の呼び出しに相当します。例えば
scene bg beach
これは次に相当します
$ renpy.scene()
$ renpy.show("bg beach")
renpy.
show
(name, at_list=[], layer='master', what=None, zorder=0, tag=None, behind=[]) linkレイヤーに画像を表示します。これは show ステートメントにプログラム的に相当します。
表示する画像の名前で、文字列です。
画像に適用される transform のリストです。 at
プロパティーに相当します。
画像が表示されるレイヤーの名前の文字列です。 onlayer
に相当します。None ならそのタグに関連付けられたデフォルトレイヤーを使用します。
None でないならこれは画像を 探す代わりに表示される displayable です ( これは show expression ステートメントに相当します )。 what パラメーターが与えられると、 name はその画像とタグを関連づけるために使用されます。
zorder
プロパティーに相当する整数です。 None だと zorder があれば維持され、そうでなければ 0 に設定されます。
表示される画像の画像タグを指定するために使用される文字列です。 as
プロパティーに相当します。
この画像が背後に表示される画像タグの文字列のリストです。 behind
プロパティーに相当します。
renpy.
show_layer_at
(at_list, layer=u'master', reset=True, camera=False) linkshow layer
layer at
at_list ステートメントに Python コードで相当するものです。 camera が True なら、 camera
ステートメントに相当する物でもあります。
True なら、 transform の状態はその表示時までリセットされ、 False なら持続し、次のt ransform で状態を更新できるようにします。
with ステートメント に相当する renpy.with_statement()
関数です。
renpy.
with_statement
(trans, always=False) linkトランジションを実行します。これは with ステートメントに相当する python コードです。
トランジション
True なら、トランジションはユーザーがトランジションを無効化していても常に実行します。
この関数はユーザーがトランジションの中断を選択するなら True を、そうでないなら False を返します。
jump ステートメント ステートメントは renpy.jump()
関数に相当します。
renpy.
jump
(label) link現在のステートメントを終了し、制御を指定されたラベルに移します。
call ステートメント に相当するものは renpy.call()
関数です。
renpy.
call
(label, *args, from_current=False, **kwargs) link現在の Ren'Py ステートメントを終了し、指定された label にジャンプします。ジャンプから戻ると、現在のステートメントに続くステートメントに制御が移ります。
True なら、制御は現在のステートメントに続くステートメントではなく現在のステートメントに返ります(これにより現在のステートメントは二回実行されます。これはキーワード引数として渡されるべきです)。
renpy.
return_statement
(value=None) link現在の Ren'Py の呼び出しレベルから Ren'Py を返します。
Pause ステートメント は renpy.jump()
関数に相当します
renpy.
pause
(delay=None, *, hard=False, predict=False, modal=False) linkRen'Py をポーズさせます。ユーザーがクリックしてポーズを終わらせると True, ポーズがタイムアウトするかスキップされると False を返します。
指定されると、その秒数 Ren'Py はボーズするはずです。
以下はキーワード引数として指定するべきです。
これはキーワード引数として指定されなければなりません。True なら、Ren'Py はクリックでユーザーがポーズを中断できないようにします。プレイヤーがスキップを有効にした場合はハードポーズはスキップされます。他にも、ハードポーズが早く終了したり、Ren'Py が正しく動作しない状況があるかもしれませんが、これらはバグとして扱われません。
一般的に、ハードポーズの使用は失礼にあたります。ユーザーがゲームを進めるためにクリックするなら、それは明示的な要求です - ユーザーはゲームを進めることを望んでいます。その要求を覆すということは、プレイヤーが何を望んでいるかをプレイヤー以上に理解していると思い込むことです。
renpy.pause を呼び出すと、画面に表示されているものが少なくとも1フレームはプレーヤーに表示されることが保証されます。
つまり、 hard = True にして renpy.pause を使用しないでください。
True の場合、Ren'Py は renpy.start_predict()
と renpy.start_predict_screen()
でスケジュールした予測も含め、すべての予測が終了したときにポーズを終了します。
また、Ren'Py はポーズの間、表示の滑らかさよりも予測を優先させます。そのため、予測中のアニメーション表示は非推奨です。
True または None なら、ポーズはモーダルスクリーンが表示されているときは終わりません。 False なら、ポーズはモーダルスクリーンが表示されていても終わりません。