忍者ブログ
はじかきれんしゅうちょう いろいろ
Admin  +   Write
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

スクリーーンに何か書くとき
のメモ。

例えばこういうscreen.rpyのメニューの中の書き方。
全然わからないけどうまく使えば便利みたいな予感はしているけど
全然わからない。ハハハ
カスタムスクリーン?できるようになるといいね 来世で ハハハ



## About(バージョン情報)スクリーン #########################################################
##
## このスクリーンは、本ゲームと Ren'Py に関するコピーライトとクレジットを表示し
## ます。
##
## このスクリーンは特別なことをしていません。そのためカスタムスクリーン作成の例
## として利用していきます。
screen about():
    tag menu
    ## 次の use ステートメントは game_menu(ゲームメニュー)スクリーンをこのスク
    ## リーンの内に表示しています。use 文の子(内包されたオブジェクト)の vbox
    ## は game_menu スクリーンの中の viewport に配置されます。
    use game_menu(_("情報"), scroll="viewport"):
        style_prefix "about"
        vbox:
            label "[config.name!t] Version [config.version!t]\n"
            #text _("『迎春! スキスキ小籠包』")
            ## gui.about は、通常 options.rpy で設定します。
            if gui.about:
                text "[gui.about!t]\n"
            text _("作:{a=http://kumakumaf.amigasa.jp/}くまのこ道{/a}\nMade with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]")
            text _("\n\n【Thanks】\n{a=https://www.renpy.org/} ・リンク{/a}\n{a=https://www.renpy.org/} ・リンク {/a}\n{a=https://www.renpy.org/} ・リンク{/a}")
## 次の変数は about スクリーンにテキストを表示します。この変数は options.rpy で
## 再定義されるため、options.rpy の同じコードを消去しないと反映されません。
define gui.about = ""
style about_label is gui_label
style about_label_text is gui_label_text
style about_text is gui_text
style about_label_text:
    size gui.label_text_size


まとめ!


label _(" ") →テーマカラーの色で" "の中に書いたテキストがでる。
 text _(" ") →普通の文字の色で" "の中に書いたテキストがでる。

◆ add "images/bt_rs.png" xalign 0.2 yalign 0.2 ←add””で画像表示。原寸だなあ。
             add "images/gg1.png" zoom 0.5 で大きさ調整可能(追記)

◆”  ”の中
・リンクが貼れる。{a=☆URL☆} ・リンクテキスト {/a}
・\nで改行できる。

初歩すぎるけどこれしかわからない/(^o^)\
なんかわかったら追加します

あと、ダブるけど
◆エンドフラグで分岐するには↓

             if not persistent.finishedfull: #ラスエンドみてないなら
                    text _("まだ見ぬエンドがあるよ。")
               else:
                    text _("フルコンプありがとう!")
                    add "images/copm.png" xalign 1.2 yalign 0.0 #コンプマークみたいなのをたすとか
PR
だんだんおかしな方向になってきた。

