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