直したのに今度は・・・(質問掲示板

投稿:   1 mini 闇さん 投稿:2011/07/06 02:14:06(最新:2011/07/09 16:29:09)
case speakWithSelect(3,"イチゴジュース","パンケーキ","イチゴクッキー",
"何を作りますか?")
when0
if getFlag("eレシピ")
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は成功した")
giveItem(7264)
end
end
end
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(E)
speak("料理は失敗した")
giveItem(7265)
end
end
end
end

when 1
if getFlag("pレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7278)
end
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
m=getItemIndexWithId(7262)
if m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7277)
end
end
end
when 2
if getFlag("kレシピ")
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は成功した")
giveItem(7277)
end
end
end
else
s=getItemIndexWithId(7263)
if s==-1
speak("材料が足りません")
else
k=getItemIndexWithId(7276)
if k==-1
speak("材料が足りません")
else
E=getItemIndexWithId(7261)
if E==-1
speak("材料が足りません")
else
removeItemWithIndex(E)
removeItemWithIndex(s)
removeItemWithIndex(k)
speak("料理は失敗した")
giveItem(7279)
end
end
end
end
end
このように直したのですが今度は
2, 3 action : syntax error, コードに文法的な間違いがあります。 line(行): 3
というエラーが・・・

コメントする

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

コメント一覧

Logo mini hightoller(投稿日:2011/07/09 16:29, 履歴)
少し前に『)の直後の識別子は』エラーが出たときに
再現できずに直っちゃって困ったことがあったけど、
そういうことだったのか。理解。

現況で陥りやすいエラーと認識。
wikiのエラー一覧に掲載したほうがいいのかな。
  1 mini 闇さん(投稿日:2011/07/09 14:26, 履歴)
このスクリプトを使ったゲーム(テストですⅡ)がついに完成しました
みなさん本当にありがとうございました
Nyan mini rurun9(投稿日:2011/07/09 13:46, 履歴)
え、そんな単純な事だったの…。
そりゃ一行に二つ書いたらエラッタするよね。

つまり「スクリプトはコピペはするな。見ながら自分で全部打ち込め」て教訓ですね。
#この枠の中ってコピーした時に
#改行無しで全部くっついてるのが問題w

wikiの物を売れる店のスクリプトが動かないて言ってた人達は全員、本当にコピペしただけで、改行とかの根本的な書き方のルールをチェックすらしていなかったワケなんだ!

これを防ぐ手立てとしては、
スクリプトエディタに「改行マーク」を目立つ色で表示してしまうか、画面右端自動折り返し表示を止めて左右スクロールバーをつけちゃうか、どっちかですかねぇ?
Logo1 mini fmy(投稿日:2011/07/09 01:57, 履歴)
レス主さん的には解決かもしれないので蛇足な話。
シカトしておk。

自分の出る幕はないかなーと思ってたけどつい(目が)カッとなって調べてみた。

スクリプトを入力するテキストフォーム?の性質か知らないが
・一行の文章の幅が枠の幅を超える(およそ半角40文字、ただしプロポーショナルフォントあり)
・一行の文章中に特定の文字(自分が見つけたのは半角スペースか全角文字)が含まれている
と、画面上は自動改行が行われる機能がある模様。

ただしスクリプトのコンパイラ?上では一行文章として扱われるので
a=getItemIndexWithId(7261) b=getItemIndexWithId(7262) 

※間に半角スペース
はエラー
x, y action : syntax error, コードに文法的な間違いがあります。 line(行): 1
x, y action : )の直後の識別子は改行後になければいけません。 line(行): 1
が出る。

エラーそのものは「カッコの後の代入は勘弁しておくれー」と怒られてるが
見た目は改行されていてエラー箇所が発見できない問題。

もしこの件について過去スレがあったらご指摘頂きたい。
  1 mini 闇さん(投稿日:2011/07/08 17:15, 履歴)
a=getItemIndexWithId(7261)
b=getItemIndexWithId(7262) 

の部分を切り取りしてから貼り付けたらエラーがでなくなりました
なぜだろう?
Nyan mini rurun9(投稿日:2011/07/07 22:36, 履歴)
2,3 action
て事は…何でしたっけ。
マス(2,3)にあるイベントスクリプトで、1行目が文法エラーかな?

もしや、別の無関係な部分で怒られているとかいうオチだったり…
  1 mini 闇さん(投稿日:2011/07/07 18:46, 履歴)
どこで間違っているか確かめるために
a=getItemIndexWithId(7261)
b=getItemIndexWithId(7262) 
 if a==-1 || b==-1
    speak("材料が足りません")
