変数の計算(質問掲示板

投稿: Material 7186 1 mini ikosami 投稿:2009/11/26 18:20:26(最新:2009/11/30 16:02:30)
変数の計算はどうやるのですか?
+10とかにしたらまったく反応しなかったので・・・
Goldなどに使うものです。

余談ですが敵のステータスにGold
とかができたら便利ですよね。
エンカウントで出てきた敵でGoldの判定がないので・・・

コメントする

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

コメント一覧

Material 6858 mini akasata(投稿日:2009/11/30 16:02, 履歴)
基本的には、運営があまりスクリプトの書き方に参加すべきでは
ないのですが、個人的に短いコードを書くのが大好きなのでちょっと
議論に参加させてくださいww

こういう関数を定義するのはどうでしょうか?

# itemId: アイテムのID
# itemName: アイテム名
# price: アイテムの値段
def buyItem(itemId, itemName, price)
  if getVariable("Gold") < price
    speak("Goldが足りません・・・") 
  else
    if giveItem(itemId)
      setVariable("Gold", 
        getVariable("Gold") - price) 
      speak(itemName + "を買った") 
    else
      speak("アイテムを持ちきれません・・・") 
    end
  end
end


で、実際に使うときは以下のように書いてみます。
# アイテムIDは適当です。

# 選択肢ウィンドウのサイズを大きくしないと表示できないかも・・・。
case speakWithSelect(5, 
  "鉄の剣 1000 Gold", 
  "鉄の盾 800 Gold", 
  "鉄の兜 600 Gold", 
  "鉄のよろい 900 Gold", 
  "革の靴 500 Gold", 
  "何を買いますか?")
when 0
  buyItem(1050, "鉄の剣", 1000)
when 1
  buyItem(1051, "鉄の盾", 800)
when 2
  buyItem(1052, "鉄の兜", 600)
when 3
  buyItem(1053, "鉄のよろい", 900)
when 4
  buyItem(1054, "革の靴", 500)
end


コードは動作確認をしていないので文法エラーが混じって
いたり、意図しない動作をするかもしれないです。

ただまぁ、公式にお店用のスクリプト関数を準備したいなとは
考えています。お金も他のゲームに引き継げる仕組みが欲しい
ところです。
Material 7186 1 mini ikosami(投稿日:2009/11/30 15:13, 履歴)
お金の設定ができました。
が、店の商品を一つ一つ選べるようにすると
ものすごく長くなってしまいます・・・
ひとつなら短いのですが・・・
↓これ以上小さくするのは無理でしょうか・・・
if getVariable("Gold") < 50
speak("お金が足りません・・・")
else
setVariable("Gold", getVariable("Gold") - 50)
giveItem(222)
speak("武器を買った")
一次元変数って使えますか?使えるのなら一回の式で
全部の商品の計算をできるのですが・・・
      mini shirosaboten(投稿日:2009/11/29 16:42, 履歴)
if文などについてはスクリプト言語のマニュアルに書いてあります。
リファレンスは関数の効果などの紹介だと思うので、両方を参照するのが望ましいかと思われます。

スクリプト言語のマニュアルでは以下のことが書いてあります。
・if文の使い方
・数字の比較に使う記号

リファレンスでは関数の書き方がわかります
・変数の正しい書き方
・およびその役割

その他トピックの例文などを参照すれば類推することは出来ると思います。
("gold"<200)という文ですが、ある程度調べればその文章になることはないと思います。
開発者さんはサイトの仕様の改良に時間を割かれるできで、一人ひとりのために関数の使い方から応用まで教える道理はないのに面倒を見てくださっています。
せめてもう少し熟考の跡を見せるのが教わる立場としての礼儀じゃないですか?

setVariable("gold", getVariable("gold") + 10)

こうすれば変数("gold")は10ずつ増えていきます。が、これがなぜ増えていくかがわからなければ、その後にこの変数を使って何かをする、ということも出来ないと思います。工夫とは工夫する前の道具の使い方を理解していなければ出来ないと思います

例えばfinalさんのカスタムパラメータの文では
 setVariable("gold", 100)と設定してるのに
直後のgoldのパラメータ値設定にて(下方)
先ほど設定した変数をまったく利用していません。
 setCustomParamName(10, "gold")
 setCustomParamValue(10,10)

お金を使えるようにするのは変数を使えるようになってからでいいんじゃないですか?


User icon mini 退会したユーザー(投稿日:2009/11/29 16:06, 履歴)
分かりました。
Zararu128x128 mini dycoon(投稿日:2009/11/29 15:57, 履歴)
スクリプトマニュアルと
http://rmake.jp/document/script_manual
getVariableの使い方については
ご確認いただけておりますでしょうか?

関数の返り値については、スクリプトマニュアルに説明が少ないように
思いますので、多少補足させていただきます。

関数は呼び出すと何らかの値を返します。
getVariableの場合は変数の内容を返します。
返した結果の値が、関数の引数や条件式などに与えられ
計算がおこなわれます。

よろしくお願いします。
User icon mini 退会したユーザー(投稿日:2009/11/29 13:55, 履歴)
すいません if文で、変数の値が200以上か判定させるときに、どんな記号を使えばいいのか、例えば(分からないので適当ですが) ("gold"<200)と書けばgoldが200より小さい場合ifより下の処理を行うとかリファレンスに書いてないのでいまいちよくわかりません。
User icon mini 退会したユーザー(投稿日:2009/11/29 13:10, 履歴)
分かりました
Material 6858 mini akasata(投稿日:2009/11/29 11:56, 履歴)
if文と変数をうまく使えばできますよ。
ぜひいろいろ工夫してみてください!
User icon mini 退会したユーザー(投稿日:2009/11/28 16:13, 履歴)
変数の計算で、店みたいに例えば
開始時:お金100円
それで、お店で20円のものを買おうとすると買えて、200円のものを買おうとすると買えないみたいなのはどのようにすればいいのですか?
User icon mini 退会したユーザー(投稿日:2009/11/27 17:41, 履歴)
直りました ありがとうございました
User icon mini 退会したユーザー(投稿日:2009/11/27 17:35, 履歴)
宣言させましたが、今度はメニューに表示されなくなりました。
def onShowCustomParameter()
setVariable("gold", 100)
setCustomParamMenuEnable(true)
setCustomParamMenuName("gold")
setCustomParamName(10, "gold")
setCustomParamValue(10,10)
end
Zararu128x128 mini dycoon(投稿日:2009/11/27 17:13, 履歴)
onShowCustomParameter関数は
開始スクリプトで宣言しておりますでしょうか?
この関数を宣言しないと表示されないかと思います。
以下を参考にしてください
http://page.rmake.jp/wikis/7

よろしくお願いします。
User icon mini 退会したユーザー(投稿日:2009/11/27 16:54, 履歴)
setVariable("gold", 100)
setCustomParamMenuEnable(true)
setCustomParamMenuName("gold")
setCustomParamName(10, "gold")
setCustomParamValue(10,10)
と書いてみました
User icon mini 退会したユーザー(投稿日:2009/11/27 16:53, 履歴)
カスタムメニュー設定したら今度はエラーが出てないのに
メニューには出てくるけどそれを選択しても何も出てきません
User icon mini 退会したユーザー(投稿日:2009/11/27 16:46, 履歴)
ありがとうございました
Zararu128x128 mini dycoon(投稿日:2009/11/27 10:38, 履歴)
Rmakeのご利用ありがとうございます。

endはif, while, def, caseなどの
終わりを表わすときに書きます。
この場合はif, while, def, caseいずれもありませんので
書く必要がないかと思います。

スクリプトで問題が起こった場合は、
問題が起こったスクリプトも貼り付けていただけると
サポートが迅速におこなえるかと思います。

よろしくお願いします。
User icon mini 退会したユーザー(投稿日:2009/11/27 06:17, 履歴)
User icon mini 退会したユーザー(投稿日:2009/11/27 06:00, 履歴)
失礼します
開始時スクリプトにendを書くと、どうもそこにエラーが出るみたいなんですが、何がいけないのでしょうか?
Zararu128x128 mini dycoon(投稿日:2009/11/26 21:02, 履歴)
Rmakeのご利用ありがとうございます

開始スクリプトで以下のように書いておいて
setVariable("gold", 100)


イベントに
setVariable("gold", getVariable("gold") + 10)
speak("gold = ", getVariable("gold"))


と書くことで10ずつ増えることが確認できるかと思います。

それとも、カスタムメニューなどに表示が反映されないという
ことでしょうか?

よろしくお願いします。