Compare commits
95 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c0caa9f17 | |||
| 6608288eef | |||
| 087f4aaa5b | |||
| 6e8835a5b7 | |||
| 213359d212 | |||
| 6ac58511a0 | |||
| dec7b962ea | |||
| 2cf0f96b0d | |||
| 4cc5e00745 | |||
| e649c46e60 | |||
| 173fcc32e1 | |||
| f5f9809b95 | |||
| 0f0da971ec | |||
| d53f49ad5d | |||
| 57dfe4fbf3 | |||
| 32d4e453e7 | |||
| c3f5cf4245 | |||
| 1d040a5ad3 | |||
| b118b6b629 | |||
| 3af70a67f6 | |||
| 9415995ba0 | |||
| 4602d1cb8d | |||
| cb774b625c | |||
| 49c995d1c4 | |||
| f0396aeeb4 | |||
| c35086e4a5 | |||
| 9d52a1e626 | |||
| 4074f45c6d | |||
| 409bab07bb | |||
| 8771045493 | |||
| db679ca2b3 | |||
| 5328f81e20 | |||
| 1c42c156d5 | |||
| 766b158684 | |||
| 5d74e7396b | |||
| ba832e5e3d | |||
| bbf9f36c47 | |||
| 83620695dc | |||
| 3861f19fa1 | |||
| 21f3e5635c | |||
| 87f2ed02d4 | |||
| b393f1fd98 | |||
| 748ada5378 | |||
| 437b742163 | |||
| 2232421843 | |||
| 8912a0a73a | |||
| 73bd716090 | |||
| cc272addc2 | |||
| c2f626d3c7 | |||
| fbe4a4e7e2 | |||
| b28eebff4f | |||
| 3368cfe3ab | |||
| 3ff9f2d135 | |||
| b5306f1065 | |||
| 4396d146e2 | |||
| be5f03e7b5 | |||
| 647459ef70 | |||
| be57f1070d | |||
| 17840ad937 | |||
| dfbb649dfb | |||
| 21456342c2 | |||
| cf1f140ff6 | |||
| 9a74b97bbe | |||
| fd47a942fe | |||
| e22256d631 | |||
| 16782c5847 | |||
| 43e6b37d43 | |||
| 0e6a32cbf2 | |||
| 0c0bde2315 | |||
| 70e7c38e7e | |||
| 2d9c11430f | |||
| 14f84a9329 | |||
| d9cdb6e8e1 | |||
| 18c25fd601 | |||
| ca759eb72e | |||
| 559d57f4cc | |||
| 27c821c010 | |||
| 3a064847d2 | |||
| 8dc1124dbf | |||
| cd5d9a28ba | |||
| 61447a9f83 | |||
| 6db5afa132 | |||
| efa6d28f83 | |||
| dba7363be7 | |||
| ef254d5a7d | |||
| ee3e9fcf30 | |||
| a06262c2b3 | |||
| 779a5472d4 | |||
| d1c16835c2 | |||
| d68d7e205f | |||
| 0ffbe3cc0a | |||
| f0bfc27267 | |||
| 20e50a9e06 | |||
| c67f88b7f3 | |||
| 16feb53d14 |
@@ -333,12 +333,10 @@ init python:
|
||||
build.classify_renpy("gui/game/gui/", None)
|
||||
|
||||
source_and_binary("launcher")
|
||||
source_and_binary("templates", binary=None)
|
||||
source_and_binary("gui", binary=None)
|
||||
|
||||
source_and_binary("the_question")
|
||||
source_and_binary("tutorial")
|
||||
source_and_binary("oldtutorial")
|
||||
|
||||
# docs.
|
||||
build.classify_renpy("doc/", "source")
|
||||
|
||||
@@ -36,6 +36,7 @@ init python in distribute:
|
||||
|
||||
class ZipFile(zipfile.ZipFile):
|
||||
|
||||
|
||||
def write_with_info(self, zinfo, filename):
|
||||
"""Put the bytes from filename into the archive under the name
|
||||
arcname."""
|
||||
@@ -66,8 +67,13 @@ init python in distribute:
|
||||
# Must overwrite CRC and sizes with correct data later
|
||||
zinfo.CRC = CRC = 0
|
||||
zinfo.compress_size = compress_size = 0
|
||||
zinfo.file_size = file_size = 0
|
||||
self.fp.write(zinfo.FileHeader())
|
||||
file_size = 0
|
||||
|
||||
zip64 = self._allowZip64 and \
|
||||
zinfo.file_size * 1.05 > zipfile.ZIP64_LIMIT
|
||||
|
||||
self.fp.write(zinfo.FileHeader(zip64))
|
||||
|
||||
if zinfo.compress_type == zipfile.ZIP_DEFLATED:
|
||||
cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,
|
||||
zlib.DEFLATED, -15)
|
||||
@@ -92,11 +98,19 @@ init python in distribute:
|
||||
zinfo.compress_size = file_size
|
||||
zinfo.CRC = CRC
|
||||
zinfo.file_size = file_size
|
||||
|
||||
if not zip64 and self._allowZip64:
|
||||
if file_size > zipfile.ZIP64_LIMIT:
|
||||
raise RuntimeError('File size has increased during compressing')
|
||||
if compress_size > zipfile.ZIP64_LIMIT:
|
||||
raise RuntimeError('Compressed size larger than uncompressed size')
|
||||
|
||||
# Seek backwards and write CRC and file sizes
|
||||
position = self.fp.tell() # Preserve current position in file
|
||||
self.fp.seek(zinfo.header_offset + 14, 0)
|
||||
self.fp.write(struct.pack("<LLL", zinfo.CRC, zinfo.compress_size,
|
||||
zinfo.file_size))
|
||||
self.fp.seek(zinfo.header_offset, 0)
|
||||
|
||||
self.fp.write(zinfo.FileHeader(zip64))
|
||||
|
||||
self.fp.seek(position, 0)
|
||||
self.filelist.append(zinfo)
|
||||
self.NameToInfo[zinfo.filename] = zinfo
|
||||
|
||||
@@ -51,6 +51,7 @@ init python:
|
||||
|
||||
return rv
|
||||
|
||||
show_legacy = os.path.exists(os.path.join(config.renpy_base, "templates", "english", "game", "script.rpy"))
|
||||
|
||||
default persistent.legacy = False
|
||||
default persistent.force_new_tutorial = False
|
||||
@@ -184,12 +185,16 @@ screen preferences:
|
||||
if renpy.windows:
|
||||
textbutton _("Console output") style "l_checkbox" action ToggleField(persistent, "windows_console")
|
||||
|
||||
textbutton _("Force new tutorial") style "l_checkbox" action [ ToggleField(persistent, "force_new_tutorial"), project.SelectTutorial(True) ]
|
||||
if project.manager.get("oldtutorial"):
|
||||
|
||||
textbutton _("Legacy options") style "l_checkbox" action ToggleField(persistent, "legacy")
|
||||
textbutton _("Force new tutorial") style "l_checkbox" action [ ToggleField(persistent, "force_new_tutorial"), project.SelectTutorial(True) ]
|
||||
|
||||
if persistent.legacy:
|
||||
textbutton _("Show templates") style "l_checkbox" action ToggleField(persistent, "show_templates")
|
||||
if show_legacy:
|
||||
|
||||
textbutton _("Legacy options") style "l_checkbox" action ToggleField(persistent, "legacy")
|
||||
|
||||
if persistent.legacy:
|
||||
textbutton _("Show templates") style "l_checkbox" action ToggleField(persistent, "show_templates")
|
||||
|
||||
textbutton _("Sponsor message") style "l_checkbox" action ToggleField(persistent, "sponsor_message")
|
||||
|
||||
|
||||
@@ -589,6 +589,9 @@ init python in project:
|
||||
if language is None:
|
||||
rv = p
|
||||
|
||||
elif rv is None:
|
||||
rv = p
|
||||
|
||||
elif os.path.exists(os.path.join(p.path, "game", "tl", _preferences.language)):
|
||||
rv = p
|
||||
|
||||
|
||||
@@ -386,31 +386,31 @@ translate japanese strings:
|
||||
|
||||
# 00director.rpy:1576
|
||||
old "Statement:"
|
||||
new "Statement(命令):"
|
||||
new "ステートメント:"
|
||||
|
||||
# 00director.rpy:1597
|
||||
old "Tag:"
|
||||
new "Tag(タグ):"
|
||||
new "画像タグ:"
|
||||
|
||||
# 00director.rpy:1613
|
||||
old "Attributes:"
|
||||
new "Attributes(属性):"
|
||||
new "画像属性:"
|
||||
|
||||
# 00director.rpy:1631
|
||||
old "Transforms:"
|
||||
new "Transforms(画像変形):"
|
||||
new "変換:"
|
||||
|
||||
# 00director.rpy:1650
|
||||
old "Behind:"
|
||||
new "Behind(裏に表示):"
|
||||
new "背後に表示:"
|
||||
|
||||
# 00director.rpy:1669
|
||||
old "Transition:"
|
||||
new "Transition(遷移演出):"
|
||||
new "トランジション:"
|
||||
|
||||
# 00director.rpy:1687
|
||||
old "Channel:"
|
||||
new "キャンセル"
|
||||
new "チャンネル:"
|
||||
|
||||
# 00director.rpy:1705
|
||||
old "Audio Filename:"
|
||||
@@ -439,3 +439,258 @@ translate japanese strings:
|
||||
old "{size_mb:,.1f} MB in {count} textures."
|
||||
new "{size_mb:,.1f} MB in {count} textures."
|
||||
|
||||
|
||||
translate japanese strings:
|
||||
|
||||
# 00action_file.rpy:344
|
||||
old "Save slot %s: [text]"
|
||||
new "スロット%s: [text]にセーブ"
|
||||
|
||||
# 00action_file.rpy:417
|
||||
old "Load slot %s: [text]"
|
||||
new "スロット%s: [text]をロード"
|
||||
|
||||
# 00action_file.rpy:459
|
||||
old "Delete slot [text]"
|
||||
new "スロット[text]を削除"
|
||||
|
||||
# 00action_file.rpy:539
|
||||
old "File page auto"
|
||||
new "オートファイルページ"
|
||||
|
||||
# 00action_file.rpy:541
|
||||
old "File page quick"
|
||||
new "クイックファイルページ"
|
||||
|
||||
# 00action_file.rpy:543
|
||||
old "File page [text]"
|
||||
new "ファイルページ[text]"
|
||||
|
||||
# 00action_file.rpy:733
|
||||
old "Next file page."
|
||||
new "次のファイルページ"
|
||||
|
||||
# 00action_file.rpy:797
|
||||
old "Previous file page."
|
||||
new "前のファイルページ"
|
||||
|
||||
# 00action_file.rpy:876
|
||||
old "Quick save."
|
||||
new "クイックセーブ"
|
||||
|
||||
# 00action_file.rpy:895
|
||||
old "Quick load."
|
||||
new "クイックロード"
|
||||
|
||||
# 00action_other.rpy:344
|
||||
old "Language [text]"
|
||||
new "言語 [text]"
|
||||
|
||||
# 00director.rpy:1476
|
||||
old "⬆"
|
||||
new "⬆"
|
||||
|
||||
# 00director.rpy:1482
|
||||
old "⬇"
|
||||
new "⬇"
|
||||
|
||||
# 00library.rpy:150
|
||||
old "bar"
|
||||
new "バー"
|
||||
|
||||
# 00library.rpy:151
|
||||
old "selected"
|
||||
new "選択中"
|
||||
|
||||
# 00library.rpy:152
|
||||
old "viewport"
|
||||
new "ビューポート"
|
||||
|
||||
# 00library.rpy:153
|
||||
old "horizontal scroll"
|
||||
new "水平スクロール"
|
||||
|
||||
# 00library.rpy:154
|
||||
old "vertical scroll"
|
||||
new "垂直スクロール"
|
||||
|
||||
# 00library.rpy:155
|
||||
old "activate"
|
||||
new "有効"
|
||||
|
||||
# 00library.rpy:156
|
||||
old "deactivate"
|
||||
new "無効"
|
||||
|
||||
# 00library.rpy:157
|
||||
old "increase"
|
||||
new "増加"
|
||||
|
||||
# 00library.rpy:158
|
||||
old "decrease"
|
||||
new "減少"
|
||||
|
||||
# 00preferences.rpy:207
|
||||
old "display"
|
||||
new "表示"
|
||||
|
||||
# 00preferences.rpy:219
|
||||
old "transitions"
|
||||
new "トランジション"
|
||||
|
||||
# 00preferences.rpy:228
|
||||
old "skip transitions"
|
||||
new "トランジションをスキップ"
|
||||
|
||||
# 00preferences.rpy:230
|
||||
old "video sprites"
|
||||
new "ビデオ スプライト"
|
||||
|
||||
# 00preferences.rpy:239
|
||||
old "show empty window"
|
||||
new "空のウィンドウを表示"
|
||||
|
||||
# 00preferences.rpy:248
|
||||
old "text speed"
|
||||
new "テキストスピード"
|
||||
|
||||
# 00preferences.rpy:256
|
||||
old "joystick"
|
||||
new "ジョイスティック"
|
||||
|
||||
# 00preferences.rpy:256
|
||||
old "joystick..."
|
||||
new "ジョイスティック..."
|
||||
|
||||
# 00preferences.rpy:263
|
||||
old "skip"
|
||||
new "スキップ"
|
||||
|
||||
# 00preferences.rpy:266
|
||||
old "skip unseen [text]"
|
||||
new "未読の[text]をスキップ"
|
||||
|
||||
# 00preferences.rpy:271
|
||||
old "skip unseen text"
|
||||
new "未読のテキストをスキップ"
|
||||
|
||||
# 00preferences.rpy:273
|
||||
old "begin skipping"
|
||||
new "スキップ開始"
|
||||
|
||||
# 00preferences.rpy:277
|
||||
old "after choices"
|
||||
new "選択肢後"
|
||||
|
||||
# 00preferences.rpy:284
|
||||
old "skip after choices"
|
||||
new "選択肢後もスキップ"
|
||||
|
||||
# 00preferences.rpy:286
|
||||
old "auto-forward time"
|
||||
new "オート待ち時間"
|
||||
|
||||
# 00preferences.rpy:300
|
||||
old "auto-forward"
|
||||
new "オート送り"
|
||||
|
||||
# 00preferences.rpy:307
|
||||
old "Auto forward"
|
||||
new "オート送り"
|
||||
|
||||
# 00preferences.rpy:310
|
||||
old "auto-forward after click"
|
||||
new "クリック後もオート"
|
||||
|
||||
# 00preferences.rpy:319
|
||||
old "automatic move"
|
||||
new "自動ムービー"
|
||||
|
||||
# 00preferences.rpy:328
|
||||
old "wait for voice"
|
||||
new "ボイスを待つ"
|
||||
|
||||
# 00preferences.rpy:337
|
||||
old "voice sustain"
|
||||
new "voice sustain"
|
||||
|
||||
# 00preferences.rpy:346
|
||||
old "self voicing"
|
||||
new "セルフボイシング"
|
||||
|
||||
# 00preferences.rpy:355
|
||||
old "clipboard voicing"
|
||||
new "クリップボードボイシング"
|
||||
|
||||
# 00preferences.rpy:364
|
||||
old "debug voicing"
|
||||
new "ボイシングのデバッグ"
|
||||
|
||||
# 00preferences.rpy:373
|
||||
old "emphasize audio"
|
||||
new "オーディオの強調"
|
||||
|
||||
# 00preferences.rpy:382
|
||||
old "rollback side"
|
||||
new "ロールバックサイド"
|
||||
|
||||
# 00preferences.rpy:392
|
||||
old "gl powersave"
|
||||
new "GLパワーセーブ"
|
||||
|
||||
# 00preferences.rpy:398
|
||||
old "gl framerate"
|
||||
new "GLフレームレート"
|
||||
|
||||
# 00preferences.rpy:401
|
||||
old "gl tearing"
|
||||
new "GLティアリング"
|
||||
|
||||
# 00preferences.rpy:413
|
||||
old "music volume"
|
||||
new "音楽の音量"
|
||||
|
||||
# 00preferences.rpy:414
|
||||
old "sound volume"
|
||||
new "効果音の音量"
|
||||
|
||||
# 00preferences.rpy:415
|
||||
old "voice volume"
|
||||
new "ボイスの音量"
|
||||
|
||||
# 00preferences.rpy:416
|
||||
old "mute music"
|
||||
new "音楽をミュート"
|
||||
|
||||
# 00preferences.rpy:417
|
||||
old "mute sound"
|
||||
new "効果音をミュート"
|
||||
|
||||
# 00preferences.rpy:418
|
||||
old "mute voice"
|
||||
new "ボイスをミュート"
|
||||
|
||||
# 00preferences.rpy:419
|
||||
old "mute all"
|
||||
new "音声を全てミュート"
|
||||
|
||||
# _developer\developer.rpym:57
|
||||
old "Show Image Load Log (F4)"
|
||||
new "画像ロードログを表示する (F4)"
|
||||
|
||||
# _developer\developer.rpym:60
|
||||
old "Hide Image Load Log (F4)"
|
||||
new "画像ロードログを隠す (F4)"
|
||||
|
||||
# _developer\developer.rpym:447
|
||||
old "Type to filter: "
|
||||
new "フィルタして検索: "
|
||||
|
||||
# _developer\developer.rpym:575
|
||||
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
|
||||
new "テクスチャー: [tex_count] ([tex_size_mb:.1f] MB)"
|
||||
|
||||
# _developer\developer.rpym:579
|
||||
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
|
||||
new "イメージキャッシュ: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
|
||||
|
||||
|
||||
@@ -203,7 +203,35 @@ translate japanese strings:
|
||||
|
||||
translate japanese strings:
|
||||
|
||||
# 00gltest.rpy:70
|
||||
old "Renderer"
|
||||
new "レンダラー"
|
||||
|
||||
# 00gltest.rpy:89
|
||||
old "NPOT"
|
||||
new "NPOT"
|
||||
|
||||
# 00gltest.rpy:131
|
||||
old "Powersave"
|
||||
new "パワーセーブ"
|
||||
|
||||
# 00gltest.rpy:145
|
||||
old "Framerate"
|
||||
new "フレームレート"
|
||||
|
||||
# 00gltest.rpy:149
|
||||
old "Screen"
|
||||
new "スクリーン"
|
||||
|
||||
# 00gltest.rpy:153
|
||||
old "60"
|
||||
new "60"
|
||||
|
||||
# 00gltest.rpy:157
|
||||
old "30"
|
||||
new "30"
|
||||
|
||||
# 00gltest.rpy:163
|
||||
old "Tearing"
|
||||
new "ティアリング"
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ translate japanese strings:
|
||||
|
||||
# gui.rpy:5
|
||||
old "## The init offset statement causes the init code in this file to run before init code in any other file."
|
||||
new "## このファイルは GUI をカスタマイズする基本的なオプションを記載しています。次の init offset 文は、このファイルの init コードを他のファイルよりも先に実行しています。"
|
||||
new "## このファイルは GUI をカスタマイズする基本的なオプションを記載しています。次の init offset ステートメントは、このファイルの init コードを他のファイルよりも先に実行しています。"
|
||||
|
||||
# gui.rpy:9
|
||||
old "## Calling gui.init resets the styles to sensible default values, and sets the width and height of the game."
|
||||
@@ -35,15 +35,15 @@ translate japanese strings:
|
||||
|
||||
# gui.rpy:32
|
||||
old "## The small color is used for small text, which needs to be brighter/darker to achieve the same effect."
|
||||
new "## スモールカラー。明るさを調節する必要のあるクイックメニューなどの小さなテキストボタンに使います。"
|
||||
new "## スモールカラー。クイックメニューなどの、明るさを調節する必要のある小さなテキストボタンに使います。"
|
||||
|
||||
# gui.rpy:36
|
||||
old "## The color that is used for buttons and bars that are hovered."
|
||||
new "## hover(フォーカス中)のテキストボタンのカラー。また、バーの充足部分(左側)・hover のスライダーのつまみ等の画像を再生成するときにも使われます。"
|
||||
new "## hover(フォーカス中)のテキストボタンのカラー。また、バーの充足部分(左側)やスライダーのつまみ等の画像を再生成するときにも使われます。"
|
||||
|
||||
# gui.rpy:39
|
||||
old "## The color used for a text button when it is selected but not focused. A button is selected if it is the current screen or preference value."
|
||||
new "## selected(選択中)のテキストボタンのカラー。ボタンは、現在の環境設定の値や表示中のスクリーンと一致するものが選択中になります。"
|
||||
new "## selected(選択中)のテキストボタンのカラー。ボタンが現在のスクリーンであったり、環境設定の値と一致したりすると、ボタンは選択中になります。"
|
||||
|
||||
# gui.rpy:43
|
||||
old "## The color used for a text button when it cannot be selected."
|
||||
@@ -51,11 +51,11 @@ translate japanese strings:
|
||||
|
||||
# gui.rpy:46
|
||||
old "## Colors used for the portions of bars that are not filled in. These are not used directly, but are used when re-generating bar image files."
|
||||
new "## バーの非充足部分(右側)やスライダーの背景部分のカラー。バーやスライダーのカラーは、ゲームでは直接使われず GUI を変更・更新した場合の画像生成に使われます。"
|
||||
new "## バーの非充足部分(右側)やスライダーの背景部分のカラー。バーやスライダーのカラーは直接使われず、 GUI を変更・更新した場合の画像生成に使われます。"
|
||||
|
||||
# gui.rpy:51
|
||||
old "## The colors used for dialogue and menu choice text."
|
||||
new "## 次の text_color は台詞や選択肢のテキストのカラーです。その次の interface_text_color はヒストリーやヘルプなどそれ以外のテキストのカラーです。"
|
||||
new "## text_color は台詞や選択肢のテキストのカラーです。interface_text_color はヒストリーやヘルプなどそれ以外のテキストのカラーです。"
|
||||
|
||||
# gui.rpy:56
|
||||
old "## Fonts and Font Sizes"
|
||||
@@ -284,7 +284,7 @@ radio と check は環境設定の各項目のボタン(デフォルトでは
|
||||
|
||||
# gui.rpy:279
|
||||
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
|
||||
new "## 以下の変数は、インターフェースのコンポーネントを収納するフレームを制御します。フレームは、ウィンドウやオーバーレイが用いられない場面で使われます。"
|
||||
new "## 以下の変数は、インターフェースのコンポーネントを収納するフレームを制御します。フレームは、ウィンドウやオーバーレイが用意されていない場面で使われます。"
|
||||
|
||||
# gui.rpy:282
|
||||
old "## Generic frames that are introduced by player code."
|
||||
@@ -450,7 +450,7 @@ translate japanese strings:
|
||||
|
||||
# gui.rpy:5
|
||||
old "## The init offset statement causes the initialization statements in this file to run before init statements in any other file."
|
||||
new "## このファイルは GUI をカスタマイズする基本的なオプションを記載しています。次の init offset 文により、このファイルの init 文は他のファイルの init 文よりも先に実行されます。"
|
||||
new "## このファイルは GUI をカスタマイズする基本的なオプションを記載しています。次の init offset ステートメントにより、このファイルの init 文は他のファイルの init 文よりも先に実行されます。"
|
||||
|
||||
# gui.rpy:282
|
||||
old "## Generic frames."
|
||||
|
||||
@@ -1283,3 +1283,42 @@ translate japanese strings:
|
||||
old "The height must be a number."
|
||||
new "画面の高さは数字でなければなりません。"
|
||||
|
||||
|
||||
translate japanese strings:
|
||||
|
||||
# editor.rpy:152
|
||||
old "(Recommended) A modern and approachable text editor."
|
||||
new "(推奨)モダンで親しみやすいテキストエディターです。"
|
||||
|
||||
# editor.rpy:164
|
||||
old "Up to 150 MB download required."
|
||||
new "最大 150 MB のダウンロードが必要です。"
|
||||
|
||||
# editor.rpy:178
|
||||
old "A mature editor. Editra lacks the IME support required for Chinese, Japanese, and Korean text input."
|
||||
new "成熟したエディターです。Editra は中国語・韓国語・日本語の入力に必要な IME のサポートに欠陥があります。"
|
||||
|
||||
# editor.rpy:179
|
||||
old "A mature editor. Editra lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython."
|
||||
new "成熟したエディターです。Editra は中国語・韓国語・日本語の入力に必要な IME のサポートに欠陥があります。Linux では Editra は wxpython を必要とします。"
|
||||
|
||||
# editor.rpy:219
|
||||
old "System Editor"
|
||||
new "システムエディタ―"
|
||||
|
||||
# editor.rpy:235
|
||||
old "None"
|
||||
new "無効"
|
||||
|
||||
# editor.rpy:338
|
||||
old "Edit [text]."
|
||||
new "Edit [text]."
|
||||
|
||||
# front_page.rpy:215
|
||||
old "Open project"
|
||||
new "プロジェクトを開く"
|
||||
|
||||
# front_page.rpy:221
|
||||
old "Actions"
|
||||
new "アクション"
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ translate japanese strings:
|
||||
|
||||
# options.rpy:12
|
||||
old "## A human-readable name of the game. This is used to set the default window title, and shows up in the interface and error reports."
|
||||
new "## 人が読みやすいゲーム名。ゲーム名はデフォルトのウィンドウタイトルに使われる他、インターフェースやエラーリポートにも表示されます。"
|
||||
new "## 人の目で読み取れるゲーム名。ゲーム名はデフォルトのウィンドウタイトルに使われる他、インターフェースやエラーリポートにも表示されます。"
|
||||
|
||||
# options.rpy:15
|
||||
old "## The _() surrounding the string marks it as eligible for translation."
|
||||
@@ -51,19 +51,19 @@ translate japanese strings:
|
||||
|
||||
# options.rpy:55
|
||||
old "## To allow the user to play a test sound on the sound or voice channel, uncomment a line below and use it to set a sample sound to play."
|
||||
new "## サウンドやボイスの設定画面でユーザーがテストサウンドを再生できるようにしたい場合、以下の行をアンコメントしてサンプルサウンドを指定します。"
|
||||
new "## サウンドやボイスの設定画面で、ユーザーがテストサウンドを再生可能にする場合、以下の行をアンコメントしてサンプルサウンドを指定します。"
|
||||
|
||||
# options.rpy:62
|
||||
old "## Uncomment the following line to set an audio file that will be played while the player is at the main menu. This file will continue playing into the game, until it is stopped or another file is played."
|
||||
new "## 次の行をアンコメントしてオーディオファイルを指定すると、メインメニューで再生することができます。このファイルは、停止するか他の音楽が再生されない限りゲーム中で流れ続けます。"
|
||||
new "## 次の行をアンコメントしてオーディオファイルを指定すると、メインメニューで再生されます。このファイルは、停止するか他の音楽が再生されない限りゲーム中で流れ続けます。"
|
||||
|
||||
# options.rpy:69
|
||||
old "## Transitions"
|
||||
new "## トランジション(画面遷移効果)"
|
||||
new "## トランジション"
|
||||
|
||||
# options.rpy:71
|
||||
old "## These variables set transitions that are used when certain events occur. Each variable should be set to a transition, or None to indicate that no transition should be used."
|
||||
new "## 以下の変数は、メニュー切り替えなどのイベントに対するトランジションを設定します。各変数にはトランジションオブジェクトを指定します。トランジションを使わない場合は None に設定します。"
|
||||
new "## 以下の変数は、メニュー切り替えなどのイベントに対するトランジションを設定します。各変数にはトランジションを指定します。トランジションを使わない場合は None に設定します。"
|
||||
|
||||
# options.rpy:75
|
||||
old "## Entering or exiting the game menu."
|
||||
@@ -79,7 +79,7 @@ translate japanese strings:
|
||||
|
||||
# options.rpy:91
|
||||
old "## A variable to set the transition used when the game starts does not exist. Instead, use a with statement after showing the initial scene."
|
||||
new "## メインメニューからゲームを開始する時のトランジションは、ここでは設定できません。代わりに、ゲーム開始後の最初のシーンで with ステートメント(文)を使ってください。"
|
||||
new "## メインメニューからゲームを開始する時のトランジションは、ここでは設定できません。代わりに、ゲーム開始後の最初のシーンで with ステートメントを使ってください。"
|
||||
|
||||
# options.rpy:96
|
||||
old "## Window management"
|
||||
@@ -91,7 +91,7 @@ translate japanese strings:
|
||||
|
||||
# options.rpy:103
|
||||
old "## After the game has started, this can be changed with the \"window show\", \"window hide\", and \"window auto\" statements."
|
||||
new "## ゲーム開始後は、\"window show\"、\"window hide\"、\"window auto\" ステートメントで変更することができます。"
|
||||
new "## ゲーム開始後でも \"window show\"、\"window hide\"、\"window auto\" ステートメントで変更することができます。"
|
||||
|
||||
# options.rpy:109
|
||||
old "## Transitions used to show and hide the dialogue window"
|
||||
@@ -199,7 +199,7 @@ translate japanese strings:
|
||||
|
||||
# options.rpy:196
|
||||
old "## Set this to a string containing your Apple Developer ID Application to enable codesigning on the Mac. Be sure to change it to your own Apple-issued ID."
|
||||
new "## Mac のコード署名を有効にするため Apple Developer ID アプリケーション を含む文字列を設定します。必ず Apple が発行したあなたの ID に変更してください。"
|
||||
new "## Mac のコード署名を有効にするために Apple Developer ID アプリケーション を含む文字列を設定します。必ず Apple が発行したあなたの ID に変更してください。"
|
||||
|
||||
|
||||
translate japanese strings:
|
||||
@@ -208,3 +208,10 @@ translate japanese strings:
|
||||
old "## Between screens of the game menu."
|
||||
new "## ゲームメニューのスクリーンを切り替える時のトランジション。"
|
||||
|
||||
|
||||
translate japanese strings:
|
||||
|
||||
# options.rpy:31
|
||||
old "## Text that is placed on the game's about screen. Place the text between the triple-quotes, and leave a blank line between paragraphs."
|
||||
new "## About(バージョン情報)スクリーンに表示されるテキスト。トリプルクオートの間にテキストを入力します。段落の間には空行を挿入して下さい。"
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:98
|
||||
old "## This screen must create a text displayable with id \"what\", as Ren'Py uses this to manage text display. It can also create displayables with id \"who\" and id \"window\" to apply style properties."
|
||||
new "## このスクリーンは、テキストを表示するために \"what\" のIDを持つ text displayable(表示可能オブジェクト)を必ず作成しなければなりません。また、スタイルのプロパティを適用するために、ID \"who\" とID \"window\" を持つ text displayable も作成するといいでしょう。"
|
||||
new "## このスクリーンは、テキストを表示するために \"what\" のIDを持つ text displayable を必ず作成しなければなりません。また、スタイルのプロパティを適用するために、ID \"who\" とID \"window\" を持つ text displayable も作成するといいでしょう。"
|
||||
|
||||
# screens.rpy:102
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#say"
|
||||
@@ -39,7 +39,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:174
|
||||
old "## This screen must create an input displayable with id \"input\" to accept the various input parameters."
|
||||
new "## このスクリーンは input のパラメーター を受け付けるために \"input\" をIDに持つ input displayable(表示可能オブジェクト)を作成する必要があります。"
|
||||
new "## このスクリーンは input のパラメーター を受け付けるために \"input\" をIDに持つ input displayable を作成する必要があります。"
|
||||
|
||||
# screens.rpy:177
|
||||
old "## http://www.renpy.org/doc/html/screen_special.html#input"
|
||||
@@ -51,7 +51,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:207
|
||||
old "## This screen is used to display the in-game choices presented by the menu statement. The one parameter, items, is a list of objects, each with caption and action fields."
|
||||
new "## このスクリーンは、ゲーム内の選択肢を表示するのに使います。items のパラメーターは caption(選択肢のテキスト)と action(クリック時の実行内容)を要素に持つオブジェクトのリスト(配列)です。"
|
||||
new "## このスクリーンは、ゲーム内の選択肢を表示する menu ステートメントに使います。items のパラメーターは caption(選択肢のテキスト)と action(クリック時の実行内容)を要素に持つオブジェクトのリスト(配列)です。"
|
||||
|
||||
# screens.rpy:211
|
||||
old "## http://www.renpy.org/doc/html/screen_special.html#choice"
|
||||
@@ -67,7 +67,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:246
|
||||
old "## The quick menu is displayed in-game to provide easy access to the out-of-game menus."
|
||||
new "## クイックメニューはゲーム中つねに表示されるスクリーンで、ゲーム外の機能に素早くアクセスすることができます。"
|
||||
new "## クイックメニューはゲーム中に常時表示されるスクリーンで、ゲーム外の機能に素早くアクセスすることができます。"
|
||||
|
||||
# screens.rpy:251
|
||||
old "## Ensure this appears on top of other screens."
|
||||
@@ -182,7 +182,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:369
|
||||
old "## The use statement includes another screen inside this one. The actual contents of the main menu are in the navigation screen."
|
||||
new "## use 文は、他のスクリーンを現在のスクリーンの内に表示するのに使います。メインメニューの実際のコンテンツは navigation(ナビゲーション)スクリーンです。"
|
||||
new "## use ステートメントは、他のスクリーンを現在のスクリーンの内に表示するのに使います。メインメニューの実際のコンテンツは navigation(ナビゲーション)スクリーンです。"
|
||||
|
||||
# screens.rpy:413
|
||||
old "## Game Menu screen"
|
||||
@@ -218,7 +218,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:551
|
||||
old "## This use statement includes the game_menu screen inside this one. The vbox child is then included inside the viewport inside the game_menu screen."
|
||||
new "## 次の use 文は game_menu(ゲームメニュー)スクリーンをこのスクリーンの内に表示しています。use 文の子(内包されたオブジェクト)の vbox は game_menu スクリーンの中の viewport に配置されます。"
|
||||
new "## 次の use ステートメントは game_menu(ゲームメニュー)スクリーンをこのスクリーンの内に表示しています。use 文の子(内包されたオブジェクト)の vbox は game_menu スクリーンの中の viewport に配置されます。"
|
||||
|
||||
# screens.rpy:561
|
||||
old "Version [config.version!t]\n"
|
||||
@@ -561,7 +561,7 @@ translate japanese strings:
|
||||
|
||||
# screens.rpy:1124
|
||||
old "## Additional screens"
|
||||
new "## 追加スクリーン"
|
||||
new "## 付加的なスクリーン"
|
||||
|
||||
# screens.rpy:1128
|
||||
old "## Confirm screen"
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
|
||||
|
||||
# まず最初に、ゲームに使うキャラクター(台詞を表示するオブジェクト)を定義します。
|
||||
# 最初のパラメーターは、テキストウィンドウに表示されるキャラクターの名前です。
|
||||
# 一番目のパラメーターは、テキストウィンドウに表示されるキャラクターの名前です。
|
||||
# color のパラメーターを追加すると、キャラクターの名前を色付けできます。
|
||||
|
||||
define e = Character('Eileen', color="#c8ffc8")
|
||||
|
||||
|
||||
# label ステートメント(命令文)はゲームの処理をまとめてラベル付けします。
|
||||
# label ステートメント(文)はゲームの処理をまとめてラベル付けします。
|
||||
# ラベル間の移動は jump ステートメントか call ステートメントを使います。
|
||||
|
||||
# ゲームは start ラベルからスタートします。
|
||||
@@ -20,12 +20,12 @@ label start:
|
||||
|
||||
# 背景を表示します。デフォルトではプレースホルダー(仮画像)を使用しますが、
|
||||
# images ディレクトリーにファイル(ファイル名は "bg room.png" や "bg room.jpg")
|
||||
# を追加すると表示することができます。
|
||||
# を追加することにより表示できます。
|
||||
|
||||
scene bg room
|
||||
|
||||
# スプライト(立ち絵)を表示します。ここではプレースホルダーを使用していますが、
|
||||
# images ディレクトリーに "eileen happy.png" と命名したファイルを追加すると
|
||||
# images ディレクトリーに "eileen happy.png" などと命名したファイルを追加すると
|
||||
# 表示することができます。
|
||||
|
||||
# at ステートメントは画像の表示する位置を調整します。
|
||||
@@ -40,7 +40,7 @@ label start:
|
||||
with dissolve
|
||||
|
||||
# 音楽を再生します。ここではタグを利用して無音を再生していますが、
|
||||
# game ディレクトリーに "music.ogg" と命名したファイルを追加すると
|
||||
# game ディレクトリーに "music.ogg" などと命名したファイルを追加すると
|
||||
# play music "music.ogg" の形で再生することができます。
|
||||
|
||||
# 効果音を再生する時は play audio "filename" を使用します。
|
||||
@@ -50,8 +50,6 @@ label start:
|
||||
|
||||
# 以下は台詞を表示します。
|
||||
|
||||
"Hello, world."
|
||||
|
||||
e "Ren'Py の新しいゲームを作成しました。"
|
||||
|
||||
e "ストーリー、画像、音楽を追加すれば、世界にリリースすることができます!"
|
||||
|
||||
@@ -201,131 +201,139 @@ translate piglatin strings:
|
||||
old "Quick load."
|
||||
new "Uickqay oadlay."
|
||||
|
||||
# 00action_other.rpy:344
|
||||
# 00action_other.rpy:355
|
||||
old "Language [text]"
|
||||
new "Anguagelay [text]"
|
||||
|
||||
# 00director.rpy:703
|
||||
# 00director.rpy:709
|
||||
old "The interactive director is not enabled here."
|
||||
new "Hetay interactiveay irectorday isay otnay enableday erehay."
|
||||
|
||||
# 00director.rpy:1490
|
||||
# 00director.rpy:1479
|
||||
old "⬆"
|
||||
new "⬆"
|
||||
|
||||
# 00director.rpy:1485
|
||||
old "⬇"
|
||||
new "⬇"
|
||||
|
||||
# 00director.rpy:1549
|
||||
old "Done"
|
||||
new "Oneday"
|
||||
|
||||
# 00director.rpy:1498
|
||||
# 00director.rpy:1559
|
||||
old "(statement)"
|
||||
new "(atementstay)"
|
||||
|
||||
# 00director.rpy:1499
|
||||
# 00director.rpy:1560
|
||||
old "(tag)"
|
||||
new "(agtay)"
|
||||
|
||||
# 00director.rpy:1500
|
||||
# 00director.rpy:1561
|
||||
old "(attributes)"
|
||||
new "(attributesay)"
|
||||
|
||||
# 00director.rpy:1501
|
||||
# 00director.rpy:1562
|
||||
old "(transform)"
|
||||
new "(ansformtray)"
|
||||
|
||||
# 00director.rpy:1526
|
||||
# 00director.rpy:1587
|
||||
old "(transition)"
|
||||
new "(ansitiontray)"
|
||||
|
||||
# 00director.rpy:1538
|
||||
# 00director.rpy:1599
|
||||
old "(channel)"
|
||||
new "(annelchay)"
|
||||
|
||||
# 00director.rpy:1539
|
||||
# 00director.rpy:1600
|
||||
old "(filename)"
|
||||
new "(ilenamefay)"
|
||||
|
||||
# 00director.rpy:1564
|
||||
# 00director.rpy:1629
|
||||
old "Change"
|
||||
new "Hangecay"
|
||||
|
||||
# 00director.rpy:1566
|
||||
# 00director.rpy:1631
|
||||
old "Add"
|
||||
new "Ddaay"
|
||||
|
||||
# 00director.rpy:1569
|
||||
# 00director.rpy:1634
|
||||
old "Cancel"
|
||||
new "Ancelcay"
|
||||
|
||||
# 00director.rpy:1572
|
||||
# 00director.rpy:1637
|
||||
old "Remove"
|
||||
new "Emoveray"
|
||||
|
||||
# 00director.rpy:1605
|
||||
# 00director.rpy:1672
|
||||
old "Statement:"
|
||||
new "Tatementsay:"
|
||||
|
||||
# 00director.rpy:1626
|
||||
# 00director.rpy:1693
|
||||
old "Tag:"
|
||||
new "Agtay:"
|
||||
|
||||
# 00director.rpy:1642
|
||||
# 00director.rpy:1709
|
||||
old "Attributes:"
|
||||
new "Ttributesaay:"
|
||||
|
||||
# 00director.rpy:1660
|
||||
# 00director.rpy:1727
|
||||
old "Transforms:"
|
||||
new "Ransformstay:"
|
||||
|
||||
# 00director.rpy:1679
|
||||
# 00director.rpy:1746
|
||||
old "Behind:"
|
||||
new "Ehindbay:"
|
||||
|
||||
# 00director.rpy:1698
|
||||
# 00director.rpy:1765
|
||||
old "Transition:"
|
||||
new "Ransitiontay:"
|
||||
|
||||
# 00director.rpy:1716
|
||||
# 00director.rpy:1783
|
||||
old "Channel:"
|
||||
new "Hannelcay:"
|
||||
|
||||
# 00director.rpy:1734
|
||||
# 00director.rpy:1801
|
||||
old "Audio Filename:"
|
||||
new "Udioaay Ilenamefay:"
|
||||
|
||||
# 00gui.rpy:368
|
||||
# 00gui.rpy:370
|
||||
old "Are you sure?"
|
||||
new "Reaay ouyay uresay?"
|
||||
|
||||
# 00gui.rpy:369
|
||||
# 00gui.rpy:371
|
||||
old "Are you sure you want to delete this save?"
|
||||
new "Reaay ouyay uresay ouyay antway otay eleteday histay avesay?"
|
||||
|
||||
# 00gui.rpy:370
|
||||
# 00gui.rpy:372
|
||||
old "Are you sure you want to overwrite your save?"
|
||||
new "Reaay ouyay uresay ouyay antway otay overwriteay ouryay avesay?"
|
||||
|
||||
# 00gui.rpy:371
|
||||
# 00gui.rpy:373
|
||||
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
|
||||
new "Oadinglay illway oselay unsaveday rogresspay.\nReaay ouyay uresay ouyay antway otay oday histay?"
|
||||
|
||||
# 00gui.rpy:372
|
||||
# 00gui.rpy:374
|
||||
old "Are you sure you want to quit?"
|
||||
new "Reaay ouyay uresay ouyay antway otay uitqay?"
|
||||
|
||||
# 00gui.rpy:373
|
||||
# 00gui.rpy:375
|
||||
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
|
||||
new "Reaay ouyay uresay ouyay antway otay eturnray otay hetay ainmay enumay?\nHistay illway oselay unsaveday rogresspay."
|
||||
|
||||
# 00gui.rpy:374
|
||||
# 00gui.rpy:376
|
||||
old "Are you sure you want to end the replay?"
|
||||
new "Reaay ouyay uresay ouyay antway otay enday hetay eplayray?"
|
||||
|
||||
# 00gui.rpy:375
|
||||
# 00gui.rpy:377
|
||||
old "Are you sure you want to begin skipping?"
|
||||
new "Reaay ouyay uresay ouyay antway otay eginbay kippingsay?"
|
||||
|
||||
# 00gui.rpy:376
|
||||
# 00gui.rpy:378
|
||||
old "Are you sure you want to skip to the next choice?"
|
||||
new "Reaay ouyay uresay ouyay antway otay kipsay otay hetay extnay oicechay?"
|
||||
|
||||
# 00gui.rpy:377
|
||||
# 00gui.rpy:379
|
||||
old "Are you sure you want to skip unseen dialogue to the next choice?"
|
||||
new "Reaay ouyay uresay ouyay antway otay kipsay unseenay ialogueday otay hetay extnay oicechay?"
|
||||
|
||||
@@ -537,15 +545,15 @@ translate piglatin strings:
|
||||
old "mute all"
|
||||
new "utemay allay"
|
||||
|
||||
# 00preferences.rpy:498
|
||||
# 00preferences.rpy:500
|
||||
old "Clipboard voicing enabled. Press 'shift+C' to disable."
|
||||
new "Lipboardcay oicingvay enableday. Resspay 'iftshay+Cay' otay isableday."
|
||||
|
||||
# 00preferences.rpy:500
|
||||
# 00preferences.rpy:502
|
||||
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
|
||||
new "Elfsay-oicingvay ouldway aysay \"[renpy.display.tts.last]\". Resspay 'altay+iftshay+Vay' otay isableday."
|
||||
|
||||
# 00preferences.rpy:502
|
||||
# 00preferences.rpy:504
|
||||
old "Self-voicing enabled. Press 'v' to disable."
|
||||
new "Elfsay-oicingvay enableday. Resspay 'vay' otay isableday."
|
||||
|
||||
|
||||
@@ -221,215 +221,215 @@ translate piglatin strings:
|
||||
old "## The save slot button."
|
||||
new "## Hetay avesay otslay uttonbay."
|
||||
|
||||
# gui.rpy:231
|
||||
# gui.rpy:233
|
||||
old "## The width and height of thumbnails used by the save slots."
|
||||
new "## Hetay idthway anday eighthay ofay humbnailstay useday ybay hetay avesay otsslay."
|
||||
|
||||
# gui.rpy:235
|
||||
# gui.rpy:237
|
||||
old "## The number of columns and rows in the grid of save slots."
|
||||
new "## Hetay umbernay ofay olumnscay anday owsray inay hetay idgray ofay avesay otsslay."
|
||||
|
||||
# gui.rpy:240
|
||||
# gui.rpy:242
|
||||
old "## Positioning and Spacing"
|
||||
new "## Ositioningpay anday Pacingsay"
|
||||
|
||||
# gui.rpy:242
|
||||
# gui.rpy:244
|
||||
old "## These variables control the positioning and spacing of various user interface elements."
|
||||
new "## Hesetay ariablesvay ontrolcay hetay ositioningpay anday pacingsay ofay ariousvay useray interfaceay elementsay."
|
||||
|
||||
# gui.rpy:245
|
||||
# gui.rpy:247
|
||||
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
|
||||
new "## Hetay ositionpay ofay hetay eftlay idesay ofay hetay avigationnay uttonsbay, elativeray otay hetay eftlay idesay ofay hetay creensay."
|
||||
|
||||
# gui.rpy:249
|
||||
# gui.rpy:251
|
||||
old "## The vertical position of the skip indicator."
|
||||
new "## Hetay erticalvay ositionpay ofay hetay kipsay indicatoray."
|
||||
|
||||
# gui.rpy:252
|
||||
# gui.rpy:254
|
||||
old "## The vertical position of the notify screen."
|
||||
new "## Hetay erticalvay ositionpay ofay hetay otifynay creensay."
|
||||
|
||||
# gui.rpy:255
|
||||
# gui.rpy:257
|
||||
old "## The spacing between menu choices."
|
||||
new "## Hetay pacingsay etweenbay enumay oiceschay."
|
||||
|
||||
# gui.rpy:258
|
||||
# gui.rpy:260
|
||||
old "## Buttons in the navigation section of the main and game menus."
|
||||
new "## Uttonsbay inay hetay avigationnay ectionsay ofay hetay ainmay anday amegay enusmay."
|
||||
|
||||
# gui.rpy:261
|
||||
# gui.rpy:263
|
||||
old "## Controls the amount of spacing between preferences."
|
||||
new "## Ontrolscay hetay amountay ofay pacingsay etweenbay referencespay."
|
||||
|
||||
# gui.rpy:264
|
||||
# gui.rpy:266
|
||||
old "## Controls the amount of spacing between preference buttons."
|
||||
new "## Ontrolscay hetay amountay ofay pacingsay etweenbay referencepay uttonsbay."
|
||||
|
||||
# gui.rpy:267
|
||||
# gui.rpy:269
|
||||
old "## The spacing between file page buttons."
|
||||
new "## Hetay pacingsay etweenbay ilefay agepay uttonsbay."
|
||||
|
||||
# gui.rpy:270
|
||||
# gui.rpy:272
|
||||
old "## The spacing between file slots."
|
||||
new "## Hetay pacingsay etweenbay ilefay otsslay."
|
||||
|
||||
# gui.rpy:273
|
||||
# gui.rpy:275
|
||||
old "## The position of the main menu text."
|
||||
new "## Hetay ositionpay ofay hetay ainmay enumay exttay."
|
||||
|
||||
# gui.rpy:277
|
||||
# gui.rpy:279
|
||||
old "## Frames"
|
||||
new "## Ramesfay"
|
||||
|
||||
# gui.rpy:279
|
||||
# gui.rpy:281
|
||||
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
|
||||
new "## Hesetay ariablesvay ontrolcay hetay ooklay ofay amesfray hattay ancay ontaincay useray interfaceay omponentscay henway anay overlayay oray indowway isay otnay resentpay."
|
||||
|
||||
# gui.rpy:282
|
||||
# gui.rpy:284
|
||||
old "## Generic frames."
|
||||
new "## Enericgay amesfray."
|
||||
|
||||
# gui.rpy:285
|
||||
# gui.rpy:287
|
||||
old "## The frame that is used as part of the confirm screen."
|
||||
new "## Hetay amefray hattay isay useday asay artpay ofay hetay onfirmcay creensay."
|
||||
|
||||
# gui.rpy:288
|
||||
# gui.rpy:290
|
||||
old "## The frame that is used as part of the skip screen."
|
||||
new "## Hetay amefray hattay isay useday asay artpay ofay hetay kipsay creensay."
|
||||
|
||||
# gui.rpy:291
|
||||
# gui.rpy:293
|
||||
old "## The frame that is used as part of the notify screen."
|
||||
new "## Hetay amefray hattay isay useday asay artpay ofay hetay otifynay creensay."
|
||||
|
||||
# gui.rpy:294
|
||||
# gui.rpy:296
|
||||
old "## Should frame backgrounds be tiled?"
|
||||
new "## Houldsay amefray ackgroundsbay ebay iledtay?"
|
||||
|
||||
# gui.rpy:298
|
||||
# gui.rpy:300
|
||||
old "## Bars, Scrollbars, and Sliders"
|
||||
new "## Arsbay, Crollbarssay, anday Liderssay"
|
||||
|
||||
# gui.rpy:300
|
||||
# gui.rpy:302
|
||||
old "## These control the look and size of bars, scrollbars, and sliders."
|
||||
new "## Hesetay ontrolcay hetay ooklay anday izesay ofay arsbay, crollbarssay, anday idersslay."
|
||||
|
||||
# gui.rpy:302
|
||||
# gui.rpy:304
|
||||
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
|
||||
new "## Hetay efaultday Uigay onlyay usesay idersslay anday erticalvay crollbarssay. Llaay ofay hetay otheray arsbay areay onlyay useday inay reatorcay-rittenway creenssay."
|
||||
|
||||
# gui.rpy:305
|
||||
# gui.rpy:307
|
||||
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
|
||||
new "## Hetay eighthay ofay orizontalhay arsbay, crollbarssay, anday idersslay. Hetay idthway ofay erticalvay arsbay, crollbarssay, anday idersslay."
|
||||
|
||||
# gui.rpy:311
|
||||
# gui.rpy:313
|
||||
old "## True if bar images should be tiled. False if they should be linearly scaled."
|
||||
new "## Ruetay ifay arbay imagesay ouldshay ebay iledtay. Alsefay ifay heytay ouldshay ebay inearlylay caledsay."
|
||||
|
||||
# gui.rpy:316
|
||||
# gui.rpy:318
|
||||
old "## Horizontal borders."
|
||||
new "## Orizontalhay ordersbay."
|
||||
|
||||
# gui.rpy:321
|
||||
# gui.rpy:323
|
||||
old "## Vertical borders."
|
||||
new "## Erticalvay ordersbay."
|
||||
|
||||
# gui.rpy:326
|
||||
# gui.rpy:328
|
||||
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
|
||||
new "## Hatway otay oday ithway unscrollableay crollbarssay inay hetay uigay. \"idehay\" ideshay hemtay, hileway Onenay owsshay hemtay."
|
||||
|
||||
# gui.rpy:331
|
||||
# gui.rpy:333
|
||||
old "## History"
|
||||
new "## Istoryhay"
|
||||
|
||||
# gui.rpy:333
|
||||
# gui.rpy:335
|
||||
old "## The history screen displays dialogue that the player has already dismissed."
|
||||
new "## Hetay istoryhay creensay isplaysday ialogueday hattay hetay ayerplay ashay alreadyay ismissedday."
|
||||
|
||||
# gui.rpy:335
|
||||
# gui.rpy:337
|
||||
old "## The number of blocks of dialogue history Ren'Py will keep."
|
||||
new "## Hetay umbernay ofay ocksblay ofay ialogueday istoryhay Enray'Ypay illway eepkay."
|
||||
|
||||
# gui.rpy:338
|
||||
# gui.rpy:340
|
||||
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
|
||||
new "## Hetay eighthay ofay aay istoryhay creensay entryay, oray Onenay otay akemay hetay eighthay ariablevay atay hetay ostcay ofay erformancepay."
|
||||
|
||||
# gui.rpy:342
|
||||
# gui.rpy:344
|
||||
old "## The position, width, and alignment of the label giving the name of the speaking character."
|
||||
new "## Hetay ositionpay, idthway, anday alignmentay ofay hetay abellay ivinggay hetay amenay ofay hetay peakingsay aracterchay."
|
||||
|
||||
# gui.rpy:349
|
||||
# gui.rpy:351
|
||||
old "## The position, width, and alignment of the dialogue text."
|
||||
new "## Hetay ositionpay, idthway, anday alignmentay ofay hetay ialogueday exttay."
|
||||
|
||||
# gui.rpy:356
|
||||
# gui.rpy:358
|
||||
old "## NVL-Mode"
|
||||
new "## Vlnay-Odemay"
|
||||
|
||||
# gui.rpy:358
|
||||
# gui.rpy:360
|
||||
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
|
||||
new "## Hetay Vlnay-odemay creensay isplaysday hetay ialogueday pokensay ybay Vlnay-odemay aracterschay."
|
||||
|
||||
# gui.rpy:360
|
||||
# gui.rpy:362
|
||||
old "## The borders of the background of the NVL-mode background window."
|
||||
new "## Hetay ordersbay ofay hetay ackgroundbay ofay hetay Vlnay-odemay ackgroundbay indowway."
|
||||
|
||||
# gui.rpy:363
|
||||
# gui.rpy:365
|
||||
old "## The maximum number of NVL-mode entries Ren'Py will display. When more entries than this are to be show, the oldest entry will be removed."
|
||||
new "## Hetay aximummay umbernay ofay Vlnay-odemay entriesay Enray'Ypay illway isplayday. Henway oremay entriesay hantay histay areay otay ebay owshay, hetay oldestay entryay illway ebay emovedray."
|
||||
|
||||
# gui.rpy:367
|
||||
# gui.rpy:369
|
||||
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
|
||||
new "## Hetay eighthay ofay anay Vlnay-odemay entryay. Etsay histay otay Onenay otay avehay hetay entriesay ynamicallyday adjustay eighthay."
|
||||
|
||||
# gui.rpy:371
|
||||
# gui.rpy:373
|
||||
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
|
||||
new "## Hetay pacingsay etweenbay Vlnay-odemay entriesay henway uigay.vl_heightnay isay Onenay, anday etweenbay Vlnay-odemay entriesay anday anay Vlnay-odemay enumay."
|
||||
|
||||
# gui.rpy:388
|
||||
# gui.rpy:390
|
||||
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
|
||||
new "## Hetay ositionpay, idthway, anday alignmentay ofay vl_thoughtnay exttay (hetay exttay aidsay ybay hetay vl_narratornay aracterchay.)"
|
||||
|
||||
# gui.rpy:395
|
||||
# gui.rpy:397
|
||||
old "## The position of nvl menu_buttons."
|
||||
new "## Hetay ositionpay ofay vlnay enu_buttonsmay."
|
||||
|
||||
# gui.rpy:399
|
||||
# gui.rpy:401
|
||||
old "## Localization"
|
||||
new "## Ocalizationlay"
|
||||
|
||||
# gui.rpy:401
|
||||
# gui.rpy:403
|
||||
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
|
||||
new "## Histay ontrolscay hereway aay inelay eakbray isay ermittedpay. Hetay efaultday isay uitablesay orfay ostmay anguageslay. Aay istlay ofay availableay aluesvay ancay ebay oundfay atay ttpshay://wwway.enpyray.orgay/ocday/tmlhay/yle_propertiesstay.tmlhay#ylestay-ropertypay-anguagelay"
|
||||
|
||||
# gui.rpy:409
|
||||
# gui.rpy:411
|
||||
old "## Mobile devices"
|
||||
new "## Obilemay evicesday"
|
||||
|
||||
# gui.rpy:414
|
||||
# gui.rpy:416
|
||||
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
|
||||
new "## Histay increasesay hetay izesay ofay hetay uickqay uttonsbay otay akemay hemtay easieray otay ouchtay onay abletstay anday onesphay."
|
||||
|
||||
# gui.rpy:420
|
||||
# gui.rpy:422
|
||||
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
|
||||
new "## Histay angeschay hetay izesay anday pacingsay ofay ariousvay Uigay elementsay otay ensureay heytay areay easilyay isiblevay onay onesphay."
|
||||
|
||||
# gui.rpy:424
|
||||
# gui.rpy:426
|
||||
old "## Font sizes."
|
||||
new "## Ontfay izessay."
|
||||
|
||||
# gui.rpy:432
|
||||
# gui.rpy:434
|
||||
old "## Adjust the location of the textbox."
|
||||
new "## Djustaay hetay ocationlay ofay hetay extboxtay."
|
||||
|
||||
# gui.rpy:438
|
||||
# gui.rpy:440
|
||||
old "## Change the size and spacing of various things."
|
||||
new "## Hangecay hetay izesay anday pacingsay ofay ariousvay hingstay."
|
||||
|
||||
# gui.rpy:451
|
||||
# gui.rpy:453
|
||||
old "## File button layout."
|
||||
new "## Ilefay uttonbay ayoutlay."
|
||||
|
||||
# gui.rpy:455
|
||||
# gui.rpy:457
|
||||
old "## NVL-mode."
|
||||
new "## Vlnay-odemay."
|
||||
|
||||
|
||||
@@ -569,75 +569,75 @@ translate piglatin strings:
|
||||
old "Please click on the color scheme you wish to use, then click Continue. These colors can be changed and customized later."
|
||||
new "Leasepay ickclay onay hetay olorcay chemesay ouyay ishway otay useay, hentay ickclay Ontinuecay. Hesetay olorscay ancay ebay angedchay anday ustomizedcay aterlay."
|
||||
|
||||
# gui7.rpy:310
|
||||
# gui7.rpy:311
|
||||
old "{b}Warning{/b}\nContinuing will overwrite customized bar, button, save slot, scrollbar, and slider images.\n\nWhat would you like to do?"
|
||||
new "{b}Arningway{/b}\nOntinuingcay illway overwriteay ustomizedcay arbay, uttonbay, avesay otslay, crollbarsay, anday iderslay imagesay.\n\nHatway ouldway ouyay ikelay otay oday?"
|
||||
|
||||
# gui7.rpy:310
|
||||
# gui7.rpy:311
|
||||
old "Choose new colors, then regenerate image files."
|
||||
new "Hoosecay ewnay olorscay, hentay egenerateray imageay ilesfay."
|
||||
|
||||
# gui7.rpy:310
|
||||
# gui7.rpy:311
|
||||
old "Regenerate the image files using the colors in gui.rpy."
|
||||
new "Egenerateray hetay imageay ilesfay usingay hetay olorscay inay uigay.pyray."
|
||||
|
||||
# gui7.rpy:330
|
||||
# gui7.rpy:331
|
||||
old "PROJECT NAME"
|
||||
new "Rojectpay Amenay"
|
||||
|
||||
# gui7.rpy:330
|
||||
# gui7.rpy:331
|
||||
old "Please enter the name of your project:"
|
||||
new "Leasepay enteray hetay amenay ofay ouryay rojectpay:"
|
||||
|
||||
# gui7.rpy:338
|
||||
# gui7.rpy:339
|
||||
old "The project name may not be empty."
|
||||
new "Hetay rojectpay amenay aymay otnay ebay emptyay."
|
||||
|
||||
# gui7.rpy:343
|
||||
# gui7.rpy:344
|
||||
old "[project_name!q] already exists. Please choose a different project name."
|
||||
new "[project_name!q] alreadyay existsay. Leasepay oosechay aay ifferentday rojectpay amenay."
|
||||
|
||||
# gui7.rpy:346
|
||||
# gui7.rpy:347
|
||||
old "[project_dir!q] already exists. Please choose a different project name."
|
||||
new "[project_dir!q] alreadyay existsay. Leasepay oosechay aay ifferentday rojectpay amenay."
|
||||
|
||||
# gui7.rpy:357
|
||||
# gui7.rpy:358
|
||||
old "What resolution should the project use? Although Ren'Py can scale the window up and down, this is the initial size of the window, the size at which assets should be drawn, and the size at which the assets will be at their sharpest.\n\nThe default of 1280x720 is a reasonable compromise."
|
||||
new "Hatway esolutionray ouldshay hetay rojectpay useay? Lthoughaay Enray'Ypay ancay calesay hetay indowway upay anday ownday, histay isay hetay initialay izesay ofay hetay indowway, hetay izesay atay hichway assetsay ouldshay ebay rawnday, anday hetay izesay atay hichway hetay assetsay illway ebay atay heirtay arpestshay.\n\nHetay efaultday ofay 280x7201ay isay aay easonableray ompromisecay."
|
||||
|
||||
# gui7.rpy:357
|
||||
# gui7.rpy:358
|
||||
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
|
||||
new "Ustomcay. Hetay Uigay isay optimizeday orfay aay 61ay:9ay aspectay atioray."
|
||||
|
||||
# gui7.rpy:372
|
||||
# gui7.rpy:373
|
||||
old "WIDTH"
|
||||
new "Idthway"
|
||||
|
||||
# gui7.rpy:372
|
||||
# gui7.rpy:373
|
||||
old "Please enter the width of your game, in pixels."
|
||||
new "Leasepay enteray hetay idthway ofay ouryay amegay, inay ixelspay."
|
||||
|
||||
# gui7.rpy:377
|
||||
# gui7.rpy:378
|
||||
old "The width must be a number."
|
||||
new "Hetay idthway ustmay ebay aay umbernay."
|
||||
|
||||
# gui7.rpy:379
|
||||
# gui7.rpy:380
|
||||
old "HEIGHT"
|
||||
new "Eighthay"
|
||||
|
||||
# gui7.rpy:379
|
||||
# gui7.rpy:380
|
||||
old "Please enter the height of your game, in pixels."
|
||||
new "Leasepay enteray hetay eighthay ofay ouryay amegay, inay ixelspay."
|
||||
|
||||
# gui7.rpy:384
|
||||
# gui7.rpy:385
|
||||
old "The height must be a number."
|
||||
new "Hetay eighthay ustmay ebay aay umbernay."
|
||||
|
||||
# gui7.rpy:426
|
||||
# gui7.rpy:427
|
||||
old "Creating the new project..."
|
||||
new "Reatingcay hetay ewnay rojectpay..."
|
||||
|
||||
# gui7.rpy:428
|
||||
# gui7.rpy:429
|
||||
old "Updating the project..."
|
||||
new "Pdatinguay hetay rojectpay..."
|
||||
|
||||
@@ -933,91 +933,91 @@ translate piglatin strings:
|
||||
old "Please select a template to use for your new project. The template sets the default font and the user interface language. If your language is not supported, choose 'english'."
|
||||
new "Leasepay electsay aay emplatetay otay useay orfay ouryay ewnay rojectpay. Hetay emplatetay etssay hetay efaultday ontfay anday hetay useray interfaceay anguagelay. Fiay ouryay anguagelay isay otnay upportedsay, oosechay 'englishay'."
|
||||
|
||||
# preferences.rpy:72
|
||||
# preferences.rpy:73
|
||||
old "Launcher Preferences"
|
||||
new "Auncherlay Referencespay"
|
||||
|
||||
# preferences.rpy:93
|
||||
# preferences.rpy:94
|
||||
old "Projects Directory:"
|
||||
new "Rojectspay Irectoryday:"
|
||||
|
||||
# preferences.rpy:100
|
||||
# preferences.rpy:101
|
||||
old "[persistent.projects_directory!q]"
|
||||
new "[persistent.projects_directory!q]"
|
||||
|
||||
# preferences.rpy:102
|
||||
# preferences.rpy:103
|
||||
old "Projects directory: [text]"
|
||||
new "Rojectspay irectoryday: [text]"
|
||||
|
||||
# preferences.rpy:104
|
||||
# preferences.rpy:105
|
||||
old "Not Set"
|
||||
new "Otnay Etsay"
|
||||
|
||||
# preferences.rpy:119
|
||||
# preferences.rpy:120
|
||||
old "Text Editor:"
|
||||
new "Exttay Ditoreay:"
|
||||
|
||||
# preferences.rpy:125
|
||||
# preferences.rpy:126
|
||||
old "Text editor: [text]"
|
||||
new "Exttay editoray: [text]"
|
||||
|
||||
# preferences.rpy:141
|
||||
# preferences.rpy:142
|
||||
old "Update Channel:"
|
||||
new "Pdateuay Hannelcay:"
|
||||
|
||||
# preferences.rpy:161
|
||||
# preferences.rpy:162
|
||||
old "Navigation Options:"
|
||||
new "Avigationnay Ptionsoay:"
|
||||
|
||||
# preferences.rpy:165
|
||||
# preferences.rpy:166
|
||||
old "Include private names"
|
||||
new "Ncludeiay rivatepay amesnay"
|
||||
|
||||
# preferences.rpy:166
|
||||
# preferences.rpy:167
|
||||
old "Include library names"
|
||||
new "Ncludeiay ibrarylay amesnay"
|
||||
|
||||
# preferences.rpy:176
|
||||
# preferences.rpy:177
|
||||
old "Launcher Options:"
|
||||
new "Auncherlay Ptionsoay:"
|
||||
|
||||
# preferences.rpy:180
|
||||
# preferences.rpy:181
|
||||
old "Hardware rendering"
|
||||
new "Ardwarehay enderingray"
|
||||
|
||||
# preferences.rpy:181
|
||||
# preferences.rpy:182
|
||||
old "Show edit file section"
|
||||
new "Howsay editay ilefay ectionsay"
|
||||
|
||||
# preferences.rpy:182
|
||||
# preferences.rpy:183
|
||||
old "Large fonts"
|
||||
new "Argelay ontsfay"
|
||||
|
||||
# preferences.rpy:185
|
||||
# preferences.rpy:186
|
||||
old "Console output"
|
||||
new "Onsolecay outputay"
|
||||
|
||||
# preferences.rpy:187
|
||||
# preferences.rpy:190
|
||||
old "Force new tutorial"
|
||||
new "Orcefay ewnay utorialtay"
|
||||
|
||||
# preferences.rpy:189
|
||||
# preferences.rpy:194
|
||||
old "Legacy options"
|
||||
new "Egacylay optionsay"
|
||||
|
||||
# preferences.rpy:192
|
||||
# preferences.rpy:197
|
||||
old "Show templates"
|
||||
new "Howsay emplatestay"
|
||||
|
||||
# preferences.rpy:194
|
||||
# preferences.rpy:199
|
||||
old "Sponsor message"
|
||||
new "Ponsorsay essagemay"
|
||||
|
||||
# preferences.rpy:214
|
||||
# preferences.rpy:219
|
||||
old "Open launcher project"
|
||||
new "Penoay auncherlay rojectpay"
|
||||
|
||||
# preferences.rpy:228
|
||||
# preferences.rpy:233
|
||||
old "Language:"
|
||||
new "Anguagelay:"
|
||||
|
||||
@@ -1049,23 +1049,23 @@ translate piglatin strings:
|
||||
old "Ren'Py is scanning the project..."
|
||||
new "Enray'Ypay isay canningsay hetay rojectpay..."
|
||||
|
||||
# project.rpy:725
|
||||
# project.rpy:728
|
||||
old "Launching"
|
||||
new "Aunchinglay"
|
||||
|
||||
# project.rpy:759
|
||||
# project.rpy:762
|
||||
old "PROJECTS DIRECTORY"
|
||||
new "Rojectspay Irectoryday"
|
||||
|
||||
# project.rpy:759
|
||||
# project.rpy:762
|
||||
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
|
||||
new "Leasepay oosechay hetay rojectspay irectoryday usingay hetay irectoryday ooserchay.\n{b}Hetay irectoryday ooserchay aymay avehay openeday ehindbay histay indowway.{/b}"
|
||||
|
||||
# project.rpy:759
|
||||
# project.rpy:762
|
||||
old "This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."
|
||||
new "Histay auncherlay illway cansay orfay rojectspay inay histay irectoryday, illway reatecay ewnay rojectspay inay histay irectoryday, anday illway aceplay uiltbay rojectspay intoay histay irectoryday."
|
||||
|
||||
# project.rpy:764
|
||||
# project.rpy:767
|
||||
old "Ren'Py has set the projects directory to:"
|
||||
new "Enray'Ypay ashay etsay hetay rojectspay irectoryday otay:"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# _developer/developer.rpym:38
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# about.rpy:39
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# _layout/classic_joystick_preferences.rpym:94
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
translate russian strings:
|
||||
|
||||
# options.rpy:1
|
||||
|
||||
@@ -134,6 +134,7 @@ style_properties = sorted_dict(
|
||||
aft_bar='none_is_null',
|
||||
aft_gutter=None,
|
||||
alt=None,
|
||||
altruby_style=None,
|
||||
antialias=None,
|
||||
vertical=None,
|
||||
background='renpy.easy.displayable_or_none',
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
../help.html
|
||||
|
Before Width: | Height: | Size: 505 B |
|
Before Width: | Height: | Size: 218 KiB |
|
Before Width: | Height: | Size: 125 KiB |
@@ -1,99 +0,0 @@
|
||||
# This file demonstrates how Character objects can be used to customize the
|
||||
# display of text.
|
||||
|
||||
init:
|
||||
# With a nestled click-to-continue indicator.
|
||||
$ ectc = Character(_('Eileen'),
|
||||
color="#c8ffc8",
|
||||
ctc=anim.Blink("arrow.png"))
|
||||
|
||||
|
||||
# With a fixed-position ctc indicator.
|
||||
$ ectcf = Character(_('Eileen'),
|
||||
color="#c8ffc8",
|
||||
ctc=anim.Filmstrip("sakura.png", (20, 20), (2, 1), .30, xpos=760, ypos=560, xanchor=0, yanchor=0),
|
||||
ctc_position="fixed")
|
||||
|
||||
# With quotes around text.
|
||||
$ equote = Character(_('Eileen'),
|
||||
color="#c8ffc8",
|
||||
who_suffix = ':',
|
||||
what_prefix='"',
|
||||
what_suffix='"')
|
||||
|
||||
# Weird-looking.
|
||||
$ eweird = Character(_('Eileen'),
|
||||
color="#c8ffc8",
|
||||
what_underline=True,
|
||||
window_left_margin=200,
|
||||
window_yminimum=300)
|
||||
|
||||
# Two-window mode.
|
||||
$ etwo = Character(_('Eileen'),
|
||||
color="#c8ffc8",
|
||||
show_two_window=True)
|
||||
|
||||
# Image on the side.
|
||||
$ eside = Character(_('Eileen'),
|
||||
color="#c8ffc8",
|
||||
window_left_padding=160,
|
||||
show_side_image=Image("eileen_side.png", xalign=0.0, yalign=1.0))
|
||||
|
||||
label demo_character:
|
||||
|
||||
|
||||
e "The Character object is used to declare characters, and it can also be used to customize the way in which a character speaks."
|
||||
|
||||
e "By supplying it with the appropriate arguments, we can really change around the feel of the game."
|
||||
|
||||
e "In this section, we'll demonstrate some of what can be accomplished by customizing character objects."
|
||||
|
||||
equote "By supplying what_prefix and what_suffix arguments to a Character object, we can automatically add things before each line of text."
|
||||
|
||||
equote "This is a lot easier than having to put those quotes in by hand."
|
||||
|
||||
equote "We can also use who_prefix and who_suffix to add text to the name of the speaker."
|
||||
|
||||
e "We can also supply arguments to the Character object that customize the look of the character name, the text that is being said, and the window itself."
|
||||
|
||||
eweird "These can really change the look of the game."
|
||||
|
||||
eside "A more practical use of that is in conjunction with show_side_image, which lets us position an image next to the text."
|
||||
|
||||
etwo "There's also show_two_window, which puts the character's name in its own window."
|
||||
|
||||
ectc "Finally, we demonstrate a click to continue indicator. In this example, it's nestled in with the text."
|
||||
|
||||
ectcf "A click to continue image can also be placed at a fixed location on the screen."
|
||||
|
||||
e "There's a lot more you can do with Character, as it lets you set style properties on all of the displayed text."
|
||||
|
||||
e "Finally, let me point out a couple of special characters we pre-define."
|
||||
|
||||
show black
|
||||
with dissolve
|
||||
|
||||
centered "The \"centered\" character shows text at the center of the screen, without a window."
|
||||
|
||||
centered "It's just a highly customized normal character, that's useful for dates and titles."
|
||||
|
||||
hide black
|
||||
with dissolve
|
||||
|
||||
e "The \"extend\" character is very special."
|
||||
|
||||
e "It lets you"
|
||||
|
||||
show eileen vhappy
|
||||
|
||||
extend " extend the previous dialogue"
|
||||
|
||||
show eileen happy
|
||||
|
||||
extend " with additional text."
|
||||
|
||||
e "That lets you have things happen in the middle of text. If you didn't notice, I was changing my expression."
|
||||
|
||||
e "Hopefully, these characters, along with the ones you define, will lead to a very expressive game."
|
||||
|
||||
return
|
||||
@@ -1,38 +0,0 @@
|
||||
# This file demonstrates how to use DynamicDisplayable to make parts of the
|
||||
# display that update without there being an interaction.
|
||||
|
||||
init:
|
||||
python:
|
||||
|
||||
# This function will run a countdown of the given length. It will
|
||||
# be white until 5 seconds are left, and then red until 0 seconds are
|
||||
# left, and then will blink 0.0 when time is up.
|
||||
def countdown(st, at, length=0.0):
|
||||
|
||||
remaining = length - st
|
||||
|
||||
if remaining > 5.0:
|
||||
return Text("%.1f" % remaining, color="#fff", size=72), .1
|
||||
elif remaining > 0.0:
|
||||
return Text("%.1f" % remaining, color="#f00", size=72), .1
|
||||
else:
|
||||
return anim.Blink(Text("0.0", color="#f00", size=72)), None
|
||||
|
||||
# Show a countdown for 10 seconds.
|
||||
image countdown = DynamicDisplayable(countdown, length=10.0)
|
||||
|
||||
|
||||
label demo_dynamic:
|
||||
|
||||
e "The DynamicDisplayable function lets you change what's displayed over the course of an interaction."
|
||||
|
||||
show countdown at Position(xalign=.1, yalign=.1)
|
||||
|
||||
e "This makes it possible to display things like countdown timers and progress bars."
|
||||
|
||||
e "Remember, people read at different speeds, so it's probably better to use this for flavor, rather then to make games time-sensitive."
|
||||
|
||||
hide countdown
|
||||
with dissolve
|
||||
|
||||
return
|
||||
@@ -1,204 +0,0 @@
|
||||
# This file demonstrates the use of image operators.
|
||||
|
||||
init:
|
||||
image logo base = "logo.png"
|
||||
|
||||
image logo crop = im.Crop("logo.png", 0, 0, 100, 307)
|
||||
|
||||
image logo scale = im.Scale("logo.png", 100, 150)
|
||||
|
||||
image logo factorscale = im.FactorScale("logo.png", 1.5, 1.5)
|
||||
|
||||
image logo composite = im.Composite((200, 407),
|
||||
(0, 0), "logo.png",
|
||||
(0, 50), "logo.png",
|
||||
(0, 100), "logo.png")
|
||||
|
||||
image logo livecomposite = LiveComposite((200, 407),
|
||||
(0, 0), anim.Blink(Image("logo.png")),
|
||||
(0, 50), "logo.png",
|
||||
(0, 100), "logo.png")
|
||||
|
||||
image logo green = im.Map("logo.png", rmap=im.ramp(0, 0))
|
||||
|
||||
image logo green2 = im.Recolor("logo.png", 0, 255, 255, 255)
|
||||
|
||||
image logo alpha = im.Alpha("logo.png", 0.5)
|
||||
|
||||
image logo blackwhite = "logobw.png"
|
||||
|
||||
image logo twocolor = im.Twocolor("logobw.png",
|
||||
(128, 255, 255, 255),
|
||||
(255, 0, 0, 255))
|
||||
|
||||
|
||||
image eileen alpha = im.Alpha("images/eileen happy.png", 0.5)
|
||||
|
||||
image eileen flip = im.Flip("images/eileen happy.png", vertical=True)
|
||||
|
||||
|
||||
image logo halfsat = im.MatrixColor("logo.png",
|
||||
im.matrix.saturation(.5))
|
||||
|
||||
# This could be better done with im.matrix.invert(), but I want to show
|
||||
# how to use a matrix.
|
||||
image logo invert = im.MatrixColor("logo.png",
|
||||
[ -1, 0, 0, 0, 1,
|
||||
0, -1, 0, 0, 1,
|
||||
0, 0, -1, 0, 1,
|
||||
0, 0, 0, 1, 0, ])
|
||||
|
||||
image logo tintblue = im.MatrixColor("logo.png",
|
||||
im.matrix.saturation(.5) * im.matrix.tint(.75, .75, 1.0))
|
||||
|
||||
image logo hue = im.MatrixColor("logo.png",
|
||||
im.matrix.hue(90))
|
||||
|
||||
image logo bright = im.MatrixColor("logo.png",
|
||||
im.matrix.brightness(.5))
|
||||
|
||||
image logo sepia = im.Sepia("logo.png")
|
||||
|
||||
image logo grayscale = im.Grayscale("logo.png")
|
||||
|
||||
|
||||
$ logopos = Position(xpos=.5, xanchor=0, ypos=50, yanchor=0)
|
||||
|
||||
label demo_imageops:
|
||||
|
||||
e "Image operations allow us to manipulate images as they are loaded in."
|
||||
|
||||
e "They're efficient, as they are only evaluated when an image is first loaded."
|
||||
|
||||
e "This way, there's no extra work that needs to be done when each frame is drawn to the screen."
|
||||
|
||||
show eileen happy at left
|
||||
with move
|
||||
show logo base at logopos
|
||||
with dissolve
|
||||
|
||||
e "Let me show you a test image, the Ren'Py logo."
|
||||
|
||||
e "We'll be applying some image operations to it, to see how they can be used."
|
||||
|
||||
show logo crop at logopos
|
||||
with dissolve
|
||||
|
||||
e "The im.Crop operation can take the image, and chop it up into a smaller image."
|
||||
|
||||
show logo composite at logopos
|
||||
with dissolve
|
||||
|
||||
e "The im.Composite operation lets us take multiple images, and draw them into a single image."
|
||||
|
||||
e "While you can do this by showing multiple images, this is often more efficient."
|
||||
|
||||
show logo livecomposite at logopos
|
||||
with dissolve
|
||||
|
||||
e "There's also LiveComposite, which is less efficent, but allows for animation."
|
||||
|
||||
e "It isn't really an image operation, but we don't know where else to put it."
|
||||
|
||||
show logo scale at logopos
|
||||
with dissolve
|
||||
|
||||
e "The im.Scale operation lets us scale an image to a particular size."
|
||||
|
||||
show logo factorscale at logopos
|
||||
with dissolve
|
||||
|
||||
e "im.FactorScale lets us do the same thing, except to a factor of the original size."
|
||||
|
||||
show logo green at logopos
|
||||
with dissolve
|
||||
|
||||
e "The im.Map operation lets us mess with the red, green, blue, and alpha channels of an image."
|
||||
|
||||
e "In this case, we removed all the red from the image, leaving only the blue and green channels."
|
||||
|
||||
show logo base at logopos
|
||||
with dissolve
|
||||
show logo green2 at logopos
|
||||
with dissolve
|
||||
|
||||
e "The im.Recolor operation can do the same thing, but is more efficient when we're linearly mapping colors."
|
||||
|
||||
show logo blackwhite at logopos
|
||||
with dissolve
|
||||
|
||||
e "The im.Twocolor operation lets you take a black and white image, like this one..."
|
||||
|
||||
show logo twocolor at logopos
|
||||
with dissolve
|
||||
|
||||
e "... and assign colors to replace black and white."
|
||||
|
||||
show logo halfsat at logopos
|
||||
with dissolve
|
||||
|
||||
e "The im.MatrixColor operation lets you use a matrix to alter the colors. With the right matrix, you can desaturate colors..."
|
||||
|
||||
show logo tintblue at logopos
|
||||
with dissolve
|
||||
|
||||
e "... tint the image blue..."
|
||||
|
||||
show logo hue at logopos
|
||||
with dissolve
|
||||
|
||||
e "... rotate the hue... "
|
||||
|
||||
show logo invert at logopos
|
||||
with dissolve
|
||||
|
||||
e "... or invert the colors, for a kinda scary look."
|
||||
|
||||
show logo bright at logopos
|
||||
with dissolve
|
||||
|
||||
e "It can even adjust brightness and contrast."
|
||||
|
||||
e "We've made some of the most common matrices into image operators."
|
||||
|
||||
show logo grayscale at logopos
|
||||
with dissolve
|
||||
|
||||
e "im.Grayscale can make an image grayscale..."
|
||||
|
||||
show logo sepia at logopos
|
||||
with dissolve
|
||||
|
||||
e "... while im.Sepia can sepia-tone an image."
|
||||
|
||||
show logo base at logopos
|
||||
with dissolve
|
||||
show logo alpha at logopos
|
||||
with dissolve
|
||||
|
||||
e "The im.Alpha operation can adjust the alpha channel on an image, making things partially transparent."
|
||||
|
||||
show eileen alpha at left
|
||||
with dissolve
|
||||
|
||||
e "It's useful if a character just happens to be ghost."
|
||||
|
||||
hide logo
|
||||
show eileen happy at left
|
||||
with dissolve
|
||||
|
||||
e "But that isn't the case with me."
|
||||
|
||||
show eileen happy
|
||||
with move
|
||||
show eileen flip
|
||||
with dissolve
|
||||
|
||||
e "Finally, there's im.Flip, which can flip an image horizontally or vertically."
|
||||
|
||||
e "I think the less I say about this, the better."
|
||||
|
||||
show eileen happy
|
||||
with dissolve
|
||||
|
||||
return
|
||||
@@ -1,92 +0,0 @@
|
||||
# Code that demonstrates layers and advanced show.
|
||||
|
||||
init:
|
||||
|
||||
# Declare a layer, 'demo', that lives just above the default 'master'
|
||||
# layer.
|
||||
$ config.layers.insert(1, 'demo')
|
||||
|
||||
# Make it so that it only takes up part of the screen.
|
||||
$ config.layer_clipping['demo'] = (50, 50, 700, 500)
|
||||
|
||||
|
||||
label demo_layers:
|
||||
|
||||
e "Ren'Py lets you define layers, and show images on specific layers."
|
||||
|
||||
hide eileen
|
||||
with dissolve
|
||||
|
||||
show bg whitehouse onlayer demo
|
||||
with dissolve
|
||||
|
||||
show eileen happy onlayer demo
|
||||
with dissolve
|
||||
|
||||
e "The \"onlayer\" clause of the scene, show, and hide statements lets us pick which layers the commands affect."
|
||||
|
||||
e "As you can see, layers do not have to take up the entire screen. When a layer doesn't, images are clipped to the layer."
|
||||
|
||||
scene onlayer demo
|
||||
show eileen happy
|
||||
with dissolve
|
||||
|
||||
e "The \"as\" clause lets you change the tag of an image."
|
||||
|
||||
show eileen happy as eileen2
|
||||
with None
|
||||
|
||||
show eileen happy at left
|
||||
show eileen happy at right as eileen2
|
||||
with move
|
||||
|
||||
e "This is useful when you want to show two copies of the same image."
|
||||
|
||||
e "Or if a character has a twin."
|
||||
|
||||
show eileen happy at center
|
||||
show eileen happy at offscreenright as eileen2
|
||||
with move
|
||||
|
||||
hide eileen2
|
||||
|
||||
show expression Text(_("This is text."), size=50, yalign=0.5, xalign=0.5, drop_shadow=(2, 2)) as text
|
||||
with dissolve
|
||||
|
||||
e "You can use \"show expression\" to show things that aren't just images, like text."
|
||||
|
||||
hide text
|
||||
with dissolve
|
||||
|
||||
show logo base at Position(xalign=0.6, yalign=0.0) behind eileen
|
||||
with dissolve
|
||||
|
||||
e "The \"behind\" clause lets you place an image behind another."
|
||||
|
||||
hide logo base
|
||||
show eileen happy
|
||||
with dissolve
|
||||
|
||||
show layer master:
|
||||
xalign 0.5
|
||||
yalign 0.5
|
||||
linear 0.75 rotate 180.0
|
||||
|
||||
pause 0.75
|
||||
|
||||
e "Finally, the \"show layer\" statement allows you to apply a transform to an entire layer."
|
||||
|
||||
show layer master:
|
||||
xalign 0.5
|
||||
yalign 0.5
|
||||
rotate 180.0
|
||||
linear 0.75 rotate 360.0
|
||||
|
||||
pause 0.75
|
||||
|
||||
# Cancels the layer transform.
|
||||
show layer master
|
||||
|
||||
e "And that's it for layers and advanced show."
|
||||
|
||||
return
|
||||
@@ -1,266 +0,0 @@
|
||||
init:
|
||||
|
||||
image bg pong field = "pong_field.png"
|
||||
|
||||
python:
|
||||
|
||||
class PongDisplayable(renpy.Displayable):
|
||||
|
||||
def __init__(self):
|
||||
|
||||
renpy.Displayable.__init__(self)
|
||||
|
||||
# Some displayables we use.
|
||||
self.paddle = Image("pong.png")
|
||||
self.ball = Image("pong_ball.png")
|
||||
self.player = Text(_("Player"), size=36)
|
||||
self.eileen = Text(_("Eileen"), size=36)
|
||||
self.ctb = Text(_("Click to Begin"), size=36)
|
||||
|
||||
# The sizes of some of the images.
|
||||
self.PADDLE_WIDTH = 8
|
||||
self.PADDLE_HEIGHT = 79
|
||||
self.BALL_WIDTH = 15
|
||||
self.BALL_HEIGHT = 15
|
||||
self.COURT_TOP = 108
|
||||
self.COURT_BOTTOM = 543
|
||||
|
||||
# If the ball is stuck to the paddle.
|
||||
self.stuck = True
|
||||
|
||||
# The positions of the two paddles.
|
||||
self.playery = (self.COURT_BOTTOM - self.COURT_TOP) / 2
|
||||
self.computery = self.playery
|
||||
|
||||
# The speed of the computer.
|
||||
self.computerspeed = 350.0
|
||||
|
||||
# The position, dental-position, and the speed of the
|
||||
# ball.
|
||||
self.bx = 88
|
||||
self.by = self.playery
|
||||
self.bdx = .5
|
||||
self.bdy = .5
|
||||
self.bspeed = 300.0
|
||||
|
||||
# The time of the past render-frame.
|
||||
self.oldst = None
|
||||
|
||||
# The winner.
|
||||
self.winner = None
|
||||
|
||||
def visit(self):
|
||||
return [ self.paddle, self.ball, self.player, self.eileen, self.ctb ]
|
||||
|
||||
# Recomputes the position of the ball, handles bounces, and
|
||||
# draws the screen.
|
||||
def render(self, width, height, st, at):
|
||||
|
||||
# The Render object we'll be drawing into.
|
||||
r = renpy.Render(width, height)
|
||||
|
||||
# Figure out the time elapsed since the previous frame.
|
||||
if self.oldst is None:
|
||||
self.oldst = st
|
||||
|
||||
dtime = st - self.oldst
|
||||
self.oldst = st
|
||||
|
||||
# Figure out where we want to move the ball to.
|
||||
speed = dtime * self.bspeed
|
||||
oldbx = self.bx
|
||||
|
||||
if self.stuck:
|
||||
self.by = self.playery
|
||||
else:
|
||||
self.bx += self.bdx * speed
|
||||
self.by += self.bdy * speed
|
||||
|
||||
# Move the computer's paddle. It wants to go to self.by, but
|
||||
# may be limited by it's speed limit.
|
||||
cspeed = self.computerspeed * dtime
|
||||
if abs(self.by - self.computery) <= cspeed:
|
||||
self.computery = self.by
|
||||
else:
|
||||
self.computery += cspeed * (self.by - self.computery) / abs(self.by - self.computery)
|
||||
|
||||
# Handle bounces.
|
||||
|
||||
# Bounce off of top.
|
||||
ball_top = self.COURT_TOP + self.BALL_HEIGHT / 2
|
||||
if self.by < ball_top:
|
||||
self.by = ball_top + (ball_top - self.by)
|
||||
self.bdy = -self.bdy
|
||||
renpy.sound.play("pong_beep.wav", channel=0)
|
||||
|
||||
# Bounce off bottom.
|
||||
ball_bot = self.COURT_BOTTOM - self.BALL_HEIGHT / 2
|
||||
if self.by > ball_bot:
|
||||
self.by = ball_bot - (self.by - ball_bot)
|
||||
self.bdy = -self.bdy
|
||||
renpy.sound.play("pong_beep.wav", channel=0)
|
||||
|
||||
# This draws a paddle, and checks for bounces.
|
||||
def paddle(px, py, hotside):
|
||||
|
||||
# Render the paddle image. We give it an 800x600 area
|
||||
# to render into, knowing that images will render smaller.
|
||||
# (This isn't the case with all displayables. Solid, Frame,
|
||||
# and Fixed will expand to fill the space allotted.)
|
||||
# We also pass in st and at.
|
||||
pi = renpy.render(self.paddle, 800, 600, st, at)
|
||||
|
||||
# renpy.render returns a Render object, which we can
|
||||
# blit to the Render we're making.
|
||||
r.blit(pi, (int(px), int(py - self.PADDLE_HEIGHT / 2)))
|
||||
|
||||
if py - self.PADDLE_HEIGHT / 2 <= self.by <= py + self.PADDLE_HEIGHT / 2:
|
||||
|
||||
hit = False
|
||||
|
||||
if oldbx >= hotside >= self.bx:
|
||||
self.bx = hotside + (hotside - self.bx)
|
||||
self.bdx = -self.bdx
|
||||
hit = True
|
||||
|
||||
elif oldbx <= hotside <= self.bx:
|
||||
self.bx = hotside - (self.bx - hotside)
|
||||
self.bdx = -self.bdx
|
||||
hit = True
|
||||
|
||||
if hit:
|
||||
renpy.sound.play("pong_boop.wav", channel=1)
|
||||
self.bspeed *= 1.10
|
||||
|
||||
# Draw the two paddles.
|
||||
paddle(68, self.playery, 68 + self.PADDLE_WIDTH)
|
||||
paddle(724, self.computery, 724)
|
||||
|
||||
# Draw the ball.
|
||||
ball = renpy.render(self.ball, 800, 600, st, at)
|
||||
r.blit(ball, (int(self.bx - self.BALL_WIDTH / 2),
|
||||
int(self.by - self.BALL_HEIGHT / 2)))
|
||||
|
||||
# Show the player names.
|
||||
player = renpy.render(self.player, 800, 600, st, at)
|
||||
r.blit(player, (20, 25))
|
||||
|
||||
# Show Eileen's name.
|
||||
eileen = renpy.render(self.eileen, 800, 600, st, at)
|
||||
ew, eh = eileen.get_size()
|
||||
r.blit(eileen, (790 - ew, 25))
|
||||
|
||||
# Show the "Click to Begin" label.
|
||||
if self.stuck:
|
||||
ctb = renpy.render(self.ctb, 800, 600, st, at)
|
||||
cw, ch = ctb.get_size()
|
||||
r.blit(ctb, (400 - cw / 2, 30))
|
||||
|
||||
|
||||
# Check for a winner.
|
||||
if self.bx < -200:
|
||||
self.winner = "eileen"
|
||||
|
||||
# Needed to ensure that event is called, noticing
|
||||
# the winner.
|
||||
renpy.timeout(0)
|
||||
|
||||
elif self.bx > 1000:
|
||||
self.winner = "player"
|
||||
renpy.timeout(0)
|
||||
|
||||
# Ask that we be re-rendered ASAP, so we can show the next
|
||||
# frame.
|
||||
renpy.redraw(self, 0)
|
||||
|
||||
# Return the Render object.
|
||||
return r
|
||||
|
||||
# Handles events.
|
||||
def event(self, ev, x, y, st):
|
||||
|
||||
import pygame
|
||||
|
||||
# Mousebutton down == start the game by setting stuck to
|
||||
# false.
|
||||
if ev.type == pygame.MOUSEBUTTONDOWN and ev.button == 1:
|
||||
self.stuck = False
|
||||
|
||||
# Set the position of the player's paddle.
|
||||
y = max(y, self.COURT_TOP)
|
||||
y = min(y, self.COURT_BOTTOM)
|
||||
self.playery = y
|
||||
|
||||
# If we have a winner, return him or her. Otherwise, ignore
|
||||
# the current event.
|
||||
if self.winner:
|
||||
return self.winner
|
||||
else:
|
||||
raise renpy.IgnoreEvent()
|
||||
|
||||
|
||||
label demo_minigame:
|
||||
|
||||
e "You may want to mix Ren'Py with other forms of gameplay. There are many ways to do this."
|
||||
|
||||
e "The first is with the UI functions, which can be used to create powerful button and menu based interfaces."
|
||||
|
||||
e "These are often enough for many simulation-style games."
|
||||
|
||||
e "We also have two more ways in which Ren'Py can be extended. Both require experience with Python programming, and so aren't for the faint of heart."
|
||||
|
||||
e "Renpygame is a library that allows pygame games to be run inside Ren'Py."
|
||||
|
||||
e "When using renpygame, Ren'Py steps out of the way and gives you total control over the user's experience."
|
||||
|
||||
e "You can get renpygame from the Frameworks page of the Ren'Py website."
|
||||
|
||||
e "If you want to integrate your code with Ren'Py, you can write a user-defined displayable."
|
||||
|
||||
e "User-defined displayables are somewhat more limited, but integrate better with the rest of Ren'Py."
|
||||
|
||||
e "For example, one could support loading and saving while a user-defined displayable is shown."
|
||||
|
||||
e "Now, why don't we play some pong?"
|
||||
|
||||
label demo_minigame_pong:
|
||||
|
||||
window hide None
|
||||
|
||||
# Put up the pong background, in the usual fashion.
|
||||
scene bg pong field
|
||||
|
||||
# Run the pong minigame, and determine the winner.
|
||||
python:
|
||||
ui.add(PongDisplayable())
|
||||
winner = ui.interact(suppress_overlay=True, suppress_underlay=True)
|
||||
|
||||
scene bg washington
|
||||
show eileen vhappy
|
||||
|
||||
window show None
|
||||
|
||||
|
||||
if winner == "eileen":
|
||||
|
||||
e "I win!"
|
||||
|
||||
else:
|
||||
|
||||
e "You won! Congratulations."
|
||||
|
||||
|
||||
show eileen happy
|
||||
|
||||
menu:
|
||||
e "Would you like to play again?"
|
||||
|
||||
"Sure.":
|
||||
jump demo_minigame_pong
|
||||
"No thanks.":
|
||||
pass
|
||||
|
||||
|
||||
e "Remember to be careful about putting minigames in a visual novel, since not every visual novel player wants to be good at arcade games."
|
||||
|
||||
return
|
||||
@@ -1,79 +0,0 @@
|
||||
# This demonstrates nvl_mode.rpy.
|
||||
|
||||
init:
|
||||
|
||||
# Declare an nvl-version of eileen.
|
||||
$ nvle = Character(_("Eileen"), color="#c8ffc8", kind=nvl)
|
||||
|
||||
$ config.adv_nvl_transition = dissolve
|
||||
$ config.nvl_adv_transition = dissolve
|
||||
|
||||
label demo_nvlmode:
|
||||
|
||||
window hide
|
||||
nvl clear
|
||||
nvl show dissolve
|
||||
|
||||
nvle "NVL-style games are games that cover the full screen with text, rather then placing it in a file at the bottom of the screen."
|
||||
|
||||
nvle "Ren'Py ships with a file, nvl_mode.rpy, that implements NVL-style games. You're seeing an example of NVL-mode at work."
|
||||
|
||||
nvl clear
|
||||
|
||||
nvle "To use NVL-mode, you need to define Characters with a kind=nvl."
|
||||
|
||||
nvle "You use 'nvl clear' to clear the screen when that becomes necessary."
|
||||
|
||||
nvl hide dissolve
|
||||
nvl show dissolve
|
||||
|
||||
nvle "The 'nvl show' and 'nvl hide' statements use transitions to show and hide the NVL window."
|
||||
|
||||
nvle "The nvl_erase function removes a line from the screen."
|
||||
|
||||
$ nvl_erase()
|
||||
|
||||
nvle "Like that."
|
||||
|
||||
# Doing this during the game isn't recommended, it's better to do
|
||||
# it in an init block. We have to do it here because we need to use
|
||||
# both kinds of menus.
|
||||
$ menu = nvl_menu
|
||||
|
||||
menu:
|
||||
|
||||
nvle "The nvl_mode also supports showing menus to the user, provided they are the last thing on the screen. Understand?"
|
||||
|
||||
"Yes.":
|
||||
|
||||
nvl clear
|
||||
|
||||
nvle "Good!"
|
||||
|
||||
nvl clear
|
||||
|
||||
"No.":
|
||||
|
||||
nvl clear
|
||||
|
||||
nvle "Well, it might help if you take a look at the demo code."
|
||||
|
||||
nvl clear
|
||||
|
||||
eside "You can specify transitions that occur when going from NVL-mode to ADV-mode."
|
||||
|
||||
nvle "As well as when going from ADV-mode to NVL-mode."
|
||||
|
||||
nvle "Text tags like {{w}{w} work in NVL-mode."
|
||||
|
||||
extend " As does the \"extend\" special character."
|
||||
|
||||
nvle "And that's it for NVL-mode."
|
||||
|
||||
$ menu = renpy.display_menu
|
||||
|
||||
nvl hide dissolve
|
||||
$ _last_say_who = None
|
||||
window show dissolve
|
||||
|
||||
return
|
||||
@@ -1,37 +0,0 @@
|
||||
init:
|
||||
$ mp = MultiPersistent("demo.renpy.org")
|
||||
|
||||
label demo_persistent:
|
||||
|
||||
"Ren'Py supports per-game and multi-game persistent data."
|
||||
|
||||
"Persistent data can store flags and other per-game information that should be shared between plays of a single game."
|
||||
|
||||
# per-game persistent data example.
|
||||
python:
|
||||
if persistent.plays is None:
|
||||
persistent.plays = 1
|
||||
else:
|
||||
persistent.plays += 1
|
||||
|
||||
plays = persistent.plays
|
||||
|
||||
"For example, I can tell you that you've see this line [plays] time(s) since you cleared the per-game persistent data."
|
||||
|
||||
"Multipersistent data is shared between games, which lets one game unlock features in a second."
|
||||
|
||||
"A sequel might play differently if the player has beaten the first game."
|
||||
|
||||
# multipersistent data example.
|
||||
python:
|
||||
if mp.plays is None:
|
||||
mp.plays = 1
|
||||
else:
|
||||
mp.plays += 1
|
||||
|
||||
mp.save()
|
||||
plays = mp.plays
|
||||
|
||||
"According to the multipersistent data, you've seen this line [plays] times total."
|
||||
|
||||
return
|
||||
@@ -1,140 +0,0 @@
|
||||
# This file demonstrates some of the text-layout and handling
|
||||
# capabilities of Ren'Py.
|
||||
|
||||
init:
|
||||
# Register an sfont.
|
||||
$ renpy.register_sfont('new_sfont', 22,
|
||||
filename="new_sfont.png",
|
||||
spacewidth=6)
|
||||
|
||||
# Declare a character that uses the sfont.
|
||||
$ esfont = Character(_("Eileen"),
|
||||
color="#c8ffc8",
|
||||
what_font="new_sfont")
|
||||
|
||||
# Slow text.
|
||||
$ eslow = Character(_("Eileen"),
|
||||
color="#c8ffc8",
|
||||
what_slow_cps=20)
|
||||
|
||||
# Outlined text.
|
||||
$ eoutline = Character(_("Eileen"),
|
||||
color="#c8ffc8",
|
||||
what_outlines=[ (1, "#282") ])
|
||||
|
||||
# Use it in subtitle mode.
|
||||
$ esubtitle = Character(None,
|
||||
what_size=28,
|
||||
what_outlines=[(3, "#0008", 2, 2), (3, "#282", 0, 0)],
|
||||
what_layout="subtitle",
|
||||
what_xalign=0.5,
|
||||
what_text_align=0.5,
|
||||
window_background=None,
|
||||
window_yminimum=0,
|
||||
window_xfill=False,
|
||||
window_xalign=0.5)
|
||||
|
||||
|
||||
# This is used to show the defintion text, by the hyperlink demostration
|
||||
# code.
|
||||
$ definition = Character(None,
|
||||
window_yfill=True,
|
||||
window_xmargin=20,
|
||||
window_ymargin=30)
|
||||
|
||||
|
||||
# The pink style, which we use as a custom text tag.
|
||||
$ style.pink = Style(style.default)
|
||||
$ style.pink.color = "#ffc0c0"
|
||||
|
||||
init python:
|
||||
style.ruby_style = Style(style.default)
|
||||
style.ruby_style.yoffset = -20
|
||||
style.ruby_style.size = 12
|
||||
|
||||
define eruby = Character(
|
||||
_("Eileen"),
|
||||
color="#c8ffc8",
|
||||
what_ruby_style=style.ruby_style,
|
||||
what_line_leading=10)
|
||||
|
||||
|
||||
|
||||
label demo_text:
|
||||
|
||||
e "Ren'Py gives you quite a bit of control over how text appears."
|
||||
|
||||
e "Text tags let us control the appearance of text that is shown to the user."
|
||||
|
||||
e "Text tags can make text {b}bold{/b}, {i}italic{/i}, {s}struckthrough{/s}, or {u}underlined{/u}."
|
||||
|
||||
e "They can make the font size {size=+12}bigger{/size} or {size=-8}smaller{/size}."
|
||||
|
||||
e "They let you pause{w} the display of the text, optionally with{p}line breaks."
|
||||
|
||||
e "They let you include images inside text{image=exclamation.png} Neat{image=exclamation.png}"
|
||||
|
||||
e "We can pause the text for a short time, and have it auto-advance.{w=1} Just like that."
|
||||
|
||||
eslow "We can even have the text auto-advance,{nw}"
|
||||
|
||||
with flashbulb
|
||||
extend " when we reach the end of a block of text, in slow text mode."
|
||||
|
||||
e "They can change the {color=#f00}color{/color} {color=#ff0}of{/color} {color=#0f0}the{/color} {color=#0ff}text{/color}."
|
||||
|
||||
# e "There are also bold, italic, strikethrough, and underline style properties, which can be styled onto any text."
|
||||
|
||||
e "The kerning tag lets you adjust the spacing between characters.\n{k=.5}The spacing between characters can be increased.{/k}\n{k=-.5}The spacing between characters can be decreased.{/k}"
|
||||
|
||||
eruby "You are able to write ruby text, which can help clarify how to pronounce words, like {rb}Ren'Py{/rb}{rt}ren-pie{/rt}."
|
||||
|
||||
e "{a=define_hyperlink}Hyperlinks{/a} let buttons be defined using text tags."
|
||||
|
||||
e "The space and vspace tags add {space=30} horizontal and {vspace=20}vertical space, respectively."
|
||||
|
||||
e "You can define your own text tags, {=pink}that use a style you define.{/=pink}"
|
||||
|
||||
e "If you find yourself using text tags on every line, you should probably look at style properties instead."
|
||||
|
||||
e "Used with care, text tags can enhance {b}your{/b} game."
|
||||
|
||||
e "{u}Used{/u} with {i}abandon,{/i} they {b}can{/b} make {b}your{/b} game {color=#333}hard{/color} {color=#888}to{/color} {color=#ccc}read{/color}."
|
||||
|
||||
e "With great power comes great responsibility, after all."
|
||||
|
||||
e "And we want to give you all the power you need."
|
||||
|
||||
e "There are a couple of text adjustments that don't correspond to text tags."
|
||||
|
||||
eoutline "The outlines setting lets you put outlines around the text."
|
||||
|
||||
eoutline "You can have more than one outline, and each has its own color and offset."
|
||||
|
||||
window hide
|
||||
|
||||
esubtitle "Here, we have two outlines around the white text."
|
||||
|
||||
esubtitle "The bottom one is a translucent black that's offset a little, while the top one is green."
|
||||
|
||||
esubtitle "By hiding the window and adjusting the layout method, we are able to create reasonable subtitles."
|
||||
|
||||
esubtitle "This might be an interesting look for a game."
|
||||
|
||||
window show
|
||||
|
||||
esfont "For even more control, Ren'Py supports SFonts, image files containing font information."
|
||||
|
||||
esfont "SFonts let you use fonts you otherwise couldn't, and apply special effects to fonts using your favorite image editor."
|
||||
|
||||
e "Well, that's it for fonts and text tags."
|
||||
|
||||
|
||||
return
|
||||
|
||||
|
||||
label define_hyperlink:
|
||||
|
||||
definition "A hyperlink is a button that is defined inside text, using text tags. They're ideal for including definitions of words used in the script, but they shouldn't be used in place of menus."
|
||||
|
||||
return
|
||||
@@ -1,222 +0,0 @@
|
||||
# This is the code for the logo example.
|
||||
init python:
|
||||
|
||||
# This spins the logo, while at the same time zooming it and decreasing the
|
||||
# alpha.
|
||||
def logo_transform(t, st, at):
|
||||
|
||||
# Repeat every 10 seconds.
|
||||
st = st % 7.0
|
||||
|
||||
# The move takes 5 seconds.
|
||||
done = min(st / 5.0, 1.0)
|
||||
|
||||
t.xpos = done
|
||||
t.xanchor = 1.0 - done
|
||||
t.ypos = .5
|
||||
t.yanchor = .5
|
||||
t.rotate = 360 * done
|
||||
t.alpha = 1.0 - done
|
||||
t.zoom = 1.0 + done
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
# This is the code for the balls example. It's a bit complicated, but most of
|
||||
# this is the code for ball movement and so on. Only a very little bit of this
|
||||
# actually deals with Ren'Py.
|
||||
init python:
|
||||
import math
|
||||
|
||||
class Ball(object):
|
||||
def __init__(self, filename, x, y, function=None):
|
||||
|
||||
self.transform = Transform(child=filename, xanchor=0.5, yanchor=0.5, rotate=0, function=function)
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
MAX_SPEED = 150
|
||||
|
||||
self.dx = renpy.random.uniform(-MAX_SPEED, MAX_SPEED)
|
||||
self.dy = renpy.random.uniform(-MAX_SPEED, MAX_SPEED)
|
||||
|
||||
# Rotation speed.
|
||||
self.drotate = renpy.random.uniform(0, 180)
|
||||
|
||||
# This is called
|
||||
def balls_collide(p1, p2):
|
||||
"""
|
||||
Check to see if any of the balls are colliding. If they are,
|
||||
then handle the collision.
|
||||
"""
|
||||
|
||||
DOUBLE_RADIUS = 75
|
||||
|
||||
x21 = p2.x - p1.x
|
||||
y21 = p2.y - p1.y
|
||||
|
||||
d = math.hypot(x21, y21)
|
||||
|
||||
# Return if too far.
|
||||
if d > DOUBLE_RADIUS:
|
||||
return
|
||||
|
||||
vx21 = p2.dx - p1.dx
|
||||
vy21 = p2.dy - p1.dy
|
||||
|
||||
# Return if not approaching.
|
||||
if (vx21 * x21 + vy21 * y21) > 0:
|
||||
return
|
||||
|
||||
# Fix divide by zero.
|
||||
if x21 == 0:
|
||||
x21 = .00001
|
||||
|
||||
# Compute the collision.
|
||||
a = y21 / x21
|
||||
dvx2 = -(vx21 + a * vy21) / (1 + a * a)
|
||||
|
||||
p2.dx += dvx2
|
||||
p2.dy += a * dvx2
|
||||
|
||||
p1.dx -= dvx2
|
||||
p2.dy -= a * dvx2
|
||||
|
||||
# This is called by the first transform. It updates all of the
|
||||
# transforms.
|
||||
def balls_update(pilot, st, at):
|
||||
|
||||
global last_time
|
||||
|
||||
RADIUS = 75 / 2
|
||||
LEFT = RADIUS
|
||||
RIGHT = 800 - RADIUS
|
||||
TOP = RADIUS
|
||||
BOTTOM = 600 - RADIUS
|
||||
|
||||
# The pilot is the first ball in our list, and he's the one
|
||||
# that gets last_time updated.
|
||||
if last_time is None:
|
||||
dt = 0
|
||||
else:
|
||||
dt = st - last_time
|
||||
|
||||
last_time = st
|
||||
|
||||
# Handle current collisions.
|
||||
for i in xrange(0, len(balls)):
|
||||
for j in xrange(i + 1, len(balls)):
|
||||
balls_collide(balls[i], balls[j])
|
||||
|
||||
# Basic movement, and bouncing off the walls.
|
||||
for i in balls:
|
||||
|
||||
i.x += i.dx * dt
|
||||
i.y += i.dy * dt
|
||||
|
||||
if i.x < LEFT:
|
||||
i.x = LEFT
|
||||
i.dx = abs(i.dx)
|
||||
|
||||
if i.x > RIGHT:
|
||||
i.x = RIGHT
|
||||
i.dx = -abs(i.dx)
|
||||
|
||||
if i.y < TOP:
|
||||
i.y = TOP
|
||||
i.dy = abs(i.dy)
|
||||
|
||||
if i.y > BOTTOM:
|
||||
i.y = BOTTOM
|
||||
i.dy = -abs(i.dy)
|
||||
|
||||
|
||||
# Update the transforms.
|
||||
for i in balls:
|
||||
|
||||
# This is the code that deals with Ren'Py to update the
|
||||
# various transforms. Note that we use absolute coordinates
|
||||
# to position ourselves with subpixel accuracy.
|
||||
i.transform.xpos = absolute(i.x)
|
||||
i.transform.ypos = absolute(i.y)
|
||||
i.transform.rotate = (i.drotate * st) % 360.0
|
||||
|
||||
i.transform.update()
|
||||
|
||||
return 0
|
||||
|
||||
# These are used in the button example:
|
||||
init python:
|
||||
def button_transform(t, st, at):
|
||||
t.rotate = (90 * st) % 360.0
|
||||
return 0
|
||||
|
||||
label demo_transform:
|
||||
|
||||
e "The Transform function allows you to rotate, zoom, move, and adjust the alpha of a displayable."
|
||||
|
||||
e "It does this under the control of a Python function, making it incredibly flexible at the cost of some complexity."
|
||||
|
||||
hide eileen
|
||||
with dissolve
|
||||
|
||||
show logo base at Transform(function=logo_transform)
|
||||
|
||||
e "Here's a simple example, showing how we can change an image as it moves around the screen."
|
||||
|
||||
e "A nice thing about Transform is that it's \"one price\"."
|
||||
|
||||
e "If you use it to do a rotation, you can zoom or adjust alpha at no additional cost."
|
||||
|
||||
hide logo base
|
||||
with dissolve
|
||||
|
||||
python:
|
||||
|
||||
last_time = None
|
||||
|
||||
# Define a list of ball objects.
|
||||
balls = [
|
||||
Ball("eileen_orb.png", 200, 150, function=balls_update),
|
||||
Ball("lucy_orb.png", 400, 150),
|
||||
Ball("eileen_orb.png", 600, 150),
|
||||
|
||||
Ball("lucy_orb.png", 200, 300),
|
||||
Ball("lucy_orb.png", 600, 300),
|
||||
|
||||
Ball("eileen_orb.png", 200, 450),
|
||||
Ball("lucy_orb.png", 400, 450),
|
||||
Ball("eileen_orb.png", 600, 450),
|
||||
]
|
||||
|
||||
# Add each ball's transform to the screen.
|
||||
for i, b in enumerate(balls):
|
||||
renpy.show("ball%d" % i, what=b.transform)
|
||||
|
||||
with dissolve
|
||||
|
||||
e "As the python functions get more complicated, more advanced behavior is possible."
|
||||
|
||||
e "This can include coordinating more than one Transform."
|
||||
|
||||
python:
|
||||
for i, b in enumerate(balls):
|
||||
renpy.hide("ball%d" % i)
|
||||
|
||||
|
||||
with dissolve
|
||||
|
||||
python hide:
|
||||
ui.transform(function=button_transform, xalign=0.5, yalign=0.5)
|
||||
ui.textbutton(_("A Working Button"), clicked=ui.returns(True))
|
||||
|
||||
e "Finally, transforms can be applied to buttons, and work even while the button is zoomed."
|
||||
|
||||
show eileen happy
|
||||
with dissolve
|
||||
|
||||
e "With a little Python code, transforms let you do a lot of things."
|
||||
|
||||
|
||||
|
||||
return
|
||||
@@ -1,478 +0,0 @@
|
||||
# This file demonstrates the built-in transitions which are defined in
|
||||
# common/definitions.rpy, and also the new transitions given above.
|
||||
|
||||
init:
|
||||
# Define some new transitions here.
|
||||
$ slow_dissolve = Dissolve(1.0)
|
||||
$ flashbulb = Fade(0.2, 0.0, 0.8, color='#fff')
|
||||
|
||||
# Imagedissolve Transitions.
|
||||
$ circleirisout = ImageDissolve("id_circleiris.png", 1.0, 8)
|
||||
$ circleirisin = ImageDissolve("id_circleiris.png", 1.0, 8, reverse=True)
|
||||
$ circlewipe = ImageDissolve("id_circlewipe.png", 1.0, 8)
|
||||
$ dream = ImageDissolve("id_dream.png", 2.0, 64)
|
||||
$ teleport = ImageDissolve("id_teleport.png", 1.0, 0)
|
||||
|
||||
image bg circleiris = "id_circleiris.png"
|
||||
image bg teleport = "id_teleport.png"
|
||||
|
||||
image alpha_control:
|
||||
"spotlight.png"
|
||||
|
||||
xanchor .5
|
||||
yanchor .5
|
||||
|
||||
parallel:
|
||||
zoom 0
|
||||
linear .5 zoom .75
|
||||
pause 2
|
||||
linear 1.0 zoom 4.0
|
||||
|
||||
parallel:
|
||||
xpos 0.0 ypos .6
|
||||
linear 1.5 xpos 1.0
|
||||
linear 1.0 xpos .5 ypos .2
|
||||
|
||||
pause .5
|
||||
repeat
|
||||
|
||||
define alpha_example = AlphaDissolve("alpha_control", delay=3.5)
|
||||
|
||||
|
||||
label demo_transitions:
|
||||
|
||||
e "Ren'Py ships with a large number of built-in transitions, and also includes classes that let you define your own."
|
||||
|
||||
menu demo_transitions_menu:
|
||||
|
||||
e "What kind of transitions would you like demonstrated?"
|
||||
|
||||
"Simple Transitions":
|
||||
|
||||
call demo_simple_transitions from _call_demo_simple_transitions_1
|
||||
|
||||
"ImageDissolve Transitions":
|
||||
|
||||
call demo_imagedissolve_transitions from _call_demo_imagedissolve_transitions_1
|
||||
|
||||
"MoveTransition Transitions":
|
||||
|
||||
call demo_movetransition from _call_demo_movetransition_1
|
||||
|
||||
"CropMove Transitions":
|
||||
|
||||
call demo_cropmove_transitions from _call_demo_cropmove_transitions_1
|
||||
|
||||
"PushMove Transitions":
|
||||
|
||||
call demo_pushmove_transitions from _call_demo_pushmove_transitions_1
|
||||
|
||||
"AlphaDissolve Transitions":
|
||||
|
||||
call demo_alphadissolve from _call_demo_alphadissolve
|
||||
|
||||
""
|
||||
|
||||
"How about something else?":
|
||||
|
||||
return
|
||||
|
||||
jump demo_transitions_menu
|
||||
|
||||
|
||||
label demo_simple_transitions:
|
||||
|
||||
e "Okay, I can tell you about simple transitions. We call them simple because they don't take much in the way of configuration."
|
||||
|
||||
e "But don't let that get you down, since they're the transitions you'll probably use the most in a game."
|
||||
|
||||
show bg whitehouse
|
||||
with dissolve
|
||||
|
||||
e "The 'dissolve' transition is probably the most useful, blending one scene into another."
|
||||
|
||||
show bg washington
|
||||
with slow_dissolve
|
||||
|
||||
e "The 'Dissolve' function lets you create your own dissolves, taking a different amount of time."
|
||||
|
||||
show bg whitehouse
|
||||
with fade
|
||||
|
||||
e "The 'fade' transition fades to black, and then fades back in to the new scene."
|
||||
|
||||
e "If you're going to stay at a black screen, you'll probably want to use 'dissolve' rather than 'fade'."
|
||||
|
||||
with flashbulb
|
||||
|
||||
e "You can use 'Fade' to define your own fades. By changing the timing and the color faded to, you can use this for special effects, like flashbulbs."
|
||||
|
||||
show bg washington
|
||||
with pixellate
|
||||
|
||||
e "The 'pixellate' transition pixellates out the old scene, switches to the new scene, and then unpixellates that."
|
||||
|
||||
e "It's probably not appropriate for most games, but we
|
||||
think it's kind of neat."
|
||||
|
||||
e "You can use 'Pixellate' to change the details of the pixellation."
|
||||
|
||||
e "Motions can also be used as transitions."
|
||||
|
||||
"..."
|
||||
|
||||
"......"
|
||||
|
||||
$ renpy.play('punch.wav')
|
||||
with vpunch
|
||||
|
||||
e "Hey! Pay attention."
|
||||
|
||||
e "I was about to demonstrate 'vpunch'... well, I guess I just did."
|
||||
|
||||
$ renpy.play('punch.wav')
|
||||
with hpunch
|
||||
|
||||
e "We can also shake the screen horizontally, with 'hpunch'. These were defined using the 'Move' function."
|
||||
|
||||
e "There's also the 'move' transition, which is confusingly enough defined using the 'MoveTransition' function."
|
||||
|
||||
show eileen happy at right
|
||||
with move
|
||||
show eileen happy at center
|
||||
with move
|
||||
|
||||
e "The 'move' transition finds images that have changed placement, and slides them to their new place. It's an easy way to get motion in your game."
|
||||
|
||||
e "Finally, there's 'Pause', which lets you define a transition that just waits for a given amount of time."
|
||||
|
||||
e "Why would you want to do that?"
|
||||
|
||||
e "It's because clicking during a sequence of transitions will skip all of the remaining transitions."
|
||||
|
||||
e "Try clicking during the following transitions:"
|
||||
|
||||
show bg whitehouse
|
||||
with dissolve
|
||||
with Pause(1)
|
||||
show bg washington
|
||||
with dissolve
|
||||
|
||||
e "Having 'Pause' makes it easy to implement skippable cut-scenes in terms of transitions."
|
||||
|
||||
e "Anyway, that's it for the simple transitions."
|
||||
|
||||
return
|
||||
|
||||
|
||||
label demo_imagedissolve_transitions:
|
||||
|
||||
e "Perhaps the most flexible kind of transition is the ImageDissolve, which lets you use an image to control a dissolve."
|
||||
|
||||
e "This lets us specify very complex transitions, fairly simply. Let's try some, and then I'll show you how they work."
|
||||
|
||||
e "There are two ImageDissolve transitions built into Ren'Py."
|
||||
|
||||
|
||||
scene black
|
||||
with blinds
|
||||
|
||||
scene bg washington
|
||||
show eileen happy
|
||||
with blinds
|
||||
|
||||
|
||||
e "The 'blinds' transition opens and closes what looks like vertical blinds."
|
||||
|
||||
scene black
|
||||
with squares
|
||||
|
||||
scene bg washington
|
||||
show eileen happy
|
||||
with squares
|
||||
|
||||
e "The 'squares' transition uses these squares to show things."
|
||||
|
||||
e "I'm not sure why anyone would want to use it, but it was used in some translated games, so we added it."
|
||||
|
||||
e "The most interesting transitions aren't in the standard library."
|
||||
|
||||
e "These ones require an image the size of the screen, and so we couldn't include them as the size of the screen can change from game to game."
|
||||
|
||||
e "You can click the button above to see how they are defined in the demo script."
|
||||
|
||||
scene black
|
||||
with circleirisin
|
||||
|
||||
e "We can hide things with a 'circleirisin'..."
|
||||
|
||||
scene bg washington
|
||||
with circleirisout
|
||||
|
||||
e "... and show them again with a 'circleirisout'."
|
||||
|
||||
show bg whitehouse
|
||||
with circlewipe
|
||||
|
||||
e "The 'circlewipe' transitions changes screens using a circular wipe effect."
|
||||
|
||||
scene bg washington
|
||||
with dream
|
||||
|
||||
e "The 'dream' transition does this weird wavy dissolve, and does it relatively slowly."
|
||||
|
||||
show eileen happy
|
||||
with teleport
|
||||
|
||||
e "The 'teleport' transition reveals the new scene one line at a time."
|
||||
|
||||
scene bg circleiris
|
||||
with dissolve
|
||||
|
||||
e "This is the background picture used with the circleirisout transition."
|
||||
|
||||
e "When we use an ImageDissolve, the white will dissolve in first, followed by progressively darker colors. Let's try it."
|
||||
|
||||
show bg washington
|
||||
with circleirisout
|
||||
|
||||
e "If we give ImageDissolve the 'reverse' parameter, black areas will dissolve in first."
|
||||
|
||||
show bg circleiris
|
||||
with circleirisin
|
||||
|
||||
e "This lets circleirisin and circleirisout use the same image."
|
||||
|
||||
show bg teleport
|
||||
with dissolve
|
||||
|
||||
e "The teleport transition uses a different image, one that dissolves things in one line at a time."
|
||||
|
||||
show bg washington
|
||||
with teleport
|
||||
|
||||
e "A dissolve only seems to affect parts of the scene that have changed..."
|
||||
|
||||
show eileen happy
|
||||
with teleport
|
||||
|
||||
e "... which is how we apply the teleport effect to a single character."
|
||||
|
||||
e "For more examples of ImageDissolve, check out the {i}Utsukushii Effects{/i} demo."
|
||||
|
||||
e "It shows how a clever game-maker can use ImageDissolve to create all sorts of effects."
|
||||
|
||||
return
|
||||
|
||||
label demo_cropmove_transitions:
|
||||
|
||||
e "The CropMove transition class provides a wide range of transition effects. It's not used very much in practice, though."
|
||||
|
||||
show eileen happy at offscreenleft
|
||||
with move
|
||||
|
||||
e "I'll stand offscreen, so you can see some of its modes. I'll read out the mode name after each transition."
|
||||
|
||||
scene bg whitehouse
|
||||
with wiperight
|
||||
|
||||
e "We first have wiperight..."
|
||||
|
||||
scene bg washington
|
||||
with wipeleft
|
||||
|
||||
e "...followed by wipeleft... "
|
||||
|
||||
scene bg whitehouse
|
||||
with wipeup
|
||||
|
||||
e "...wipeup..."
|
||||
|
||||
scene bg washington
|
||||
with wipedown
|
||||
|
||||
e "...and wipedown."
|
||||
|
||||
e "Next, the slides."
|
||||
|
||||
scene bg whitehouse
|
||||
with slideright
|
||||
|
||||
e "Slideright..."
|
||||
|
||||
scene bg washington
|
||||
with slideleft
|
||||
|
||||
e "...slideleft..."
|
||||
|
||||
scene bg whitehouse
|
||||
with slideup
|
||||
|
||||
e "...slideup..."
|
||||
|
||||
scene bg washington
|
||||
with slidedown
|
||||
|
||||
e "and slidedown."
|
||||
|
||||
e "While the slide transitions slide in the new scene, the
|
||||
slideaways slide out the old scene."
|
||||
|
||||
scene bg whitehouse
|
||||
with slideawayright
|
||||
|
||||
e "Slideawayright..."
|
||||
|
||||
scene bg washington
|
||||
with slideawayleft
|
||||
|
||||
e "...slideawayleft..."
|
||||
|
||||
scene bg whitehouse
|
||||
with slideawayup
|
||||
|
||||
e "...slideawayup..."
|
||||
|
||||
scene bg washington
|
||||
with slideawaydown
|
||||
|
||||
e "and slideawaydown."
|
||||
|
||||
e "We also have a couple of transitions that use a
|
||||
rectangular iris."
|
||||
|
||||
scene bg whitehouse
|
||||
with irisout
|
||||
|
||||
e "There's irisout..."
|
||||
|
||||
scene bg washington
|
||||
show eileen happy
|
||||
with irisin
|
||||
|
||||
e "... and irisin."
|
||||
|
||||
e "It's enough to make you feel a bit dizzy."
|
||||
|
||||
return
|
||||
|
||||
label demo_pushmove_transitions:
|
||||
|
||||
e "The PushMove transitions use the new scene to push the old one out. Let's take a look."
|
||||
|
||||
show bg whitehouse
|
||||
hide eileen
|
||||
with pushright
|
||||
|
||||
"There's pushright..."
|
||||
|
||||
show bg washington
|
||||
with pushleft
|
||||
|
||||
"...pushleft..."
|
||||
|
||||
show bg whitehouse
|
||||
with pushdown
|
||||
|
||||
"...pushdown..."
|
||||
|
||||
show bg washington
|
||||
show eileen happy
|
||||
with pushup
|
||||
|
||||
"... and pushup. And that's it the for the PushMove-based transitions."
|
||||
|
||||
return
|
||||
|
||||
label demo_movetransition:
|
||||
|
||||
e "The most common MoveTransition is move, which slides around images that have changed position on the screen."
|
||||
|
||||
show eileen happy at left
|
||||
with move
|
||||
|
||||
e "Just like that."
|
||||
|
||||
e "There are also the moveout and movein transitions."
|
||||
|
||||
e "The moveout transitions (moveoutleft, moveoutright, moveouttop, and moveoutbottom) slide hidden images off the appropriate side of the screen."
|
||||
|
||||
e "The movein transitions (moveinleft, moveinright, moveintop, and moveinbottom) slide in new images."
|
||||
|
||||
e "Let's see them all in action."
|
||||
|
||||
hide eileen happy
|
||||
with moveoutleft
|
||||
|
||||
show eileen happy
|
||||
with moveinbottom
|
||||
|
||||
hide eileen happy
|
||||
with moveoutbottom
|
||||
|
||||
show eileen happy
|
||||
with moveinright
|
||||
|
||||
hide eileen happy
|
||||
with moveoutright
|
||||
|
||||
show eileen flip
|
||||
with moveintop
|
||||
|
||||
hide eileen flip
|
||||
with moveouttop
|
||||
|
||||
show eileen happy
|
||||
with moveinleft
|
||||
|
||||
e "That's it for the moveins and moveouts."
|
||||
|
||||
e "Finally, there are the zoomin and zoomout transtions, which show and hide things using a zoom."
|
||||
|
||||
hide eileen happy
|
||||
with zoomout
|
||||
|
||||
show eileen happy
|
||||
with zoomin
|
||||
|
||||
e "And that's all there is."
|
||||
|
||||
return
|
||||
|
||||
label demo_alphadissolve:
|
||||
|
||||
e "The AlphaDissolve transition lets you use one displayable to combine two others. For example..."
|
||||
|
||||
scene black
|
||||
with dissolve
|
||||
scene bg washington
|
||||
show eileen happy at center
|
||||
with alpha_example
|
||||
|
||||
e "The AlphaDissolve displayable takes a control displayable, usually an ATL transform."
|
||||
|
||||
scene
|
||||
show alpha_control
|
||||
|
||||
e "To be useful, the control displayable should be partially transparent."
|
||||
|
||||
e "During an AlphaDissolve, the old screen is used to fill the transparent areas of the image, while the new screen fills the opaque areas."
|
||||
|
||||
scene black
|
||||
|
||||
e "For our spotlight example, the old screen is this all-black image."
|
||||
|
||||
scene bg washington
|
||||
show eileen happy at center
|
||||
|
||||
e "The new screen is me just standing here."
|
||||
|
||||
scene black
|
||||
with dissolve
|
||||
scene bg washington
|
||||
show eileen happy at center
|
||||
with alpha_example
|
||||
|
||||
e "By combining them using AlphaDissolve, we can build a complicated effect out of simpler parts."
|
||||
|
||||
return
|
||||
@@ -1,331 +0,0 @@
|
||||
# This file contains a demonstration of the user interaction
|
||||
# functions.
|
||||
|
||||
screen viewport_screen:
|
||||
|
||||
viewport:
|
||||
scrollbars "both"
|
||||
xmaximum 400
|
||||
ymaximum 400
|
||||
|
||||
side_xpos 100
|
||||
side_ypos 100
|
||||
side_spacing 5
|
||||
|
||||
draggable True
|
||||
mousewheel True
|
||||
arrowkeys True
|
||||
|
||||
add "concert2"
|
||||
|
||||
textbutton _("Dismiss"):
|
||||
xpos 300
|
||||
xanchor 0.5
|
||||
ypos 550
|
||||
yanchor 0.5
|
||||
|
||||
action Return(True)
|
||||
|
||||
screen edgescroll_screen:
|
||||
|
||||
viewport:
|
||||
edgescroll (150, 500)
|
||||
add "concert2"
|
||||
|
||||
screen demo_imagemap:
|
||||
imagemap:
|
||||
auto "imagemap_%s.jpg"
|
||||
|
||||
hotspot (8, 200, 78, 78) action Return("swimming") alt "Swimming"
|
||||
hotspot (204, 50, 78, 78) action Return("science") alt "Science"
|
||||
hotspot (452, 79, 78, 78) action Return("art") alt "Art"
|
||||
hotspot (602, 316, 78, 78) action Return("go home") alt "Go Home"
|
||||
|
||||
init:
|
||||
|
||||
# The variable we store the entered name of the character in.
|
||||
$ povname = ""
|
||||
|
||||
# And this is a DynamicCharacter that has the same stored in
|
||||
# povname.
|
||||
$ pov = DynamicCharacter("povname", color=(192, 64, 64, 255))
|
||||
|
||||
|
||||
# This is code for a day planner, or at least sort of. To be
|
||||
# honest, the code in the dse game is a bit better. Take this
|
||||
# as more of an example of what Ren'Py can do.
|
||||
python:
|
||||
def day_planner():
|
||||
|
||||
periods = [ _('Morning'), _('Afternoon'), _('Evening') ]
|
||||
periods_small = {'Morning': _('morning'), 'Afternoon': _('afternoon'), 'Evening': _('evening') }
|
||||
choices = [ _('Study'), _('Exercise'),
|
||||
_('Eat'), _('Drink'), _('Be Merry') ]
|
||||
|
||||
plan = { _('Morning') : _('Eat'),
|
||||
_('Afternoon') : _('Drink'),
|
||||
_('Evening') : _('Be Merry') }
|
||||
|
||||
day = _('March 25th')
|
||||
|
||||
stats = [
|
||||
(_('Strength'), 100, 10),
|
||||
(_('Intelligence'), 100, 25),
|
||||
(_('Moxie'), 100, 100),
|
||||
(_('Chutzpah'), 100, 75),
|
||||
]
|
||||
|
||||
editing = None
|
||||
|
||||
def button(text, selected, returns, **properties):
|
||||
|
||||
if selected:
|
||||
role='selected_'
|
||||
else:
|
||||
role=''
|
||||
|
||||
ui.button(clicked=ui.returns(returns),
|
||||
style='button', role=role, **properties)
|
||||
ui.text(text, style='button_text')
|
||||
|
||||
|
||||
while True:
|
||||
|
||||
# Stats Window
|
||||
ui.frame(xpos=0,
|
||||
ypos=0,
|
||||
xanchor='left',
|
||||
yanchor='top',
|
||||
xfill=True,
|
||||
)
|
||||
|
||||
ui.vbox()
|
||||
|
||||
ui.text(_('Statistics'))
|
||||
ui.null(height=20)
|
||||
|
||||
for name, range, value in stats:
|
||||
|
||||
ui.hbox()
|
||||
ui.text(name, minwidth=150)
|
||||
ui.bar(range, value, ypos=0.5, yanchor='center')
|
||||
ui.close()
|
||||
|
||||
ui.close()
|
||||
|
||||
# Period Selection Window.
|
||||
ui.frame(xpos=0,
|
||||
ypos=200,
|
||||
xanchor='left',
|
||||
yanchor='top',
|
||||
xfill=False,
|
||||
xminimum=300
|
||||
)
|
||||
|
||||
ui.vbox(xpos=0.5, xanchor='center')
|
||||
ui.text(day, xpos=0.5, xanchor='center', textalign=0.5)
|
||||
ui.null(height=20)
|
||||
|
||||
for i in periods:
|
||||
renpy.store.period_tmp = i
|
||||
renpy.store.plan_tmp = plan[i]
|
||||
button("[period_tmp!t]: [plan_tmp!t]", editing == i, ("edit", i), xminimum=250)
|
||||
|
||||
ui.null(height=20)
|
||||
ui.textbutton(_("Continue"),
|
||||
clicked=ui.returns(("done", True)),
|
||||
xminimum=250)
|
||||
ui.null(height=20)
|
||||
ui.close()
|
||||
|
||||
|
||||
# Choice window.
|
||||
if editing:
|
||||
ui.frame(xpos=300,
|
||||
ypos=200,
|
||||
xanchor='left',
|
||||
yanchor='top',
|
||||
xfill=False,
|
||||
xminimum=500,
|
||||
xmargin = 10
|
||||
)
|
||||
|
||||
ui.vbox()
|
||||
renpy.store.periods_small_selected = periods_small[editing]
|
||||
ui.text(_("What will you do in the [periods_small_selected!t]?"))
|
||||
ui.null(height=20)
|
||||
|
||||
for i in choices:
|
||||
button(i,
|
||||
plan[editing] == i,
|
||||
("set", i),
|
||||
xpos=0,
|
||||
xanchor='left',
|
||||
xminimum=250)
|
||||
|
||||
ui.close()
|
||||
|
||||
# Window at the bottom.
|
||||
e(_("To get to the next screen, click the 'Continue' button."), interact=False)
|
||||
|
||||
type, value = ui.interact()
|
||||
|
||||
if type == "done":
|
||||
break
|
||||
|
||||
if type == "edit":
|
||||
editing = value
|
||||
|
||||
if type == "set":
|
||||
plan[editing] = value
|
||||
editing = None
|
||||
|
||||
return plan
|
||||
|
||||
init python:
|
||||
|
||||
def stats_frame(name, level, hp, maxhp, **properties):
|
||||
|
||||
ui.frame(xfill=False, yminimum=None, **properties)
|
||||
|
||||
ui.hbox() # (name, "HP", bar) from (level, hp, maxhp)
|
||||
ui.vbox() # name from ("HP", bar)
|
||||
|
||||
ui.text(name, size=20)
|
||||
|
||||
ui.hbox() # "HP" from bar
|
||||
ui.text("HP", size=20)
|
||||
ui.bar(maxhp, hp,
|
||||
xmaximum=150)
|
||||
|
||||
ui.close()
|
||||
ui.close()
|
||||
|
||||
ui.vbox() # Level from (hp/maxhp)
|
||||
|
||||
ui.text("Lv. %d" % level, xalign=0.5, size=20)
|
||||
ui.text("%d/%d" % (hp, maxhp), xalign=0.5, size=20)
|
||||
|
||||
ui.close()
|
||||
ui.close()
|
||||
|
||||
label fight(ename, elevel, ehp, pname="Zanthier", plevel=4, php=40):
|
||||
$ stats_frame(pname, plevel, int(php * .73), php, xalign=.02, yalign=.05)
|
||||
$ stats_frame(ename, elevel, ehp, ehp, xalign=.98, yalign=.05)
|
||||
|
||||
return
|
||||
|
||||
label demo_ui:
|
||||
|
||||
e "Ren'Py gives a number of ways of interacting with the user."
|
||||
|
||||
e "You've already seen say statements and menus."
|
||||
|
||||
menu:
|
||||
|
||||
e "But were you aware that you can have dialogue and menus onscreen at the same time?"
|
||||
|
||||
"Yes.":
|
||||
|
||||
show eileen vhappy
|
||||
|
||||
e "Good!"
|
||||
|
||||
show eileen happy
|
||||
|
||||
"No.":
|
||||
|
||||
e "Well, now you know."
|
||||
|
||||
if not renpy.variant('touch'):
|
||||
|
||||
e "We can also prompt the user to enter some text."
|
||||
|
||||
$ povname = renpy.input(_("What is your name?")) or _("Guy Shy")
|
||||
|
||||
pov "My name is [povname!t]."
|
||||
|
||||
|
||||
e "Imagemaps let the user click on an image to make a choice. For example, the following screen lets you pick what to do after school:"
|
||||
|
||||
# Show an imagemap.
|
||||
window hide None
|
||||
call screen demo_imagemap
|
||||
window show None
|
||||
|
||||
# Call screen assignes the chosen result from the imagemap to the
|
||||
# _return variable. We can use an if statement to vary what
|
||||
# happens based on the user's choice.
|
||||
|
||||
if _return == "swimming":
|
||||
|
||||
e "You chose swimming."
|
||||
|
||||
e "Swimming seems like a lot of fun, but I didn't bring my bathing suit with me."
|
||||
|
||||
elif _return == "science":
|
||||
|
||||
e "You chose science."
|
||||
|
||||
e "I've heard that some schools have a competitive science team, but to me research is something that can't be rushed."
|
||||
|
||||
elif _return == "art":
|
||||
|
||||
e "You chose art."
|
||||
|
||||
e "Really good background art is hard to make, which is why so many games use filtered photographs. Maybe you can change that."
|
||||
|
||||
elif _return == "go home":
|
||||
|
||||
e "You chose to go home."
|
||||
|
||||
e "Anyway..."
|
||||
|
||||
e "We also support viewports, that allow us to display things that are bigger than the screen."
|
||||
|
||||
e "This viewport can be adjusted by dragging, by the mouse wheel, and by the scrollbars."
|
||||
|
||||
window hide
|
||||
|
||||
show eileen happy at right
|
||||
with move
|
||||
|
||||
call screen viewport_screen
|
||||
|
||||
show screen edgescroll_screen
|
||||
with dissolve
|
||||
|
||||
|
||||
e "Viewports also support edge scrolling, which is automatic scrolling when the mouse reaches their edge."
|
||||
|
||||
hide screen edgescroll_screen
|
||||
show eileen happy at center
|
||||
with dissolve
|
||||
|
||||
window show
|
||||
|
||||
e "While these constructs are probably enough for most visual novels, dating simulations may be more complicated."
|
||||
|
||||
e "The ui functions allow you to create quite complicated interfaces."
|
||||
|
||||
e "For example, try the following scheduling and stats screen, which could be used by a stat-based dating simulation."
|
||||
|
||||
hide eileen
|
||||
with dissolve
|
||||
|
||||
$ day_planner()
|
||||
|
||||
show eileen happy
|
||||
with dissolve
|
||||
|
||||
e "For a better implementation of this, take a look at the dating sim engine (DSE) that ships with Ren'Py."
|
||||
|
||||
call fight("Eileen", 10, 99, pname=povname) from _call_fight_1
|
||||
|
||||
e "The ui functions can be also be used to show the sorts of stats you'd need if your game involves combat."
|
||||
|
||||
call fight("Eileen", 10, 99, pname=povname) from _call_fight_2
|
||||
|
||||
e "Hopefully, the ui functions will let you write whatever visual novel or dating sim you want."
|
||||
|
||||
return
|
||||
@@ -1,152 +0,0 @@
|
||||
# This file contains code for the menu that lets people select which demo
|
||||
# they want to use. It uses quite a bit of the UI code, but it's probably
|
||||
# a bit complex for the average user.
|
||||
|
||||
init:
|
||||
python:
|
||||
demos_main = [
|
||||
("demo_basics", "Basic Scripting", "5.6.3"),
|
||||
("demo_experience", "User Experience", "5.6.3"),
|
||||
("demo_transitions", "Transitions", "5.6.6"),
|
||||
("demo_movement", "Positions and Movement", "6.9.0"),
|
||||
("demo_animation", "Animation", "6.2.0"),
|
||||
("demo_multimedia", "Music, Sound, and Video", "6.9.1"),
|
||||
("demo_imageops", "Image Operations", "6.5.0"),
|
||||
("demo_ui", "User Interaction", "6.5.0"),
|
||||
("demo_text", "Fonts and Text Tags", "6.8.0"),
|
||||
("demo_character", "Character Objects", "6.2.0"),
|
||||
("demo_advanced", "Advanced Features", "6.9.0"),
|
||||
]
|
||||
|
||||
# Update above with this!
|
||||
demos_advanced = [
|
||||
("demo_layers", "Layers & Advanced Show", "5.6.5"),
|
||||
("demo_nvlmode", "NVL Mode", "6.4.0"),
|
||||
("demo_dynamic", "Dynamic Displayables", "5.6.3"),
|
||||
("demo_minigame", "Minigames", "6.3.2"),
|
||||
("demo_persistent", "Persistent Data", "6.7.0"),
|
||||
("demo_transform", "Transform", "6.9.0"),
|
||||
]
|
||||
|
||||
def demos_show(demos_info, nevermind):
|
||||
|
||||
renpy.choice_for_skipping()
|
||||
|
||||
ui.vbox(xpos=250, ypos=225, yanchor=0.5)
|
||||
|
||||
for label, name, ver in demos_info:
|
||||
ui.button(style='button',
|
||||
clicked=ui.returns(label),
|
||||
xminimum=530,
|
||||
left_padding=20)
|
||||
ui.hbox()
|
||||
ui.text(name, style='button_text', size=22, minwidth=440)
|
||||
ui.text(ver, style='button_text', size=22)
|
||||
ui.close()
|
||||
|
||||
ui.text(" ")
|
||||
|
||||
ui.button(style='button',
|
||||
clicked=ui.returns(False),
|
||||
xminimum=530,
|
||||
left_padding=20)
|
||||
|
||||
ui.text(nevermind, style='button_text', size=22, minwidth=450)
|
||||
|
||||
ui.close()
|
||||
|
||||
rfd = renpy.roll_forward_info()
|
||||
store.result = ui.interact(roll_forward=rfd)
|
||||
renpy.checkpoint(store.result)
|
||||
|
||||
|
||||
label demos:
|
||||
|
||||
# Is this the first time through the demo?
|
||||
$ demo_first_time = True
|
||||
|
||||
show eileen happy at left
|
||||
with move
|
||||
|
||||
label demo_repeat:
|
||||
|
||||
python hide:
|
||||
|
||||
if demo_first_time:
|
||||
e("What would you like demonstrated?", interact=False)
|
||||
else:
|
||||
e("Is there anything else you'd like demonstrated?", interact=False)
|
||||
|
||||
store.demo_first_time = False
|
||||
|
||||
demos_show(demos_main, "That's enough for now.")
|
||||
|
||||
# If the result is False, then the user clicked the "Enough for
|
||||
# now" button, and we should return to the main script.
|
||||
if result == False:
|
||||
|
||||
show eileen happy at center
|
||||
with move
|
||||
|
||||
return
|
||||
|
||||
# If the result is the advanced demo, just call it without
|
||||
# re-setting up the screen.
|
||||
elif result == "demo_advanced":
|
||||
|
||||
call demo_advanced from _call_demo_advanced_1
|
||||
|
||||
jump demo_repeat
|
||||
|
||||
else:
|
||||
|
||||
show eileen happy
|
||||
with move
|
||||
|
||||
# Otherwise, we want to call the result.
|
||||
call expression result from _call_result_1
|
||||
|
||||
show eileen happy at left
|
||||
with move
|
||||
|
||||
# And then re-show this menu.
|
||||
jump demo_repeat
|
||||
|
||||
|
||||
# Presented without commentary, as it's basically a repeat of the above.
|
||||
label demo_advanced:
|
||||
|
||||
# Hide the editor button.
|
||||
$ show_editor_button = False
|
||||
|
||||
python hide:
|
||||
|
||||
e("Which advanced feature would you like to learn about?", interact=False)
|
||||
|
||||
demos_show(demos_advanced, "Nevermind.")
|
||||
|
||||
# Move eileen back to the center of the screen, unless we're going for
|
||||
# an advanced demo.
|
||||
|
||||
# Show the editor button.
|
||||
$ show_editor_button = True
|
||||
|
||||
# If the result is False, then the user clicked the "Enough for
|
||||
# now" button, and we should return to the main script.
|
||||
if result == False:
|
||||
|
||||
return
|
||||
|
||||
else:
|
||||
|
||||
show eileen happy
|
||||
with move
|
||||
|
||||
# Otherwise, we want to call the result.
|
||||
call expression result from _call_result_2
|
||||
|
||||
show eileen happy at left
|
||||
with move
|
||||
|
||||
# And then re-show this menu.
|
||||
jump demo_advanced
|
||||
@@ -1,56 +0,0 @@
|
||||
# This file contains code that's used to display the editor button,
|
||||
# and the code that launches the editor with the given filename.
|
||||
|
||||
# This file can serve as an example of how to use an overlay, I guess.
|
||||
|
||||
init:
|
||||
|
||||
# This lets us control if the editor button is shown or not.
|
||||
$ show_editor_button = False
|
||||
|
||||
python hide:
|
||||
|
||||
# This function is called at least one per interaction.
|
||||
def overlay():
|
||||
|
||||
# If we don't want to show the editor button, do nothing.
|
||||
if not show_editor_button:
|
||||
return
|
||||
|
||||
# Figure out the filename and the line number.
|
||||
import os.path
|
||||
filename, line = renpy.get_filename_line()
|
||||
filename = os.path.basename(filename)
|
||||
|
||||
# The function that is called when the button is clicked.
|
||||
def clicked():
|
||||
|
||||
# We want to look for the filename in config.gamedir,
|
||||
# rather then using the full filename given by
|
||||
# get_filename_line. This is because the filename is fixed
|
||||
# when the file is compiled, and so may have changed before
|
||||
# the script is run. config.gamedir is computed when Ren'Py
|
||||
# starts up, and so should always be right.
|
||||
fullfn = config.gamedir + "/" + filename
|
||||
|
||||
# If the file exists, then we launch it in the editor, using
|
||||
# the undocumented launch_editor function.
|
||||
if os.path.exists(fullfn):
|
||||
renpy.launch_editor([ fullfn ], line)
|
||||
|
||||
# Display the button, modifying its look so that it doesn't
|
||||
# take up an excessive amount of space.
|
||||
ui.button(clicked=clicked,
|
||||
xpos=798, xanchor=1.0, ypos=2, xpadding=6, xminimum=200,
|
||||
background=RoundRect((0, 60, 120, 255), 6),
|
||||
hover_background=RoundRect((0, 80, 160, 255), 6),
|
||||
)
|
||||
|
||||
# The button contains this text. We can't use ui.textbutton,
|
||||
# since we want to restyle things.
|
||||
ui.text("%s:%d" % (filename, line),
|
||||
style="button_text",
|
||||
size=14)
|
||||
|
||||
# Append the overlay function to the list of overlay functions.
|
||||
config.overlay_functions.append(overlay)
|
||||
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 32 KiB |
@@ -1,169 +0,0 @@
|
||||
# This file is responsible for displaying code examples. It expects to see
|
||||
# comments like #begin foo and #end foo a the start of lines. The code is
|
||||
# then used to create example fragments.
|
||||
#
|
||||
# When we see:
|
||||
#
|
||||
# show example foo bar
|
||||
#
|
||||
# We concatenate fragements foo and bar, higlight them, wrap them into a
|
||||
# viewport, button and transform, and display them to the user.
|
||||
|
||||
transform example_transform:
|
||||
ypos 450 yanchor 1.0 xpos 0 xanchor 0
|
||||
|
||||
on replace:
|
||||
crop (0, 0, 800, 120)
|
||||
|
||||
on show:
|
||||
crop (0, 0, 800, 0)
|
||||
linear .5 crop (0, 0, 800, 120)
|
||||
|
||||
on hide:
|
||||
linear .5 crop (0, 0, 800, 0)
|
||||
|
||||
init python:
|
||||
|
||||
import re
|
||||
import keywords
|
||||
|
||||
KEYWORDS = set(keywords.keywords)
|
||||
PROPERTIES = set(keywords.properties)
|
||||
|
||||
KEYWORDS = [ re.escape(i) for i in keywords.keywords ]
|
||||
PROPERTIES = [ re.escape(i) for i in keywords.properties ]
|
||||
KWREGEX = r"|".join(KEYWORDS)
|
||||
PRREGEX = r"|".join(PROPERTIES)
|
||||
|
||||
regex = r"(?P<word>\b(\$|\w+)\b)" + \
|
||||
r"|(?P<string>\"([^\"]|\\.)*\")" + \
|
||||
r"|(?P<comment>#.*)"
|
||||
regex = re.compile(regex)
|
||||
|
||||
# This maps from example name to the text of the fragment.
|
||||
examples = { }
|
||||
|
||||
class __Example(object):
|
||||
"""
|
||||
When parameterized, this displays an example window, containing
|
||||
example text from blocks with those parameters.
|
||||
"""
|
||||
|
||||
def colorize(self, m):
|
||||
if m.group("string"):
|
||||
return "{color=#060}" + m.group(0) + "{/color}"
|
||||
|
||||
word = m.group("word")
|
||||
if word:
|
||||
if word in KEYWORDS:
|
||||
return "{color=#840}" + m.group(0) + "{/color}"
|
||||
elif word in PROPERTIES:
|
||||
return "{color=#048}" + m.group(0) + "{/color}"
|
||||
else:
|
||||
return m.group(0)
|
||||
|
||||
if m.group("comment"):
|
||||
return "{color=#600}" + m.group(0) + "{/color}"
|
||||
|
||||
return m.group(0)
|
||||
|
||||
def predict(self, callback):
|
||||
return
|
||||
|
||||
def _duplicate(self, args):
|
||||
|
||||
# Collect the examples we use.
|
||||
lines1 = [ ]
|
||||
|
||||
for i in args.args:
|
||||
if i not in examples:
|
||||
raise Exception("Unknown example %r." % i)
|
||||
lines1.extend(examples[i])
|
||||
|
||||
|
||||
# Strip off doubled blank lines.
|
||||
last_blank = False
|
||||
lines = [ ]
|
||||
|
||||
for i in lines1:
|
||||
|
||||
if not i and last_blank:
|
||||
continue
|
||||
|
||||
last_blank = not i
|
||||
|
||||
i = regex.sub(self.colorize, i)
|
||||
|
||||
lines.append(i)
|
||||
|
||||
# Join them into a single string.
|
||||
code = "\n".join(lines) + "\n "
|
||||
|
||||
ct = Text(code, size=16, color="#000")
|
||||
vp = Viewport(ct, child_size=(2000, 2000), ymaximum=120, draggable=True, mousewheel=True)
|
||||
w = Window(vp,
|
||||
background = "#fffc",
|
||||
top_padding=0,
|
||||
right_padding=0,
|
||||
bottom_padding=0,
|
||||
yminimum=0,
|
||||
)
|
||||
|
||||
return example_transform(w)
|
||||
|
||||
image example = __Example()
|
||||
|
||||
|
||||
init python hide:
|
||||
|
||||
import os.path
|
||||
import re
|
||||
|
||||
# A list of files we will be scanning.
|
||||
files = [ ]
|
||||
|
||||
for i in os.listdir(config.gamedir):
|
||||
if i.endswith(".rpy"):
|
||||
files.append(os.path.join(config.gamedir, i))
|
||||
|
||||
for fn in files:
|
||||
|
||||
f = file(fn, "r")
|
||||
|
||||
open_examples = set()
|
||||
|
||||
for l in f:
|
||||
|
||||
l = l.decode("utf-8")
|
||||
l = l.rstrip()
|
||||
|
||||
m = re.match("\s*#begin (\w+)", l)
|
||||
if m:
|
||||
example = m.group(1)
|
||||
|
||||
if example in examples:
|
||||
raise Exception("Example %r is defined in two places.", example)
|
||||
|
||||
open_examples.add(example)
|
||||
examples[example] = [ ]
|
||||
|
||||
continue
|
||||
|
||||
m = re.match("\s*#end (\w+)", l)
|
||||
if m:
|
||||
example = m.group(1)
|
||||
|
||||
if example not in open_examples:
|
||||
raise Exception("Example %r is not open.", example)
|
||||
|
||||
open_examples.remove(example)
|
||||
continue
|
||||
|
||||
for i in open_examples:
|
||||
examples[i].append(l)
|
||||
|
||||
if open_examples:
|
||||
raise Exception("Examples %r remain open at the end of %r" % (open_examples, fn))
|
||||
|
||||
f.close()
|
||||
|
||||
|
Before Width: | Height: | Size: 543 B |
|
Before Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 95 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 224 KiB |
|
Before Width: | Height: | Size: 223 KiB |
|
Before Width: | Height: | Size: 223 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 164 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 240 KiB |
|
Before Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 33 KiB |
@@ -1,400 +0,0 @@
|
||||
## This file contains some of the options that can be changed to customize
|
||||
## your Ren'Py game. It only contains the most common options... there
|
||||
## is quite a bit more customization you can do.
|
||||
##
|
||||
## Lines beginning with two '#' marks are comments, and you shouldn't
|
||||
## uncomment them. Lines beginning with a single '#' mark are
|
||||
## commented-out code, and you may want to uncomment them when
|
||||
## appropriate.
|
||||
|
||||
init -1 python hide:
|
||||
|
||||
## Should we enable the use of developer tools? This should be
|
||||
## set to False before the game is released, so the user can't
|
||||
## cheat using developer tools.
|
||||
|
||||
config.developer = True
|
||||
|
||||
## These control the width and height of the screen.
|
||||
|
||||
config.screen_width = 800
|
||||
config.screen_height = 600
|
||||
|
||||
## This controls the title of the window, when Ren'Py is
|
||||
## running in a window.
|
||||
|
||||
config.window_title = u"The Ren'Py Tutorial Game"
|
||||
|
||||
# These control the name and version of the game, that are reported
|
||||
# with tracebacks and other debugging logs.
|
||||
config.name = "Ren'Py Tutorial"
|
||||
config.version = '{}.{}.{} "{}"'.format(
|
||||
renpy.renpy.version_tuple[0],
|
||||
renpy.renpy.version_tuple[1],
|
||||
renpy.renpy.version_tuple[2],
|
||||
renpy.renpy.version_name)
|
||||
|
||||
## We then want to call a theme function. themes.roundrect is
|
||||
## a theme that features the use of rounded rectangles. It's
|
||||
## the only theme we currently support.
|
||||
##
|
||||
## The theme function takes a number of parameters that can
|
||||
## customize the color scheme.
|
||||
theme.roundrect(
|
||||
|
||||
## The color of an idle widget face.
|
||||
widget = "#003c78",
|
||||
|
||||
## The color of a focused widget face.
|
||||
widget_hover = "#0050a0",
|
||||
|
||||
## The color of the text in a widget.
|
||||
widget_text = "#c8ffff",
|
||||
|
||||
## The color of the text in a selected widget. (For
|
||||
## example, the current value of a preference.)
|
||||
widget_selected = "#ffffc8",
|
||||
|
||||
## The color of a disabled widget face.
|
||||
disabled = "#404040",
|
||||
|
||||
## The color of disabled widget text.
|
||||
disabled_text = "#c8c8c8",
|
||||
|
||||
## The color of informational labels.
|
||||
label = "#ffffff",
|
||||
|
||||
## The color of a frame containing widgets.
|
||||
frame = "#6496c8",
|
||||
|
||||
## If this is True, the in-game window is rounded. If False,
|
||||
## the in-game window is square.
|
||||
rounded_window = False,
|
||||
|
||||
## The background of the main menu. This can be a color
|
||||
## beginning with '#', or an image filename. The latter
|
||||
## should take up the full height and width of the screen.
|
||||
mm_root = "main_menu",
|
||||
|
||||
## The background of the game menu. This can be a color
|
||||
## beginning with '#', or an image filename. The latter
|
||||
## should take up the full height and width of the screen.
|
||||
gm_root = "#dcebff",
|
||||
|
||||
## If True, buttons, frames, and windows will rounded using a
|
||||
## 6px radius, rather then 12.
|
||||
less_rounded = True,
|
||||
|
||||
## And we're done with the theme. The theme will customize
|
||||
## various styles, so if we want to change them, we should
|
||||
## do so below.
|
||||
)
|
||||
|
||||
# For the demo, we use the nicer-looking bars from the outline
|
||||
# theme.
|
||||
theme.outline_bars(
|
||||
inside="#8cf",
|
||||
idle="#003c78",
|
||||
hover="#0050a0")
|
||||
|
||||
|
||||
#########################################
|
||||
## These settings let you customize the window containing the
|
||||
## dialogue and narration, by replacing it with an image.
|
||||
|
||||
## The background of the window. In a Frame, the four numbers are
|
||||
## the size of the left, top, right, and bottom borders, respectively.
|
||||
|
||||
# style.window.background = Frame("frame.png", 8, 0, 8, 0)
|
||||
|
||||
## Margin is space surrounding the window, where the background
|
||||
## is not drawn.
|
||||
|
||||
# style.window.left_margin = 6
|
||||
# style.window.right_margin = 6
|
||||
# style.window.top_margin = 6
|
||||
# style.window.bottom_margin = 6
|
||||
|
||||
## Padding is space inside the window, where the background is
|
||||
## drawn.
|
||||
|
||||
# style.window.left_padding = 6
|
||||
# style.window.right_padding = 6
|
||||
# style.window.top_padding = 6
|
||||
# style.window.bottom_padding = 6
|
||||
|
||||
## This is the minimum height of the window, including the margins
|
||||
## and padding.
|
||||
|
||||
# style.window.yminimum = 250
|
||||
|
||||
|
||||
#########################################
|
||||
## This lets you change the placement of the main menu.
|
||||
|
||||
## The way placement works is that we find an anchor point
|
||||
## inside a displayable, and a position (pos) point on the
|
||||
## screen. We then place the displayable so the two points are
|
||||
## at the same place.
|
||||
|
||||
## An anchor/pos can be given as an integer or a floating point
|
||||
## number. If an integer, the number is interpreted as a number
|
||||
## of pixels from the upper-left corner. If a floating point,
|
||||
## the number is interpreted as a fraction of the size of the
|
||||
## displayable or screen.
|
||||
|
||||
# style.mm_menu_frame.xpos = 0.5
|
||||
# style.mm_menu_frame.xanchor = 0.5
|
||||
# style.mm_menu_frame.ypos = 0.75
|
||||
# style.mm_menu_frame.yanchor = 0.5
|
||||
|
||||
|
||||
#########################################
|
||||
## These let you customize the default font used for text in Ren'Py.
|
||||
|
||||
## The file containing the default font.
|
||||
|
||||
# style.default.font = "DejaVuSans.ttf"
|
||||
|
||||
## The default size of text.
|
||||
|
||||
# style.default.size = 22
|
||||
|
||||
## Note that these only change the size of some of the text. Other
|
||||
## buttons have their own styles.
|
||||
|
||||
|
||||
#########################################
|
||||
## These settings let you change some of the sounds that are used by
|
||||
## Ren'Py.
|
||||
|
||||
## Set this to False if the game does not have any sound effects.
|
||||
|
||||
config.has_sound = True
|
||||
|
||||
## Set this to False if the game does not have any music.
|
||||
|
||||
config.has_music = True
|
||||
|
||||
## Set this to True if the game has voicing.
|
||||
|
||||
config.has_voice = False
|
||||
|
||||
## Sounds that are used when button and imagemaps are clicked.
|
||||
|
||||
style.button.activate_sound = "click.wav"
|
||||
style.imagemap.activate_sound = "click.wav"
|
||||
|
||||
## Sounds that are used when entering and exiting the game menu.
|
||||
|
||||
config.enter_sound = "click.wav"
|
||||
config.exit_sound = "click.wav"
|
||||
|
||||
## A sample sound that can be played to check the sound volume.
|
||||
|
||||
config.sample_sound = "tower_clock.ogg"
|
||||
|
||||
## Music that is played while the user is at the main menu.
|
||||
|
||||
# config.main_menu_music = "main_menu_theme.ogg"
|
||||
|
||||
|
||||
#########################################
|
||||
## Help.
|
||||
|
||||
## This lets you configure the help option on the Ren'Py menus.
|
||||
## It may be:
|
||||
## - A label in the script, in which case that label is called to
|
||||
## show help to the user.
|
||||
## - A file name relative to the base directory, which is opened in a
|
||||
## web browser.
|
||||
## - None, to disable help.
|
||||
config.help = "README.html"
|
||||
|
||||
|
||||
#########################################
|
||||
## Transitions.
|
||||
|
||||
## Used when entering the game menu from the game.
|
||||
config.enter_transition = dissolve
|
||||
|
||||
## Used when exiting the game menu to the game.
|
||||
config.exit_transition = dissolve
|
||||
|
||||
## Used between screens of the game menu.
|
||||
config.intra_transition = Dissolve(.25)
|
||||
|
||||
## Used when entering the game menu from the main menu.
|
||||
config.main_game_transition = Dissolve(.25)
|
||||
|
||||
## Used when returning to the main menu from the game.
|
||||
config.game_main_transition = Dissolve(.25)
|
||||
|
||||
## Used when entering the main menu from the splashscreen.
|
||||
config.end_splash_transition = None
|
||||
|
||||
## Used when entering the main menu after the game has ended.
|
||||
config.end_game_transition = fade
|
||||
|
||||
## Used when a game is loaded.
|
||||
config.after_load_transition = dissolve
|
||||
|
||||
## Used when the window is shown.
|
||||
config.window_show_transition = Dissolve(.25)
|
||||
|
||||
## Used when the window is hidden.
|
||||
config.window_hide_transition = Dissolve(.25)
|
||||
|
||||
## Used when showing NVL-mode text directly after ADV-mode text.
|
||||
config.adv_nvl_transition = dissolve
|
||||
|
||||
## Used when showing ADV-mode text directly after NVL-mode text.
|
||||
config.nvl_adv_transition = dissolve
|
||||
|
||||
## Used when yesno is shown.
|
||||
config.enter_yesno_transition = None
|
||||
|
||||
## Used when the yesno is hidden.
|
||||
config.exit_yesno_transition = None
|
||||
|
||||
## Used when entering a replay
|
||||
config.enter_replay_transition = None
|
||||
|
||||
## Used when exiting a replay
|
||||
config.exit_replay_transition = None
|
||||
|
||||
## Used when the image is changed by a say statement with image attributes.
|
||||
config.say_attribute_transition = None
|
||||
|
||||
#########################################
|
||||
## This is the name of the directory where the game's data is
|
||||
## stored. (It needs to be set early, before any other init code
|
||||
## is run, so the persisten information can be found by the init code.)
|
||||
python early:
|
||||
config.save_directory = "tutorial-1"
|
||||
|
||||
init -1 python hide:
|
||||
#########################################
|
||||
## Default values of Preferences.
|
||||
|
||||
## Note: These options are only evaluated the first time a
|
||||
## game is run. To have them run a second time, delete
|
||||
## game/saves/persistent
|
||||
|
||||
## Should we start in fullscreen mode?
|
||||
config.default_fullscreen = False
|
||||
|
||||
## The default text speed in characters per second. 0 is infinite.
|
||||
config.default_text_cps = 0
|
||||
|
||||
config.window_icon = "logo.png"
|
||||
config.windows_icon = "logo32.png"
|
||||
|
||||
# Set a default value for the auto-forward time, and note that AFM is
|
||||
# turned off by default.
|
||||
config.default_afm_time = 10
|
||||
config.default_afm_enable = False
|
||||
|
||||
# This is the main menu image we use.
|
||||
image main_menu:
|
||||
contains:
|
||||
"#000"
|
||||
|
||||
contains:
|
||||
"concert2"
|
||||
size (800, 509)
|
||||
|
||||
contains:
|
||||
Text("Ren'Py " + config.version, size=18)
|
||||
yalign .98
|
||||
xalign .02
|
||||
|
||||
# Demo game specific customizations.
|
||||
init python:
|
||||
style.mm_menu_frame.yalign = .98
|
||||
style.mm_menu_frame.xalign = .98
|
||||
|
||||
|
||||
init python hide:
|
||||
|
||||
import os
|
||||
launcher_language = os.environ.get("RENPY_LAUNCHER_LANGUAGE", "")
|
||||
|
||||
if launcher_language and launcher_language != persistent.launcher_language:
|
||||
|
||||
persistent.launcher_language = launcher_language
|
||||
|
||||
if launcher_language == "english" or (launcher_language not in renpy.known_languages()):
|
||||
launcher_language = None
|
||||
|
||||
_preferences.language = launcher_language
|
||||
|
||||
|
||||
## This section contains information about how to build your project into
|
||||
## distribution files.
|
||||
init python:
|
||||
|
||||
## The name that's used for directories and archive files. For example, if
|
||||
## this is 'mygame-1.0', the windows distribution will be in the
|
||||
## directory 'mygame-1.0-win', in the 'mygame-1.0-win.zip' file.
|
||||
build.directory_name = "tutorial-1.0"
|
||||
|
||||
## The name that's uses for executables - the program that users will run
|
||||
## to start the game. For example, if this is 'mygame', then on Windows,
|
||||
## users can click 'mygame.exe' to start the game.
|
||||
build.executable_name = "tutorial"
|
||||
|
||||
## If True, Ren'Py will include update information into packages. This
|
||||
## allows the updater to run.
|
||||
build.include_update = True
|
||||
|
||||
## File patterns:
|
||||
##
|
||||
## The following functions take file patterns. File patterns are case-
|
||||
## insensitive, and matched against the path relative to the base
|
||||
## directory, with and without a leading /. If multiple patterns match,
|
||||
## the first is used.
|
||||
##
|
||||
##
|
||||
## In a pattern:
|
||||
##
|
||||
## /
|
||||
## Is the directory separator.
|
||||
## *
|
||||
## Matches all characters, except the directory separator.
|
||||
## **
|
||||
## Matches all characters, including the directory separator.
|
||||
##
|
||||
## For example:
|
||||
##
|
||||
## *.txt
|
||||
## Matches txt files in the base directory.
|
||||
## game/**.ogg
|
||||
## Matches ogg files in the game directory or any of its subdirectories.
|
||||
## **.psd
|
||||
## Matches psd files anywhere in the project.
|
||||
|
||||
## Classify files as None to exclude them from the built distributions.
|
||||
|
||||
build.classify('**~', None)
|
||||
build.classify('**.bak', None)
|
||||
build.classify('**/.**', None)
|
||||
build.classify('**/#**', None)
|
||||
build.classify('**/thumbs.db', None)
|
||||
|
||||
## To archive files, classify them as 'archive'.
|
||||
|
||||
# build.classify('game/**.png', 'archive')
|
||||
# build.classify('game/**.jpg', 'archive')
|
||||
|
||||
## Files matching documentation patterns are duplicated in a mac app
|
||||
## build, so they appear in both the app and the zip file.
|
||||
|
||||
build.documentation('*.html')
|
||||
build.documentation('*.txt')
|
||||
|
||||
# This is tutorial specific code that searches for fonts in
|
||||
# launcher/fonts, reducing the size of the zip file containing
|
||||
# the SDK.
|
||||
config.searchpath.append("../launcher/game/fonts")
|
||||
|
||||
|
Before Width: | Height: | Size: 150 B |
|
Before Width: | Height: | Size: 316 B |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 19 KiB |
@@ -1,575 +0,0 @@
|
||||
# This file is in the public domain. Feel free to modify it as a basis
|
||||
# for your own screens.
|
||||
|
||||
# Note that many of these screens may be given additional arguments in the
|
||||
# future. The use of **kwargs in the parameter list ensures your code will
|
||||
# work in the future.
|
||||
|
||||
##############################################################################
|
||||
# Say
|
||||
#
|
||||
# Screen that's used to display adv-mode dialogue.
|
||||
# http://www.renpy.org/doc/html/screen_special.html#say
|
||||
screen say(who, what, side_image=None, two_window=False):
|
||||
|
||||
# Decide if we want to use the one-window or two-window variant.
|
||||
if not two_window:
|
||||
|
||||
# The one window variant.
|
||||
window:
|
||||
id "window"
|
||||
|
||||
has vbox:
|
||||
style "say_vbox"
|
||||
|
||||
if who:
|
||||
text who id "who"
|
||||
|
||||
text what id "what"
|
||||
|
||||
else:
|
||||
|
||||
# The two window variant.
|
||||
vbox:
|
||||
style "say_two_window_vbox"
|
||||
|
||||
if who:
|
||||
window:
|
||||
style "say_who_window"
|
||||
|
||||
text who:
|
||||
id "who"
|
||||
|
||||
window:
|
||||
id "window"
|
||||
|
||||
has vbox:
|
||||
style "say_vbox"
|
||||
|
||||
text what id "what"
|
||||
|
||||
# If there's a side image, display it above the text.
|
||||
if side_image:
|
||||
add side_image
|
||||
else:
|
||||
add SideImage() xalign 0.0 yalign 1.0
|
||||
|
||||
# Use the quick menu.
|
||||
use quick_menu
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Choice
|
||||
#
|
||||
# Screen that's used to display in-game menus.
|
||||
# http://www.renpy.org/doc/html/screen_special.html#choice
|
||||
|
||||
screen choice(items):
|
||||
|
||||
window:
|
||||
style "menu_window"
|
||||
xalign 0.5
|
||||
yalign 0.5
|
||||
|
||||
vbox:
|
||||
style "menu"
|
||||
spacing 2
|
||||
|
||||
for caption, action, chosen in items:
|
||||
|
||||
if action:
|
||||
|
||||
button:
|
||||
action action
|
||||
style "menu_choice_button"
|
||||
|
||||
text caption style "menu_choice"
|
||||
|
||||
else:
|
||||
text caption style "menu_caption"
|
||||
|
||||
init -2:
|
||||
$ config.narrator_menu = True
|
||||
|
||||
style menu_window is default
|
||||
|
||||
style menu_choice is button_text:
|
||||
clear
|
||||
|
||||
style menu_choice_button is button:
|
||||
xminimum int(config.screen_width * 0.75)
|
||||
xmaximum int(config.screen_width * 0.75)
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Input
|
||||
#
|
||||
# Screen that's used to display renpy.input()
|
||||
# http://www.renpy.org/doc/html/screen_special.html#input
|
||||
|
||||
screen input(prompt):
|
||||
|
||||
window style "input_window":
|
||||
has vbox
|
||||
|
||||
text prompt style "input_prompt"
|
||||
input id "input" style "input_text"
|
||||
|
||||
use quick_menu
|
||||
|
||||
##############################################################################
|
||||
# Nvl
|
||||
#
|
||||
# Screen used for nvl-mode dialogue and menus.
|
||||
# http://www.renpy.org/doc/html/screen_special.html#nvl
|
||||
|
||||
screen nvl(dialogue, items=None):
|
||||
|
||||
window:
|
||||
style "nvl_window"
|
||||
|
||||
has vbox:
|
||||
style "nvl_vbox"
|
||||
|
||||
# Display dialogue.
|
||||
for who, what, who_id, what_id, window_id in dialogue:
|
||||
window:
|
||||
id window_id
|
||||
|
||||
has hbox:
|
||||
spacing 10
|
||||
|
||||
if who is not None:
|
||||
text who id who_id
|
||||
|
||||
text what id what_id
|
||||
|
||||
# Display a menu, if given.
|
||||
if items:
|
||||
|
||||
vbox:
|
||||
id "menu"
|
||||
|
||||
for caption, action, chosen in items:
|
||||
|
||||
if action:
|
||||
|
||||
button:
|
||||
style "nvl_menu_choice_button"
|
||||
action action
|
||||
|
||||
text caption style "nvl_menu_choice"
|
||||
|
||||
else:
|
||||
|
||||
text caption style "nvl_dialogue"
|
||||
|
||||
add SideImage() xalign 0.0 yalign 1.0
|
||||
|
||||
use quick_menu
|
||||
|
||||
##############################################################################
|
||||
# Main Menu
|
||||
#
|
||||
# Screen that's used to display the main menu, when Ren'Py first starts
|
||||
# http://www.renpy.org/doc/html/screen_special.html#main-menu
|
||||
|
||||
screen main_menu():
|
||||
|
||||
# This ensures that any other menu screen is replaced.
|
||||
tag menu
|
||||
|
||||
# The background of the main menu.
|
||||
window:
|
||||
style "mm_root"
|
||||
|
||||
# The main menu buttons.
|
||||
frame:
|
||||
style_group "mm"
|
||||
xalign .98
|
||||
yalign .98
|
||||
|
||||
has vbox
|
||||
|
||||
textbutton _("Start Game") action Start()
|
||||
textbutton _("Load Game") action ShowMenu("load")
|
||||
textbutton _("Preferences") action ShowMenu("preferences")
|
||||
textbutton _("Help") action Help()
|
||||
textbutton _("Quit") action Quit(confirm=False)
|
||||
|
||||
init -2:
|
||||
|
||||
# Make all the main menu buttons be the same size.
|
||||
style mm_button:
|
||||
size_group "mm"
|
||||
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Navigation
|
||||
#
|
||||
# Screen that's included in other screens to display the game menu
|
||||
# navigation and background.
|
||||
# http://www.renpy.org/doc/html/screen_special.html#navigation
|
||||
screen navigation():
|
||||
|
||||
# The background of the game menu.
|
||||
window:
|
||||
style "gm_root"
|
||||
|
||||
# The various buttons.
|
||||
frame:
|
||||
style_group "gm_nav"
|
||||
xalign .98
|
||||
yalign .98
|
||||
|
||||
has vbox
|
||||
|
||||
textbutton _("Return") action Return()
|
||||
textbutton _("Preferences") action ShowMenu("preferences")
|
||||
textbutton _("Save Game") action ShowMenu("save")
|
||||
textbutton _("Load Game") action ShowMenu("load")
|
||||
textbutton _("Main Menu") action MainMenu()
|
||||
textbutton _("Help") action Help()
|
||||
textbutton _("Quit") action Quit()
|
||||
|
||||
init -2:
|
||||
|
||||
# Make all game menu navigation buttons the same size.
|
||||
style gm_nav_button:
|
||||
size_group "gm_nav"
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Save, Load
|
||||
#
|
||||
# Screens that allow the user to save and load the game.
|
||||
# http://www.renpy.org/doc/html/screen_special.html#save
|
||||
# http://www.renpy.org/doc/html/screen_special.html#load
|
||||
|
||||
# Since saving and loading are so similar, we combine them into
|
||||
# a single screen, file_picker. We then use the file_picker screen
|
||||
# from simple load and save screens.
|
||||
|
||||
screen file_picker():
|
||||
|
||||
frame:
|
||||
style "file_picker_frame"
|
||||
|
||||
has vbox
|
||||
|
||||
# The buttons at the top allow the user to pick a
|
||||
# page of files.
|
||||
hbox:
|
||||
style_group "file_picker_nav"
|
||||
|
||||
textbutton _("Previous"):
|
||||
action FilePagePrevious()
|
||||
|
||||
textbutton _("Auto"):
|
||||
action FilePage("auto")
|
||||
|
||||
textbutton _("Quick"):
|
||||
action FilePage("quick")
|
||||
|
||||
for i in range(1, 9):
|
||||
textbutton str(i):
|
||||
action FilePage(i)
|
||||
|
||||
textbutton _("Next"):
|
||||
action FilePageNext()
|
||||
|
||||
$ columns = 2
|
||||
$ rows = 5
|
||||
|
||||
# Display a grid of file slots.
|
||||
grid columns rows:
|
||||
transpose True
|
||||
xfill True
|
||||
style_group "file_picker"
|
||||
|
||||
# Display ten file slots, numbered 1 - 10.
|
||||
for i in range(1, columns * rows + 1):
|
||||
|
||||
# Each file slot is a button.
|
||||
button:
|
||||
action FileAction(i)
|
||||
xfill True
|
||||
|
||||
has hbox
|
||||
|
||||
# Add the screenshot.
|
||||
add FileScreenshot(i)
|
||||
|
||||
$ file_name = FileSlotName(i, columns * rows)
|
||||
$ file_time = FileTime(i, empty=_("Empty Slot."))
|
||||
$ save_name = FileSaveName(i)
|
||||
|
||||
text "[file_name]. [file_time!t]\n[save_name!t]"
|
||||
|
||||
key "save_delete" action FileDelete(i)
|
||||
|
||||
|
||||
screen save():
|
||||
|
||||
# This ensures that any other menu screen is replaced.
|
||||
tag menu
|
||||
|
||||
use navigation
|
||||
use file_picker
|
||||
|
||||
screen load():
|
||||
|
||||
# This ensures that any other menu screen is replaced.
|
||||
tag menu
|
||||
|
||||
use navigation
|
||||
use file_picker
|
||||
|
||||
init -2:
|
||||
style file_picker_frame is menu_frame
|
||||
style file_picker_nav_button is small_button
|
||||
style file_picker_nav_button_text is small_button_text
|
||||
style file_picker_button is large_button
|
||||
style file_picker_text is large_button_text
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Preferences
|
||||
#
|
||||
# Screen that allows the user to change the preferences.
|
||||
# http://www.renpy.org/doc/html/screen_special.html#prefereces
|
||||
|
||||
screen preferences():
|
||||
|
||||
tag menu
|
||||
|
||||
# Include the navigation.
|
||||
use navigation
|
||||
|
||||
# Put the navigation columns in a three-wide grid.
|
||||
grid 3 1:
|
||||
style_group "prefs"
|
||||
xfill True
|
||||
|
||||
# The left column.
|
||||
vbox:
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("Display")
|
||||
textbutton _("Window") action Preference("display", "window")
|
||||
textbutton _("Fullscreen") action Preference("display", "fullscreen")
|
||||
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("Transitions")
|
||||
textbutton _("All") action Preference("transitions", "all")
|
||||
textbutton _("None") action Preference("transitions", "none")
|
||||
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("Text Speed")
|
||||
bar value Preference("text speed")
|
||||
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
textbutton _("Joystick...") action Preference("joystick")
|
||||
|
||||
# tutorial-only
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("Language")
|
||||
textbutton "English" text_font "DejaVuSans.ttf" action Language(None)
|
||||
textbutton "日本語" text_font "MTLc3m.ttf" action Language("japanese")
|
||||
textbutton "한국어" text_font "NanumGothic.ttf" action Language("korean")
|
||||
textbutton "Русский" text_font "DejaVuSans.ttf" action Language("russian")
|
||||
textbutton "Tiếng Việt" text_font "DejaVuSans.ttf" action Language("vietnamese")
|
||||
textbutton "Indonesian" text_font "DejaVuSans.ttf" action Language("indonesian")
|
||||
|
||||
# end-tutorial-only
|
||||
|
||||
vbox:
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("Skip")
|
||||
textbutton _("Seen Messages") action Preference("skip", "seen")
|
||||
textbutton _("All Messages") action Preference("skip", "all")
|
||||
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
textbutton _("Begin Skipping") action Skip()
|
||||
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("After Choices")
|
||||
textbutton _("Stop Skipping") action Preference("after choices", "stop")
|
||||
textbutton _("Keep Skipping") action Preference("after choices", "skip")
|
||||
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("Auto-Forward Time")
|
||||
bar value Preference("auto-forward time")
|
||||
|
||||
if config.has_voice:
|
||||
textbutton _("Wait for Voice") action Preference("wait for voice", "toggle")
|
||||
|
||||
vbox:
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("Music Volume")
|
||||
bar value Preference("music volume")
|
||||
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("Sound Volume")
|
||||
bar value Preference("sound volume")
|
||||
|
||||
if config.sample_sound:
|
||||
textbutton _("Test"):
|
||||
action Play("sound", config.sample_sound)
|
||||
style "soundtest_button"
|
||||
|
||||
if config.has_voice:
|
||||
frame:
|
||||
style_group "pref"
|
||||
has vbox
|
||||
|
||||
label _("Voice Volume")
|
||||
bar value Preference("voice volume")
|
||||
|
||||
textbutton _("Voice Sustain") action Preference("voice sustain", "toggle")
|
||||
if config.sample_voice:
|
||||
textbutton _("Test"):
|
||||
action Play("voice", config.sample_voice)
|
||||
style "soundtest_button"
|
||||
|
||||
init -2:
|
||||
style pref_frame:
|
||||
xfill True
|
||||
xmargin 5
|
||||
top_margin 5
|
||||
|
||||
style pref_vbox:
|
||||
xfill True
|
||||
|
||||
style pref_button:
|
||||
size_group "pref"
|
||||
xalign 1.0
|
||||
|
||||
style pref_slider:
|
||||
xmaximum 192
|
||||
xalign 1.0
|
||||
|
||||
style soundtest_button:
|
||||
xalign 1.0
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Yes/No Prompt
|
||||
#
|
||||
# Screen that asks the user a yes or no question.
|
||||
# http://www.renpy.org/doc/html/screen_special.html#yesno-prompt
|
||||
|
||||
screen yesno_prompt(message, yes_action, no_action):
|
||||
|
||||
modal True
|
||||
|
||||
window:
|
||||
style "gm_root"
|
||||
|
||||
frame:
|
||||
style_group "yesno"
|
||||
|
||||
xfill True
|
||||
xmargin .05
|
||||
ypos .1
|
||||
yanchor 0
|
||||
ypadding .05
|
||||
|
||||
has vbox:
|
||||
xalign .5
|
||||
yalign .5
|
||||
spacing 30
|
||||
|
||||
label _(message):
|
||||
xalign 0.5
|
||||
|
||||
hbox:
|
||||
xalign 0.5
|
||||
spacing 100
|
||||
|
||||
textbutton _("Yes") action yes_action
|
||||
textbutton _("No") action no_action
|
||||
|
||||
# Right-click and escape answer "no".
|
||||
key "game_menu" action no_action
|
||||
|
||||
init -2:
|
||||
style yesno_button:
|
||||
size_group "yesno"
|
||||
|
||||
style yesno_label_text:
|
||||
text_align 0.5
|
||||
layout "subtitle"
|
||||
|
||||
|
||||
##############################################################################
|
||||
# Quick Menu
|
||||
#
|
||||
# A screen that's included by the default say screen, and adds quick access to
|
||||
# several useful functions.
|
||||
screen quick_menu():
|
||||
|
||||
# Add an in-game quick menu.
|
||||
hbox:
|
||||
style_group "quick"
|
||||
|
||||
xalign 1.0
|
||||
yalign 1.0
|
||||
|
||||
textbutton _("Back") action Rollback()
|
||||
textbutton _("Save") action ShowMenu('save')
|
||||
textbutton _("Q.Save") action QuickSave()
|
||||
textbutton _("Q.Load") action QuickLoad()
|
||||
textbutton _("Skip") action Skip()
|
||||
textbutton _("F.Skip") action Skip(fast=True, confirm=True)
|
||||
textbutton _("Auto") action Preference("auto-forward", "toggle")
|
||||
textbutton _("Prefs") action ShowMenu('preferences')
|
||||
|
||||
init -2:
|
||||
style quick_button:
|
||||
is default
|
||||
background None
|
||||
xpadding 5
|
||||
|
||||
style quick_button_text:
|
||||
is default
|
||||
size 12
|
||||
idle_color "#8888"
|
||||
hover_color "#ccc"
|
||||
selected_idle_color "#cc08"
|
||||
selected_hover_color "#cc0"
|
||||
insensitive_color "#4448"
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
# This file contains the script for the Ren'Py demo game. Execution starts at
|
||||
# the start label.
|
||||
|
||||
# Declare the characters.
|
||||
define e = Character(_('Eileen'), color="#c8ffc8")
|
||||
|
||||
init python:
|
||||
|
||||
tutorials = [
|
||||
("tutorial_playing", _("User Experience"), "6.10.0"),
|
||||
("tutorial_dialogue", _("Writing Dialogue"), "6.10.0"),
|
||||
("tutorial_images", _("Adding Images"), "6.10.0"),
|
||||
("tutorial_transitions", _("Transitions"), "6.99.8"),
|
||||
("tutorial_music", _("Music and Sound Effects"), "6.10.0"),
|
||||
("tutorial_menus", _("In-Game Menus and Python"), "6.10.0"),
|
||||
("tutorial_positions", _("Screen Positions"), "6.10.0"),
|
||||
("tutorial_atl", _("Animation and Transformation"), "6.10.0"),
|
||||
("tutorial_video", _("Video Playback"), "6.10.0"),
|
||||
("demo_transitions", _("Transition Gallery"), "6.11.1"),
|
||||
("demo_imageops", _("Image Operations"), "6.5.0"),
|
||||
("demo_ui", _("User Interaction"), "6.15.0"),
|
||||
("demo_text", _("Fonts and Text Tags"), "6.13.0"),
|
||||
("demo_character", _("Character Objects"), "6.2.0"),
|
||||
("demo_layers", _("Layers & Advanced Show"), "6.17.0"),
|
||||
("demo_nvlmode", _("NVL Mode"), "6.4.0"),
|
||||
("demo_dynamic", _("Dynamic Displayables"), "5.6.3"),
|
||||
("demo_minigame", _("Minigames"), "6.3.2"),
|
||||
("demo_persistent", _("Persistent Data"), "6.7.0"),
|
||||
("demo_transform", _("Transform"), "6.9.0"),
|
||||
("tutorial_sprite", _("Sprites"), "6.12.0"),
|
||||
]
|
||||
|
||||
screen tutorials:
|
||||
|
||||
side "c r":
|
||||
area (250, 40, 548, 400)
|
||||
|
||||
viewport:
|
||||
yadjustment adj
|
||||
mousewheel True
|
||||
|
||||
vbox:
|
||||
for label, name, ver in tutorials:
|
||||
button:
|
||||
action Return(label)
|
||||
left_padding 20
|
||||
xfill True
|
||||
|
||||
hbox:
|
||||
text name style "button_text" min_width 420
|
||||
text ver style "button_text"
|
||||
|
||||
null height 20
|
||||
|
||||
textbutton _("That's enough for now."):
|
||||
xfill True
|
||||
action Return(False)
|
||||
|
||||
bar adjustment adj style "vscrollbar"
|
||||
|
||||
|
||||
# The game starts here.
|
||||
#begin start
|
||||
label start:
|
||||
|
||||
#end start
|
||||
scene bg washington
|
||||
show eileen vhappy
|
||||
with dissolve
|
||||
|
||||
# Start the background music playing.
|
||||
play music "sunflower-slow-drag.ogg"
|
||||
|
||||
window show
|
||||
|
||||
e "Hi! My name is Eileen, and I'd like to welcome you to the Ren'Py tutorial."
|
||||
|
||||
show eileen happy
|
||||
|
||||
e "In this tutorial, we'll teach you the basics of Ren'Py, so you can make games of your own. We'll also demonstrate many features, so you can see what Ren'Py is capable of."
|
||||
|
||||
$ tutorials_adjustment = ui.adjustment()
|
||||
$ tutorials_first_time = True
|
||||
|
||||
label tutorials:
|
||||
|
||||
show eileen happy at left
|
||||
with move
|
||||
|
||||
if tutorials_first_time:
|
||||
$ e(_("What would you like to see?"), interact=False)
|
||||
else:
|
||||
$ e(_("Is there anything else you'd like to see?"), interact=False)
|
||||
|
||||
$ tutorials_first_time = False
|
||||
|
||||
call screen tutorials(adj=tutorials_adjustment)
|
||||
|
||||
show eileen happy at center
|
||||
with move
|
||||
|
||||
if _return is False:
|
||||
jump end
|
||||
|
||||
call expression _return from _call_expression
|
||||
|
||||
jump tutorials
|
||||
|
||||
label end:
|
||||
|
||||
e "Thank you for viewing this tutorial."
|
||||
|
||||
e "If you'd like to see a full Ren'Py game, select \"The Question\" in the launcher."
|
||||
|
||||
e "You can download new versions of Ren'Py from {a=http://www.renpy.org/}http://www.renpy.org/{/a}. For help and discussion, check out the {a=http://lemmasoft.renai.us/forums/}Lemma Soft Forums{/a}."
|
||||
|
||||
e "We'd like to thank Piroshki for contributing my sprites, Mugenjohncel for Lucy and the band, and Jake for the magic circle."
|
||||
|
||||
e "The background music is \"Sunflower Slow Drag\", by Scott Joplin and Scott Hayden, performed by the United States Marine Band. The concert music is by Alessio."
|
||||
|
||||
show eileen vhappy
|
||||
|
||||
e "We look forward to seeing what you can make with Ren'Py. Have fun!"
|
||||
|
||||
window hide
|
||||
|
||||
# Returning from the top level quits the game.
|
||||
return
|
||||
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 399 B |
|
Before Width: | Height: | Size: 659 B |
@@ -1,213 +0,0 @@
|
||||
testcase default:
|
||||
"Start Game"
|
||||
click until label tutorials
|
||||
|
||||
call user_experience
|
||||
call dialogue
|
||||
call images
|
||||
call transitions
|
||||
call music_and_sound
|
||||
call menus
|
||||
call positions
|
||||
call atl
|
||||
call video
|
||||
call transition_gallery
|
||||
call image_operations
|
||||
call user_interaction
|
||||
call fonts
|
||||
|
||||
# Scroll the bar down.
|
||||
"Bar" pos (5, 1.0)
|
||||
|
||||
call character_objects
|
||||
call layers
|
||||
call nvl_mode
|
||||
call dynamic
|
||||
call minigames
|
||||
call persistent
|
||||
call transforms
|
||||
call sprites
|
||||
|
||||
"That's enough for now."
|
||||
click until "Quit"
|
||||
|
||||
pause .6 # Wait out the main menu transition.
|
||||
"Quit"
|
||||
|
||||
testcase quick:
|
||||
"Start Game"
|
||||
click until label tutorials
|
||||
|
||||
# Scroll the bar down.
|
||||
"Bar" pos (5, 1.0)
|
||||
|
||||
|
||||
testcase user_experience:
|
||||
"User Experience"
|
||||
click until "Yes."
|
||||
|
||||
# Dialogue after menu.
|
||||
click
|
||||
click
|
||||
click
|
||||
|
||||
# Rollback to the menu.
|
||||
click button 4
|
||||
click button 4
|
||||
click button 4
|
||||
click button 4
|
||||
|
||||
# Roll forward.
|
||||
click button 5
|
||||
click button 5
|
||||
|
||||
# Back again.
|
||||
click button 4
|
||||
click button 4
|
||||
|
||||
# Roll forward.
|
||||
type PAGEDOWN
|
||||
type PAGEDOWN
|
||||
|
||||
# Back again.
|
||||
type PAGEUP
|
||||
type PAGEUP
|
||||
|
||||
"No."
|
||||
|
||||
click until label tutorials
|
||||
|
||||
testcase dialogue:
|
||||
"Writing Dialogue"
|
||||
click until label tutorials
|
||||
|
||||
testcase images:
|
||||
"Adding Images"
|
||||
click until label tutorials
|
||||
|
||||
testcase transitions:
|
||||
"Transitions"
|
||||
click until label tutorials
|
||||
|
||||
testcase music_and_sound:
|
||||
"Music and Sound Effects"
|
||||
click until label tutorials
|
||||
|
||||
testcase menus:
|
||||
"In-Game Menus and Python"
|
||||
click until "Yes, I do."
|
||||
click until label tutorials
|
||||
|
||||
testcase positions:
|
||||
"Screen Positions"
|
||||
click until "xpos .75 ypos .25"
|
||||
click until label tutorials
|
||||
|
||||
testcase atl:
|
||||
"Animation and Transformation"
|
||||
click until label tutorials
|
||||
|
||||
testcase video:
|
||||
"Video Playback"
|
||||
click until label tutorials
|
||||
|
||||
testcase transition_gallery:
|
||||
"Transition Gallery"
|
||||
click until "Simple"
|
||||
click until "ImageDissolve"
|
||||
click until "MoveTransition"
|
||||
click until "CropMove"
|
||||
click until "PushMove"
|
||||
click until "AlphaDissolve"
|
||||
click until "something else"
|
||||
click until label tutorials
|
||||
|
||||
testcase image_operations:
|
||||
"Image Operations"
|
||||
click until label tutorials
|
||||
|
||||
testcase user_interaction:
|
||||
"User Interaction"
|
||||
click until "Yes."
|
||||
click
|
||||
click
|
||||
type "Tom"
|
||||
type BACKSPACE
|
||||
type "m"
|
||||
type LEFT
|
||||
type RIGHT
|
||||
type "\n"
|
||||
click until "art"
|
||||
click until "We also support viewports"
|
||||
click
|
||||
|
||||
# At the viewport screen.
|
||||
drag [ (400, 400), (200, 200) ]
|
||||
drag [ (400, 400), (200, 200) ]
|
||||
drag [ (400, 400), (200, 200) ]
|
||||
drag [ (400, 400), (200, 200) ]
|
||||
drag [ (200, 200), (400, 400) ]
|
||||
drag [ (200, 200), (400, 400) ]
|
||||
drag [ (200, 200), (400, 400) ]
|
||||
drag [ (200, 200), (400, 400) ]
|
||||
|
||||
|
||||
drag [ (0.0, 0.5), (1.0, 0.5), (0.0, 0.5) ] pattern "viewport horizontal scrollbar"
|
||||
drag [ (0.5, 0.0), (0.5, 1.0), (0.5, 0.0) ] pattern "viewport vertical scrollbar"
|
||||
|
||||
"Dismiss"
|
||||
|
||||
# Keep out of the corners so we don't hit the quick menu buttons.
|
||||
move (.95, .95)
|
||||
pause 1.0
|
||||
move (0.05, 0.05)
|
||||
pause 1.0
|
||||
move (0.5, 0.5)
|
||||
pause .1
|
||||
|
||||
click until "Continue"
|
||||
click until label tutorials
|
||||
|
||||
testcase fonts:
|
||||
"Fonts and Text Tags"
|
||||
click until label tutorials
|
||||
|
||||
testcase character_objects:
|
||||
"Character Objects"
|
||||
click until label tutorials
|
||||
|
||||
testcase layers:
|
||||
"Layers & Advanced Show"
|
||||
click until label tutorials
|
||||
|
||||
testcase nvl_mode:
|
||||
"NVL Mode"
|
||||
click until "Yes."
|
||||
click until label tutorials
|
||||
|
||||
testcase dynamic:
|
||||
"Dynamic Displayables"
|
||||
click until label tutorials
|
||||
|
||||
testcase minigames:
|
||||
"Minigames"
|
||||
$ _test.timeout = 60.0
|
||||
$ _test.force = True
|
||||
click always until "No thanks."
|
||||
$ _test.timeout = 5.0
|
||||
$ _test.force = False
|
||||
|
||||
click until label tutorials
|
||||
|
||||
testcase persistent:
|
||||
"Persistent Data"
|
||||
click until label tutorials
|
||||
|
||||
testcase transforms:
|
||||
"Transform"
|
||||
click until "A Working Button"
|
||||
click until label tutorials
|
||||
|
||||
testcase sprites:
|
||||
"Sprites"
|
||||
click until label tutorials
|
||||
@@ -1,743 +0,0 @@
|
||||
|
||||
translate None strings:
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Monday"
|
||||
new "{#weekday}Monday"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Tuesday"
|
||||
new "{#weekday}Tuesday"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Wednesday"
|
||||
new "{#weekday}Wednesday"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Thursday"
|
||||
new "{#weekday}Thursday"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Friday"
|
||||
new "{#weekday}Friday"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Saturday"
|
||||
new "{#weekday}Saturday"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Sunday"
|
||||
new "{#weekday}Sunday"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Mon"
|
||||
new "{#weekday_short}Mon"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Tue"
|
||||
new "{#weekday_short}Tue"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Wed"
|
||||
new "{#weekday_short}Wed"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Thu"
|
||||
new "{#weekday_short}Thu"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Fri"
|
||||
new "{#weekday_short}Fri"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Sat"
|
||||
new "{#weekday_short}Sat"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Sun"
|
||||
new "{#weekday_short}Sun"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}January"
|
||||
new "{#month}January"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}February"
|
||||
new "{#month}February"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}March"
|
||||
new "{#month}March"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}April"
|
||||
new "{#month}April"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}May"
|
||||
new "{#month}May"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}June"
|
||||
new "{#month}June"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}July"
|
||||
new "{#month}July"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}August"
|
||||
new "{#month}August"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}September"
|
||||
new "{#month}September"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}October"
|
||||
new "{#month}October"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}November"
|
||||
new "{#month}November"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}December"
|
||||
new "{#month}December"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Jan"
|
||||
new "{#month_short}Jan"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Feb"
|
||||
new "{#month_short}Feb"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Mar"
|
||||
new "{#month_short}Mar"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Apr"
|
||||
new "{#month_short}Apr"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}May"
|
||||
new "{#month_short}May"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Jun"
|
||||
new "{#month_short}Jun"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Jul"
|
||||
new "{#month_short}Jul"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Aug"
|
||||
new "{#month_short}Aug"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Sep"
|
||||
new "{#month_short}Sep"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Oct"
|
||||
new "{#month_short}Oct"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Nov"
|
||||
new "{#month_short}Nov"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Dec"
|
||||
new "{#month_short}Dec"
|
||||
|
||||
# 00action_file.rpy:235
|
||||
old "%b %d, %H:%M"
|
||||
new "%b %d, %H:%M"
|
||||
|
||||
# 00action_file.rpy:569
|
||||
old "Page {}"
|
||||
new "Page {}"
|
||||
|
||||
# 00action_file.rpy:569
|
||||
old "Automatic saves"
|
||||
new "Automatic saves"
|
||||
|
||||
# 00action_file.rpy:569
|
||||
old "Quick saves"
|
||||
new "Quick saves"
|
||||
|
||||
# 00action_file.rpy:820
|
||||
old "Quick save complete."
|
||||
new "Quick save complete."
|
||||
|
||||
# 00gui.rpy:227
|
||||
old "Are you sure?"
|
||||
new "Are you sure?"
|
||||
|
||||
# 00gui.rpy:228
|
||||
old "Are you sure you want to delete this save?"
|
||||
new "Are you sure you want to delete this save?"
|
||||
|
||||
# 00gui.rpy:229
|
||||
old "Are you sure you want to overwrite your save?"
|
||||
new "Are you sure you want to overwrite your save?"
|
||||
|
||||
# 00gui.rpy:230
|
||||
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
|
||||
new "Loading will lose unsaved progress.\nAre you sure you want to do this?"
|
||||
|
||||
# 00gui.rpy:231
|
||||
old "Are you sure you want to quit?"
|
||||
new "Are you sure you want to quit?"
|
||||
|
||||
# 00gui.rpy:232
|
||||
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
|
||||
new "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
|
||||
|
||||
# 00gui.rpy:233
|
||||
old "Are you sure you want to end the replay?"
|
||||
new "Are you sure you want to end the replay?"
|
||||
|
||||
# 00gui.rpy:234
|
||||
old "Are you sure you want to begin skipping?"
|
||||
new "Are you sure you want to begin skipping?"
|
||||
|
||||
# 00gui.rpy:235
|
||||
old "Are you sure you want to skip to the next choice?"
|
||||
new "Are you sure you want to skip to the next choice?"
|
||||
|
||||
# 00gui.rpy:236
|
||||
old "Are you sure you want to skip unseen dialogue to the next choice?"
|
||||
new "Are you sure you want to skip unseen dialogue to the next choice?"
|
||||
|
||||
# 00keymap.rpy:251
|
||||
old "Saved screenshot as %s."
|
||||
new "Saved screenshot as %s."
|
||||
|
||||
# 00library.rpy:142
|
||||
old "Self-voicing disabled."
|
||||
new "Self-voicing disabled."
|
||||
|
||||
# 00library.rpy:143
|
||||
old "Clipboard voicing enabled. "
|
||||
new "Clipboard voicing enabled. "
|
||||
|
||||
# 00library.rpy:144
|
||||
old "Self-voicing enabled. "
|
||||
new "Self-voicing enabled. "
|
||||
|
||||
# 00library.rpy:179
|
||||
old "Skip Mode"
|
||||
new "Skip Mode"
|
||||
|
||||
# 00library.rpy:262
|
||||
old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}."
|
||||
new "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}."
|
||||
|
||||
# 00preferences.rpy:422
|
||||
old "Clipboard voicing enabled. Press 'shift+C' to disable."
|
||||
new "Clipboard voicing enabled. Press 'shift+C' to disable."
|
||||
|
||||
# 00preferences.rpy:424
|
||||
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
|
||||
new "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
|
||||
|
||||
# 00preferences.rpy:426
|
||||
old "Self-voicing enabled. Press 'v' to disable."
|
||||
new "Self-voicing enabled. Press 'v' to disable."
|
||||
|
||||
# 00iap.rpy:217
|
||||
old "Contacting App Store\nPlease Wait..."
|
||||
new "Contacting App Store\nPlease Wait..."
|
||||
|
||||
# 00updater.rpy:373
|
||||
old "The Ren'Py Updater is not supported on mobile devices."
|
||||
new "The Ren'Py Updater is not supported on mobile devices."
|
||||
|
||||
# 00updater.rpy:492
|
||||
old "An error is being simulated."
|
||||
new "An error is being simulated."
|
||||
|
||||
# 00updater.rpy:668
|
||||
old "Either this project does not support updating, or the update status file was deleted."
|
||||
new "Either this project does not support updating, or the update status file was deleted."
|
||||
|
||||
# 00updater.rpy:682
|
||||
old "This account does not have permission to perform an update."
|
||||
new "This account does not have permission to perform an update."
|
||||
|
||||
# 00updater.rpy:685
|
||||
old "This account does not have permission to write the update log."
|
||||
new "This account does not have permission to write the update log."
|
||||
|
||||
# 00updater.rpy:710
|
||||
old "Could not verify update signature."
|
||||
new "Could not verify update signature."
|
||||
|
||||
# 00updater.rpy:981
|
||||
old "The update file was not downloaded."
|
||||
new "The update file was not downloaded."
|
||||
|
||||
# 00updater.rpy:999
|
||||
old "The update file does not have the correct digest - it may have been corrupted."
|
||||
new "The update file does not have the correct digest - it may have been corrupted."
|
||||
|
||||
# 00updater.rpy:1055
|
||||
old "While unpacking {}, unknown type {}."
|
||||
new "While unpacking {}, unknown type {}."
|
||||
|
||||
# 00updater.rpy:1399
|
||||
old "Updater"
|
||||
new "Updater"
|
||||
|
||||
# 00updater.rpy:1406
|
||||
old "An error has occured:"
|
||||
new "An error has occured:"
|
||||
|
||||
# 00updater.rpy:1408
|
||||
old "Checking for updates."
|
||||
new "Checking for updates."
|
||||
|
||||
# 00updater.rpy:1410
|
||||
old "This program is up to date."
|
||||
new "This program is up to date."
|
||||
|
||||
# 00updater.rpy:1412
|
||||
old "[u.version] is available. Do you want to install it?"
|
||||
new "[u.version] is available. Do you want to install it?"
|
||||
|
||||
# 00updater.rpy:1414
|
||||
old "Preparing to download the updates."
|
||||
new "Preparing to download the updates."
|
||||
|
||||
# 00updater.rpy:1416
|
||||
old "Downloading the updates."
|
||||
new "Downloading the updates."
|
||||
|
||||
# 00updater.rpy:1418
|
||||
old "Unpacking the updates."
|
||||
new "Unpacking the updates."
|
||||
|
||||
# 00updater.rpy:1420
|
||||
old "Finishing up."
|
||||
new "Finishing up."
|
||||
|
||||
# 00updater.rpy:1422
|
||||
old "The updates have been installed. The program will restart."
|
||||
new "The updates have been installed. The program will restart."
|
||||
|
||||
# 00updater.rpy:1424
|
||||
old "The updates have been installed."
|
||||
new "The updates have been installed."
|
||||
|
||||
# 00updater.rpy:1426
|
||||
old "The updates were cancelled."
|
||||
new "The updates were cancelled."
|
||||
|
||||
# 00updater.rpy:1441
|
||||
old "Proceed"
|
||||
new "Proceed"
|
||||
|
||||
# 00updater.rpy:1444
|
||||
old "Cancel"
|
||||
new "Cancel"
|
||||
|
||||
# 00compat.rpy:202
|
||||
old "Fullscreen"
|
||||
new "Fullscreen"
|
||||
|
||||
# 00gallery.rpy:563
|
||||
old "Image [index] of [count] locked."
|
||||
new "Image [index] of [count] locked."
|
||||
|
||||
# 00gallery.rpy:583
|
||||
old "prev"
|
||||
new "prev"
|
||||
|
||||
# 00gallery.rpy:584
|
||||
old "next"
|
||||
new "next"
|
||||
|
||||
# 00gallery.rpy:585
|
||||
old "slideshow"
|
||||
new "slideshow"
|
||||
|
||||
# 00gallery.rpy:586
|
||||
old "return"
|
||||
new "return"
|
||||
|
||||
# 00gltest.rpy:64
|
||||
old "Graphics Acceleration"
|
||||
new "Graphics Acceleration"
|
||||
|
||||
# 00gltest.rpy:70
|
||||
old "Automatically Choose"
|
||||
new "Automatically Choose"
|
||||
|
||||
# 00gltest.rpy:75
|
||||
old "Force Angle/DirectX Renderer"
|
||||
new "Force Angle/DirectX Renderer"
|
||||
|
||||
# 00gltest.rpy:79
|
||||
old "Force OpenGL Renderer"
|
||||
new "Force OpenGL Renderer"
|
||||
|
||||
# 00gltest.rpy:83
|
||||
old "Force Software Renderer"
|
||||
new "Force Software Renderer"
|
||||
|
||||
# 00gltest.rpy:89
|
||||
old "Gamepad"
|
||||
new "Gamepad"
|
||||
|
||||
# 00gltest.rpy:93
|
||||
old "Enable"
|
||||
new "Enable"
|
||||
|
||||
# 00gltest.rpy:97
|
||||
old "Disable"
|
||||
new "Disable"
|
||||
|
||||
# 00gltest.rpy:103
|
||||
old "Calibrate"
|
||||
new "Calibrate"
|
||||
|
||||
# 00gltest.rpy:109
|
||||
old "Changes will take effect the next time this program is run."
|
||||
new "Changes will take effect the next time this program is run."
|
||||
|
||||
# 00gltest.rpy:114
|
||||
old "Quit"
|
||||
new "Quit"
|
||||
|
||||
# 00gltest.rpy:119
|
||||
old "Return"
|
||||
new "Return"
|
||||
|
||||
# 00gltest.rpy:141
|
||||
old "Performance Warning"
|
||||
new "Performance Warning"
|
||||
|
||||
# 00gltest.rpy:146
|
||||
old "This computer is using software rendering."
|
||||
new "This computer is using software rendering."
|
||||
|
||||
# 00gltest.rpy:148
|
||||
old "This computer is not using shaders."
|
||||
new "This computer is not using shaders."
|
||||
|
||||
# 00gltest.rpy:150
|
||||
old "This computer is displaying graphics slowly."
|
||||
new "This computer is displaying graphics slowly."
|
||||
|
||||
# 00gltest.rpy:152
|
||||
old "This computer has a problem displaying graphics: [problem]."
|
||||
new "This computer has a problem displaying graphics: [problem]."
|
||||
|
||||
# 00gltest.rpy:157
|
||||
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
|
||||
new "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
|
||||
|
||||
# 00gltest.rpy:159
|
||||
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
|
||||
new "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
|
||||
|
||||
# 00gltest.rpy:164
|
||||
old "Update DirectX"
|
||||
new "Update DirectX"
|
||||
|
||||
# 00gltest.rpy:170
|
||||
old "Continue, Show this warning again"
|
||||
new "Continue, Show this warning again"
|
||||
|
||||
# 00gltest.rpy:174
|
||||
old "Continue, Don't show warning again"
|
||||
new "Continue, Don't show warning again"
|
||||
|
||||
# 00gltest.rpy:192
|
||||
old "Updating DirectX."
|
||||
new "Updating DirectX."
|
||||
|
||||
# 00gltest.rpy:196
|
||||
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
|
||||
new "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
|
||||
|
||||
# 00gltest.rpy:200
|
||||
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
|
||||
new "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
|
||||
|
||||
# 00gltest.rpy:204
|
||||
old "When setup finishes, please click below to restart this program."
|
||||
new "When setup finishes, please click below to restart this program."
|
||||
|
||||
# 00gltest.rpy:206
|
||||
old "Restart"
|
||||
new "Restart"
|
||||
|
||||
# 00gamepad.rpy:32
|
||||
old "Select Gamepad to Calibrate"
|
||||
new "Select Gamepad to Calibrate"
|
||||
|
||||
# 00gamepad.rpy:35
|
||||
old "No Gamepads Available"
|
||||
new "No Gamepads Available"
|
||||
|
||||
# 00gamepad.rpy:54
|
||||
old "Calibrating [name] ([i]/[total])"
|
||||
new "Calibrating [name] ([i]/[total])"
|
||||
|
||||
# 00gamepad.rpy:58
|
||||
old "Press or move the [control!r] [kind]."
|
||||
new "Press or move the [control!r] [kind]."
|
||||
|
||||
# 00gamepad.rpy:66
|
||||
old "Skip (A)"
|
||||
new "Skip (A)"
|
||||
|
||||
# 00gamepad.rpy:69
|
||||
old "Back (B)"
|
||||
new "Back (B)"
|
||||
|
||||
# _errorhandling.rpym:504
|
||||
old "Open Traceback"
|
||||
new "Open Traceback"
|
||||
|
||||
# _errorhandling.rpym:506
|
||||
old "Opens the traceback.txt file in a text editor."
|
||||
new "Opens the traceback.txt file in a text editor."
|
||||
|
||||
# _errorhandling.rpym:508
|
||||
old "Copy to Clipboard"
|
||||
new "Copy to Clipboard"
|
||||
|
||||
# _errorhandling.rpym:510
|
||||
old "Copies the traceback.txt file to the clipboard."
|
||||
new "Copies the traceback.txt file to the clipboard."
|
||||
|
||||
# _errorhandling.rpym:528
|
||||
old "An exception has occurred."
|
||||
new "An exception has occurred."
|
||||
|
||||
# _errorhandling.rpym:547
|
||||
old "Rollback"
|
||||
new "Rollback"
|
||||
|
||||
# _errorhandling.rpym:549
|
||||
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
|
||||
new "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
|
||||
|
||||
# _errorhandling.rpym:552
|
||||
old "Ignore"
|
||||
new "Ignore"
|
||||
|
||||
# _errorhandling.rpym:554
|
||||
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
|
||||
new "Ignores the exception, allowing you to continue. This often leads to additional errors."
|
||||
|
||||
# _errorhandling.rpym:557
|
||||
old "Reload"
|
||||
new "Reload"
|
||||
|
||||
# _errorhandling.rpym:559
|
||||
old "Reloads the game from disk, saving and restoring game state if possible."
|
||||
new "Reloads the game from disk, saving and restoring game state if possible."
|
||||
|
||||
# _errorhandling.rpym:569
|
||||
old "Quits the game."
|
||||
new "Quits the game."
|
||||
|
||||
# _errorhandling.rpym:591
|
||||
old "Parsing the script failed."
|
||||
new "Parsing the script failed."
|
||||
|
||||
# _errorhandling.rpym:615
|
||||
old "Open Parse Errors"
|
||||
new "Open Parse Errors"
|
||||
|
||||
# _errorhandling.rpym:617
|
||||
old "Opens the errors.txt file in a text editor."
|
||||
new "Opens the errors.txt file in a text editor."
|
||||
|
||||
# _errorhandling.rpym:621
|
||||
old "Copies the errors.txt file to the clipboard."
|
||||
new "Copies the errors.txt file to the clipboard."
|
||||
|
||||
# _developer/developer.rpym:38
|
||||
old "Developer Menu"
|
||||
new "Developer Menu"
|
||||
|
||||
# _developer/developer.rpym:43
|
||||
old "Reload Game (Shift+R)"
|
||||
new "Reload Game (Shift+R)"
|
||||
|
||||
# _developer/developer.rpym:45
|
||||
old "Console (Shift+O)"
|
||||
new "Console (Shift+O)"
|
||||
|
||||
# _developer/developer.rpym:47
|
||||
old "Variable Viewer"
|
||||
new "Variable Viewer"
|
||||
|
||||
# _developer/developer.rpym:49
|
||||
old "Theme Test"
|
||||
new "Theme Test"
|
||||
|
||||
# _developer/developer.rpym:51
|
||||
old "Image Location Picker"
|
||||
new "Image Location Picker"
|
||||
|
||||
# _developer/developer.rpym:53
|
||||
old "Filename List"
|
||||
new "Filename List"
|
||||
|
||||
# _developer/developer.rpym:57
|
||||
old "Show Image Load Log"
|
||||
new "Show Image Load Log"
|
||||
|
||||
# _developer/developer.rpym:60
|
||||
old "Hide Image Load Log"
|
||||
new "Hide Image Load Log"
|
||||
|
||||
# _developer/developer.rpym:95
|
||||
old "Nothing to inspect."
|
||||
new "Nothing to inspect."
|
||||
|
||||
# _developer/developer.rpym:217
|
||||
old "Return to the developer menu"
|
||||
new "Return to the developer menu"
|
||||
|
||||
# _developer/developer.rpym:373
|
||||
old "Rectangle: %r"
|
||||
new "Rectangle: %r"
|
||||
|
||||
# _developer/developer.rpym:378
|
||||
old "Mouse position: %r"
|
||||
new "Mouse position: %r"
|
||||
|
||||
# _developer/developer.rpym:383
|
||||
old "Right-click or escape to quit."
|
||||
new "Right-click or escape to quit."
|
||||
|
||||
# _developer/developer.rpym:412
|
||||
old "Rectangle copied to clipboard."
|
||||
new "Rectangle copied to clipboard."
|
||||
|
||||
# _developer/developer.rpym:415
|
||||
old "Position copied to clipboard."
|
||||
new "Position copied to clipboard."
|
||||
|
||||
# _developer/developer.rpym:524
|
||||
old "✔ "
|
||||
new "✔ "
|
||||
|
||||
# _developer/developer.rpym:527
|
||||
old "✘ "
|
||||
new "✘ "
|
||||
|
||||
# _developer/developer.rpym:532
|
||||
old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}"
|
||||
new "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}"
|
||||
|
||||
# _developer/inspector.rpym:38
|
||||
old "Displayable Inspector"
|
||||
new "Displayable Inspector"
|
||||
|
||||
# _developer/inspector.rpym:61
|
||||
old "Size"
|
||||
new "Size"
|
||||
|
||||
# _developer/inspector.rpym:65
|
||||
old "Style"
|
||||
new "Style"
|
||||
|
||||
# _developer/inspector.rpym:71
|
||||
old "Location"
|
||||
new "Location"
|
||||
|
||||
# _developer/inspector.rpym:122
|
||||
old "Inspecting Styles of [displayable_name!q]"
|
||||
new "Inspecting Styles of [displayable_name!q]"
|
||||
|
||||
# _developer/inspector.rpym:139
|
||||
old "displayable:"
|
||||
new "displayable:"
|
||||
|
||||
# _developer/inspector.rpym:145
|
||||
old " (no properties affect the displayable)"
|
||||
new " (no properties affect the displayable)"
|
||||
|
||||
# _developer/inspector.rpym:147
|
||||
old " (default properties omitted)"
|
||||
new " (default properties omitted)"
|
||||
|
||||
# _developer/inspector.rpym:185
|
||||
old "<repr() failed>"
|
||||
new "<repr() failed>"
|
||||
|
||||
# 00console.rpy:182
|
||||
old "Press <esc> to exit console. Type help for help.\n"
|
||||
new "Press <esc> to exit console. Type help for help.\n"
|
||||
|
||||
# 00console.rpy:186
|
||||
old "Ren'Py script enabled."
|
||||
new "Ren'Py script enabled."
|
||||
|
||||
# 00console.rpy:188
|
||||
old "Ren'Py script disabled."
|
||||
new "Ren'Py script disabled."
|
||||
|
||||
# 00console.rpy:398
|
||||
old "help: show this help"
|
||||
new "help: show this help"
|
||||
|
||||
# 00console.rpy:403
|
||||
old "commands:\n"
|
||||
new "commands:\n"
|
||||
|
||||
# 00console.rpy:413
|
||||
old " <renpy script statement>: run the statement\n"
|
||||
new " <renpy script statement>: run the statement\n"
|
||||
|
||||
# 00console.rpy:415
|
||||
old " <python expression or statement>: run the expression or statement"
|
||||
new " <python expression or statement>: run the expression or statement"
|
||||
|
||||
# 00console.rpy:423
|
||||
old "clear: clear the console history"
|
||||
new "clear: clear the console history"
|
||||
|
||||
# 00console.rpy:427
|
||||
old "exit: exit the console"
|
||||
new "exit: exit the console"
|
||||
|
||||
# 00console.rpy:435
|
||||
old "load <slot>: loads the game from slot"
|
||||
new "load <slot>: loads the game from slot"
|
||||
|
||||
# 00console.rpy:448
|
||||
old "save <slot>: saves the game in slot"
|
||||
new "save <slot>: saves the game in slot"
|
||||
|
||||
# 00console.rpy:459
|
||||
old "reload: reloads the game, refreshing the scripts"
|
||||
new "reload: reloads the game, refreshing the scripts"
|
||||
|
||||
# 00console.rpy:467
|
||||
old "watch <expression>: watch a python expression"
|
||||
new "watch <expression>: watch a python expression"
|
||||
|
||||
# 00console.rpy:493
|
||||
old "unwatch <expression>: stop watching an expression"
|
||||
new "unwatch <expression>: stop watching an expression"
|
||||
|
||||
# 00console.rpy:519
|
||||
old "unwatchall: stop watching all expressions"
|
||||
new "unwatchall: stop watching all expressions"
|
||||
|
||||
# 00console.rpy:536
|
||||
old "jump <label>: jumps to label"
|
||||
new "jump <label>: jumps to label"
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
|
||||
translate indonesian strings:
|
||||
|
||||
# game/about.rpy:21
|
||||
old "[version!q]"
|
||||
new "[version!q]"
|
||||
|
||||
# game/about.rpy:25
|
||||
old "View license"
|
||||
new "Lihat Lisensi"
|
||||
|
||||
# game/about.rpy:27
|
||||
old "Back"
|
||||
new "Kembali"
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
|
||||
translate indonesian strings:
|
||||
|
||||
# game/add_file.rpy:7
|
||||
old "FILENAME"
|
||||
new "NAMAFILE"
|
||||
|
||||
# game/add_file.rpy:7
|
||||
old "Enter the name of the script file to create."
|
||||
new "Masukkan nama script file yang akan di buat"
|
||||
|
||||
# game/add_file.rpy:10
|
||||
old "The filename must have the .rpy extension."
|
||||
new "Nama file harus memlikili extensi .rpy"
|
||||
|
||||
# game/add_file.rpy:18
|
||||
old "The file already exists."
|
||||
new "File sudah ada"
|
||||
|
||||
# game/add_file.rpy:21
|
||||
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
|
||||
new "# Ren'py secara otomatis meload semua script dengan akhiran .rpy. Untuk menggunakan\n# file ini, silahkan define label dan jump ke file itu dari file lain.\n"
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
|
||||
# game/demo_dynamic.rpy:27
|
||||
translate indonesian demo_dynamic_b72548ea:
|
||||
|
||||
# e "The DynamicDisplayable function lets you change what's displayed over the course of an interaction."
|
||||
e "Fungsi DynamicDisplayable memungkinkan kamu untuk mengubah apa yang di tampilkan dalam interaksi."
|
||||
|
||||
# game/demo_dynamic.rpy:31
|
||||
translate indonesian demo_dynamic_0276dbb9:
|
||||
|
||||
# e "This makes it possible to display things like countdown timers and progress bars."
|
||||
e "Ini membuat kamu bisa menampilkan sesuatu seperti 'timer hitung mundur dan bar progress'."
|
||||
|
||||
# game/demo_dynamic.rpy:33
|
||||
translate indonesian demo_dynamic_4cabf539:
|
||||
|
||||
# e "Remember, people read at different speeds, so it's probably better to use this for flavor, rather then to make games time-sensitive."
|
||||
e "Ingat, setiap orang membaca dengan kecepatan yang berbeda, jadi kamu sebaiknya mengunakan ini sebagai bumbu, daripada membuat game menjadi lebih pendek."
|
||||
|
||||
@@ -1,181 +0,0 @@
|
||||
|
||||
# game/demo_imageops.rpy:69
|
||||
translate indonesian demo_imageops_0e0e59e0:
|
||||
|
||||
# e "Image operations allow us to manipulate images as they are loaded in."
|
||||
e "Operasi gambar memungkinkan kita untuk memanipulasi gambar ketika mereka di load."
|
||||
|
||||
# game/demo_imageops.rpy:71
|
||||
translate indonesian demo_imageops_2dfc0c2e:
|
||||
|
||||
# e "They're efficient, as they are only evaluated when an image is first loaded."
|
||||
e "Mereka sangat efisien, karena mereka hanya di jalankan pada saat pertama gambar di load."
|
||||
|
||||
# game/demo_imageops.rpy:73
|
||||
translate indonesian demo_imageops_9ee5a075:
|
||||
|
||||
# e "This way, there's no extra work that needs to be done when each frame is drawn to the screen."
|
||||
e "Dengan cara ini, tidak ada perkerjaan extra yang harus di lakukan ketika setiap frame di gambar ke layar."
|
||||
|
||||
# game/demo_imageops.rpy:80
|
||||
translate indonesian demo_imageops_3f73f4c2:
|
||||
|
||||
# e "Let me show you a test image, the Ren'Py logo."
|
||||
e "Ijinkan aku menunjukkan kamu gambar percobaan, logo Ren'Py."
|
||||
|
||||
# game/demo_imageops.rpy:82
|
||||
translate indonesian demo_imageops_e3887927:
|
||||
|
||||
# e "We'll be applying some image operations to it, to see how they can be used."
|
||||
e "Kita akan mengaply beberapa operator gambar, untuk melihat bagaimana mereka dapat digunakan."
|
||||
|
||||
# game/demo_imageops.rpy:87
|
||||
translate indonesian demo_imageops_d05ba9d9:
|
||||
|
||||
# e "The im.Crop operation can take the image, and chop it up into a smaller image."
|
||||
e "Operasi im.Corp dapat mengambil gambar, dan memotong nya ke gambar yang lebih kecil."
|
||||
|
||||
# game/demo_imageops.rpy:92
|
||||
translate indonesian demo_imageops_f57f6496:
|
||||
|
||||
# e "The im.Composite operation lets us take multiple images, and draw them into a single image."
|
||||
e "Oierasi im.Composite memungkinkan kita mengambil banyak gambar, dan mengambar nya ke satu gambar."
|
||||
|
||||
# game/demo_imageops.rpy:94
|
||||
translate indonesian demo_imageops_634bc9da:
|
||||
|
||||
# e "While you can do this by showing multiple images, this is often more efficient."
|
||||
e "Sementara kamu melakukan ini dengan menampilkan beberapa gambar, ini seringkali lebih efisien."
|
||||
|
||||
# game/demo_imageops.rpy:99
|
||||
translate indonesian demo_imageops_3a9392e4:
|
||||
|
||||
# e "There's also LiveComposite, which is less efficent, but allows for animation."
|
||||
e "Ada juga LiveComposite, yang kurang efisien, tapi mengijinkan animasi."
|
||||
|
||||
# game/demo_imageops.rpy:101
|
||||
translate indonesian demo_imageops_aab0c08f:
|
||||
|
||||
# e "It isn't really an image operation, but we don't know where else to put it."
|
||||
e "Ini bukan operasi gambar yang sebenarnya, tapi kita tidak tau dimana lagi akan menggunakan nya."
|
||||
|
||||
# game/demo_imageops.rpy:106
|
||||
translate indonesian demo_imageops_23cd24da:
|
||||
|
||||
# e "The im.Scale operation lets us scale an image to a particular size."
|
||||
e "Operasi im.Scale mengijinkan kita mengubah ukuran gambar ke ukuran tertentu."
|
||||
|
||||
# game/demo_imageops.rpy:111
|
||||
translate indonesian demo_imageops_dcaf5d6b:
|
||||
|
||||
# e "im.FactorScale lets us do the same thing, except to a factor of the original size."
|
||||
e "im.FactorScale membuat kita melakukan hal yang sama, kecuali penggunaan mengubah ke ukuran semula."
|
||||
|
||||
# game/demo_imageops.rpy:116
|
||||
translate indonesian demo_imageops_eeaec24a:
|
||||
|
||||
# e "The im.Map operation lets us mess with the red, green, blue, and alpha channels of an image."
|
||||
e "Operasi im.Map memungkinkan kita untuk bermain dengan merah, hijau, biru dan alpha chanel dari gambar."
|
||||
|
||||
# game/demo_imageops.rpy:118
|
||||
translate indonesian demo_imageops_a2ed064d:
|
||||
|
||||
# e "In this case, we removed all the red from the image, leaving only the blue and green channels."
|
||||
e "Dalam kasus ini, kita menghilangkan semua merah, dan hanya menghilangkan chanel hijau saja."
|
||||
|
||||
# game/demo_imageops.rpy:125
|
||||
translate indonesian demo_imageops_77b0a263:
|
||||
|
||||
# e "The im.Recolor operation can do the same thing, but is more efficient when we're linearly mapping colors."
|
||||
e "Operasi im.Recolor melakukan hal yang sama, kecuali ini lebih efisien, ketika kita secara linear memap warna."
|
||||
|
||||
# game/demo_imageops.rpy:130
|
||||
translate indonesian demo_imageops_360723bc:
|
||||
|
||||
# e "The im.Twocolor operation lets you take a black and white image, like this one..."
|
||||
e "Operasi im.Twocolor memungkinkan kamu untuk mengambil hitam dan putih gambar, seperti yang satu ini..."
|
||||
|
||||
# game/demo_imageops.rpy:135
|
||||
translate indonesian demo_imageops_0948998c:
|
||||
|
||||
# e "... and assign colors to replace black and white."
|
||||
e "... dan mengaplikasikan warna untuk menggantikan hitam dan putih."
|
||||
|
||||
# game/demo_imageops.rpy:140
|
||||
translate indonesian demo_imageops_75522403:
|
||||
|
||||
# e "The im.MatrixColor operation lets you use a matrix to alter the colors. With the right matrix, you can desaturate colors..."
|
||||
e "Operasi im.MatrixColor memungkinkan kamu untuk menggunakan matrix untuk mengubah warna. dengan matrix yang benar, kamu bisa mentidaksatruasikan warna."
|
||||
|
||||
# game/demo_imageops.rpy:145
|
||||
translate indonesian demo_imageops_6fe260b9:
|
||||
|
||||
# e "... tint the image blue..."
|
||||
e "... mewarnai gambar biru..."
|
||||
|
||||
# game/demo_imageops.rpy:150
|
||||
translate indonesian demo_imageops_85c10beb:
|
||||
|
||||
# e "... rotate the hue... "
|
||||
e "... memutar rona"
|
||||
|
||||
# game/demo_imageops.rpy:155
|
||||
translate indonesian demo_imageops_09d2d97f:
|
||||
|
||||
# e "... or invert the colors, for a kinda scary look."
|
||||
e "... atau menginvert warna, untuk tampilan menakutkan."
|
||||
|
||||
# game/demo_imageops.rpy:160
|
||||
translate indonesian demo_imageops_6dd8f586:
|
||||
|
||||
# e "It can even adjust brightness and contrast."
|
||||
e "Itu juga dapat mengatur kecerahan dan kontras."
|
||||
|
||||
# game/demo_imageops.rpy:162
|
||||
translate indonesian demo_imageops_ba8ddf3e:
|
||||
|
||||
# e "We've made some of the most common matrices into image operators."
|
||||
e "Kita telah membuat matrices yang paling sering ke operator gambar."
|
||||
|
||||
# game/demo_imageops.rpy:167
|
||||
translate indonesian demo_imageops_4c62de6f:
|
||||
|
||||
# e "im.Grayscale can make an image grayscale..."
|
||||
e "im.Grayscale dapat membuat gambar menjadi grayscale..."
|
||||
|
||||
# game/demo_imageops.rpy:172
|
||||
translate indonesian demo_imageops_7d471e4b:
|
||||
|
||||
# e "... while im.Sepia can sepia-tone an image."
|
||||
e "... sedangkan im.Sepia dapat membuat gambar sepia-tone."
|
||||
|
||||
# game/demo_imageops.rpy:179
|
||||
translate indonesian demo_imageops_59ca3a66:
|
||||
|
||||
# e "The im.Alpha operation can adjust the alpha channel on an image, making things partially transparent."
|
||||
e "Operasi im.Alpha dapat mengatur chanel alpha pada gambar, membuatnya sebagian transparan."
|
||||
|
||||
# game/demo_imageops.rpy:184
|
||||
translate indonesian demo_imageops_514a55db:
|
||||
|
||||
# e "It's useful if a character just happens to be ghost."
|
||||
e "Ini berguna jika karakter adalah hantu."
|
||||
|
||||
# game/demo_imageops.rpy:190
|
||||
translate indonesian demo_imageops_05fc1200:
|
||||
|
||||
# e "But that isn't the case with me."
|
||||
e "Tapi itu tidak berguna pada ku."
|
||||
|
||||
# game/demo_imageops.rpy:197
|
||||
translate indonesian demo_imageops_cf7fbb57:
|
||||
|
||||
# e "Finally, there's im.Flip, which can flip an image horizontally or vertically."
|
||||
e "Akhirnya, im.Flip, yang dapat membalikkan gambar secara vertikal atau horizontal."
|
||||
|
||||
# game/demo_imageops.rpy:199
|
||||
translate indonesian demo_imageops_49161c26:
|
||||
|
||||
# e "I think the less I say about this, the better."
|
||||
e "Aku pikir lebih sedikit aku berkata tentang ini, lebih baik."
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
|
||||
# game/demo_layers.rpy:15
|
||||
translate indonesian demo_layers_c4715eb5:
|
||||
|
||||
# e "Ren'Py lets you define layers, and show images on specific layers."
|
||||
e "Ren'Py memungkinkan kamu untuk mendefine layer, dan menampilkan gambar pada layer tersebut."
|
||||
|
||||
# game/demo_layers.rpy:26
|
||||
translate indonesian demo_layers_c385f69e:
|
||||
|
||||
# e "The \"onlayer\" clause of the scene, show, and hide statements lets us pick which layers the commands affect."
|
||||
e "Klausa \"onlayer\" layar, menunjukan, dan menyembunyikan pernyataan memungkinkan kita memilih mana layer yang berefek pada perintah."
|
||||
|
||||
# game/demo_layers.rpy:28
|
||||
translate indonesian demo_layers_89a87205:
|
||||
|
||||
# e "As you can see, layers do not have to take up the entire screen. When a layer doesn't, images are clipped to the layer."
|
||||
e "Seperti yang dapat kamu lihat, layer tidak harus memakai seluruh laya. Ketika layer tidak, gambar di cantumkan ke layer."
|
||||
|
||||
# game/demo_layers.rpy:34
|
||||
translate indonesian demo_layers_72b6169a:
|
||||
|
||||
# e "The \"as\" clause lets you change the tag of an image."
|
||||
e "Klausa \"as\" memungkinkan kamu untuk mengubah tag dari gambar."
|
||||
|
||||
# game/demo_layers.rpy:43
|
||||
translate indonesian demo_layers_31adea8e:
|
||||
|
||||
# e "This is useful when you want to show two copies of the same image."
|
||||
e "Ini berguna ketika kamu ingin menunjukan dua salinan dari gambar yang sama."
|
||||
|
||||
# game/demo_layers.rpy:45
|
||||
translate indonesian demo_layers_2659ae91:
|
||||
|
||||
# e "Or if a character has a twin."
|
||||
e "Atau jika karakter punya kembaran."
|
||||
|
||||
# game/demo_layers.rpy:56
|
||||
translate indonesian demo_layers_fa599d50:
|
||||
|
||||
# e "You can use \"show expression\" to show things that aren't just images, like text."
|
||||
e "Kamu dapat menggunakan \"show expression\" untuk menunjukan hal yang bukan hanya gambar, seperti text."
|
||||
|
||||
# game/demo_layers.rpy:64
|
||||
translate indonesian demo_layers_91559c86:
|
||||
|
||||
# e "The \"behind\" clause lets you place an image behind another."
|
||||
e "Klausa \"behind\" memungkinkan kamu menaruh gambar di belakang yang lain."
|
||||
|
||||
# game/demo_layers.rpy:77
|
||||
translate indonesian demo_layers_a983efbd:
|
||||
|
||||
# e "Finally, the \"show layer\" statement allows you to apply a transform to an entire layer."
|
||||
e "Akhirnya pernyataan \"show layer\" memungkinkan kamu untuk mengaplikasian transfrom ke semua layer."
|
||||
|
||||
# game/demo_layers.rpy:90
|
||||
translate indonesian demo_layers_1185c462:
|
||||
|
||||
# e "And that's it for layers and advanced show."
|
||||
e "Dan itu dia untuk layer dan show tingkat lanjut "
|
||||
|
||||
translate indonesian strings:
|
||||
|
||||
# game/demo_layers.rpy:53
|
||||
old "This is text."
|
||||
new "Ini adalah text"
|
||||
|
||||
@@ -1,109 +0,0 @@
|
||||
|
||||
# game/demo_minigame.rpy:204
|
||||
translate indonesian demo_minigame_03fc91ef:
|
||||
|
||||
# e "You may want to mix Ren'Py with other forms of gameplay. There are many ways to do this."
|
||||
e "Kamu mungkin ingin mencampur Ren'Py dengan bentuk lain gameplay. Ada cara nya lho."
|
||||
|
||||
# game/demo_minigame.rpy:206
|
||||
translate indonesian demo_minigame_8c389a44:
|
||||
|
||||
# e "The first is with the UI functions, which can be used to create powerful button and menu based interfaces."
|
||||
e "Yang pertama dengan fungsi UI. yang dapat digunakan untuk membuat tombol dan menu interface yang powerful."
|
||||
|
||||
# game/demo_minigame.rpy:208
|
||||
translate indonesian demo_minigame_0d5698fc:
|
||||
|
||||
# e "These are often enough for many simulation-style games."
|
||||
e "Ini cukup untuk kebanyakan game bergaya simulasi."
|
||||
|
||||
# game/demo_minigame.rpy:210
|
||||
translate indonesian demo_minigame_abc48e39:
|
||||
|
||||
# e "We also have two more ways in which Ren'Py can be extended. Both require experience with Python programming, and so aren't for the faint of heart."
|
||||
e "Kita juga punya 2 cara lagi untuk memperluas Ren'Py. Keduanya memerlukan pengalaman dengan programming Python, dan tidak diperuntukan untuk yang cepat putus asa."
|
||||
|
||||
# game/demo_minigame.rpy:212
|
||||
translate indonesian demo_minigame_4d7b5701:
|
||||
|
||||
# e "Renpygame is a library that allows pygame games to be run inside Ren'Py."
|
||||
e "Renpygame adalah library yang dimana membuat pygame dapat di jalankan di dalam Ren'Py"
|
||||
|
||||
# game/demo_minigame.rpy:214
|
||||
translate indonesian demo_minigame_bb13a57e:
|
||||
|
||||
# e "When using renpygame, Ren'Py steps out of the way and gives you total control over the user's experience."
|
||||
e "Ketika menggunakan renpygame, Ren'Py membuat cara dan membuat mu memiliki kontrok penuh dari user experience."
|
||||
|
||||
# game/demo_minigame.rpy:216
|
||||
translate indonesian demo_minigame_4f4537ea:
|
||||
|
||||
# e "You can get renpygame from the Frameworks page of the Ren'Py website."
|
||||
e "Kamu dapat mendapatkan renpygame dari halaman Frameworks di website Ren'Py."
|
||||
|
||||
# game/demo_minigame.rpy:218
|
||||
translate indonesian demo_minigame_b2baab12:
|
||||
|
||||
# e "If you want to integrate your code with Ren'Py, you can write a user-defined displayable."
|
||||
e "Jika kamu ingin mengintegerasikan kodemu dengan Ren'Py, kamu dapat menulis displayable user-defined."
|
||||
|
||||
# game/demo_minigame.rpy:220
|
||||
translate indonesian demo_minigame_9d67e41d:
|
||||
|
||||
# e "User-defined displayables are somewhat more limited, but integrate better with the rest of Ren'Py."
|
||||
e "Displayable User-defined agak lebih terbatas, namun terintegerasi lebih baik dengan kelseluruhan Ren'Py"
|
||||
|
||||
# game/demo_minigame.rpy:222
|
||||
translate indonesian demo_minigame_59b3fdfd:
|
||||
|
||||
# e "For example, one could support loading and saving while a user-defined displayable is shown."
|
||||
e "Contohnya, yang satu dapat mendukung loading dan menyimpan sementara displayable user-defined di tampilkan."
|
||||
|
||||
# game/demo_minigame.rpy:224
|
||||
translate indonesian demo_minigame_e02e509d:
|
||||
|
||||
# e "Now, why don't we play some pong?"
|
||||
e "Sekarang, kenapa kita gak main sedikit pong?"
|
||||
|
||||
# game/demo_minigame.rpy:246
|
||||
translate indonesian demo_minigame_pong_ce00ff63:
|
||||
|
||||
# e "I win!"
|
||||
e "Aku menang!"
|
||||
|
||||
# game/demo_minigame.rpy:250
|
||||
translate indonesian demo_minigame_pong_68c82e98:
|
||||
|
||||
# e "You won! Congratulations."
|
||||
e "Selamat, Kamu menang!!."
|
||||
|
||||
# game/demo_minigame.rpy:255
|
||||
translate indonesian demo_minigame_pong_dde7e31a:
|
||||
|
||||
# e "Would you like to play again?" nointeract
|
||||
e "Maukah kamu bermain lagi?" nointeract
|
||||
|
||||
# game/demo_minigame.rpy:264
|
||||
translate indonesian demo_minigame_pong_cd12159e:
|
||||
|
||||
# e "Remember to be careful about putting minigames in a visual novel, since not every visual novel player wants to be good at arcade games."
|
||||
e "Ingat kamu harus hati hati ketika menaruh mini game di visual novel, karena tidak semua pemain visual novel mau mahir dalam bermain game arcade."
|
||||
|
||||
translate indonesian strings:
|
||||
|
||||
# game/demo_minigame.rpy:16
|
||||
old "Player"
|
||||
new "Pemain"
|
||||
|
||||
# game/demo_minigame.rpy:18
|
||||
old "Click to Begin"
|
||||
new "Klik untuk Mulai"
|
||||
|
||||
# game/demo_minigame.rpy:255
|
||||
old "Sure."
|
||||
new "Ya Tentu."
|
||||
|
||||
# game/demo_minigame.rpy:255
|
||||
old "No thanks."
|
||||
new "Tidak, Terimakasih."
|
||||
|
||||
@@ -1,125 +0,0 @@
|
||||
|
||||
# game/demo_nvlmode.rpy:14
|
||||
translate indonesian demo_nvlmode_76b2fe88:
|
||||
|
||||
# nvl clear
|
||||
nvl clear
|
||||
|
||||
# game/demo_nvlmode.rpy:17
|
||||
translate indonesian demo_nvlmode_a986703b:
|
||||
|
||||
# nvle "NVL-style games are games that cover the full screen with text, rather then placing it in a file at the bottom of the screen."
|
||||
nvle "Game gaya=NVL adalah game yang seluruh layar nya di tutup dengan text, daripada menaruh nya di bawah layar."
|
||||
|
||||
# game/demo_nvlmode.rpy:19
|
||||
translate indonesian demo_nvlmode_37fd9ceb:
|
||||
|
||||
# nvle "Ren'Py ships with a file, nvl_mode.rpy, that implements NVL-style games. You're seeing an example of NVL-mode at work."
|
||||
nvle "Ren'Py datang dengan file, nvl_mode.rpy, yang mengimplementasikan game bergaya-NVL,"
|
||||
|
||||
# game/demo_nvlmode.rpy:21
|
||||
translate indonesian demo_nvlmode_66cbcf75:
|
||||
|
||||
# nvl clear
|
||||
# nvle "To use NVL-mode, you need to define Characters with a kind=nvl."
|
||||
nvl clear
|
||||
nvle "Untuk menggunakan mode-NVL, kamu harus mendefine Karakter dengan 'kind=nvl'"
|
||||
|
||||
# game/demo_nvlmode.rpy:25
|
||||
translate indonesian demo_nvlmode_ad2b8b67:
|
||||
|
||||
# nvle "You use 'nvl clear' to clear the screen when that becomes necessary."
|
||||
nvle "Kamu harus menggunakan 'nvl clear' untuk membersihkan layar jika diperlukan."
|
||||
|
||||
# game/demo_nvlmode.rpy:30
|
||||
translate indonesian demo_nvlmode_390a4eb1:
|
||||
|
||||
# nvle "The 'nvl show' and 'nvl hide' statements use transitions to show and hide the NVL window."
|
||||
nvle "Pernyataan 'nvl show' dan 'nvl hide' mengunakan transisi untuk menampilkan dan menyembunyikan jendela NVL."
|
||||
|
||||
# game/demo_nvlmode.rpy:32
|
||||
translate indonesian demo_nvlmode_74454519:
|
||||
|
||||
# nvle "The nvl_erase function removes a line from the screen."
|
||||
nvle "fungsu 'nvl_erase' menghilangkan baris dari layar."
|
||||
|
||||
# game/demo_nvlmode.rpy:36
|
||||
translate indonesian demo_nvlmode_5e97d841:
|
||||
|
||||
# nvle "Like that."
|
||||
nvle "Seperti itu."
|
||||
|
||||
# game/demo_nvlmode.rpy:43
|
||||
translate indonesian demo_nvlmode_ea2d8a07:
|
||||
|
||||
# nvle "The nvl_mode also supports showing menus to the user, provided they are the last thing on the screen. Understand?" nointeract
|
||||
nvle "'nvl_mode' juga mendukung menampilkan menu ke pengguna, di sajikan jika mereka adalah hal terakhir di layar. Mengerti?" nointeract
|
||||
|
||||
# game/demo_nvlmode.rpy:49
|
||||
translate indonesian demo_nvlmode_0f2b7d59:
|
||||
|
||||
# nvl clear
|
||||
# nvle "Good!"
|
||||
nvl clear
|
||||
nvle "Bagus!"
|
||||
|
||||
# game/demo_nvlmode.rpy:53
|
||||
translate indonesian demo_nvlmode_76b2fe88_1:
|
||||
|
||||
# nvl clear
|
||||
nvl clear
|
||||
|
||||
# game/demo_nvlmode.rpy:57
|
||||
translate indonesian demo_nvlmode_b64ad3b1:
|
||||
|
||||
# nvl clear
|
||||
# nvle "Well, it might help if you take a look at the demo code."
|
||||
nvl clear
|
||||
nvle "Sekarang, ini mungkin membantu juka kamu melihat kode demo."
|
||||
|
||||
# game/demo_nvlmode.rpy:61
|
||||
translate indonesian demo_nvlmode_76b2fe88_2:
|
||||
|
||||
# nvl clear
|
||||
nvl clear
|
||||
|
||||
# game/demo_nvlmode.rpy:63
|
||||
translate indonesian demo_nvlmode_edb031ab:
|
||||
|
||||
# eside "You can specify transitions that occur when going from NVL-mode to ADV-mode."
|
||||
eside "Kamu dapat menspesifikasikan transisi yang terjadi ketika ingin berganti dari mode-NVL ke mode-ADV."
|
||||
|
||||
# game/demo_nvlmode.rpy:65
|
||||
translate indonesian demo_nvlmode_d43b28d1:
|
||||
|
||||
# nvle "As well as when going from ADV-mode to NVL-mode."
|
||||
nvle "Begitu juga sebaliknya, dari mode-ADV ke mode-NVL."
|
||||
|
||||
# game/demo_nvlmode.rpy:67
|
||||
translate indonesian demo_nvlmode_f056c7ad:
|
||||
|
||||
# nvle "Text tags like {{w}{w} work in NVL-mode."
|
||||
nvle "Tag text seperti {{w}{w} berkerja di mode-NVL."
|
||||
|
||||
# game/demo_nvlmode.rpy:69
|
||||
translate indonesian demo_nvlmode_750cd9a1:
|
||||
|
||||
# extend " As does the \"extend\" special character."
|
||||
extend "seperti halnya karakter spesial \"extended\"."
|
||||
|
||||
# game/demo_nvlmode.rpy:71
|
||||
translate indonesian demo_nvlmode_146d840b:
|
||||
|
||||
# nvle "And that's it for NVL-mode."
|
||||
nvle "Itu dia untuk mode-NVL."
|
||||
|
||||
translate indonesian strings:
|
||||
|
||||
# game/demo_nvlmode.rpy:43
|
||||
old "Yes."
|
||||
new "Ya."
|
||||
|
||||
# game/demo_nvlmode.rpy:43
|
||||
old "No."
|
||||
new "Tidak."
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
|
||||
# game/demo_persistent.rpy:6
|
||||
translate indonesian demo_persistent_abef5d83:
|
||||
|
||||
# "Ren'Py supports per-game and multi-game persistent data."
|
||||
"Ren'Py mendukung presistan data per-game dan multi-game"
|
||||
|
||||
# game/demo_persistent.rpy:8
|
||||
translate indonesian demo_persistent_539955e4:
|
||||
|
||||
# "Persistent data can store flags and other per-game information that should be shared between plays of a single game."
|
||||
"Presistan data dapat menyimpan flag dan informasi per-game lainnya yang harus di share antara flag sigle game."
|
||||
|
||||
# game/demo_persistent.rpy:19
|
||||
translate indonesian demo_persistent_c8164f03:
|
||||
|
||||
# "For example, I can tell you that you've see this line [plays] time(s) since you cleared the per-game persistent data."
|
||||
"Contohnya. Aku dapat memberitahu mu bahwa kamu telah melihat line waktu [plays]. sejak kamu membersihkan date presisten per-game."
|
||||
|
||||
# game/demo_persistent.rpy:21
|
||||
translate indonesian demo_persistent_54bc6648:
|
||||
|
||||
# "Multipersistent data is shared between games, which lets one game unlock features in a second."
|
||||
"Data multipresisten di bagi antara game, yang memungkinkan game membuka fitur dalam hitungan detik."
|
||||
|
||||
# game/demo_persistent.rpy:23
|
||||
translate indonesian demo_persistent_4ff5d824:
|
||||
|
||||
# "A sequel might play differently if the player has beaten the first game."
|
||||
"Sequel dapat dimainkan berbeda jika pemain menyelesaikan game pertama."
|
||||
|
||||
# game/demo_persistent.rpy:35
|
||||
translate indonesian demo_persistent_634f6d6d:
|
||||
|
||||
# "According to the multipersistent data, you've seen this line [plays] times total."
|
||||
"Berdasarkan data multi presisten, kamu telah melihat total line ini [plays]"
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
|
||||
# game/demo_transform.rpy:156
|
||||
translate indonesian demo_transform_f10e08f5:
|
||||
|
||||
# e "The Transform function allows you to rotate, zoom, move, and adjust the alpha of a displayable."
|
||||
e "Fungsu Transform memungkinkan kamu untuk memutar, perbesar, menggerakan, dan mengatur alpha dari displayable."
|
||||
|
||||
# game/demo_transform.rpy:158
|
||||
translate indonesian demo_transform_295804e0:
|
||||
|
||||
# e "It does this under the control of a Python function, making it incredibly flexible at the cost of some complexity."
|
||||
e "Ini di lakukan di bawah kontrol fungsi Python, membuat nya sangat fleksibel yang mengorbankan beberapa kerumitan."
|
||||
|
||||
# game/demo_transform.rpy:165
|
||||
translate indonesian demo_transform_1afd3e7b:
|
||||
|
||||
# e "Here's a simple example, showing how we can change an image as it moves around the screen."
|
||||
e "Ini contoh simpel, menunjukkan bagaimana kita dapat mengubah gambar sembari bergerak di sekitar layar."
|
||||
|
||||
# game/demo_transform.rpy:167
|
||||
translate indonesian demo_transform_a5427276:
|
||||
|
||||
# e "A nice thing about Transform is that it's \"one price\"."
|
||||
e "Hal yang bagus tentang transform yaitu \"satu harga\"."
|
||||
|
||||
# game/demo_transform.rpy:169
|
||||
translate indonesian demo_transform_108aec8f:
|
||||
|
||||
# e "If you use it to do a rotation, you can zoom or adjust alpha at no additional cost."
|
||||
e "Jika kamu menggunakan nya untuk melakukan putaran, kamu dapat memperbesar atau mengatur alpha tanpa biaya tambahan."
|
||||
|
||||
# game/demo_transform.rpy:198
|
||||
translate indonesian demo_transform_55f784e4:
|
||||
|
||||
# e "As the python functions get more complicated, more advanced behavior is possible."
|
||||
e "Semakin rumit fungsi Python, semakin tinggi juga tingkah laku nya. "
|
||||
|
||||
# game/demo_transform.rpy:200
|
||||
translate indonesian demo_transform_43798bbe:
|
||||
|
||||
# e "This can include coordinating more than one Transform."
|
||||
e "Ini dapat termasuk mengkoordinasi lebih dari satu Transform."
|
||||
|
||||
# game/demo_transform.rpy:213
|
||||
translate indonesian demo_transform_3f4f14bb:
|
||||
|
||||
# e "Finally, transforms can be applied to buttons, and work even while the button is zoomed."
|
||||
e "Akhirnya, transform dapat di aplikasikan ke tombol, dan berkerja bahkan sembari tombol di perbesar."
|
||||
|
||||
# game/demo_transform.rpy:218
|
||||
translate indonesian demo_transform_a439ffaa:
|
||||
|
||||
# e "With a little Python code, transforms let you do a lot of things."
|
||||
e "Dengan sedikit kode Python, transform memungkinkan kamu melakukan banyak hal."
|
||||
|
||||
translate indonesian strings:
|
||||
|
||||
# game/demo_transform.rpy:211
|
||||
old "A Working Button"
|
||||
new "Tombol yang Berkerja"
|
||||
|
||||
@@ -1,155 +0,0 @@
|
||||
|
||||
translate indonesian strings:
|
||||
|
||||
# game/screens.rpy:194
|
||||
old "Start Game"
|
||||
new "Mulai Game"
|
||||
|
||||
# game/screens.rpy:195
|
||||
old "Load Game"
|
||||
new "Muat Game"
|
||||
|
||||
# game/screens.rpy:196
|
||||
old "Preferences"
|
||||
new "Setting"
|
||||
|
||||
# game/screens.rpy:197
|
||||
old "Help"
|
||||
new "Bantuan"
|
||||
|
||||
# game/screens.rpy:230
|
||||
old "Save Game"
|
||||
new "Simpan Game"
|
||||
|
||||
# game/screens.rpy:232
|
||||
old "Main Menu"
|
||||
new "Menu Utama"
|
||||
|
||||
# game/screens.rpy:269
|
||||
old "Auto"
|
||||
new "Auto"
|
||||
|
||||
# game/screens.rpy:272
|
||||
old "Quick"
|
||||
new "Cepat"
|
||||
|
||||
# game/screens.rpy:361
|
||||
old "Display"
|
||||
new "Tampiilan"
|
||||
|
||||
# game/screens.rpy:362
|
||||
old "Window"
|
||||
new "Jendela"
|
||||
|
||||
# game/screens.rpy:363
|
||||
old "Fullscreen"
|
||||
new "Layar Penuh"
|
||||
|
||||
# game/screens.rpy:369
|
||||
old "Transitions"
|
||||
new "Transisi"
|
||||
|
||||
# game/screens.rpy:370
|
||||
old "All"
|
||||
new "Semua"
|
||||
|
||||
# game/screens.rpy:371
|
||||
old "None"
|
||||
new "Mati"
|
||||
|
||||
# game/screens.rpy:377
|
||||
old "Text Speed"
|
||||
new "Kecepatan Text"
|
||||
|
||||
# game/screens.rpy:384
|
||||
old "Joystick..."
|
||||
new "Joystick..."
|
||||
|
||||
# game/screens.rpy:391
|
||||
old "Language"
|
||||
new "Bahasa"
|
||||
|
||||
# game/screens.rpy:405
|
||||
old "Skip"
|
||||
new "Lompati"
|
||||
|
||||
# game/screens.rpy:406
|
||||
old "Seen Messages"
|
||||
new "Pesan Terlihat"
|
||||
|
||||
# game/screens.rpy:407
|
||||
old "All Messages"
|
||||
new "Semua Pesan"
|
||||
|
||||
# game/screens.rpy:413
|
||||
old "Begin Skipping"
|
||||
new "Mulai Melompat"
|
||||
|
||||
# game/screens.rpy:419
|
||||
old "After Choices"
|
||||
new "Setelah Pilihan"
|
||||
|
||||
# game/screens.rpy:420
|
||||
old "Stop Skipping"
|
||||
new "Berhenti Melompat"
|
||||
|
||||
# game/screens.rpy:421
|
||||
old "Keep Skipping"
|
||||
new "Terus Melompat"
|
||||
|
||||
# game/screens.rpy:427
|
||||
old "Auto-Forward Time"
|
||||
new "Waktu Auto-Forward"
|
||||
|
||||
# game/screens.rpy:431
|
||||
old "Wait for Voice"
|
||||
new "Tunggu untuk Suara"
|
||||
|
||||
# game/screens.rpy:438
|
||||
old "Music Volume"
|
||||
new "Volume Musik"
|
||||
|
||||
# game/screens.rpy:445
|
||||
old "Sound Volume"
|
||||
new "Volume Suara"
|
||||
|
||||
# game/screens.rpy:449
|
||||
old "Test"
|
||||
new "Tes"
|
||||
|
||||
# game/screens.rpy:458
|
||||
old "Voice Volume"
|
||||
new "Volume Aktor"
|
||||
|
||||
# game/screens.rpy:461
|
||||
old "Voice Sustain"
|
||||
new "Pertahankan Suara"
|
||||
|
||||
# game/screens.rpy:522
|
||||
old "Yes"
|
||||
new "Ya"
|
||||
|
||||
# game/screens.rpy:523
|
||||
old "No"
|
||||
new "Tidak"
|
||||
|
||||
# game/screens.rpy:552
|
||||
old "Save"
|
||||
new "Simpan"
|
||||
|
||||
# game/screens.rpy:553
|
||||
old "Q.Save"
|
||||
new "Simpan.C"
|
||||
|
||||
# game/screens.rpy:554
|
||||
old "Q.Load"
|
||||
new "Load.C"
|
||||
|
||||
# game/screens.rpy:556
|
||||
old "F.Skip"
|
||||
new "Lompati.C"
|
||||
|
||||
# game/screens.rpy:558
|
||||
old "Prefs"
|
||||
new "Setting"
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
|
||||
# ../tutorial_sprite.rpyc:63
|
||||
translate indonesian tutorial_sprite_d2ca6a0c:
|
||||
|
||||
# e "Ren'Py supports a sprite system, which allows many similar objects to be shown on the screen at once."
|
||||
e "Ren'Py mendukung sistem sprite, yang memungkinkan objek yang mirip di tampilkan pada layar pada waktu yang bersamaan."
|
||||
|
||||
# ../tutorial_sprite.rpyc:70
|
||||
translate indonesian tutorial_sprite_40df8d5d:
|
||||
|
||||
# e "The background behind me consists of one hundred and seventy-five stars, being moved at several different speeds, to give a starflight effect."
|
||||
e "Background di belakang ku terdiri dari seratus dan tujuh puluh bintang, yang sedang digerakan di kecepatan yang berbeda, untuk memberika efek bintang bergerak."
|
||||
|
||||
# ../tutorial_sprite.rpyc:72
|
||||
translate indonesian tutorial_sprite_29c5e523:
|
||||
|
||||
# e "The OpenGL system should be able to animate this smoothly, but you might see a bit of stuttering if your computer is using software."
|
||||
e "Sistim OpenGL seharusnya bisa menganimasikan nya dengan halus, tapi kamu mungkin melihat sedikit stutter jika komputer mu menggunkan software."
|
||||
|
||||
# ../tutorial_sprite.rpyc:74
|
||||
translate indonesian tutorial_sprite_90927173:
|
||||
|
||||
# e "You'll need to decide which older systems to support."
|
||||
e "Kamu harus memutuskan mana yang di dukung oleh sistem yang lebih tua."
|
||||
|
||||
# ../tutorial_sprite.rpyc:80
|
||||
translate indonesian tutorial_sprite_9afa1448:
|
||||
|
||||
# e "The sprite manager requires you to write a python function to move the sprites around."
|
||||
e "Manager sprite mengharuskan kamu untuk menulis fungsi python untuk menggerakan sprites."
|
||||
|
||||
# ../tutorial_sprite.rpyc:84
|
||||
translate indonesian tutorial_sprite_2c9a79ad:
|
||||
|
||||
# e "In many cases, all you need is something moving around the screen - like cherry blossoms, or snow."
|
||||
e "Di banyak kasus, yang kamu butuhkan hanyalah sesuatu yang bergerak di sekitar layar, seperti bunga sakura, atau salju."
|
||||
|
||||
# ../tutorial_sprite.rpyc:86
|
||||
translate indonesian tutorial_sprite_595d03b3:
|
||||
|
||||
# e "That's what the snowblossom function gives you - a simple way to have things falling from the top of the screen."
|
||||
e "Itulah yang didapatkan dari fungsi snowblossom - cara simpel untuk membuat sesuatu berjatuhan dari atas layar."
|
||||
|
||||
# ../tutorial_sprite.rpyc:91
|
||||
translate indonesian tutorial_sprite_4f82c848:
|
||||
|
||||
# e "And that's it for sprites."
|
||||
e "Sekian untuk sprites."
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
|
||||
# ../tutorial_video.rpyc:11
|
||||
translate indonesian tutorial_video_f34a17f5:
|
||||
|
||||
# e "Ren'Py supports playing movies. There are two ways of doing this."
|
||||
e "Ren'Py mendukung memainkan film. Ada dua cara untuk melakukan ini."
|
||||
|
||||
# ../tutorial_video.rpyc:13
|
||||
translate indonesian tutorial_video_4aefd413:
|
||||
|
||||
# e "The first way allows you to show a movie as an image, along with every other image that's displayed on the screen."
|
||||
e "Cara yang pertama memungkinkan kamu untuk menampilkan film sebagak gambar, beserta dengan setiap gambar lainya yang di tampilkan di layar."
|
||||
|
||||
# ../tutorial_video.rpyc:17
|
||||
translate indonesian tutorial_video_b927d009:
|
||||
|
||||
# e "To do this, we first have to define an image to be a Movie displayable. Movie displayables require a size argument, and also use properties to position themselves on the screen."
|
||||
e "Untuk melakikan ini, pertama kita harus mendefine gambar untuk menjadi film displayable. "
|
||||
|
||||
# ../tutorial_video.rpyc:27
|
||||
translate indonesian tutorial_video_fbaa71e4:
|
||||
|
||||
# e "Then, we can show the movie displayable, which starts the movie playing."
|
||||
e "Selanjutnya, kita dapat menampilkan displayable film, yang membuat film diputar."
|
||||
|
||||
# ../tutorial_video.rpyc:35
|
||||
translate indonesian tutorial_video_bbbb242d:
|
||||
|
||||
# e "When we no longer want to play the movie, we can hide it."
|
||||
e "Ketika kita tidak ingin memainkan film nya lagi, kita dapat menyembunyikan nya."
|
||||
|
||||
# ../tutorial_video.rpyc:39
|
||||
translate indonesian tutorial_video_a66b154c:
|
||||
|
||||
# e "The other way to show a movie is with the renpy.movie_cutscene python function. This shows the movie fullscreen, either until it ends or until the user clicks."
|
||||
e "Cara lain untuk menampilkan film adalah dengan fungsi python renpy.movie_cutscene. Ini menampilkan film dalam model fullscreen, sampai selesai atau sampai pengguna mengklik."
|
||||
|
||||
# ../tutorial_video.rpyc:47
|
||||
translate indonesian tutorial_video_7b2dc95f:
|
||||
|
||||
# e "And that's all there is when it comes to movie playback in Ren'Py."
|
||||
e "Dan itu saja tentang playback film di Ren'Py"
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
MTLc3m.ttf is destributed under Apache License 2.0.
|
||||
--------------------------------
|
||||
|
||||
Copyright (C) 2008 The Android Open Source Project
|
||||
Copyright (C) 2010 MOTOYA CO.,LTD.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||