else   
     removeItemWithIndex(a)      
     removeItemWithIndex(b)
  speak("材料が足りています")
end

としたところ1行目に

2, 3 action : syntax error, コードに文法的な間違いがあります。 line(行): 1
2, 3 action : )の直後の識別子は改行後になければいけません。 line(行): 1
このようなエラーがたぶんa=getItemIndexWithId(7261)
は間違えていないと思います

User icon mini 退会したユーザー(投稿日:2011/07/07 18:42, 履歴)
おそらく3行目だから
when0のスペースが抜けてるんだと思いますね
正しくはwhen 0です
Nyan mini rurun9(投稿日:2011/07/07 14:47, 履歴)
一度全部忘れましょー。
とりあえず何をどう組み立てるのかを考えるのが先。
今回は作る物が3択
・イチゴジュース
・パンケーキ
・イチゴクッキー

それぞれ材料となるアイテムが必要で、ひとつでも足り無ければ「材料が足りません」
更にレシピのフラグがtrueになっていないなら、材料だけあっても「失敗しました」
となれば完成。
case speakWithSelect(3,"イチゴジュース","パンケーキ","イチゴクッキー","何を作りますか?")

when 0 #イチゴジュースつくる
  a=getItemIndexWithId(7261) #材料a 
  b=getItemIndexWithId(7262) #材料b
if a==-1 || b==-1 
  speak("材料が足りません") 
else
  removeItemWithIndex(a)
  removeItemWithIndex(b)
  if getFlag("イチゴジュースレシピ")
    speak("料理は成功した")
    giveItem(7264)
  else
    speak("料理は失敗した")
  end
end

when 1 #パンケーキをつくる

when 2 #イチゴクッキーをつくる

end #case~when~終
という形式で他も作れば良いと思います。
これだけスッキリしていれば、endが足りないとかも流石に気付くかと。
  1 mini 闇さん(投稿日:2011/07/07 02:30, 履歴)
@hightallerさんの意見でとりあえずまとめてみて
case speakWithSelect(3,"イチゴジュース","パンケーキ","イチゴクッキー",
"何を作りますか?")
when 0
E=getItemIndexWithId(7261)
m=getItemIndexWithId(7262)
if E==-1||m==-1
speak("材料が足りません")
else
removeItemWithIndex(m)

(上から10行)
にしたところこのようなエラーが(元の長い文でも出た)
2, 3 action : syntax error, コードに文法的な間違いがあります。 line(行): 4
2, 3 action : )の直後の識別子は改行後になければいけません。 line(行): 4
4行目は when 0 だけなのに
何が違うのかまったくわかりません
  1 mini 闇さん(投稿日:2011/07/07 02:01, 履歴)
いろいろ教えていただきありがとうございます
参考にさせていただきます

Logo1 mini fmy(投稿日:2011/07/07 01:47, 履歴)
もうーみんなツンデレなんだからー。

理解が薄いままコピペするとちょっと痛い目に遭うぞっていう
よくあるパターンに見事にひっかかっちゃっただけだね。

わかんないからって投げ出したりせずに「誰かに聞いてみれば」という手段で
なんとか問題を解決させようとしてる君の姿勢は立派だ。
「質問したんだから答えてもらうのが当然」とさえ思わなければ
質問する事自体は悪い事じゃないから大丈夫。
レベルアップできる返答はたくさんあるよ。よく読んで実践してみよう。

見事完成して公開できたら少なくとも君にコメントした人達はきっと
「デバッグだから仕方なく」なんて言いながら一度は君のゲームを遊んでくれるはずだよ。

がんばれーめげんなー応援してっからなー。
Material 7186 1 mini ikosami(投稿日:2011/07/06 22:19, 履歴)
3行目には
when0

の5文字しかないのですから
もう少し頑張りましょう(^^;)
Material 7186 1 mini ikosami(投稿日:2011/07/06 22:06, 履歴)
when0 → when 0
スペースが抜けています。

せっかく直ったのに、
間違えて自分でスペースを消してしまったのでは?

   mini ___(投稿日:2011/07/06 21:15, 履歴)
エラーが出る限り、私はそれを「直した」とは言わないと思うのですよ。

そですね。
言いたいことは前回のトピックで書いちゃったので、
後はまあどうぞご自由に。
Nyan mini rurun9(投稿日:2011/07/06 17:08, 履歴)
えーと、同じ話題は同じスレッドに書込を続けて下さい。

スクリプトを書込するときはRmake記法を見て{{{code }}}でくくるとか
半角スペースで見易くするとか
コメントつければ何のendか判り易いとか
たくさん意見を頂いたのに返事も無く、どれひとつとして参考にしていないのは何故なんですか?