実験6のスクリプト
投稿者: rdjk5242 投稿日:2012/02/05 04:50
開始スクリプト
playBGM(6049) #音楽入れてます speakFullScreen(true, "やっとカウントダウンが完成したぞ!\n\n今回のルールは10秒以内に\n\n 右下の王様の部屋に入らないと死んでしまうぞ。\n\nまた、はいってからまた出ても同様だ!\n") #一番初めの文です speak("スタート!") #二番目の文 createText(400, 1, 200, 200) #ここでテキストの表示場所を決めています。 def a() #defからendまでの条件をa()に入れます。 deleteTextAll() setText(createText(400, 1, 200, 200), "残り",10-getTime()/1000,"秒") #createText(400, 1, 200, 200)に残り+現在の時間+秒を入れています。 end #defのend def b() #def a()と同様です。 if 10-getTime()/1000<=0 #これはもし今の時間(10秒-現在の時間)が0より小さいならという意味です。 subPlayerHP(999) #プレイヤー死亡 else #それ以外なら(ここでは今の時間が0秒以上なら) a() #aを呼び出します。 end #ifのend end #defのend setBaseTime() #時間を数えはじめます
通過イベント
- 重なったら開始
- 通行可能
b() #b()を引き出しています。 #b()の内容は、もし今の時間(10秒-現在の時間)が0秒以下ならプレイヤー死亡。 #0秒以上ならa()を引き出す。 #a()は、残り時間を表示するスクリプト
イベントの配置場所
王様イベント
speak("なんとか間に合ったようだね") speak("いやしかしdef文のユーザー関数って超便利だね~") speak("だってこのマップの私以外のイベントは\n\nすべてb()しかかいてないんだからww") case speakWithSelect(2,"はい","いいえ", "じゃあそろそろ終わるかね") when 0 when 1 end speak("別にどっち選んだっておんなじだけどね") goEnding()
以上です。
ぜひ使ってください!
コメントする
コメントするには、ログインする必要があります。
コメント一覧
どれでも同じようなものってことですかね。
それでreturnはまだ使ったことないんですけど、どういう意味なんですか?
違うことですが、ikosamiさんが言っていた、文字を上書きする事を含めて、
今までやってきたことを合わせると、
これで1秒ごとに「あと(30-今の時間)秒」が表示されるんですか?
それでreturnはまだ使ったことないんですけど、どういう意味なんですか?
違うことですが、ikosamiさんが言っていた、文字を上書きする事を含めて、
今までやってきたことを合わせると、
setTime setVariable("タイマー",createText(200, 1, 200, 200)) setText( getVariable("タイマー"), "あと"+(30-floor(getTime()/10)/100)+"秒") waitTime(1000) setText( getVariable("タイマー"), "あと"+(30-floor(getTime()/10)/100)+"秒") waitTime(1000) setText( getVariable("タイマー"), "あと"+(30-floor(getTime()/10)/100)+"秒") ・ ・ ・
これで1秒ごとに「あと(30-今の時間)秒」が表示されるんですか?
「a」に「a + 10」の結果を入れないといけないため
上記のような書き方になります。
なお、折角ユーザ関数に引数、戻り値を設定するなら
という使い方も覚えておくと便利かも。
a = 100 a = a + 10 setVariable("money", 100) #必ず""で括る setVariable("money", (getVariable("money") + 10)) def money(a) a = 100 a = a + 10 end
上記のような書き方になります。
なお、折角ユーザ関数に引数、戻り値を設定するなら
def money(a) a = a + 10 return a end a = 100 a = money(a)
という使い方も覚えておくと便利かも。
>消さないと上にどんどんかぶっていって文字がぐちゃぐちゃになる
これは、テキストエリアを次々と同じ場所に作成し続けて消さないからです
テキストエリアとはつまり看板の板部分であって、そこに書かれる文字は「書き直す」事ができます
詳細はスクリプト/コツ/自由な位置における画像や文字列の使い方 wikiにありますよん
まぁ問題は、基本変数にcreateText()を入れた所で、それは何番目のテキストエリア、という数字でしかない為にセーブロード時に表示がおかしくなる事なんですけどね
これは、テキストエリアを次々と同じ場所に作成し続けて消さないからです
テキストエリアとはつまり看板の板部分であって、そこに書かれる文字は「書き直す」事ができます
詳細はスクリプト/コツ/自由な位置における画像や文字列の使い方 wikiにありますよん
まぁ問題は、基本変数にcreateText()を入れた所で、それは何番目のテキストエリア、という数字でしかない為にセーブロード時に表示がおかしくなる事なんですけどね
なお、イベントや関数から抜けてしまうと
変数の内容は消去されてしまうため、
開始スクリプトなどを利用する場合は
通常変数を使用します。
この場合、イベントや関数を越えて
同じ値を呼び出せるようになります。
変数の内容は消去されてしまうため、
開始スクリプトなどを利用する場合は
通常変数を使用します。
#通常変数の設定 setVariable("a", 1) # aに1を保存 #通常変数の呼び出し b = getVariable("a") # b = 1
この場合、イベントや関数を越えて
同じ値を呼び出せるようになります。
deleteTextAll() #文字表示関連のクリア setVariable("strwin", createText(400, 1, 200, 200)) #表示領域の作成 def strView() setText(getVariable("strwin"), "イベントや\n関数を超えた\n値の受け渡し") end
小数点が発生する箇所をfloorでくくる必要があります。
まず、計算処理の部分は
「(30 - ( getTime() / 10 ) / 100)」ですね。
このうち、小数点以下が発生する=割り算を行っているのは
「(30 - (( getTime() / 10 ) / 100))」です。
ここにfloor関数を入れるようにする必要があります。
「(30 - floor(( getTime() / 10 ) / 100))」