Compare commits

...

89 Commits

Author SHA1 Message Date
Tom Rothamel 213359d212 More compatible version of the gl test.
This should work better now that Dissolve has alpha=True.
2018-05-05 13:34:12 -04:00
Tom Rothamel 6ac58511a0 Enable the zipping of files > 2GB. 2018-05-05 10:28:10 -04:00
Tom Rothamel dec7b962ea Document Displayable Prefix 2018-05-05 08:47:07 -04:00
Tom Rothamel 2cf0f96b0d Add config.displayable_prefix
This lets creators make their own displayables available in the
same way that image files, images, and colors are.
2018-05-04 22:26:15 -04:00
Tom Rothamel e649c46e60 Remove debug print. 2018-05-03 18:47:27 -04:00
Tom Rothamel 173fcc32e1 Treat RUBY_ALT like RUBY_TOP everywhere.
Fixes an issue where RUBY_ALT would leave blank space,
and perhaps other possible problems.
2018-05-03 18:46:26 -04:00
Tom Rothamel f5f9809b95 Remove usage of style. 2018-05-03 01:21:49 -04:00
Tom Rothamel 0f0da971ec Document alternate ruby text. 2018-05-03 01:10:21 -04:00
Tom Rothamel d53f49ad5d Add support for alternative ruby text.
This allows two blocks of ruby text to appear at once, such as
one above the text and one below it. The use case this is intended
to support is a project that would like both a translation and
pronunciation guide at the same time.
2018-05-02 22:17:37 -04:00
Tom Rothamel 57dfe4fbf3 doc: Changelog and doc sl2 index. 2018-05-02 10:27:44 -04:00
Tom Rothamel c3f5cf4245 Merge pull request #1448 from Alexandre-T/master
French translation of the tutorial.
2018-05-01 17:15:26 -04:00
Alexandre-T 1d040a5ad3 French translation of the tutorial. 2018-05-01 18:11:56 +02:00
Tom Rothamel b118b6b629 Allow the Rollback action to be given arguments. 2018-04-30 21:14:50 -04:00
Tom Rothamel 3af70a67f6 Add the scroll action. 2018-04-29 17:43:59 -04:00
Tom Rothamel 9415995ba0 li: Document poses and some FAQs. 2018-04-29 12:25:53 -04:00
Tom Rothamel 4602d1cb8d li: Document variant and prefix. 2018-04-29 11:45:38 -04:00
Tom Rothamel cb774b625c li: Add the prefix and variant properties to group.
The prefix property gives a prefix that applies to attributes
defined within the group.

The variant property adds an additional section to file and
image names defined within the group.
2018-04-29 01:48:06 -04:00
Tom Rothamel 49c995d1c4 li: Improve parsing.
Using l.keyword() and l.name() rather than l.match, so we don't
match prefixes improperly.
2018-04-29 00:39:51 -04:00
Tom Rothamel f0396aeeb4 li: Add attribute_function.
This is a function that can add (or perhaps, remove) attributes
after the attributes have been selected or before attributes have
been shown.
2018-04-29 00:31:00 -04:00
Tom Rothamel c35086e4a5 Fix doc typo. 2018-04-28 12:50:19 -04:00
Tom Rothamel 9d52a1e626 li: Document if_also->if_all, if_any. 2018-04-28 12:31:20 -04:00
Tom Rothamel 4074f45c6d li: An attribute can take the null keyword.
For now, this just adds a Null displayable, but that might change
in the future. Semantically, it lets the creator declare an
attribute that exists for the use of if_all, if_any, if_not,
and the upcoming attribute modifier function.
2018-04-28 12:06:57 -04:00
Tom Rothamel 409bab07bb Merge pull request #1443 from Alexandre-T/master
LiveComposite replaced by Composite in tutorial and its translations.
2018-04-28 09:01:30 -04:00
Alexandre-T 8771045493 LiveComposite replaced by Composite in tutorial and its translations. 2018-04-28 08:33:17 +02:00
Tom Rothamel db679ca2b3 Dissolve now defaults to alpha=True
The idea is to let the same dissolves be used throughout Ren'Py,
rather than having alpha/noalpha versions of each.
2018-04-28 01:36:06 -04:00
Tom Rothamel 5328f81e20 Document dict transitions. 2018-04-28 01:11:06 -04:00
Tom Rothamel 1c42c156d5 Allow renpy.transition to take a dict transition. 2018-04-28 01:10:38 -04:00
Tom Rothamel 766b158684 Allow the with statement/clause to take a dict of layer transitions.
With this change, writing:

    define dis = { "master" : Dissolve(0.5, alpha=True) }