エンドフラグは同様にスクリプトにかいとく。(persistent.●●
    $ persistent.finished = True

以下、screens.rpy
## Help(ヘルプ)スクリーン #### から一部抜粋。


screen keyboard_help():
    hbox:
        label _("END1") #←Enter が入ってたとこ。
#       text _("台詞を読み進める。ボタンを選択する。") ←コメントアウトします
        if not persistent.finished: #エンドみてないならこっち
            text _("クリアしていないよ。")
        
        else:
            text _("クリアしているよ!。")
    hbox:



なんて融通が利くんだrenpyちゃん……

追記!
このままだと「キーボードがついてる人に出る画面」になっているので
その辺を外してみました↓ 考え方は一緒。怒涛のコメントアウトしてるだけだよ


## Help(ヘルプ)スクリーン ##############################################################
##
## キーやマウスの割り当てに関する情報を表示するスクリーン。実際のヘルプは他のス
## クリーン(keyboard_help、mouse_help、gamepad_help)を使います。
screen help():
    tag menu
#    default device = "keyboard"
    use game_menu(_("エンドリスト"), scroll="viewport"):
        style_prefix "help"
        vbox:
            spacing 13
            hbox:
                label _("エンドリスト")
               # textbutton _("エンドリスト"): #action SetScreenVariable("device", "keyboard")
                #textbutton _("操作方法(マウス)") action SetScreenVariable("device", "mouse")
                #textbutton _("ゲームパッド") action SetScreenVariable("device", "gamepad")
            #if device == "keyboard":
                #use keyboard_help
           # elif device == "mouse":
                #use mouse_help
           # elif device == "gamepad":
                #use gamepad_help
#screen keyboard_help():
            hbox:
                label _(" ")
                text _(" ")
            hbox:
                label _("END1")
 #       text _("台詞を読み進める。ボタンを選択する。")
                if not persistent.finishedrs: #エンド1のフラグ(persistent.finishedrs)確認
                    text _("???")
                else:
                    text _("エンド1を見たよ!")
            hbox:
                label _("END2")
 #       text _("台詞を読み進める。ボタンを選択する。")
                if not persistent.finishedgk: #エンド2のフラグ(persistent.finishedgk)確認
                    text _("???")
                else:
                    text _("エンド2を見たよ!")
            hbox:
                label _("END3")
 #       text _("台詞を読み進める。ボタンを選択する。")
                if not persistent.finishedrm: #エンド3のフラグ(persistent.finishedrm)確認
                    text _("???")
                else:
                    text _("エンド3を見たよ!")
            hbox:
                label _("END4")
 #       text _("台詞を読み進める。ボタンを選択する。")
                if not persistent.finishedhy: #エンド4のフラグ(persistent.finishedhy)確認
                    text _("???")
                else:
                    text _("エンド4を見たよ!")
            hbox:
                label _("END5")
 #       text _("台詞を読み進める。ボタンを選択する。")
                if not persistent.finishedlo: #エンド5のフラグ(persistent.finishedlo)確認
                    text _("???")
                else:
                    text _("エンド5を見たよ!")
            hbox: #なんとなくスぺースをあける・・・
              label _(" ")
              text _(" ")
            hbox:
               label _("フルコンプ!")
#   #    text _("台詞を読み進める。ボタンを選択する。")
               if not persistent.finishedfull:  #コンプ用のフラグ(persistent.finishedfull)確認
                    text _("まだ見ぬエンドがあるよ。")
               else:
                    text _("フルコンプありがとう!")
                    
##                if not persistent.finishedfull: #ラスエンドみてないなら
#                  text _("まだ見ぬエンドがあるよ。")
#                else:
#                 text _("フルコンプありがとう!")



本当は本来のタブっぽいのをひらきっぱにして2ページ目(アイフレーム?)
みたくして使いたいのだが(キーボード、マウス→ページ1、ページ2にかきかえ)
・・・わからなかったぜ
タイトルから飛べて、ゲーム中のメニューからは飛べないおまけページのつけ方。
ゲーム中のメニューから飛べちゃうと戻すとき不都合があったので飛べなくしました。

<設定>
・エンドフラグを立てた後に増えるメニューである
・タイトルから飛べるがゲーム内のメニューからは飛べない
・「endroom」というラベルに飛ばす(これは例)

エンドフラグはスクリプトにかいとく。(persistent.●●
    $ persistent.finished = True

screens.rpyの## メインメニュースクリーンとゲームメニュースクリーン
から抜粋。


screen navigation():
    vbox:
        style_prefix "navigation"
        xpos gui.navigation_xpos
        yalign 0.5
        spacing gui.navigation_spacing
        if main_menu:
            textbutton _("はじめる") action Start()
            if persistent.finished:
                textbutton _("→おまけ等") action Start("endroom") #飛ばすラベル名
            
        else:
            textbutton _("ログ") action ShowMenu("history")
            textbutton _("記録する") action ShowMenu("save")
        textbutton _("続きから") action ShowMenu("load")


ここに足します。抜粋。
ログと記録するはゲーム中のメニューでだけ出現するっぽい。
つまり、elseブロックの中に独自な飛び先をいれれば
ステータス画面とかもできるんじゃないか説。
ちょっとお休みで。

screens.rpyの# About(バージョン情報)スクリーン ########
のところ、(Ren'pyのライセンス云々が書いてある場所です)
微妙にスぺースがあまってるじゃないですか。ここに


screen about():
    tag menu
    ## 次の use ステートメントは game_menu(ゲームメニュー)スクリーンをこのスク
    ## リーンの内に表示しています。use 文の子(内包されたオブジェクト)の vbox
    ## は game_menu スクリーンの中の viewport に配置されます。
    use game_menu(_("情報"), scroll="viewport"):
        style_prefix "about"
        vbox:
            label "[config.name!t]"
            text _("Version [config.version!t]\n")
            ## gui.about は、通常 options.rpy で設定します。
            if gui.about:
                text "[gui.about!t]\n"
            text _("Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]")
            text _("\n\n【Thanks】\n{a=https://www.renpy.org/} ・リンク{/a}\n{a=https://www.renpy.org/} ・リンク {/a}\n{a=https://www.renpy.org/} ・リンク{/a}")
## 次の変数は about スクリーンにテキストを表示します。この変数は options.rpy で
## 再定義されるため、options.rpy の同じコードを消去しないと反映されません。
define gui.about = ""



こう足すと、リンク集ができます。
こんな感じ・・・


もちろんリンクは切ってなんか書くだけでもOK。
◇変数

変数は「$」。
 $ turn = 5 #代入。 
    $ hensu += 1  #今ある数字に足す ※

※なんでか【同じラべル内】で宣言してからじゃないとうまくきかなかったことがあった。
宣言=事前に    $ hensu = 0 を入れておくこと


また、マニュアルより文字列も入れられる。
セリフの中で出すときは[food] のように囲む。
    $ food = "アップルソース"
    "[food] でお願いします。" #セリフ

グローバル変数(クリアデータとかを管理できる)はpersistent.◯◯だそうです。
    $ persistent.finished = True

TrueとFalseもできるぞい。
これを使って、ifで分岐ができます。
persisitentの方のIFはなんか違う書き方するみたいなんで→ここを見てね。


【追記】あと、ifの時とかに使うであろう演算子。
renpyじゃなくてpythonで調べた時に出たやつだけど多分使えるはずなのでメモ。

###演算子
x > 0 #ゼロより大きければTRUE
x < y #xがyより小さければTrue
x <= y #xがyより小さいか等しければTrue

x > y #xがyより大きければTrue
x >= y #xがyより大きいか等しければTrue

x == y #xとyの値が等しければTrue
x != y #xとyの値が等しくなければTrue


◇変数による会話パターン分岐(IFをつかう)

 「共通ルートシナリオの中なんだけどもある場面でルートによって別のキャラがしゃべる」
 みたいな例です。要はフラグがあるときのみ聞ける会話みたいなのの発展?
 変数food0が1、2,3のときでif分岐してルート(に変数入れて)きまって、
 そのあとルートの変数でif分岐してセリフパターンで軽めに分岐して
 合流な流れのスクリプトが下の例です。(うーん説明になってなさげ)

 シナリオ抜粋なのでキャラ名とかそのまま・・・ノイズだと思いますがすみません。
 また、サンプルスクリプト内ではセリフ話者の指定とかは省いています。

#変数の数字によって別の変数に数字を入れときます。(ややこしい例になっちゃったな)
    if food0 == 1: #変数:food0は1でしょうか?
        $ route = 1  #ヒヤツグルート #変数:routeに1を入れる。
    elif food0 == 2: #それとも変数:food0は2でしょうか?
        $ route = 2 #フヨウルート #変数:routeに2を入れる。
    elif food0 == 3:  #それとも変数:food0は2でしょうか?
        $ route = 3  #リムファルート #変数:routeに3を入れる。
label pro17: #予選結果~★分岐あり
    scene bg06
    with fade 
    ns "予選課題の提出期間が終了しました。今日これから、再び集められた参加者の前で、結果が発表されます。"
  
    m1 "エントリーナンバー2!  フヨウ!"
    m1 "次! エントリーナンバー29! リムファ!"
    m1 "続いて! エントリーナンバー37!ヒヤツグ!"
    m1 "そして! 48番!"
    
    if route == 1:#ヒヤツグ
        m1 "肉への慈しみが感じられました! 歓喜の小籠包、ニオ!"
        ar "よし!"        
        hy "お、あの子だ。ニオって名前だったのか。"     
  
    elif route == 2:#フヨウ
        m1 "小麦へのこだわりが光りました! 万来の小籠包、ニオ!"
        ar "やったね!"     
        ng "あいつか……。なるほど、名前ぐらいは覚えておいたほうが\nよさそうだ。"

    elif route == 3:#リムファ
        m1 "香辛料の創意工夫が、懐かしくもハイセンス! \n革新の小籠包、ニオ!"
        ar "よかった! 予選突破だ!"     
        rm "ふーん、やるじゃない。あの子も予選通ったんだ。" 
 
label pro18: #説明
    m1 "以上! 名前を呼ばれた方で、本戦の材料費について補助を希望する場合は居残りをお願いします!"

すげ~~わかりにくいと思うんですが、
ルートに入る予定のキャラからひと言もらえるようなそんな感じになってます。
で、elifでインデントされた中までが終わったらlabel pro18 まで飛んでくれます。
それぞれ上からダーって再生されちゃう……みたいなことがないの。すごいね。

もちろんインデントの中にjumpを入れて別ラベルに飛ばせば普通に(?)
大掛かりな分岐もできます。
あっ、IF判定かけたい変数がIFんとこで初登場するとエラーになるので
スクリプト内にあらじめ使う変数を宣言しといてね。   

    $ food0 = 0 
    $ route = 0 
頭にでも。
≪ 前のページ   *HOME*   次のページ ≫
ブログ内検索
このブログについて
ゲーム作りたい人のメモ。
講座というほどのものでもないおぼえがきです。
何か参考になるところがあればご自由にどうぞ。
ほぼ自分用なので、日本語いきあたりばったりでごめんなまし。

※ここに書いたことは全体的に
「本当はなんとかする方法があるかもしれないけど、私にはわからない」が多く…
あんまり仕組みを理解していないし誤解もあるかもしれません。
というわけで責任は負いません。ごめんなさい!

リンク:ゲーム作ってる本館
material by bee  /  web*citron
忍者ブログ [PR]