loadGameData()でロード出来ない(質問掲示板

投稿:   1 mini 闇さん 投稿:2012/03/24 15:40:24(最新:2012/03/26 12:27:26)
case speakWithSelect(2,"はい","いいえ", 
    "変数を読み込みますか")
  when 0
while l<1
q=1
w=0
case speakWithSelect(11,"0","1","2","3","4","5","6","7","8","9", "終了",
    "コードを入力してください")
  when 0
    w=w+(q*0)
  when 1
    w=w+(q*1)
  when 2
    w=w+(q*2)
  when 3
    w=w+(q*3)
  when 4
    w=w+(q*4)
  when 5
    w=w+(q*5)
  when 6
    w=w+(q*6)
  when 7
    w=w+(q*7)
  when 8
    w=w+(q*8)
  when 9
    w=w+(q*9)
  when 10
l=10
end
q=q*10
end
w=toString(w)  when 1
    speak("読み込みませんでした")
end

e=loadGameData(w)
e=toNumber(e)
speak("ロードした変数の値",e,"変数[0]の値",e[0],"変数[1]の値",e[1],"です")

エラー文
line: 4 not defined variable : l
line: 34 not defined variable : w
valueの存在しないkeyにアクセスしたためデータを取得できませんでした

しかも数字を選ぶ選択肢が出ないです

コメントする

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

コメント一覧

  1 mini 闇さん(投稿日:2012/03/26 12:27, 履歴)
解決しました
これを使ったテストゲームを公開しました
ゲームの概要は文字数の限度の関係により一部協力者様のURLを省略しました
Nyan mini rurun9(投稿日:2012/03/25 01:34, 履歴)
えーと、根本的に何がどーなれば完成なのかがワカラナイ事には。

・プレイヤーキャラのパラメータからgetCharacterIdIndex()で何の番号が出てくるのか解説どうぞ

・桁数が謎、という事なのでqとか不要で、単純に数字ひとつずつを文字としてwに繋げていくだけの方が良いカモ
一体入力しているコードとは何なのか、その説明もどうぞ
  1 mini 闇さん(投稿日:2012/03/25 03:44, 履歴)
一つ目はRPG系でプレーヤーキャラクターのID所得です
僕は主に自分のみデバック表示したいとき使っていました

二つ目は↑をアクティビティーなんかに出して他のプレーヤーがそれを見て
その人のチームと対戦するって考えていました
  1 mini 闇さん(投稿日:2012/03/25 03:50, 履歴)
3DSからの投稿です(↑も)
いまPCが使える環境に無いので
このコメみて閃いた解決策をメモします

w=w*10+選択した数
Nyan mini rurun9(投稿日:2012/03/25 23:44, 履歴)
キャラのID番号て、同じキャラをプレイヤーキャラ登録してる人がいたら、被る気がする
ただ、プレイヤーキャラに登録するのはキャラ画像だし、キャラ画像ID番号なのかな…?

フィードに出すのは「データを凝縮&加工したパスワード」なのね
となると、今回のように数字入力したものをイキナリセーブする事は無いワケですね!
状況が激変しますので、覚悟して下さいね
  1 mini 闇さん(投稿日:2012/03/25 23:59, 履歴)
<<キャラのID番号て、同じキャラをプレイヤーキャラ登録してる人がいたら、被る気がする

被らないかテスト済みです
Nyan mini rurun9(投稿日:2012/03/26 00:23, 履歴)
被らないのか…つまりプレイヤー毎の番号が出てくるって事かな
ゲストだといくつなんだろ…後で調べてみよう


ところでフィードで出すだけなら、そもそもsaveGameData(), loadGameData()は不要ですよね?

今回必要なのは、作成してるゲーム上の各数値状態を何に少ない文字数の暗号に変換するか、というパスワードの作り方なのでは?
  1 mini 闇さん(投稿日:2012/03/26 11:49, 履歴)
これはテスト用に作った物なので"5,5"と短いですが
実際は最大10人のキャラクターの位置や強さ等を数値化するため
さすがにフィードに出せる限界を超えてしまいます
また他の人と戦って勝つと賞品がつくとかを作るとき
saveGameData()を使わないと有りもしないPWで簡単に倒せ
しかも多くの賞品を貰えるPWを作られゲームバランスが崩れる可能性があります
  1 mini 闇さん(投稿日:2012/03/25 15:13, 履歴)
読み込みについては解決しました
eの値がNaNでe[0]とe[1]がnullになってしまいました
e=loadGameData(w)
#ここだとe=5,5(正常)e[0]とe[1]はnull
e=toNumber(e)
speak("ロードした変数の値",e,"変数[0]の値",e[0],"変数[1]の値",e[1],"です")
#↑この辺りが39行目

1st argument is not array. line : 39
1st argument is not array. line : 39
Nyan mini rurun9(投稿日:2012/03/26 00:20, 履歴)
e=loadGameData(w)
でeに入ったのは文字列です
なのでコレをtoNumber(e)としただけでは厳密には数値にはなりません
少なくともロード直後にeの中身を表示して「5,5」のようにカンマが入っている時点で、数値に変換したらおかしな状態に突入する筈です
加えてひとつの文字列を入れただけのローカル変数eは、配列になってないので『そりゃ配列じゃねぇよ』とツッコミがきてるのです
e=splitString(e, ",") #コレで強制的にeに配列が入る
n=0
while n<getArrayLength(e)
 e[n]=toNumber( e[n] )
n=n+1
end
としないとダメでしょうね
  1 mini 闇さん(投稿日:2012/03/26 11:41, 履歴)
eが配列になっていない事に機がつきませんでした
ありがとうございます
  1 mini 闇さん(投稿日:2012/03/24 23:47, 履歴)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  when 8
    w[n]=8#w=w+(q*?)をw[n]=?に変更
   when 9
     w[n]=9
   when 10
 l=10
 end
 q=q*10
n=n+1#ここに週回数を数える『n』を追加
 end
 w=toString(w)
  when 1
     speak("読み込みませんでした")
 end
  e=loadGameData(w)
 e=toNumber(e)
 speak("ロードした変数の値",e,"変数[0]の値",e[0],"変数[1]の値",e[1],"です")

s=0#ここに入れ替えたものを保存
f=1
while  n>0
s=w[n]*f#ここで入れ替える
n=n-1#週回数だけまわす
f=f*10
end

こんなのを考えました

valueの存在しないkeyにアクセスしたためデータを取得できませんでした
1st argument is not array. line : 47
1st argument is not array. line : 47
だそうです
  1 mini 闇さん(投稿日:2012/03/25 00:54, 履歴)
ループに
w[n]=createArray()
をいれる事で一部解決しかし
エラー分に変化無しです

ってか変数の中が(12,3,4)とかの時
[0]で12って出せますか?
Nyan mini rurun9(投稿日:2012/03/24 23:26, 履歴)
>1234と入力したら4321になってしまう

だってひとつ入力する毎にq=q*10してるんだから
後から入れた方が桁が多い、つまり左側に追加されるから当前ですw

case speakWithSelect(2,"はい","いいえ", "変数を読み込みますか")
when 0
 loop=0
 while loop<4
  q=1000; w=0
  a=speakWithSelect(11,"0","1","2","3","4","5","6","7","8","9","終了", "コードを入力してください")
  if a==10
   loop=false
  else
   w=w+(q*a)
  end
  q=q/10
 end #loopループ終

 w=toString(w)
 waitTime(1200); e=toNumber( loadGameData(w) )
 speak("ロードした変数の値 ",e,"\n変数[0]の値 ",e[0],"\n変数[1]の値 ",e[1]," です")

when 1
 speak("読み込みませんでした")

end #case終
保存するデータの名前をパスコードにしてしまう、という発想は良いとして、流石に桁数制限はした方が良いので4桁に固定するとこんな感じ

ただ全員がプレイ時にアクセスできる為に、他人が同じパスコードで上書きする可能性がある事と、100個データが保存されたら次以降は全てセーブに失敗
その辺はどーしますか?
  1 mini 闇さん(投稿日:2012/03/24 23:35, 履歴)
パスコードは
toString(getValueFromCharacterParam(getPlayerParam(), getCharacterIdIndex()))

これなのでかぶる事は無いです
2DRPGゲームで対戦機能をつけようと思って
マイキャラIDは僕は4桁ですが
Rmake人数と共に桁数も増えていきますから・・・
  1 mini 闇さん(投稿日:2012/03/24 17:15, 履歴)
コードが1234のとき
1234と入力したら4321になってしまうのですが
入れ替える方法を教えてください
  1 mini 闇さん(投稿日:2012/03/24 16:04, 履歴)
自己解決しました
最初にl=0をいれるの忘れていました