will apply the dissolve operation to the master layer, as if

    $ renpy.transition(Dissolve(0.5, alpha=True), layer="master")

had been called instead.
2018-04-27 22:45:46 -04:00
Tom Rothamel 5d74e7396b Explicitly select the new console-syle rollback labels.
Since they're not useful outside of the console, and trying
to auto-select breaks after_load.

Fixes #1439.
2018-04-27 01:30:15 -04:00
Tom Rothamel ba832e5e3d Fix signature of render.
Per #1442. Keeping open, so after 7.0 I can evaluate and see if
the opaque optimization even matters anymore, or should be
removed.
2018-04-26 08:55:46 -04:00
Tom Rothamel bbf9f36c47 Implement eval for non-default stores.
Fixes #1441.
2018-04-26 01:43:34 -04:00
Tom Rothamel 83620695dc li: Evaluate expressions using store.eval.
This ensures that expressions are transformed and evaluated in
the right scope.

Fixes #1438, points 2 and 3.
2018-04-25 22:32:52 -04:00
Tom Rothamel 3861f19fa1 Rewrite checking and ordering image attributes.
The main reason for this is so that the _list_attributes and
_choose_attributes functions are used with a multi-part image
name.

Now that it's possible to list attributes from multiple places,
we have to combine them. A topological sort on the order of
attributes is used for this.
2018-04-25 01:06:48 -04:00
Tom Rothamel 21f3e5635c li: Fixed how auto works with an layerd image with a multi-part name. 2018-04-25 01:06:02 -04:00
Tom Rothamel 87f2ed02d4 Change the type of renpy.image.image_attributes.
This doesn't affect Ren'Py, but will make it possible to pull attributes
from a displayable.
2018-04-24 22:45:10 -04:00
Tom Rothamel b393f1fd98 Remove debug print. 2018-04-24 09:02:51 -04:00
Tom Rothamel 748ada5378 li: Move displayable wrapping to a method. 2018-04-23 23:52:53 -04:00
Tom Rothamel 437b742163 li: Some changes.
* if_also becomes if_all.
* if_any has been added.
* if_any, if_all, and if_not have been added to conditions.
* The image takes style properties, not transition properties.

And the code has been cleaned up to remove some duplication.
2018-04-23 23:12:05 -04:00
Tom Rothamel 2232421843 Fix problem with a missing oldtutorial. 2018-04-22 22:10:44 -04:00
Tom Rothamel 8912a0a73a Minor fixes to translations. 2018-04-22 16:21:34 -04:00
Tom Rothamel 73bd716090 Update piglatin. 2018-04-22 16:21:01 -04:00
Tom Rothamel cc272addc2 Merge pull request #1434 from nyaatrap/master
Update japanese
2018-04-22 16:20:28 -04:00
Tom Rothamel c2f626d3c7 Update changelog. 2018-04-22 16:19:50 -04:00
Tom Rothamel fbe4a4e7e2 ShowTransient couldn't take positional arguments.
As it would try to pass transition twice.
2018-04-22 16:16:09 -04:00
nyaatraps b28eebff4f Update japanese 2018-04-22 16:06:43 +09:00
Tom Rothamel 3368cfe3ab Document incompatible changes, add fix to changelog. 2018-04-21 23:26:48 -04:00
Tom Rothamel 3ff9f2d135 Update the changelog. 2018-04-21 22:34:16 -04:00
Tom Rothamel b5306f1065 Update sponsor documentation. 2018-04-21 11:24:12 -04:00
Tom Rothamel 4396d146e2 id: The director should not hide TIMEEVENTS.
Fixes #1432, and the director blocking the notify window from hiding itself.
2018-04-21 08:54:59 -04:00
Tom Rothamel be5f03e7b5 li: Documentation. 2018-04-20 23:51:26 -04:00
Tom Rothamel 647459ef70 li: More documentation. 2018-04-20 23:27:34 -04:00
Tom Rothamel be57f1070d Allow groups to take if_also and if_not. 2018-04-20 22:41:47 -04:00
Tom Rothamel 17840ad937 Use come-from to implement non-greedy rollback.
This fixes a problem in the code:

  default x = False

  label start:
      $ x = True
      "[ x ]"

