見出し画像

Rosso Laboratory

信号機遷移中突入対応版

前回のスクリプトにて
    elif ev == 'catch':
        obj.ResetEvent(di['timerEID'])
        di['distance'] = 0
        di['train'] = obj.GetTrain()
        di['timerEID'] = obj.SetEventTimer(1,100)
のResetEventは次の列車が信号機の遷移中に突入してきた時の為だったのですが、ここに次の列車用のSetEventTimerを置くとイベントが発生できないことが分かりましたので、SetEventAfterで0.1秒遅らせることにしました。

#OBJID=38
import vrmapi
def vrmevent_38(obj,ev,param):
    di = obj.GetDict()
    if ev == 'init':
        di['signal36'] = vrmapi.LAYOUT().GetSignal(36)
        di['signal36'].SetStat(0,6)
        di['train'] = 0
        di['timerEID'] = 0
        di['distance'] = 0
    elif ev == 'broadcast':
        dummy = 1
    elif ev == 'timer':
        if param['eventUID'] == 100:
            speed = di['train'].GetSpeed()
            di['distance'] = di['distance'] + 1.85185 * speed
            if di['distance'] > 2500:
                di['signal36'].SetStat(0,6)
                obj.ResetEvent(di['timerEID'])
                di['distance'] = 0
            elif di['distance'] > 2000:
                di['signal36'].SetStat(0,4)
            elif di['distance'] > 1500:
                di['signal36'].SetStat(0,3)
            elif di['distance'] > 1000:
                di['signal36'].SetStat(0,2)
            elif di['distance'] > 0:
                di['signal36'].SetStat(0,1)
    elif ev == 'time':
        dummy = 1
    elif ev == 'after':
        if param['eventUID'] == 101:
            di['timerEID'] = obj.SetEventTimer(1,100)
    elif ev == 'frame':
        dummy = 1
    elif ev == 'catch':
        obj.ResetEvent(di['timerEID'])
        di['distance'] = 0
        di['train'] = obj.GetTrain()
        obj.SetEventAfter(0.1,101)
こちらをお使いください。
PVアクセスランキング にほんブログ村


ランキングに参加中。クリックして応援お願いします!

コメント一覧

rosso_laboratory
こんばんは、ななついろさん(^^)/ 昨晩は配信お疲れさまでした。ifのネストでいけたようでホッとしております。私の方でも昨晩言っていた剰余利用の分岐を試しに作ってみました。今夜その記事が出ますので宜しければご笑覧ください(^^)/
nanatsuiro
zio 様

こんにちは☆
昨日(本日)は、以下の当方ライブ配信で色々とアドバイスをくださり、お礼を申しあげます。

↓配信URL
youtu.be/J64R_3sP1ug

信号機の制御として、「EventAfter」は個別にイベントID変数を用意しないと「kill」しきれない点、「EventTimer」の方は、何故かif文とjumpコマンドが思うように機能しない状態に陥りました。

結局、if分をネスト化する事でようやく意図したとおりの動作を得られましたが、「EventTimer」の時間指定が、変数だと上手く機能しないという問題に直面いたしました。

この問題を解決できるか、今後も制作を続けてまいりたく思っております。

今後とも、どうぞよろしくお願い申しあげます。
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「Pythonスクリプト」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事