『スクリプト 汎用関数』 配列をオリジナルデータ領域にセーブロードする

投稿者:Cdv30200 aoi icon mini aoihikawa 投稿日:2012/02/05 22:09

配列をオリジナルデータ領域にセーブロードする
(ご自由にご利用ください)

#配列セーブ関数
#第1引数:セーブキー名 第2引数:配列データ 第3引数:true 数値データ / false 文字データ
#戻り値:1 成功 / -1 失敗
def saveArrayGameData(key,arr,ch)
  r = (-1)
  if isLogin()
    if ch
      i = 0
      while i < getArrayLength(arr)
        arr[i] = toString(arr[i])
        i = i + 1
      end
    end
    str = joinArray(arr,",")
    waitTime(2000)
    saveGameData(key,str)
    r = 1
  end
  return r
end

#配列ロード関数
#第1引数:セーブキー名 第2引数:true 数値データ / false 文字データ
#戻り値:配列データ 成功 / -1 失敗
def loadArrayGameData(key,ch)
  r = (-1)
  if isLogin()
    waitTime(2000)
    arr = splitString(loadGameData(key),",")
    if ch
      i = 0
      while i < getArrayLength(arr)
        arr[i] = toNumber(arr[i])
        i = i + 1
      end
    end
    return arr
  else
    return r
  end
end

#データ領域消去関数
#第1引数:セーブキー名
#戻り値:1 成功 / -1 失敗
def clearGameData(key)
  r = (-1)
  if isLogin()
    waitTime(2000)
    removeGameData(key)
    r = 1
  end
  return r
end


 使用例
a = createArray() 
a[0] = 3 
a[1] = 1 
a[2] = 4
a[3] = 6
a[4] = 2
a[5] = 8
a[6] = 7
a[7] = 5
a[8] = 9
a[9] = 3

#配列をオリジナルデータ領域にセーブ
if saveArrayGameData("Data", a, true) != (-1)
  speak("セーブしました")
else
  speak("セーブに失敗しました")
end

#配列をオリジナルデータ領域からロード
a = loadArrayGameData("Data", true)
if a != (-1)
  speak("ロードしました")
else
  speak("ロードに失敗しました")
end

#オリジナルデータ領域を消去
if clearGameData("Data") != (-1)
  speak("消去しました")
else
  speak("消去に失敗しました")
end

コメントする

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

コメント一覧

User icon mini 退会したユーザー(投稿日:2012/07/27 23:41, 履歴)
ふーむ、今回のコンテストに向けてこのスクリプトの実践してるのですが
ロードした後に現在の〇〇は口口です
っていうのはどうすれば・・・?
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/07/28 08:02, 履歴)
配列ではない、単体のデータの場合は
saveGameData関数、loadGameData関数を
直接使用します。

関数の使用方法はsetVariable関数、getVariable関数と似た形で、
if isLogin() 
  #ログインユーザの場合
  
  waitTime(2000)
  
  #共通セーブデータ「a」に「こんにちは」を保存する
  saveGameData("a", "こんにちは")
  
  waitTime(2000)
  
  #変数「b」に共通セーブデータ「a」をロードする
  b = loadGameData("a")
end

といった形になります


気をつけなければいけないのは、

・保存できるデータは必ず文字列であること、
 (数値を扱う場合、toString関数やtoNumber関数を使用します)

・ログインしているユーザしか利用できないため
 isLogin関数でログインしているかどうかを判定し
 その結果をif文で分岐させておくこと

・通信時間があるため、使用前に
 waitTime関数などで1秒以上の間を空けること

といった制限があることです。
User icon mini 退会したユーザー(投稿日:2012/07/28 09:02, 履歴)
なるほど、配列ではなくてそのまま使うんですね。
わかりました。