コメント

このコメントは、『スクリプト 汎用関数』 ゲーム起動から...へのコメントです。

コメントの内容

Totto ira mini alnyan(投稿日:2014/04/12 04:04/12/14)
回答ありがとうございます!わたしの知識不足で
書いてあることを理解するのに3日も掛かってしまいました。orz
なんとなく形にはなりましたが、おかしいところがあるかもしれません…(下記参照)

わたしの作っているゲームでは、累計プレイ時間はカスタムメニューに表示させています。
セーブする際にのみ時間の処理を行っているので、
ここのページにあるスクリプトのようにリアルタイムでのプレイ時間を
カスタムメニューに表示させるのは難しいでしょうか。
また、この方法を使うとセーブ後も続けて遊ぶ際に起動してからの秒数が増え続けてしまいますよね?
セーブ処理時に起動時間をリセットする方法ってあるのでしょうか…?


# 開始スクリプト

# ----- 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

# セーブ時の処理

def save()
    t1 = getServerCurrentDate()
    t2 = getServerGameStartDate()
    df = deffTimeS(t1) - deffTimeS(t2)
setVariable("セーブまでのプレイ秒数", df )
a = "セーブまでのプレイ秒数:" + getVariable("セーブまでのプレイ秒数")
speak(a)

b = getVariable("セーブまでのプレイ秒数")
b = floor(b / (60 * 60)) + ":" +
 addZero(floor((b % (60 * 60)) / 60),2) + "'" +
 addZero((b % 60),2)
 setVariable("セーブまでのプレイ時間", b)
 c = "セーブまでのプレイ時間:" + b
speak(c)

setVariable("累計プレイ秒数" , getVariable("累計プレイ秒数") + getVariable("セーブまでのプレイ秒数"))
y = getVariable("累計プレイ秒数")
y = floor(y / (60 * 60)) + ":" +
 addZero(floor((y % (60 * 60)) / 60),2) + "'" +
 addZero((y % 60),2)
setVariable("累計プレイ時間", y)
x = "累計プレイ時間:" + y
speak(x)

savePlayDataCustom("セーブしますか?", "はい", "いいえ")
end

# 初回一度きりの処理

setVariable("セーブまでのプレイ秒数", 0)
setVariable("累計プレイ秒数", 0)
setVariable("累計プレイ時間", "0:00'00")

コメントの内容(一番最初の投稿)

Totto ira mini alnyan(投稿日:2014/04/12 04:04/12/14)
回答ありがとうございます!わたしの知識不足で
書いてあることを理解するのに3日も掛かってしまいました。orz
なんとなく形にはなりましたが、おかしいところがあるかもしれません…(下記参照)

わたしの作っているゲームでは、累計プレイ時間はカスタムメニューに表示させています。
セーブする際にのみ時間の処理を行っているので、
ここのページにあるスクリプトのようにリアルタイムでのプレイ時間を
カスタムメニューに表示させるのは難しいでしょうか。
また、この方法を使うとセーブ後も続けて遊ぶ際に起動してからの秒数が増え続けてしまいますよね?
セーブ処理時に起動時間をリセットする方法ってあるのでしょうか…?


# 開始スクリプト

# ----- 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

# セーブ時の処理

def save()
    t1 = getServerCurrentDate()
    t2 = getServerGameStartDate()
    df = deffTimeS(t1) - deffTimeS(t2)
setVariable("セーブまでのプレイ秒数", df )
a = "セーブまでのプレイ秒数:" + getVariable("セーブまでのプレイ秒数")
speak(a)

b = getVariable("セーブまでのプレイ秒数")
b = floor(b / (60 * 60)) + ":" +
 addZero(floor((b % (60 * 60)) / 60),2) + "'" +
 addZero((b % 60),2)
 setVariable("セーブまでのプレイ時間", b)
 c = "セーブまでのプレイ時間:" + b
speak(c)

setVariable("累計プレイ秒数" , getVariable("累計プレイ秒数") + getVariable("セーブまでのプレイ秒数"))
y = getVariable("累計プレイ秒数")
y = floor(y / (60 * 60)) + ":" +
 addZero(floor((y % (60 * 60)) / 60),2) + "'" +
 addZero((y % 60),2)
setVariable("累計プレイ時間", y)
x = "累計プレイ時間:" + y
speak(x)

savePlayDataCustom("セーブしますか?", "はい", "いいえ")
end

# 初回一度きりの処理

setVariable("セーブまでのプレイ秒数", 0)
setVariable("累計プレイ秒数", 0)
setVariable("累計プレイ時間", "0:00'00")