ゲームをやっていない時も時間を(ry

投稿者:       256 mini 池ちゃん(翡翠ヶ池) 投稿日:2012/12/17 17:47

タイトルちょっと長くなったので省略しました
タイトルは
「ゲームをやっていない時も時間を計る関数を作りたいのですが・・・」
                                          です


setBaseTime関数だと「セーブ」→「ロード」とやられるとオワターっていうことを解消するためにもこれが必要かなぁと

後はピグライフ的なゲームとかも作れるようになれるかなとか

ってことで作ろうと思ったのですが一度挫折しましたぁ→http://blog.rmake.jp/%E6%B1%A0%E3%81%A1%E3%82%83%E3%82%93/3043

今の状態は

計り始める
speak("スタート")
setVariable("スタート", createArray())
#変数「t」に、サーバの時刻を取得する
t = getServerCurrentDate()
getVariable("スタート")[0] = toString(t[0]) #年・365日
getVariable("スタート")[1] = toString(t[1]) #月・30日or31日
getVariable("スタート")[2] = toString(t[2]) #日・24時間
getVariable("スタート")[3] = toString(t[3]) #時・60分
getVariable("スタート")[4] = toString(t[4]) #分・60秒
getVariable("スタート")[5] = toString(t[5]) #秒

はい、ここまでです(今作った(殴

・・・

今回のブログの本題に入りますねぇ

僕と契約して「ゲームをやっていない時も時間を計る関数」を皆で作ってよっ!
(何かおかしくなったけど気にしない)

コメントする

コメントするには、ログインする必要があります。

コメント一覧

       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2013/01/04 15:38, 履歴)
aoihikawaさんのスクリプトをちょっと改造して秒単位で図れるようにしました
#うるう年の判定
def getUruuflg(y)
    return (y % 4) == 0 && (y % 100) != 0 || (y % 400) == 0
end
#経過時間の計算
def dt()
    t = getServerCurrentDate()
    mi = 0
    d_li = createArray()
    d_li = splitString("0,31,59,90,120,151,181,212,243,273,304,334,365",",")
    i = 0
    while i < getArrayLength(d_li)
        d_li[i] = toNumber(d_li[i])
        i = i + 1
    end
    j = t[0] - 1
    while j > 1999
        if getUruuflg(j)
            mi = mi + 527040
        else
            mi = mi + 525600
        end
        j = j - 1
    end
    if getUruuflg(t[0]) && (t[1] > 2)
       mi = mi + 1440
    end
    mi = mi + ((d_li[(t[1] - 1)] + (t[2] - 1)) * 1440)
    mi = mi + (t[3] - 1) * 60 + t[4] 
    mi = mi * 60 ; mi = mi + t[5] ; 
    return mi
end
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2013/01/04 15:41, 履歴)
テストだと少し誤差はでますが、それは仕様ということで^^;

後、関数名が変わっているのは覚えるのが面倒なので縮めました(殴
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2013/01/04 15:57, 履歴)
あ、小数点も入れれば誤差が出ない?
#「return mi」の前の部分に下を追加
mi = mi + [6]
User icon mini 退会したユーザー(投稿日:2012/12/17 20:03, 履歴)
配列が分からないので配列無しで
setVariable("tim", getLocalCurrentTimeMillisecond())

def check()
  setVariable("tim", getLocalCurrentTimeMillisecond() - getVariable("tim"))
  if getVariable("tim") >= 1000
    sec = floor(getVariable("tim") / 1000)
    if sec >= 60
      min = floor(a / 60)
      sec = sec % 60
      if min >= 60
        hou = floor(min / 60)
        min = min % 60
        if hou >= 24
          day = floor(hou / 24)
          hou = hou % 24
          if day >= 365
            yea = floor(yea / 365)
            day = day % 365
          else
            yea = 0
          end
        else
          day = 0
          yea = 0
        end
      else
        hou = 0
        day = 0
        yea = 0
      end
    else
      min = 0
      hou = 0
      day = 0
      yea = 0
    end
  else
    sec = 0
    min = 0
    hou = 0
    day = 0
    yea = 0
  end
  speak(""+yea+"年"+day+"日"+hou+"時間"+min+"分"+sec+"秒たちました(笑)")
end

これでどうでしょう?

User icon mini 退会したユーザー(投稿日:2012/12/17 20:07, 履歴)
修正
setVariable("tim", getLocalCurrentTimeMillisecond())

def check()
  setVariable("tim", getLocalCurrentTimeMillisecond() - getVariable("tim"))
  if getVariable("tim") >= 1000
    sec = floor(getVariable("tim") / 1000)
    if sec >= 60
      min = floor(sec / 60)
      sec = sec % 60
      if min >= 60
        hou = floor(min / 60)
        min = min % 60
        if hou >= 24
          day = floor(hou / 24)
          hou = hou % 24
          if day >= 365
            yea = floor(yea / 365)
            day = day % 365
          else
            yea = 0
          end
        else
          day = 0
          yea = 0
        end
      else
        hou = 0
        day = 0
        yea = 0
      end
    else
      min = 0
      hou = 0
      day = 0
      yea = 0
    end
  else
    sec = 0
    min = 0
    hou = 0
    day = 0
    yea = 0
  end
  speak(""+yea+"年"+day+"日"+hou+"時間"+min+"分"+sec+"秒たちました(笑)")
end
User icon mini 退会したユーザー(投稿日:2012/12/17 20:09, 履歴)
ちょっと待ってください。バグがあああ!!!
User icon mini 退会したユーザー(投稿日:2012/12/17 20:19, 履歴)
setVariable("tim", 0)
setVariable("time", getLocalCurrentTimeMillisecond())

def check()
  setVariable("tim", getLocalCurrentTimeMillisecond() - getVariable("time") + getVariable("tim"))
  if getVariable("tim") >= 1000
    sec = floor(getVariable("tim") / 1000)
    if sec >= 60
      min = floor(sec / 60)
      sec = sec % 60
      if min >= 60
        hou = floor(min / 60)
        min = min % 60
        if hou >= 24
          day = floor(hou / 24)
          hou = hou % 24
          if day >= 365
            yea = floor(yea / 365)
            day = day % 365
          else
            yea = 0
          end
        else
          day = 0
          yea = 0
        end
      else
        hou = 0
        day = 0
        yea = 0
      end
    else
      min = 0
      hou = 0
      day = 0
      yea = 0
    end
  else
    sec = 0
    min = 0
    hou = 0
    day = 0
    yea = 0
  end
  speak(""+yea+"年"+day+"日"+hou+"時間"+min+"分"+sec+"秒たちました(笑)")
  setVariable("time",  getLocalCurrentTimeMillisecond())
end

連投すいません
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2012/12/18 15:35, 履歴)
投稿ありがとうございますorz

ただこれじゃぁうるう年の時におかしくなりませんか?(作れないのに言うな

後、aoihikawaさんがもう聞く前に作っていたみたいなのでもう大丈夫です

せっかく作っていただいたのにごめんなさいorz
User icon mini 退会したユーザー(投稿日:2012/12/18 15:37, 履歴)
ちっちっちっ(何がやりたい
これはリュー育のときに使用したから別に苦労してない(じゃあなぜバグッタ
それをちょっと変えただけなんで苦労してません。
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/12/17 21:13, 履歴)
直接の記事ではないですが
指定期間内か判定するの中で使用されている
deffTime関数を使うことで実現可能です

初回起動時刻を通常変数に保管しておき、
経過時間を計りたい場所で
deffTime(現在時刻) - deffTime(初回起動時刻)
を実行します

なお、この処理はあーるめいく銀行の利子計算で
使用されています
       256 mini 池ちゃん(翡翠ヶ池)(投稿日:2012/12/18 15:32, 履歴)
おぉ、教えてくださりありがとうございますorz
Material 154390 2 mini  創 (投稿日:2012/12/17 19:51, 履歴)
QBの有名台詞キター(w