ツクールVX Ace 初心者救済、質問スレ Part.1
1 :
名無しさん@お腹いっぱい。 :
2013/03/10(日) 11:17:32.76 ID:tns6iWre
回想領域さんのシンボルエンカウントスクリプトを導入したんですが undefined method `setup' for class `Game_Event'と表示され起動できません 何もいじってない新規プロジェクトに導入しても同じエラーが出ますが何故なのでしょうか
スクリプトの導入の方法と設定が間違ってるんじゃない?
RGSS2のシンボルエンカウント導入してね?
何かと競合してるとか
RPG探検隊さんのサイドビューを使ってるんですけども、 自分で自分のMPを回復した時だけ2重にポップアップされるのってどうにかならないですかね?
Sideviewの3801行目 @spriteset.set_damage_pop(@subject) if target != @subject && @subject.result.hp_damage != 0 or @subject.result.mp_damage != 0 を @spriteset.set_damage_pop(@subject) if target != @subject && (@subject.result.hp_damage != 0 or @subject.result.mp_damage != 0) に変えれば直る。
あ、最初の@が全角じゃなくて半角だから注意
直りました、丁寧にありがとう。()抜けてただけなんだねコレ これだけでサイドビューやめるかどうかの瀬戸際だったのでマジでありがとう
もう一つ分からない事が…同じくRPG探検隊さんのサイドビューなんですけども HPと同時にMPも回復するスキルやアイテムではMPしか表示されないんですが、全部同時に表示させられないでしょうか? XPバトルのポップアップ拡張を使えって回答はよくみかけるんですがXPバトルは使わないもんで… target.sv.damage_action(@subject, item) N03.set_damage(@subject, -target.result.hp_drain, -target.result.mp_drain) if target != @subject このset_damageがHPとMPどっちかでダメージがあれば表示って部分かな? でも色々弄っても結局はMPが優先されてしまうんですよね… ちなみにアイテム側の設定で「効果をMP回復」「ダメージタイプをHP回復」に分けてもだめでした…
お返事遅れまして申し訳ない… そして試してみたところ、ちゃんとできました。すごいですね… 素人目にはかなり書き換えられてるように見えるのに機能してます。 バグってレベルでもないですが、ダメージ実行のendが一個多かったようなので消しておきました。 試しにTPとMPとHPが同時に変動するアイテムを作りましたが問題なく全部表示されてて感動です!ありがとうございます!
あと、表示順が上からTP、MP、HPとなってしまって見栄えが悪かったので勝手ながら弄ってみました、 同じ悩みの人の参考になれば幸いです。 【ポップアップの表示順を上からHP、MP、TPにする(HPとTPを入れ替える)】 『ダメージ実行』のtpとmpを入れ替えて、 『ダメージ表示』の when 0; damage = 〜 の所のhpとtpを入れ替え、 add_file = N03::DAMAGE_TP if damage_type == 2 の2を0にする これでいいはず…? では、何度も助言大変助かりました。ありがとうございました!
あーこれダメージを伴わないステート攻撃だとステートアイコンが表示されないバグがあるな・・・ 今日中に修正するので見てたら入れ替えお願いします。
>>17 様わざわざありがとうございます
言われなきゃ気づかなかった…確かにポップされてなかったですね。
ありがたく使わせて頂きます!
ももまるさんのXPスタイルバトルのようなダメージポップアップをバトル中でなくマップ上で表示させたいのですがどうすればいいでしょうか?
18 :名無しさん@お腹いっぱい。:2013/09/13(金) 08:25:11.35 ID:x2XYHITC ももまる氏のXPスタイルバトル導入したんだが戦闘アニメが全体的にでかくね? 790 :名無しさん@お腹いっぱい。:2013/10/19(土) 17:16:52.77 ID:hS1av0/v ストレイキャットのももまるをコキ使って作った忘翼() 881 :名無しさん@お腹いっぱい。:2013/10/31(木) 16:24:25.53 ID:yLh7lWIA ももまるに無茶させた名護みい
ど初心者な質問ですいません。 ダンジョンのイベントで床が崩落してプレイヤーが落下するイベントを作りたいのですが 崩落する床のタイルが上手く表現できません。 タイルマップの穴を3×4箇所、イベント配置すると床が所々宙に残ってしまっています 穴のオートタイルを置くにはどうすればいいんでしょうか?
RPG探検隊様のAce版サイドビュースクリプトを使っていますが ミスや回避もポップアップ表示させるにはどこを弄ればいいでしょうか?
23 :
名無しさん@お腹いっぱい。 :2014/02/10(月) 11:28:58.20 ID:P1XXK+UJ
昨日買ったのですが起動して自動会話で順に会話させたいのに会話がバラバラに表示されますしかもループされます。 ゲームが始まるとあらすじが流れその後次のマップ移動までは造れたのですが自動会話人数は6人ですがどうしても上手くいかなくて どうすればいいかアドバイスお願いします
>>23 初めてであれば、ひとまず公式の講座に一通り目を通すことをオススメします。
また、ツクールの基本的な操作であれば、ツクールの種類は違いますが、
YADOTというサイトが非常に参考になります。
VXaceしか触ったことがないのですが、 ネットを見ているといろんなところで「XPのほうがきれいなマップを作れた」という評判を見かけます XPとVXaceでどのような違いがあるのでしょうか? 単純に考えて、タイルセットを移植すればVXaceでも同じものが作れるのでは? と思うのですが デフォルトで入っていたタイルセットに違いがあったのでしょうか? XPで作ったマップをVXaceで使えるようにするスクリプトもあるようですが、 そのためだけにXPを買う価値はありますか?
それは自由だがXPのタイルセットは微妙に色数少ない
大前提として、なぜXPが他のツクールよりもきれいなマップが作成できるか? ということを、実際に触って理解した方がいいと思います とりあえずXPの体験版を使ってみる事をオススメします
キャラクターが隠れるような壁を作るにはどうしたらいいのでしょうか?
Eタイルに壁を設定(要自作) あとはタイルセットの設定いじるだけ
31 :
名無しさん@お腹いっぱい。 :2014/02/16(日) 17:41:18.17 ID:WeNtcyb9
>>24 とても参考になるサイトを教えていただきありがとうございます。見ていたサイトよりこちらのほうが参考になるようです
XPはレイヤー三層あるからな Aceは実質自由なパーツを置けるのが二層しかない この違いは大きい しかも一層目で唯一自由なパーツを置けるA5が何故か横256と少ない 一層目のフリースペースがもっと広ければまだましだったんだが まあでも遠景を利用した一枚絵マップとかやりたい人はAceの方がいい エディタ上で遠景表示出来ないXPは辛い
あと、XPはカクカク
34 :
名無しさん@お腹いっぱい。 :2014/02/17(月) 18:33:58.88 ID:Vj4LqZ+7
RPG探険隊様のサイドビュースクリプトで ポップアップダメージ表示に0を表示するには どうしたらよいですか?
表示すること自体は恐らく簡単だけど、 多分、0ダメージ表示するとMPダメージのみとかの攻撃でもHPダメージ表示出るよ?
VX Aceにかぎらないのですが、フォルダ名が長いと重くなると聞きました。 パスD:\〜なども短い方が良いのでしょうか? ためしにD:\FGにゲームファイルを入れてみましたが、重い気がします。
37 :
名無しさん@お腹いっぱい。 :2014/02/24(月) 04:33:32.01 ID:+rJggA8F
ビットマップとかをnesすると設定するrectの意味がいまいちわからなくて、ちょっと詰まっています。 ツクールで文字列や画像を表示する場合 ビューポートで範囲指定 → その上に透明のrectを張り、その中に画像を表示させるってイメージでいいんでしょうか? それでその透明なrectベースで画像表示を整理整頓してるという風になっているんですか?
nesするの意味が良く分からないのですが・・・多分認識はあってると思います。 一応、viewport,sprite,window,bitmapのそれぞれの役割だけ。 viewportというのは一般的な画像処理で言うとレイヤーと似たような物と考えてください。 複数のspriteをグループ化するための機能で、これを操作する事で、spriteやwindowをまとめて動かしたり色調変化させたりできます。 spriteはbitmapを入れるための額縁のようなものです。 これを操作する事で、拡大縮小を行ったり、傾けたりといったことが出来ます。 windowは色々な機能を持った装飾枠付きのspriteです。 bitmapはキャンバスです。これに絵を描くのがbltで、文字を書くのがdraw_textです。 そして、四角を描くのがfill_rectで、左から右にグラデーションさせた四角を描くのがgradient_fill_rectです。 要するに、画面という部屋に、viewportという展示スペースを置いて、sprite(window)という額縁に入れた、bitmapという絵を飾ってるイメージです。 展示スペースを動かすと、一緒に額縁や絵も動くし、額縁を傾けると絵も一緒に傾きますよね。 展示スペースは部屋の中にいくつも作る事が出来ますが、1つの額縁には1つしか絵は入らない、といった感じです。 こんな説明で分かるかな・・・
39 :
名無しさん@お腹いっぱい。 :2014/02/24(月) 11:57:02.51 ID:+rJggA8F
おお、返事ありがとうございます! nesはnewの間違いです。日本語ばっかチェックしてたらもれてしまいました それぞれの役割を説明していただいて非常に助かります おかげで部分部分じゃなくて概念的に理解できました。めっちゃはかどります
あ、1つだけ修正です。 >windowは色々な機能を持った装飾枠付きのspriteです。 これはちょっと違います。 windowには拡大縮小、角度指定の機能はないので、正確には別の種類の額縁といった感じです。 sprite→拡大縮小、角度指定、透明度変更、波形描画、反転描画等の機能を持った額縁。 window→装飾枠が付いて、開閉処理や選択用カーソル表示等の機能を持った額縁。 という風になります。
41 :
名無しさん@お腹いっぱい。 :2014/02/25(火) 15:12:37.78 ID:ebjxwpcF
>>41 スクリプトとして
$game_actors[アクターID].picture = "ファイル名"
を実行すればいい。(アクターIDとファイル名は任意で変更)
簡単なやり方としては、コモンイベントを使う。
イベントコマンド3ページ目に「スクリプト」ってのがあるからそれで記述。#は不要。
あとは画像を初期設定したいときや、変更したいときにコモンイベントを実行すればいい
$game_actors[1].picture = "A1.png"
なら、アクター1の立ち絵がA1.pngになる。
A1.pngは自分で準備してね
トループファイルやコモンイベントの文字を一括置換など可能でしょうか?
44 :
43 :2014/03/13(木) 22:15:14.50 ID:H9fY9vlf
NoEditor等に表示させ文字を一括置換という感じです
「RPG探検隊」というサイトのサイドビュースクリプトを使っているのですが、これについて詳しい方はいらっしゃるでしょうか? 画面サイズを640×480で制作しているのですが、画面全体に広がる戦闘アニメを作るにはどうすればいいのでしょう? 例えば320×240のアニメーション4つを敷き詰めて同時に再生させるなんてことも出来るのでしょうか?
Aceは本スレ荒れて、粘着荒し意外は大体外部の板にいったから こっちは答えてくれる人すくないぞ
ありがとうございます 他のところで訊いてみます
48 :
名無しさん@お腹いっぱい。 :2014/04/04(金) 21:08:37.67 ID:JnP/gpcE
Ace本スレ12まだー?
ただの荒らしが粘着するヲチスレと化してたしいらないだろう
50 :
名無しさん@お腹いっぱい。 :2014/05/07(水) 19:23:41.09 ID:3kdTjIf1
商用利用禁止の素材使って完成したゲームを 無料公会しても良いのでしょうか?
>>50 商用利用禁止の素材=その素材を使った創作物で商売してはいけない
なので、無料なら大丈夫
素材作者の気持ちを考えると 公開時に使ったのを一報するのがマナーだよな
53 :
名無しさん@お腹いっぱい。 :2014/05/09(金) 19:44:37.90 ID:yPFa/HTG
質問です ダメージ計算式を頑張って考えていざ打ち込もうとしたら計算式が長すぎて入りませんでした 何か解決方法は無いでしょうか 通常攻撃用 (物理)(luk=近接技量ステータス) 2*(a.atk*((a.mhp-a.hp)/a.mhp+1)+a.agi*(a.hp/a.mhp)+a.luk*(-5*(a.hp**2/a.mhp**2)+6*(a.hp/a.mhp))*(a.atk*a.agi*a.luk)/(b.def*b.agi*b.luk)) -(b.def+b.agi*(b.hp/b.mhp)+b.luk*(-5*(b.hp**2/b.mhp**2)+6*(b.hp/b.mhp))) 入力できる範囲 2*(a.atk*((a.mhp-a.hp)/a.mhp+1)+a.agi*(a.hp/a.mhp)+a.luk*(-5*(a.hp**2/a.mhp**2)+6*(a.hp/a.mhp))*(a.a
やり方自体は class Game_Battler < Game_BattlerBase def na(a,b) 作った計算式 end end をスクリプトの適当なところに入れて、ダメージ計算式を a.na(a,b) とすればできると思います。 ただし、計算式に除算が入っているため、そのままでは正常な結果は得られません。 これは整数/整数の結果が整数となる仕様のためです。 除算する数字のどちらかに.to_fを加えて、浮動小数とすることで正常な結果が得られるようになります。
>>54 ありがとうございます
問題は長さだけではなかったのですね
VXですが既に仲間に入っているキャラの覚えているスキルを変更しようと考えています。 キャラ数が多く、覚えているスキルも多いのですが、現在覚えているスキルを一気に忘れる方法ってないのでしょうか? 最初は現在経験値を記録してレベルを1に戻して記録した経験値を戻したのですが、 変更後は覚えない変更前は覚えているスキルを覚えたままでした。 これを消すためには1キャラ1キャラ、スキルも1つずつ1つずつ何百位回も行い消すしかないのでしょうか? 現在データに登録している初期Lv初期スキルできると便利なのですが。
先日、vxaceを購入しました 一作目として簡単なゲームを一つ作っているのですが、テストプレイの戦闘で得た経験値によってレベルアップの処理が行われていないようです これは実際のゲームとして起動した時にはどうなるのでしょうか 現段階で何か設定する項目が欠けているのでしょうか?仕様なのか判断に困っています。 何か処理が必要であれば現段階で対応したいのですが…
>>57 すみません、自己解決しました
実動させた場合はレベルアップの処理が行われる事を確認しました
そこで改めて質問したいのですが、
皆さんは戦闘に関するゲームバランスは実際に動かした物を触って調整を行っているという認識でよいでしょうか?
テストプレイ時に反映させる方法は基本的には無いと考えていいでしょうか?
どうぞ宜しくお願いします
RPGツクールVXリーダーで何回かやってるとガオーとか出て使えなくなったんだけど OSのクリーンインストール以外で体験版の制限消すことできる?販売停止で買えないので。 レジストリの体験日数みたいなの消すソフトいいのあったら教えて。 昔でいうtrash key creanerみたいなやつ希望。 無理なら仮想PCで使うけど。うざいよなこういう体験版でわざわざ消しても残る記録残して 粘着質に制限してくるソフト。そのくせ買えないとか作者頭沸いてんのか?だったらソフトの公開自体停止しろよって思う。
それVXゲー作者が連名組んでVectorにツクールVXの暗号解読は違法なので販売するなって何度も送りつけたやつだったような? なおその手法は商用販売されてる他のソフトにもいくらでも応用できるので、昔は存在したその手のソフトが消えていった経緯からお察しください。
質問です。 ステートが解除されるまでのターン数を表示したいのですが、どうやったらいいでしょうか? たとえば麻痺を食らった時に、「麻痺が解けるまで、あと○ターン」と表示させたいです。
・ステートの残りターンを表示するスクリプトを入れる ・Window_BattleLogのdisplay_current_state辺りを改造して自力で表示出来るようにする のどちらかです。 例のようにテキストで残りターンを表示するには、自力でスクリプトを改造するしか無いと思います。
>>62 やはりスクリプト勉強しないとダメなんですね
制御文字等で何とかなればと思ったんですが…
即レスありがとうございました
初心者です デフォのスクリプトで使われているメソッドやモジュールを どんなメソッドやモジュールなのか調べるためにスクリプトエディタから検索かけてたどるときのコツってなにかありますか?
VXAceでいいんだよね? ・Ctrl+Shift+Fでスクリプト内全文検索を利用する。 は基本として、 ・p callerを入れて処理の流れを確認する。 (callerはそのメソッドがどこから呼び出されたのかが分かるメソッド) ・p 1,p 2などを各所に入れて処理の流れを視認しやすくする。 なんかが流れを理解するのには有効じゃないだろうか。
ダメージ計算式で装備品の補正前の攻撃力とか防御力を使いたいんですがどう書けば使えるでしょうか。 以前FSMで似たような質問を見たと思うんですが、その時の話の中で 完全な素のステータス、ステータスアップアイテムによる補正後のステータス、装備による補正後のステータス の3パターンあるというようなことが言われていて そのうちのステータスアップアイテムの補正はあるけど武器の補正はない状態のステータスを取得したいです。
まず、デフォルトのスクリプトのままでは取得は不可能です。 なので、スクリプトに class Game_Actor < Game_Battler def param_plus2(id) return @param_plus[id] end end を追加します。 これは、ステアップアイテム等で上昇した分のステータスを取得するのに必要なメソッドです。 後は a.param_base(パラメータID)でステアップを含まない能力の取得 a.param_plus2(パラメータID)でステアップ分の能力の取得ができます。 つまり、 a.param_base(パラメータID)+a.param_plus2(パラメータID) で装備と特徴の補正を含まない値が取得できます。 パラメータIDは 0:HP,1:MP,2:攻撃力,3:防御力,4:魔法力,5:魔法防御,6:敏捷性,7:運 です。
>>67 ありがとうございます。
希望のステータスを取得することができました。
>>65 ありがとうございます。
シーンのクラスから始まってるスクリプトがどんな処理をしているのかを、ちゃんと観てみます。
質問です 戦闘画面で常に攻撃力を表示させることはできないでしょうか?
できる。
戦闘時に攻撃力を防御に、防御力を回避率などに変更して戦闘が終了したら元の数値に戻るスクリプトって可能かな?
スクリプトの基本が理解できてれば充分可能
〜することはできないでしょうか 〜することは可能かな いずれも訳すと "〜する方法を教えてください"である DQNが"ちょっと金貸してくれや"というのと同じ
初心者であろうと、「できないわけが無いこと」はまともな知能があればわかる
すみません質問です RGSS3を動かせるような統合開発環境ってないんでしょうか…できればフリーでwin用で ブレークポイント置いたりステップ実行したりしたいです
80 :
ササキタケオ :2014/07/08(火) 08:47:39.45 ID:jWIf1Ki5
Vxace でプリキュアみたいな、RPGを作るには どうすれば良いですか?教えて下さい。 宜しくお願いします。
>>79 まだ見てるか分からないけど、ステップ実行やブレークポイント使えるエディタは無いと思うよ。
RGSS2をNetBeansなんかで編集する方法を解説してる所はあるっぽいけど、RGSS3はなさそう。
そもそもそんなことするまでもない
>>81 見てますよーありがとう、やっぱそうかー
数万程度なら出費でもいいやと思ってたんだけどなぁ。
>>82 よちよちの若葉なんで全然追えないんですわorz
callerとか使いかた判らんけど試してみるか…
84 :
名無しさん@お腹いっぱい。 :2014/07/10(木) 02:34:26.87 ID:tJu9FYPi
初心者でVX aceでゲーム作ってるんですが、 「変数nがxの倍数の場合」みたいな条件分岐ってどうやるんですかね
変数の操作:変数nのxの剰余 条件分岐:変数nが0と同値
「一炊の夢、一酔の幻」様制作の吹き出しメッセージACE版について。 文字数に関わらず、ネームウィンドウとメッセージウインドウの横幅を 任意の値で固定にしたいのですが、どこを弄れば良いですか? キャラや台詞によって、ウインドウの幅や顔グラの位置がコロコロ変動 するのが非常にストレス溜まるので、どうにか固定化したいのです。
自分でスペース入れて調整しろや身の程知らずが
>>87 初心者救済する気あんの?
>>1 を1万回ほど読んで納得して二度とここ来ないでくれる?
パラメータを初期の6個から拡張したいのですがどうやったらできるでしょうか? 追加したパラメータにも成長曲線を設定したいです。 例えばですが、勇気と信仰心みたいなパラメータを追加するといった感じです。 この値の参照も、初期であるATKとかと同じように扱えるようにもしたいです。
パラメータを増やすこと自体は難しくないです。 成長曲線で設定できるようにするのもできます。 他のステータスと同じように特徴に対応させることはメモ欄で設定するようにすれば可能です。 ただし、それら全てを説明したところで、どこにどう表示するのか?という問題が出てきます。 ステータス欄に加え、装備欄でも表示枠を確保しなければいけません。 そこまですると、もう説明するより素材を作る方が簡単です。 なので、誰かに素材を作ってもらうか自力で作れないのならあきらめてください。
表示に関しては値さえ取得できれば特に問題無いと思います。 基本的には内部パラメータとして扱うだけで、表に出てくる部分ではありませんので。
なら最低限の機能だけ class Game_Actor < Game_Battler def sc ;$data_classes[self.note[/^<サブ能力:(\d+)>/] ? $1.to_i : 0 ] ; end def pparam(param_id) ; sc ? sc.params[param_id,@level] : 0 ; end def brave ; pparam(2) ; end def faith ; pparam(3) ; end end これをスクリプトに貼って、アクターのメモ欄に<サブ能力:クラスID>と記述します。 ここで指定したIDのクラスの攻撃力をbrave、防御力をfaithとして取得できます。 特徴や装備による能力の操作はできません。 また、<サブ能力:○>の記述がないアクターのこれらの能力は0になります。
>>92 ありがとうございます。
早速導入してみましたが、うまく行きません。
サブ能力用のクラス(ID10)を作って、とりあえず成長曲線はデフォルトのままとしました。
サブ能力をつけたいアクターのメモに <サブ能力:10> と記述しました。
スキルID1の通常攻撃の計算式欄に、a.braveとだけ記載しました。
これで、通常攻撃を行うとbraveと同じだけのダメージが当たると思うのですが0ダメージにしかなりません。
a.braveをa.atkとするとメイン職業のatkの値のダメージは出ています。
仕組み的には別クラスのATKやDEFといったパラメータを
サブ用として名前を変えて持ってきて使うという感じだと思うのですがあってるでしょうか。
ごめんなさい、アクターのノートの取得が間違ってますね・・・ def sc ;$data_classes[self.note[/^<サブ能力:(\d+)>/] ? $1.to_i : 0 ] ; end ここは def sc ;$data_classes[self.actor.note[/^<サブ能力:(\d+)>/] ? $1.to_i : 0 ] ; end が正解です。 それでそのままだとエネミーでこの値を使うとエラーがでてダメージが0になるので class Game_Enemy < Game_Battler def brave ; self.enemy.note[/^<brave:(\d+)>/] ? $1.to_i : 0 ; end def faith ; self.enemy.note[/^<faith:(\d+)>/] ? $1.to_i : 0 ; end end を入れて、エネミーのメモ欄に<brave:数値>と<faith:数値>でbraveとfaithを設定できるようにするといいと思います。 仕組みに関してはお察しの通りです。
>>94 変更してみたところ無事設定した別クラスのパラメータを追加パラメータとして取得することができました。
この方法だと成長曲線をスクリプトの中で設定しなくてもいいのでとても助かります。
ありがとうございました。
現在作成中の作品は攻撃にヒット数があって、最大10HITなら1〜10回ヒットするというものなのですが このヒット数をAGIによって大きめの値が出やすい、としたいです。 何も影響ない時が rand(10) + 1 だとして、AGIが高ければ高いほどこのrandの中で5↑の出る確率が上がるという感じです。 あくまで上がりやすいというだけで、絶対に上のほうが出るというわけではありません。 AGIは最大値が120程度(レベル99の時)を想定していますが、実際そこまで行くとやりこみ要素なので AGIが1〜10の時はrandしただけと同じぐらい(平均5ヒット)、11〜30ぐらいで平均6〜7ヒット、31〜50で平均8ヒット というような上がり方にしたいのですが、どういった計算式を用いれば可能でしょうか。 10ヒットは割と高レベル想定なので、ヒット数に依存しない計算方法が知りたいです。 序盤は1〜3ヒットが普通になると思うので。
97 :
名無しさん@お腹いっぱい。 :2014/08/15(金) 22:49:21.90 ID:fJE+9w+f
はじめまして。質問ですm(._.)m ツクールXPからこの度VXAceに鞍替えしました。 以前は外付けスクリプト(コモンイベントなどから直接実行できるスクリプト)を 結構使っていたので、今回も使いたいのですがコマンドが分かりません。 選択肢ウィンドウを表示するスクリプトの書き方を教えてください。 普通のウィンドウはXPと同じく $win_newmap = Window_Base.new(@w_x,@w_y , @yoko , @tate) こんな感じで作れましたが 選択肢は $win_list = Window_Command.new(160[s1,s2,s3,s4]) これで出来ませんでした。XPで使っていた書き方です。 私はプログラミングの知識は少々ありますが、Rubyの言語は初心者です。 書き方が分かれば大体自力でどうにかなるんですが、どなたかご存知でしたら教えていただけませんか?
>>96 ムリに計算式でどうこうするより、最低ヒット数と最高ヒット数の配列を用意するとか、
複数のテーブルを用意して、AGIのランクでそれを切り替えるとかの方法はどうでしょうか。
AGIが1〜10なら[1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10]
AGIが11〜30なら[1,2,3,3,4,4,5,5,6,6,6,7,7,7,8,8,9,9,10,10]
のようなイメージで。
>>97 とりあえず、ツクールのヘルプのスクリプト入門に一通り目を通した方が良いと思います。
それの基礎編>クラス定義>オブジェクト初期化に書かれている通り、newされたクラスは、initializeが実行されます。
そして、Window_Commandのinitializeを見るとinitialize(x,y)となっているので、コマンドの内容を直接指定する形ではありません。
では、どうやってコマンドの内容を入れるのかというと2通りの方法があります。
1つはmake_command_listを再定義する方法、もう1つはadd_commandで追加する方法です。
ただ、単純に選択肢ウィンドウを出したいだけなら、@paramsに任意のデータを突っ込んで、command_102を実行した方が早いです。
@paramsの内容は[選択肢名の配列,キャンセルを押したときどの選択肢が実行されるか]です
2つ目の変数は0だとキャンセルを許可しません。結果は@branchに保存されています。
どちらも実際にcommand_102の最初にp @paramsを、最後にp @branchをいれてコンソールで内容を確認して見るといいと思います。
あ、ごめんなさい、少し訂正 Window_Commandを使う場合、2つの方法があるといいましたが、 add_commandはmake_command_list内で使うためのメソッドなので 実質make_command_listを再定義するしかないです。 ただ、この方法で選択肢を作るのはオススメしません。 Window_Commandは選択されたシンボルを取得して、 ハンドラで直接対応するメソッドを実行するためです。
100 :
名無しさん@お腹いっぱい。 :2014/08/16(土) 10:46:48.47 ID:6OnPtKnu
97です回答ありがとうございます。 英語版を使っているのでヘルプ見てもヘルプにヘルプがいるような状態に(笑) はかどらないので、ネット上にヘルプページ日本語で落ちてませんかねーorz 困ったものです。 ID:z+DrZ1Kjさんの結論としては、内部のスクリプトを再定義しない限り、外付けのスクリプトでは書けないという事であっていますか?
ヘルプは日本語の体験版を落としてきて、ヘルプデータを上書きすれば日本語にできたかと。 結論としては、 「Window_Commandは内部的に実装する事を前提としたウィンドウなので、単独で使用するのには向かない。 選択肢だけで使用するならcommand_102で、メッセージに付随している選択肢ウィンドウを使用する方が良い。」 という感じです。 ちなみに、@paramsに直接データをいれて、command_102を呼び出した場合、選択肢の項目数は4択以上もできます。
102 :
名無しさん@お腹いっぱい。 :2014/08/16(土) 15:13:42.23 ID:6OnPtKnu
ID:z+DrZ1Kjさん、とてもご親切にありがとうございました! 俄然やる気が沸いてきました^^いただいた情報をモトに、根性で作り上げます。 具体的な番号も教えてくださってありがとうございます。 とても助かりましたm(._.)m夫婦揃ってプログラマなんで何とかなるでしょう!(笑)
>>98 10ヒット決め打ちならそれでもいいのですが
先にも書いたように、ヒット数は変動する為
1〜2ヒットから最大で1〜20ヒットまで、しかも4〜6ヒットという中間の場合もあり
この全てに配列で対応というのはあまり現実的ではないと考えています。
汎用性を持たせたいので、計算で意図的に乱数に偏りを与える方法を探している次第です。
ツクールVXで乗ると移動する床を作りたいのですが 移動床をいくつも置いて連続してプレイヤーが移動していくというのが 上手くいかないのです 1つ1つの床をイベント化して触ったらイベント発生で イベントを受け渡すようにして、次々とキャラクタを動かせば出来そうと 考えてたんですが、一度移動させるとそこでイベントが途切れてしまい 次の床の移動イベントが発生しないんです 問題解決方法を教えてもらえませんか
自己解決しました
>>103 うーん、それって結局重み付きの乱数生成しないとダメになりますよね。
重み付きの乱数を生成する仕組みを作って、各項目に重みを付与する仕組みを考えるくらいなら、
数十行くらいベタ打ちで並べてしまったほうが早いし分かりやすいと思うのですが。
sampleでいいから別に配列のサイズとか関係ないですし。
class Game_Battler < Game_BattlerBase
def atk_cnt
case agi
when 1 .. 10; return [1,1,1,2,2,3,4,5,6,7,8,9,10].sample
when 11 .. 30; return [1,1,2,2,2,3,3,3,4,5,6,7,8,9,10].sample
when 31 .. 50; return [1,2,2,3,3,4,4,4,5,5,6,6,7,8,9,10].sample
when 51 .. 80; return [1,2,3,3,4,4,5,5,5,6,6,6,7,7,8,8,9,10].sample
when 81 .. 100; return [1,2,3,4,5,5,6,6,7,7,7,8,8,9,9,10].sample
when 101 .. 119; return [1,2,3,4,5,6,6,7,7,7,8,8,8,9,9,10,10].sample
when 120 .. 999; return [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20].sample
end
end
end
みたいな感じで。
数学で何とかできないかって言いたいのかも
本当に計算式だけでやるなら漸近線とかだろうか・・・ サガ 漸近線 で検索すればサガフロ2のインタビューが出てきて、 そこのダメージ計算のところに計算式とグラフが載ってるはずです。
>>106 各項目に重みの付与、という部分がよくわからないのですが
イメージで言うと
x = 最低保証ヒット数
y = 最大ヒット数
x + rand(y+1)
↑これにAGI(1〜120の範囲で)をかけるなり√なりなんでもいいのである計算を行うと
AGIが高い程乱数の結果も高めの数値が出やすくなる、という計算式があればというところです。
例えばrand(1000)としておいてそこからAGIで除算してその余りを求めるといい感じの数値が求められる(これは適当な計算です)とか
そんな数学スゲーってなるようなテクニックがないかなと。
>>107 その通りかもしれません。
>>108 数学はあまり得意ではないのですが、インタビューを参考にしてみます。
repeat = (Array.new(agi){x + rand(y+1)}).max
>>111 AGIの分だけ配列を作ってそこに最低〜最大のヒット数分の乱数を放り込んで
その中で一番大きいのを取得する、という感じでしょうか?
AGIが5なら5回ランダム作り、50なら50回作る。
当然50回乱数作成する方がその中に大きい数値が含まれる可能性が高くなるのでAGIが高い程大きめが出やすい。
この解釈であってるでしょうか?
ただこのままだとAGI100とかいくと殆ど最大値付近しか出なくなりそうなので
Array.new(agi / 5)等として作る配列を減らして使ってみようと思います。
この辺は調整してみないとどれぐらいはいいかはわかりませんが。
作成する配列の数が小さくなれば、出現する最大値も多少抑えられるように思えるので。
どうもありがとうございました。
質問です・・・ RGSS3で一次配列の書き方は違うんですね values = [] # 空の配列を作成 p values # values の中身を表示 values.push 0 # values に 0 を追加 p values values.push 1 # values に 1 を追加 p values これをやるにはRGSS3ではどう書けばいいんでしょうか^^;
自己解決いたしましたm(._.)m
>>115 さんありがとうございました。
質問です コモンイベント内で自作したグローバル変数($game_variables[]とは違う名前) って、ゲームプレイ中は保持されますが再起動すると消えてしますんですね。 二次元配列を使っているので$game_variables[]にそれを使うと、 デバッグモードの時画面に表示しきれず強制終了するので使いたくないんですが セーブしてゲームを再起動しても残すことが出来るグローバル変数って VXAceに用意されているのは$game_variables[]だけなんでしょうか?
そりゃあ、$game_variablesなんかのグローバル変数は起動するたびに中身がリセットされて セーブデータを読み込んだところで内容を展開してるのだから当然かと 値を残したいっていうのなら、グローバル変数にするんじゃなくて Game_Systemなんかのインスタンス変数にするとかでいいんじゃないかな
118さん、回答ありがとうございます。 結局デバッグモードを捨てて$game_variables[]の中に当てることにして、解決しました。 インスタンス変数にすればよかったのか・・・。
質問内容が数学のお話で申し訳ないんですけど、 1ページ内に8行書けるとして 20行の場合はMAXページ数は3ですよね。 行数がその時々で変化するのですが、 MAXページ数を算出する計算式ってどう書けばいいんですか?^^; よろしくお願いします(;´ρ`)
(行数/8.0).ceil to_i→小数点以下切捨て round→四捨五入 ceil→大きい方に丸める(1.2→2,-1.2→-1) floor→小さい方に丸める(1.2→1,-1.2→-2) 整数同士の割り算だと結果が整数しか出てこないため、 結果を小数にする必要があるので、片方を小数の8.0にしている
>>121 助かりました!ありがとうございますm(._.)m
早速メモ帳に記録しておきました。
すみません、イベントでどう書けばいいのかわからないので教えて下さい。 変数1はアイテムIDを表します。 変数1の中身は毎回変わります。 変数1の指定するIDのアイテムをプレイヤーが入手するには、 スクリプトでどの様に書けば出来ますか?
自己解決… n = $game_variables[1] a = 個数 $game_party.gain_item($data_items[n], a) これで行けました。すみませんでした。
質問です。 アクターID:001はかならずパーティに居るのですが、 アクターID:001の現在の「class名」を変数に代入したいです。 どう書けば良いのでしょうか?
class_name = $game_actors[1].class.name
ありがとうございます;
質問です; 文章のスクロールと似た機能を、イベントコマンドのスクリプトで作り出すことは可能ですか? マップ上のイベントをタッチして作業中に経験値を取得することがあるのですが、 取得した経験値(変数の値)を画面上に +変数値exp として下から上へスクロールしたいんです。 見た目は文章のスクロールと同じでいいのですが、 その間イベントが止まらないようにしたいんです。
質問2 ツクールVXAceにて… adv_self_switches(マップID, イベントID, "スイッチ名", true / false) これを実行すると、NoMethodErrorが発生します。 ググっていろいろ調べていますがこの書き方で出来そうなのに何で出来ないのか… 関係あるかわかりませんが、マップID、イベントID、"スイッチ名"の部分の値をputsコマンドで 直前にコンソールに表示していますが問題ありません。 綴りもあっています。 どうして?orz puts "mapid = " + mapid.to_s puts "eveid = " + eveid.to_s puts "switch = " + switch adv_self_switches(mapid, eveid, switch, true) 実際に実行しているスクリプトのコピペです。 これでエラーになるんです…
131 :
名無しさん@お腹いっぱい。 :2014/08/26(火) 04:36:26.59 ID:xMblGHYQ
132 :
名無しさん@お腹いっぱい。 :2014/08/26(火) 04:51:57.43 ID:xMblGHYQ
'gurading'は'guarding='でした あとVXです、お願いします
マルチレスで本当に申し訳ないのですが。 エラー内容は正確には"Undefined method 'guarding =' for nil:nilclass"でした
>>128 出来ないことはないでしょうが、非常に面倒です。
大人しく入手インフォメーションなどの素材を使って表示するほうが良いと思います。
>>131 ちいさな本屋さんの素材はサポートがされてなく、かつ放置されているバグが多いです。
そのバグを修正したとしても、別のバグに当たる可能性は高いので、
自力でどうにかできないのであれば使用しない方が良いと思います。
また、スクリプトのエラーを報告するときは、
「エラーメッセージの全文」「エラーが起きた状況」「同時に入れているスクリプト」
の3点が無ければ、正確な修正は難しいです。
その文だけだと行数が足りないため、原因を特定するのに非常に手間がかかります。
135 :
128 :2014/08/26(火) 19:09:51.52 ID:uZcU5Ith
>>134 さんありがとうございます。1秒ほどの待ち時間なので、諦めます。
いつもお世話になってます。 質問です・・・ イベントコマンドのスクリプトで、 変数の示すIDのクラスに変更することはできますか? どう書けば出来ますか?
>>134 申し訳ございません。
エラーメッセージ:「スクリプト'BaST'(註:ちいさな本屋さんのBaST【バトルシステムテンプレート】本体です)の1867行目で
NoMethodErrorが発生しました。Undefined method 'guarding=' for nil:NilClass」
状況:同サイトさんからの併用スクリプト(プラグイン)はサイドビュー、二軸3DバトルカメラXC.、BaST-VX.BM1. クリアメッセージ、
BaST-VX.BS3. ラピッドデザインZ、バトルバックウェーブ無効化です。戦闘において味方が戦闘不能になった次のターンの
開始直前(直後?とにかくターンが切り替わるタイミングです)に上記の内容でクラッシュします
ここまで書いておいて何なのですが、新規プロジェクトでBaST本体だけを入れて起動した場合も、
同じ症状が発生しました。
どうぞよろしくお願いします。
スクリプト素材のバグを直すなんて頼むだけ無駄
>>137 guarding= ていうのがエラーになってるんだし、guarding=って 間にスペースのない文字列検索してそこにスペース入れりゃいいだけじゃないの?
>>136 さすがに少しスクリプトを眺めて見ることを覚えた方がいいと思います。
スクリプト全文をShift+Ctrl+Fで全文検索が出来ますので、「職業の変更」で検索を掛けて見てください。
2つ引っかかると思うので、見比べて試行錯誤してみてはどうでしょうか。
>>137 大前提として、そのスクリプトはバトルエンジンのいずれかと同時に導入されていることが前提となっているような感じです。
主原因としては、active_battlerがnilになっているため、command_rights_userがnilになっているせいだと思われます。
恐らく、rights_user = command_rights_user(action)の下にreturn unless rights_userを挿入する事でエラーは消えるとは思いますが、
また他のエラーが出る可能性も高いです。
>>140 見てますよ^^;
結局無理そうなので非現実的ですが入ってきた時の職業ごとに分岐させる方法で半解決しました・・・
そして英語版なのでchange classで検索していましたが引っかかってきたのはそれぞれの変数の値を
変更してるような部分だけ。
じゃあ直接値を変更したら?とも思いましたが経験値のテーブルを引っ張ってくるのが
書き方がよくわからなかったのであきらめました 今ココ(´Д`)
クラスチェンジできればスムーズでわかりやすかっただけに残念です。
だけど140さんの書き方だと出来るみたいだし、もう少し粘ってみますー 回答閉め切ります、ありがとうございました。
ちょっと理解できないけど id = 変数 class_id = 変数 actor = $game_actors[id] actor.change_class(class_id) if actor && $data_classes[class_id] これで出来るみたいだからこれで使ってみます。 actor.change_class(class_id) if actor && $data_classes[class_id] この行とか何やってるかサッパリわからないから私はセンスないのかもしれない。
こんなんで「作者」とか言ってしまうから、アクアリウムスみたいなゴミプログラムが出来上がるんだな。 フリーゲーム製作界もお先真っ暗だ。
>>143 とりあえず、それらを解説すると
id = 変数 # アクターのIDを設定
class_id = 変数 # クラスのIDを設定
actor = $game_actors[id] # 設定したアクターのIDからアクターを取得
# 取得したアクターのクラスを設定したIDのクラスに変更する
# ただし、アクターのIDやクラスのIDが範囲外でnilになっているときは処理を行わない
actor.change_class(class_id) if actor && $data_classes[class_id]
となります。
最後のif actor && $data_classes[class_id]がない場合、
データベースで設定していないアクターやクラスのIDをいれたとき、エラーが出ます。
また、VXAceの場合体験版のスクリプトも製品と全く同じなので、
日本語の体験版を落としてくれば日本語のコメントを見ることが出来ます。
>>145 さん
「データベースで設定していないアクターやクラスのIDをいれたとき、エラーが出ます。」
ここがよくわかっていませんでした。
ご丁寧に解説して下さって感謝していますm(__)m
147 :
名無しさん@お腹いっぱい。 :2014/08/27(水) 16:14:04.80 ID:fUGHoALs
>>140 ご回答有難うございました。
早速試させていただきます。
たびたび質問すみません。 イベントコマンドのスクリプトでウィンドウを開いて、 そこに文字列や画像を表示させているのですが。 文字列は""を代入して再度表示すれば文字列だけは消せますが、 画像はどうやれば画像だけ消せますか? ウィンドウは消したくないんです。 disposeもnil代入もせずに、画面に出ている画像を見えなくするだけでいいのですが やり方が分かりません。
透明度上げるとか?
ウィンドウにグラフィックを表示させる $ウィンドウ名 .contents.blt( @pic_x,@pic_y,@pic,Rect.new(表示させる画像のX座標,画像のY座標,画像の横幅,画像の縦幅)) 私が知る限りだと、書き方がこうなっているので、 透明度をいじることが出来ません。(´Д`)
blt(x, y, src_bitmap, src_rect[, opacity]) src_bitmap の矩形 src_rect (Rect) から、このビットマップの座標 (x, y) にブロック転送を行います。 opacity には不透明度を 0 〜 255 の範囲で指定できます。 ヘルプも読めないならバグをだすだけ
どうもすみません^^;おっしゃる通りです。 そしてご親切にありがとうございます。
やったー!出来ました! 結局、開いているウィンドウ名の後 .contents.clear とすれば画像だけ消すことが出来ました! どうもお世話になりましたm(._.)m 透明にする書き方は未だに良くわかってませんが まぁその内たどり着けるかな…。
質問です。 そのスキルを使うと以後敵からの攻撃のダメージが 全部MPにいき、MPが0になると効果が切れHPにダメージが戻るような MPバリアを作りたいのですが方法がわかりません。 よろしければ教えてください。
スキルってか適当なステートを用意して ダメージ計算の方でそのステートにかかってる時 ダメージをMPにいかせて、ifでMPが0の時はHPダメージにする じゃあかんの?
>>154 スクリプト作らないと無理だとは思います。
というか、ここはAce用のスレだとは思うのですがVXの質問をする人もいるので
一応ツクールの種類は明記してください。
>>154 です。
>>155-156 さん、ありがとうございます。
変数でMPを管理しようと思ったのですが
ダメージの計算がわからず断念しておりました。
ツクールはAceです。表記漏れで申し訳ありません。
やっぱりスクリプトしかないのでしょうか…。
今テストが出来ないので、きちんと動く保証ないですが class RPG::State < RPG::BaseItem def magic_wall? self.note.include?("<マジックウォール>") end end class Game_Battler < Game_BattlerBase alias _____execute_damage execute_damage def execute_damage(user) if self.states.any?{|st| st.magic_wall? } if self.mp <= @result.hp_damage @result.mp_damage += self.mp @result.hp_damage = @result.hp_damage - self.mp self.states.each{|st| self.remove_state(st.id) if st.magic_wall?} else @result.mp_damage += @result.hp_damage @result.hp_damage = 0 end end _____execute_damage(user) end end たぶんこんな感じです。 ステートのメモに<マジックウォール>と書くと、ダメージをMPに変換します。
>>154 ナイスな質問ですね〜私も使いたいシステムです(わくわく)
160 :
154 :2014/08/29(金) 16:27:41.13 ID:deuKk8/r
>>158 ありがとうございます!
思い描いていたものと同じもので感動しました!
HPが少なく、MPが多い魔法キャラに使おうと思ってたので
重宝させていただきますね。
>>159 自分が遊んでいたゲームの技ですが
すごくいいシステムですよね。
>>59 HKEY_USERS\S-1-5-21-2781864741-XXXXXXXXX-XXXXXXXX-1000\Software\nukomofu\RPGVX_Reader : RestSaveCount
HKEY_USERS\S-1-5-21-2781864741-XXXXXXXXX-XXXXXXXX-1000\Software\Enterbrain\RPG : ScalePos
レジストリエディタでnukomohuとEnterbrainを検索してフォルダを削除すれば
初期化出来るぞ。
ツクールVXのスクリプトの質問させてください 戦闘中にバトルイベントでBGMを変更した場合に 戦闘終了後もそのBGMを途切れさせず続けて流すにはどうすればいいでしょうか? スクリプトが必要と思うのでそれを教えてもらえないでしょうか
VXAceのスクリプトの質問です バトルイベントのイベント項目「スクリプト」(もしくはコモンイベントの「スクリプト」)から、 $game_messageのほうにではなくバトルログのほうにメッセージを出力したいです。 この場合スクリプトでどう弄ればいいのでしょうか? @a = WindowBattleLog.new @a.add_text("test")としてももう一つ新しいバトルログが出来るだけですし、 元のバトルログになんとかアクセスしたいのですが…
>>163 class Scene_Map < Scene_Base
attr_accessor :log_window
end
これを導入して、
イベントコマンドのスクリプトから
SceneManager.scene.log_window.add_text(表示したいテキスト)
で可能です。
>>164 おお…バトルで使うのでScene_Battleのほうに導入したらいけました!
attr_accessorがよく分からなかったのですが、こういう使い方をするんですね…。
ありがとうございます…本当に助かりました。
ごめんなさい、最初の一行は class Scene_Battle < Scene_Base でしたね。 attr_accessor :log_windowは def log_window return @log_window end と def log_window=(value) @log_window = value end を一行で同時に導入する機能だと考えてもらえばいいと思います。 ヘルプのスクリプト入門>基礎編>クラス定義>アクセサの定義に詳細が書かれています。
>>162 戦闘開始直前にマップBGMをその変更後のBGMに変更するのは試しましたか?
確か、戦闘中のBGMとマップのBGMが同じ場合、途切れずに流れ続けるという仕様があったと思います。
二刀流や複数攻撃が出来る武器で複数攻撃すると アニメーションの再生が途中で止まって次のアニメーションに移ってしまうのですが 長いアニメーションだから途中で途切れてしまうと不自然になってしまうので最後まで再生させたいです 最後まで再生させるにはスクリプトのどの部分を弄ればいいのでしょうか
VXACEで敵の数でダメージが変わるスキルが作りたくて a.mat * $game_troop.members.size * 3 - b.mdf っていう式にしてみたんですけどこれだと死んでるかどうかの判定してくれないのですが 生きてる敵だけ参照するにはどう書けばいいでしょうか?
>>168 ツクールの種類を・・・
AceならScene_Battleのshow_normal_animationの
abs_wait_short を wait_for_animation に変更すれば全部再生されます。
>>169 members のところを alive_members にする。
>>170 168です
すいません
スレタイにVX AceとあったのでAce用のスレだと勝手に思っていました
アドバイスありがとうございました
おかげで自然なアニメーションをするようになりました
クリティカルをダメージ増加ではなく即死扱いにしたいんですがどうすればできますか? ダメージを1万倍とかにして絶対カンストダメージで事実上即死とかではなく即戦闘不能です。 Wizardryの首切りをイメージして貰えるとわかりやすいかと思います。
>>173 ツクールのバージョンは知らないからエスパーレスですまんな
クリティカル判定(cri?)ならadd_state(1)するような処理をすればいい
>>174 ツクールはAceです。
def apply_critical(damage)
damage * 3
end
ここをいじればいいんでしょうか?
ただadd_state(1)するにもここだと引数がdamegeしかきていないので
ステートを付与する対象が識別できないように思えます。
それともこの関数ではないのでしょうか。
それと、これだと戦闘不能ステート耐性がある場合その耐性率によって軽減されてしまわないでしょうか?
クリティカルは、その耐性も無視して発生すれば100%死ぬとしたいです。
クリティカルの方の耐性は会心回避率で設定するつもりです。
ボスは会心回避率が99%といった感じで。
>>175 Aceか
こっちは慣れてないものの、自分なりに色々やってみた
しかし
>それと、これだと戦闘不能ステート耐性がある場合その耐性率によって軽減されてしまわないでしょうか?
これと表示の面で課題が残ってしまった
期待を裏切る結果になってすまない
>>176 わざわざ調べてもらってありがとうございます。
自分でも試してはいるんですがなかなかうまくいきません。
耐性についてはクリティカルがでた時点でそれ以降の処理をすっ飛ばして終わらせるか
そもそも判定を耐性より後にする等を考えてみましたが
どこでそれをするべきかがよくわからない状況です。
>>177 def apply_critical(damage)
die
damage * 3
end
答えはシンプルにhpを0にすれば良い(キリッ
考え方としては、どうしたら倒せるのか?を考えれば良いだけです。
敵が死ぬ時はどういった時ですか?
hpが0になった時です。
つまり、クリティカルを食らったらhpを0にしてしまえば
死んでしまうんです。
やっとできたと思ったらそんな簡単な手法がorz しかし、もしバトルログがデフォのままだと表示がおかしくなるので その時はこれを追加で class Game_Battler #-------------------------------------------------------------------------- # (メソッド追加)クリティカル判定 #-------------------------------------------------------------------------- def critical ; @result.critical ; end end class Window_BattleLog < Window_Selectable #-------------------------------------------------------------------------- # ● HP ダメージ表示 #-------------------------------------------------------------------------- def display_hp_damage(target, item) return if target.critical # クリティカル判定の時 return if target.result.hp_damage == 0 && item && !item.damage.to_hp? if target.result.hp_damage > 0 && target.result.hp_drain == 0 target.perform_damage_effect end Sound.play_recovery if target.result.hp_damage < 0 add_text(target.result.hp_damage_text) wait end end
>>178 早速やってみたのですが、クリティカルが発生した瞬間に
undefined method 'abs' for {}:Hash
上記エラーが出てしまいます。
def apply_variance(damage, variance)
amp = [damage.abs * variance / 100, 0].max.to_i ←ココ
var = rand(amp + 1) + rand(amp + 1) - amp
damage >= 0 ? damage + var : damage - var
end
クリティカルが出ない場合はエラーは発生せず普通のダメージが出ます。
>>179 ありがとうございます。
上記の件が解決できたら導入して試してみます。
>>180 他に何かスクリプト入れてるでしょ
新規プロジェクトで試してみた?
>>181 damage * 3
を要らないと思って消してしまっていたのが原因でした、申し訳ないです。
それに加えてログ表示の方も確認できました。
そのままだと即死しているのにダメージが表示されてしまうのを消す為のものと思っていいんですよね?
ただXPスタイルバトルでのダメージポップアップは出てしまっていたので
こちらはログ非表示のを参考にしてクリティカル時はダメージは出さないように自分で対応しようと思います。
ありがとうございました。
>>182 すっごい遅レスでもう見て無いかもしれないけど、そもそもそこじゃなくて
def item_apply(user, item)の方に処理を持ってくれば良いのでは
unless item.damage.none?
@result.critical = (rand < item_cri(user, item))
make_damage_value(user, item)
execute_damage(user)
end
ここを
unless item.damage.none?
@result.critical = (rand < item_cri(user, item))
if @result.critical
die
else
make_damage_value(user, item)
execute_damage(user)
end
end
こうすれば、クリティカル時にダメージ計算しなくなるから
ダメージでなくなると思うんだけども
>>183 アドバイスどうもです。
試してみましたが、クリティカルが出なかった時は普通のダメージが出て問題ないのですが
クリティカルが出た時にダメージを与えられなかった!とログに出てしまいます。
でも相手は死にます。
dieで死んでるけど、damageの値が0だから?でしょうか?
>>184 >>179 を入れてみた?
XPスタイルバトル入れてるみたいだから意味ないかもしれないけど
>>179 をやらなくてもダメージ処理自体なくせばこれだけでいける
という意味だと思ったんですが違うんでしょうか?
>>179 が必要なのであれば、元々の処理の方がよりシンプルな気もするのですが。
>>182 ダメージの表示を消すなら、こんな感じ。
余計なメッセージが必要なければコメントアウトすれば良い。
見えて困るなら隠せと言う簡単な答えです(キリッ
実装は色々あるし、アルゴリズムも人それぞれ好きなやり方を選べば良いと思う。
class Window_BattleLog < Window_Selectable
#--------------------------------------------------------------------------
# ● ダメージの表示
#--------------------------------------------------------------------------
def display_damage(target, item)
if target.result.critical
add_text(sprintf("%sは首を跳ねられたorz", target.name))
wait
return
end
if target.result.missed
display_miss(target, item)
elsif target.result.evaded
display_evasion(target, item)
else
display_hp_damage(target, item)
display_mp_damage(target, item)
display_tp_damage(target, item)
end
end
end
素材の方は知らんよ。
表示する場所があるはずだから、
クリティカルの時は実行しないように分岐すれば、
良いだけですよ。
こうして謎の一つが解明された。
END(ってなればいいんですけどね。更なる謎が……!!)
ちゃんとテストしてきました。 これで決定版だと思うけども class Game_Battler < Game_BattlerBase alias _____make_damage_value make_damage_value def make_damage_value(user, item) if @result.critical self.hp = 0 @result.success = true else _____make_damage_value(user, item) end end end class Window_BattleLog < Window_Selectable alias _____display_damage display_damage def display_damage(target, item) if target.result.critical add_text(sprintf("%sの息の根を止めた!",target.name)) wait else _____display_damage(target, item) end end end これを(ここに追加)以下▼メイン以上の出来るだけ下のほうにいれる。
ACEですけど 戦闘中に戦闘背景の変更する方法ってないですか? イベントにはそのものずばりなものがあるんですけど 戦闘中では作動しませんでした
戦闘背景は戦闘開始時にしか読み込まれないため、変更するにはスクリプトが必要です。 class Spriteset_Battle def reload_battleback @back1_sprite.bitmap = battleback1_bitmap @back2_sprite.bitmap = battleback2_bitmap end end class Scene_Battle < Scene_Base def reload_battleback @spriteset.reload_battleback end end これを入れて、イベントコマンドで背景を変更した後でイベントコマンドスクリプトで SceneManager.scene.reload_battleback を実行すれば変わります。
ありがとうございます 出来ました
>>187 >>188 返答が遅くなりました。
一番最初のパターンも含めて色々試してみましたが、どれも一長一短だったので
いいとこ取りをする感じで調整しております。
新規プロジェクトだと問題ないのですが、自分の環境だと他のスクリプトの関係で完璧、とはならないようでした。
なので自分の環境用に試行錯誤しています。
それぞれのスクリプトを参考にさせてもらって、勉強しながら頑張ってみたいと思います。
皆さん有難うございました。
よろしくお願いします。 1ターンで二回攻撃するキャラなのですが 1回目のスキル攻撃の効果を、二回目の攻撃に反映させたいのですが やり方がわかりません、よろしければ教えてください。 ■やりたい事 一回目のスキルでジャブというスキルを使う 二回目でストレートというスキルを使う ジャブの効果でストレートを必中攻撃にしたい。 ■試した事 ジャブに[命中率100%]というステートを追加したのですが ストレートスキルの発動にある[成功率]の方が優先されるみたいで失敗しました。 また、ジャブにコモンイベントでスイッチAを付加して ストレートのコモンイベントに条件分岐を入れ スイッチAなら、ステート命中率+100%を入れたのですが ストレートの攻撃が先に処理されるし 命中率も、上記と同じくスキルの成功率が優先され これも駄目駄目でした。 まだACEに触って三日程度なので トンチンカンな返答をするかもしれませんが 教えてくださるとありがたいです。
そもそも成功率と命中率は別物だから 成功率はそのスキルを実行するかどうか 命中率は実行したスキルが命中するかどうか
>>194 ありがとうございます
何が違うのか全然判ってなかったので助かります。
では、それを念頭に置いて、弄ってみます。
VXACEなんですが 戦闘にはいったときのバシャーン!ってエフェクトを消すには どうすればいいでしょうか?
>>196 トランジションを消すにはScene_Map54行目の
perform_battle_transition if SceneManager.scene_is?(Scene_Battle)
をコメントアウトする。
戦闘開始時のSEを消すにはシステムのタブで戦闘開始のSEをなしにする。
できました、ありがとうございます。 戦闘開始のエフェクトtransitionっていうんですね・・
タイトル画面のニューゲーム、コンティニューやステータスの装備アイテムっていう表記 どうすれば変えれるんですか?
VXなのかAceなのか・・・ タイトル画面の表示はデータベースの用語タブで変えられる。 ステータスに装備アイテムなんて表記はVXもAceも書いてない。 VXは装備って書いてあるけど、これもデータベースの用語タブで変更できる。 ただし、ここを変えるとメニューの表示も変わる。 それがいやならWindow_Statusの75行目のVocab::equipの部分を変更する。
いつも思うんだけど、ここは基本ACEスレじゃないの?
確かにタイトルだけ読むと「VXとACE」「VXACE」どちらにもとれるけど。
>このスレが繁栄する事はAceの繁栄につながり、過疎スレとなるとAceの衰退につながります。
>>1 でこう書いてあるしさ。
何も記載がなければACEの事と考えていいような気がする。
いや、単純に「装備アイテム」って記述がどっちにもなくて、 Aceはステータスの装備欄には何も書いてなくて VXには「装備」って書いてあったからVXの可能性があるなと思ったので 質問内容的にVXの方が近かったから、どっちか書いて欲しいなーと
すみません、VX Aceのスクリプトで質問があります 全員分のアクターの操作をしようと以下のようなスクリプトを記載しました $game_actors.each do |actor| actor.xxxx(xxxx:処理内容メソッド) end ですが、実行すると以下のようなエラーが出ます undefined method 'each' for #<Game_Actors:0x6d8ga1c> $game_actorsから全員分ループで取り出したいのですが、何か良い方法はないでしょうか とりあえず、べた書き($game_actors[yy].xxxx)で対応しています
そもそもGame_Actorsは配列じゃなくてただのクラスです。 全てのアクターをループで処理したいなら、 $data_actors.each{|a| next unless a $game_actors[a.id]… } といったように処理します。
ありがとうございます
VXACEについて質問させてください。 遠景をマップとして扱い、スクリプトで切り替えながら 「呼吸する巨大モンスターの腹の上を歩く」というような演出を したいのですが、遠景が切り替わる瞬間どうしても動きがカクカク してしまいます。もし動きを改善する方法があれば教えてください。
Spriteset_Mapの212行目をコメントアウト
>207 回答ありがとうございます。早速試してみましたが、 動作に変化は見られませんでした。 @parallax.bitmap.dispose if @parallax.bitmap のコメントアウト で正しいでしょうか。 カクつきは一瞬(0.1秒程度)なので、処理上どうしても かかるのでしょうか……。
遠景がでかすぎるかイベント内容に無駄がある
210 :
名無しさん@お腹いっぱい。 :2014/10/13(月) 00:22:13.75 ID:qMAVVPOS
プレイヤーの環境を収集したいのですが、どのようにすれば良いですか?
遠景のサイズが800*1600ですから、でかすぎですね。 イベント内容は以下のスクリプトをウェイトをはさんで記述してます。 $game_map.instance_variable_set(:@parallax_name, "×××") プレイ自体はできますので、そのままにすることにします。 ありがとうございました。
VXAceで質問です。 数十種類のアイテムの中からランダムに一つ手に入る宝箱を作りたいのですが、乱数で条件分岐以外に効率の良いやり方があれば教えてください。
ないよ
スクリプト
スクリプト使うにしろ中身は結局乱数使った分岐じゃね。 それをラッピングして定形呼び出しで使えるかどうかなだけで。
増やすのは簡単ですが、それくらいのことができないのであれば、 増やした項目を制御するのは難しいと思うんですが・・・
FMSが閉鎖したから質問するところってここくらいしか残ってないんかな? あそこで質問したり素材共有してた制作者は皆何処行ったんだろうか
情弱!
おしえて
ggrks
FSMのメンバーも自前のHPとかblog持ってる人は居たような
てst
戦闘で敵を倒した時に出るメッセージ 「敵を倒した」という文章を変えたいのですが スクリプトで検索しても該当箇所が出てきません。 下部に出る戦闘終了時のメッセージはあるのですが。
そりゃあ、スクリプト探してもないと思うよ。 倒した、って敵に死亡ステートが付与された時のメッセージだし。
盲点でした ありがとうございます!
白の魔さんが公開されてるアイテム合成のスクリプトについて聞きたいのですが…
ttp://izumiwhite.web.fc2.com/rgss3/rgss3_004.html ↑これです
「アイテムC」を作成する時に「アイテムA」+「アイテムB」にする、というのは問題ないんですけど、
「アイテムC」を作るのに複数のパターンを持たせる方法は無いでしょうか?
A+B=C
A+D=C
B+D=C、という感じで結果が同じレシピを複数作りたいんですが、どうも出来なくて…
白の魔さんはリクエストを受けてないようなのでもし改造が可能でしたら改造して頂きたいです。どうかお願いします…
金払え
てかスレチだな クレクレはFSMの専売特許だったんだが
素材やごときがクレクレに対応せずに需要者を叩きだすとはゴミだな
我々作者様に素材を使ってもらってることを ゆめゆめ自覚してもらいたいものだな あ?そうだろ?素材屋!
>>231-
>>232 激しく同意
作者と素材屋では武士と農民くらい身分差があるよね
クレクレに対応しないなんてマジありえない
そこ分かってんのかなー
ここは作者様が初心者様の質問に答えるスレであって 素材屋ごときには発言権すらないことを自覚するべき
クレ!クレ!クレ! 作者として恥ずかしくないのか!
誰に与えてるの? 人にあげたくないならサイト閉じろよ
238 :
名無しさん@お腹いっぱい。 :2014/11/29(土) 17:52:18.33 ID:1RsH1zFI
二週間以上も書き込まれてない!! 228さん、クレクレよくないのでこれで我慢しよ! 合成品AをID連番で3つ作ってそれぞれレシピ設定するだけ。
239 :
名無しさん@お腹いっぱい。 :2014/11/29(土) 19:08:11.13 ID:1RsH1zFI
追記 これだと合成品Aが3種出来てしまうので 「まとめ」コマンドを作って一つのIDにまとめてしまえばすっきり! 人のスクリプト理解するより早い
240 :
名無しさん@お腹いっぱい。 :2015/01/03(土) 00:18:16.17 ID:atBS0wwN
質問なんですけど・・・ マップからワープ、つまり場所移動してその場で独り言を言ってイベント終了後、 なぜかキャラが動かせません。メニューは開けるしキャラの向きだけは変えれる 状態です。スイッチも特に何もないし、原因がさっぱりわかりません。 すでに3週間ねばりましたがダメでした、どなたか教えてください。
場所移動したマップで新規に自動イベントで繋いだ方がいい 前のマップのイベント継続だと何かとバグが起きる
移動先MAPの歩行設定がxになってたりしないよね 向き変えられるってことはイベント中じゃないと思うからMAPのほうが怪しい気もするけど
243 :
名無しさん@お腹いっぱい。 :2015/01/03(土) 00:57:39.72 ID:atBS0wwN
ワープしてそのまま継続してイベントをやめて、ワープだけにして独り言は マップの邪魔にならないところに自動実行で作成してみましたが・・ AからBへワープ→自動実行で独り言イベント→セルフスイッチONで独り言が二度と 起こらないように設定→やはり動けない
244 :
名無しさん@お腹いっぱい。 :2015/01/03(土) 01:01:55.20 ID:JbaI8snL
qwwwwe
245 :
名無しさん@お腹いっぱい。 :2015/01/03(土) 01:03:36.71 ID:atBS0wwN
独り事のイベントを削除して見る。 それでも同じ現象が起こるなら独り事は関係ない。 同じマップに他のイベントがあるなら、それが作用してる可能性がある。 上層チップの透明なやつが×とかもある
247 :
名無しさん@お腹いっぱい。 :2015/01/03(土) 01:25:11.06 ID:XXWxWUI8
質問なんですが、マップチップは上層、下層にしか分けられないんでしょうか? 素材サイトさんで拾ってきたマップチップを 下層 床 中間 机 上層 本のようにしたいのですが そういったことは可能でしょうか?
メッセージウィンドウの閉じる時間をもうちょっと速くできないものかな 2000は表示中でも入力を受け付けてくれるのか超速で開閉できるけど VXやAceは完全に文章を表示するまでは閉じるを受け付けてくれないっぽくて 決定キー連打しても微妙なウェイトに邪魔されちゃう
249 :
名無しさん@お腹いっぱい。 :2015/01/03(土) 08:58:58.95 ID:atBS0wwN
>>246 上層チップの透明なやつが罰になってました。どうもありがとうございました!
てすと
周りが海で動けません
マップかデータベースのどっちかやって動けるようにしないと 使ってるやつは知らないけどマニュアルかヘルプにそれがあるはず
初歩的な質問で申し訳ございません $game_actors[1].param(0) = 1000 などで最大HPに直接数値を代入させようと思ったのですが エラーでできません 最大HPは数値を直接代入することはできないのでしょうか
param(0)が何を表してるかちゃんと調べろ
了解です 改めて勉強しなおしてみます
初歩的な質問、すみません マップ上で、階層的にピクチャの上にアニメーションを表示させたいのですが、animation_set_spritesのsprite.zを書き換えても上になりません しかも、わざわざ書き換えなくてもデフォでピクチャ側のself.zはアニメのzより低くなってるみたいですが、実際の表示はピクチャが上になります アニメーションを上にする場合はzではなく何を書き換えればよろしいでしょうか
ビューポート
>>256 マップで生成されてるピクチャのビューポートを2から1に変更したらいけました
ありがとうございます
260 :
名無しさん@お腹いっぱい。 :2015/03/06(金) 16:48:04.70 ID:fATC+PCG
VXaceインストール後にまともに立ち上がりません。 「プログラムを解凍中にエラーが発生しました。コードLP5。製作者に報告してください。」 って出ます。
製作者に報告してください。