When accessing the console. The problem is that the changes to rollback
in 6.14 cause there to only be one Rollback here, which is right after
label start. This means that when in the console, x loses its changed
value.

To fix this, when doing a non-greedy rollback, we rollback the minimum
we can, then start executing forwards until we reach the current
statement. This was implemented by adding a "come from" feature
to the context - when a statement is started, the current come
from is checked, and a label is called if it's been reached.
2018-04-20 00:22:50 -04:00
Tom Rothamel dfbb649dfb Fix typo. 2018-04-20 00:22:02 -04:00
Tom Rothamel 21456342c2 li: Turn auto and default into keywords.
It just reads better without True scattered all over the place,
signifying very little.
2018-04-19 23:23:30 -04:00
Tom Rothamel cf1f140ff6 li: Documentation. 2018-04-19 23:06:25 -04:00
Tom Rothamel 9a74b97bbe li: Parse properties on the first line of a group. 2018-04-19 23:03:37 -04:00
Tom Rothamel fd47a942fe Rename to LayeredImage/layeredimage. 2018-04-19 02:23:51 -04:00
Tom Rothamel e22256d631 li: Document layered images.
Which is the final name, at least for the moment.
2018-04-19 02:20:22 -04:00
Tom Rothamel 16782c5847 Fix the SetField documentation. 2018-04-19 02:18:43 -04:00
Tom Rothamel 43e6b37d43 id: Filter prefixed tags.
Layer images tend to use displayables with names like eileen_mouth_smile,
which have the real image name, eileen, as a prefix. We don't want these
cluttering up the id, so filter tags like this out.
2018-04-19 00:11:27 -04:00
Tom Rothamel 0e6a32cbf2 li: Move to the layerimage namespace.
There are a few twiddleable settings here, so they should be in a
public namespace.
2018-04-18 23:44:08 -04:00
Tom Rothamel 0c0bde2315 li: Same change, for the image name. 2018-04-18 23:37:52 -04:00
Tom Rothamel 70e7c38e7e li: Change the pattern for auto-attribute-image names.
We've gone from "eileen mouth happy" to "eileen_mouth_happy". This
is to prevent potential problems - with the spaces, it's possible
for the images that are used in a LayerImage to conflict with
the image itself, causing huge problems.

When there is an underscore in the name, that's mitigated.
2018-04-18 23:33:53 -04:00
Tom Rothamel 2d9c11430f Report an error if an image refers to itself. 2018-04-18 22:54:47 -04:00
Tom Rothamel 14f84a9329 ai(li): rename AttributeImage to LayerImage. 2018-04-18 01:17:55 -04:00
Tom Rothamel d9cdb6e8e1 Expose Composite, Crop, Tile.
Fixes #1433.
Fixes #1430.
2018-04-17 08:35:15 -04:00
Tom Rothamel 18c25fd601 ai: Allow a value for predict_all. 2018-04-17 01:42:03 -04:00
Tom Rothamel ca759eb72e ai: Add if_also and if_not.
These clauses allow attributes (or implementations of attributes) to
interact with each other.
2018-04-17 01:28:49 -04:00
Tom Rothamel 559d57f4cc id: Allow the user to move the id to the bottom of the screen. 2018-04-16 20:18:16 -04:00
Tom Rothamel 27c821c010 Fix accidental translation of the Russian director. 2018-04-16 18:51:54 -04:00
Tom Rothamel 3a064847d2 Add keywords.
* Index from sl2 for.
* Always from ai.
2018-04-16 02:22:03 -04:00
Tom Rothamel 8dc1124dbf ai: Add the always statement.
A convenient and fast way to include a displayable that must
always be there.
2018-04-16 02:17:42 -04:00
Tom Rothamel cd5d9a28ba sl2: Add an index expression to for.
This makes it possible to change which entry in the cache corresponds
to an entry in the list being iterated over, which can fix certain
problems where those don't match up.
2018-04-16 01:43:49 -04:00
Tom Rothamel 61447a9f83 ai: Report and display unknown attributes. 2018-04-15 17:52:40 -04:00
Tom Rothamel 6db5afa132 ai: Fix and improve _list_attributes.
It now has the correct API, and also handles sorting the
attributes in a sensible manner.
2018-04-15 15:22:35 -04:00
Tom Rothamel efa6d28f83 Automatic definition of attributes in groups. 2018-04-15 14:05:37 -04:00
Tom Rothamel dba7363be7 Move images to being defined at the start of init zero. 2018-04-15 13:22:23 -04:00
Tom Rothamel ef254d5a7d Land AttributeImage.
This was originally developed at https://github.com/renpy/ai .
2018-04-14 15:07:19 -04:00
Tom Rothamel ee3e9fcf30 Update changelog for Ren'Py 7.0. 2018-04-14 00:10:08 -04:00
Tom Rothamel a06262c2b3 Fix typo.
Fixes #1429.
2018-04-13 16:55:07 -04:00
Tom Rothamel 779a5472d4 Update keywords. 2018-04-13 16:53:41 -04:00
Tom Rothamel d1c16835c2 Include attributeimage keywords. 2018-04-12 22:29:42 -04:00
Tom Rothamel d68d7e205f Don't try to distribute oldtutorial or templates. 2018-04-09 08:29:55 -04:00
Tom Rothamel 0ffbe3cc0a Allow the launcher to detect the presence and absence of the old
templates and tutorial.
2018-04-08 19:27:06 -04:00
Tom Rothamel f0bfc27267 Remove the files for the old tutorial and legacy templates.
We've been on the new stuff for a year now, and I've gotten (mostly)
good feedback on everything. So it's time to shrink the distribution
by removing this legacy content.

