コメント
このコメントは、『スクリプト 汎用関数』 ゲーム起動から...へのコメントです。コメントの内容
コメントの内容(一番最初の投稿)
aoihikawa(投稿日:2014/04/08 08:04/08/14)
#----- 0埋め ----- def addZero(n, b) l = 0; c = n; r = "" while c > 9 c = floor(c / 10); l = l + 1 end while l < b r = r + "0"; l = l + 1 end r = r + n return r end #----- 時間測定 ----- #うるう年の判定 def getUruuflg(y) return (y % 4) == 0 && (y % 100) != 0 || (y % 400) == 0 end #経過時間の計算 def deffTimeS(t) 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) #if f mi = mi + (t[3] - 1) * 60 + t[4] mi = mi * 60 + t[5] #end return mi end
上記deffTimeS関数に
時間関連関数(getServerCurrentDate関数など)で
取得した時間配列の値を引数で渡すと、
数値(秒単位)に起こした値で取得できます
つまり目的とする、累計のプレイ時間を取得するためには、
汎用関数記事内、viewPlayingTime関数内で処理している通り、
getServerCurrentDate関数とgetServerGameStartDate関数で取得した
時間配列をdeffTimeS関数で数値に起こした後差分を行い、
これをプレイ時間数値とし保存します
次回起動時には、このプレイ時間数値と
再び時間配列をdeffTimeS関数で数値に起こした後差分を加算することで
累計プレイ時間数値を算出することが出来ます
最後にこの数値を
floor(プレイ時間数値 / (60 * 60)) + ":" + addZero(floor(プレイ時間数値 / 60),2) + "'" + addZero((プレイ時間数値 % 60),2)
と計算することで、時:分'秒が
求められるます
上記deffTimeS関数に
時間関連関数(getServerCurrentDate関数など)で
取得した時間配列の値を引数で渡すと、
数値(秒単位)に起こした値で取得できます
つまり目的とする、累計のプレイ時間を取得するためには、
汎用関数記事内、viewPlayingTime関数内で処理している通り、
getServerCurrentDate関数とgetServerGameStartDate関数で取得した
時間配列をdeffTimeS関数で数値に起こした後差分を行い、
これをプレイ時間数値とし保存します
次回起動時には、この前回プレイ時間数値と
再び今回分の差分を算出し、加算することで
累計プレイ時間数値を求めることが出来ます
最後にこの数値を
時間として表示したいときだけ
と計算することで、「時:分'秒」の文字列が
求められます