Thanks to everyone who contributed this - your contributions will
live on in git and the Ren'Py 6 downloads.
2018-04-08 19:21:09 -04:00
Tom Rothamel 20e50a9e06 Fix translate None instead of translate russian. 2018-04-08 08:39:15 -04:00
Tom Rothamel c67f88b7f3 Update the screen before checking _handles_event, for non-transient screens.
Fixes #1426.

During skipping, a normal screen was never updated, which means
that the hide handler was not called. This changes it so we force
an update if need be, provided the screen is not transient.

Why not transient? It's because a transient screen is used for
the window in with_none, and updating that screen is expensive
for the 90% of time it isn't seen.
2018-04-08 01:28:47 -04:00
Tom Rothamel 16feb53d14 Improve duplicate translation errors. 2018-04-06 22:40:09 -04:00
389 changed files with 10105 additions and 49949 deletions
-2
View File
@@ -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")
+19 -5
View File
@@ -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
+9 -4
View File
@@ -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")
+3
View File
@@ -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
+262 -7
View File
@@ -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)"
+28
View File
@@ -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 "ティアリング"
+8 -8
View File
@@ -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."
+39
View File
@@ -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 -8
View File
@@ -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(バージョン情報)スクリーンに表示されるテキスト。トリプルクオートの間にテキストを入力します。段落の間には空行を挿入して下さい。"
+7 -7
View File
@@ -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 -7
View File
@@ -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 "ストーリー、画像、音楽を追加すれば、世界にリリースすることができます!"
+42 -34
View File
@@ -205,127 +205,135 @@ translate piglatin strings:
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."
+53 -53
View File
@@ -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."
+40 -40
View File
@@ -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:"
+1 -1
View File
@@ -1,4 +1,4 @@
translate russian strings:
# _developer/developer.rpym:38
+1 -1
View File
@@ -1,4 +1,4 @@
translate russian strings:
# about.rpy:39
+1 -1
View File
@@ -1,4 +1,4 @@
translate russian strings:
# _layout/classic_joystick_preferences.rpym:94
+1 -1
View File
@@ -1,4 +1,4 @@
translate russian strings:
# options.rpy:1
+1
View File
@@ -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
View File
@@ -1 +0,0 @@
../help.html
Binary file not shown.

Before

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.
-99
View File
@@ -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
-38
View File
@@ -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
-204
View File
@@ -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
-92
View File
@@ -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
-266
View File
@@ -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
-79
View File
@@ -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
-37
View File
@@ -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
-140
View File
@@ -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
-222
View File
@@ -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
-478
View File
@@ -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
-331
View File
@@ -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
-152
View File
@@ -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
-56
View File
@@ -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)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

-169
View File
@@ -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()
Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

File diff suppressed because one or more lines are too long
Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

-400
View File
@@ -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")
Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 B

Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

-575
View File
@@ -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"
-128
View File
@@ -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
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 659 B

-213
View File
@@ -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
-743
View File
@@ -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"
-15
View File
@@ -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"
-155
View File
@@ -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.

Some files were not shown because too many files have changed in this diff Show More