1. このサイトではcookie (クッキー) を使用しています。サイトの利用を継続した場合、cookieの使用に同意したものとみなさせていただきます。 詳しくはこちらをご覧ください。

使い方とテンプレート

トリアコンタン2017-04-29に開始した「ツクールMV」の中の討論

  1. アストラル

    アストラル ユーザー

    公式のEnemyBookを改変して、メニューコマンドに対応してみました。
    EnemyBook.jsを差し替えてお試しください。

    それから、コマンド名に日本語を使用していると読み込むファイルも日本語になってしまう問題があります。
    以前作成した、コマンド名と読み込むファイル名を別にするプラグインもアップします。
    MOG_BattleCommands.jsのファイル名変更にも対応しています。

    必要であればお使いください。

    https://algames.bex.jp/mv/plugins/MOG_SceneMenu_FileRename.js
     

    添付ファイル:

    最後に編集: 2019-10-13 22:12
  2. キール

    キール ユーザー

    ありがとうございます<(_ _)>
    解決できました。
     
    アストラル がいいね!しました
  3. ちば商店

    ちば商店 ユーザー

    こんにちは。

    • 要望 追加してほしい機能

    トリアコンタンさんの「DynamicActorGraphic アクターグラフィックの動的設定プラグイン」で、アクターのMPでも歩行グラの変化できるようにしてほしいです。

    • やってみたこと

    スイッチ機能で変化をさせようとしたのですが、ちょっぴり時間差ができるので、思ってる感じとちがうんです。
    また条件分岐と移動ルートの設定で作ってみましたが、各マップに設置するイベントの作業が増えて、ちょっと大変なことになって……。

    さらに、ちんぷんかんぷんなりに、プラグインの中身を改造してみよう!
    と、いじってみたんですが、(HPの表記をMPに替えてみた)エラーでまくりでスピード断念。
    そういうもんじゃないってことがわかりました。

    長くなりましたが、トリアコンタンさん、よろしくおねがいします!
     
  4. さくえい

    さくえい ユーザー

    ご回答ありがとうございます。
    それだけ買えばバンドル版と同様ということですね。

    しかし、素材が微妙なのですね……。
    購入するつもりでしたが、一旦中身を吟味して再検討してみようと思います。
    有難うございましたm(_ _)m
     
  5. トリアコンタン

    トリアコンタン モデレーター スタッフ モデレーター

    こんにちは!
    プラグインのご利用ありがとうございます。
    ご要望の機能を追加しました。よろしければお試しください。

    プレイヤーの残MPに応じてグラフィックを変更する機能を追加(ver1.2.0)
    https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/DynamicActorGraphic.js
     
  6. ちば商店

    ちば商店 ユーザー

    おおぉなんとお早い対応! ありがとうございます!

    さっそくダウンロード、上書き後、設定し、テストプレイしました! できました!

    トリアコンタンさん、ありがとうございました。
    また要望すると思います、その時はよろしくお願いします!
     
    トリアコンタン がいいね!しました
  7. ゆうやん

    ゆうやん ユーザー

    ・聞きたいこと

    敵が使用するスキルの計算式
    敵を基準として作るのかアクターを基準として作るのかどっちでしょう?
    例えば「自分の魔法攻撃力×2-自分の魔法防御力×2」
    という計算式を作って敵に装備させればいいのでしょうか?
    この計算式でスキルをセットしても魔法防御力が高い味方が大きいダメージを受けています。(属性耐性、装備なしの状態)
    トリニティなんですが、あり得る解決策を教えてほしいです。
     
  8. トリアコンタン

    トリアコンタン モデレーター スタッフ モデレーター

    こんばんは!
    すみません、こちらPC版のスレッドになります。
    トリニティ版は近日中に公式が別途スレッドを立てるとのことです。

    PC版であれば、以下のようにスキルの実行者を「a」、スキルの対象者を「b」で表記しています。
    どこまで家庭用版の参考になるかは分かりませんが、参考までに。
    a.atk * 4 - b.def * 2
     
    コテツMM がいいね!しました
  9. 豆豆豆

    豆豆豆 ユーザー

    失礼致します。
    トリアコンタン様が制作された素晴らしいプラグインを多数使用し、MVにて制作させていただいているのですが
    その内の1つで少々、気になることがあったので質問させていただきます。
    該当のプラグインは「MenuCommonEvent」なのですが

    Q、Wキーでアクターを切り替えられる装備画面、ステータス画面、スキル画面など(以下、アクター切り替え可能画面)で
    プラグインコマンドの「STOP_EVENT」をコモンイベントで使用すると
    メニュー画面→アクター切り替え可能画面では毎回しっかりとコモンイベント起動されるのですが
    アクター切り替え可能画面→Q、Wキーにてアクターを切り替え、画面以降するとコモンイベントが起動されません。

    現在の仕様ですと、アクター切り替え可能画面での
    「STOP_EVENT」を用いてアクター別に処理を変えるコモンイベントは
    かなり制作が厳しい状況(他アクターの画面に移ると前アクターで行った処理が残ってしまう為)なのですが
    「STOP_EVENT」にて並列処理を中断していても
    Q、Wキーでアクターを切り替えた場合に再度コモンイベントが起動されるようにはならないでしょうか?

    MV Ver 1.6.1
    新規プロジェクト立ち上げ、初期のプラグイン+MenuCommonEvent以外は何も導入せず現象確認しております。

    もし良ければお暇な時で結構ですので御検討宜しくお願い致します。
     
    コテツMM がいいね!しました
  10. トリアコンタン

    トリアコンタン モデレーター スタッフ モデレーター

    こんにちは!
    プラグインのご利用ありがとうございます。

    ご要望について検討しました。
    ただ、「STOP_EVENT」によって停止したイベントを再実行されるのは、「画面遷移した場合」として設計、実装しているので
    画面内でアクターの切り替えをした場合も再実行するようにすると、処理の見直し箇所が多くなってしまいます。

    代替案として、以下のスクリプトで現在メニュー表示中のアクターIDを取得できるので、このスクリプトで
    アクターの切り替えを検知すれば「STOP_EVENT」を使わないでもご要望の動作を実現できるかもしれません。
    コード:
    $gameParty.menuActor().actorId();
     
    豆豆豆コテツMM がいいね!しています
  11. たかッシュ

    たかッシュ ユーザー

    ツクールMVのデフォルトプログラムに追加で自分の必要なシステム要件を細々とカスタマイズしたいときがあります。
    そのとき例えばウィンドウ機能をプラグイン化して書き変えようと思えば
    rpg_windows.jsから該当プログラム部分を引っ張ってきて
    それをコピペして上書きするようにしつつ書き換えたり追記したりでプラグイン化して書くと今までやってたのですが
    これでは本体プログラムを乗っ取って書き換えるような形になり
    他のプラグインとの競合を発生させる原因になりやすいです。
    いくら内製の自分用カスタマイズ仕様で使うだけのプログラムでも良くなさそうだと知り
    競合させない書き方を覚えたいのですがどう書けばいいのでしょうか?

    var _該当_プログラム = 該当.プログラム
    みたいなものを用意して再帰的?に、
    直接それを上書くようなことはせずに書けばいいのかなと思うのですが
    その場合の追記のやり方に決まりはあるのですか?

    ↓自分が書こうとするのはこんなやつなのですが問題点などはありますか?

    (function() {
      var _本体_プログラム_処理 = 本体.プログラム.処理;
      本体.プログラム.処理 = function() {
        _本体_プログラム_処理.call(this);
        //
        //ここに自分のゲームが必要な処理を追加機能として与える
        //
      };
    }());


    で、もうひとつ疑問がありまして
    このとき本体プログラムを呼ぶ方法はcallとapplyはどちらでもいいのでしょうか?
     やり方を学ぶなら人のプラグインを読んで見て理解するのも良さそうだと思い
     色んな方のプラグイン配布作者さまの様々なプラグインを読むと
     そこで _該当プログラム.call(this) となっているものと
     _該当プログラム.apply(this, arguments) でやっている方がいて
     このcallとapplyとでは何か用途的な使い分けの区別や決まりや作法などはあるのか疑問に思いました。
     また、functionの中に (_global) と書いてある物もあったり、最後の括弧内が(this)となる物もありましたが、
     書いたり省略したりで何か違いは起きるのでしょうか?
     細かい作法が理解できていません…


    自分で小規模なゲームをツクって動かしてみるだけでもやはり細かいカスタマイズ用のプログラムは書けた方がいいので
    この機会にちゃんと覚えたいと思うので教えていただけましたら幸いです。
    よろしくお願いします。
     
    最後に編集: 2018-12-10
    メルサイア神無月サスケ がいいね!しています
  12. 神無月サスケ

    神無月サスケ ユーザー

    >たかッシュさん
    概ね、そのやり方で間違いありません。

    これは、上書きせずに、「元の処理を呼び出す+独自の処理を追加」という形で、
    競合を最大限避ける方法で、実際、かなり強力なやり方ですが、
    ご指摘の通り、これの実現のためには、細かい違いがあります。

    たとえば、call と apply ですが、実はcallでもapplyでも、好きな方を使えばいいと思います。
    違いは、引数の渡し方で、callは、いちいち全部列挙する必要がありますが、
    applyは、arguments とかくことで配列で渡してしまえる便利さがあります。

    公式プラグインでは、callが使われているため、それに倣ってcallを使うプラグインが多いですが、
    引数をそのまま渡したい場合、applyを使った方が、例えば引数を変更する場合なんかでも
    書き換え不要で便利だったりします。
    一方、callの方が、渡している引数が明示的でわかりやすいというメリットもあり、好き好きです。

    なお、(function(){}()); みたいな書き方は、即時関数と言われますが、
    Yanflyさんのプラグインのように、即時関数を使わないで独自の名前空間を定義するやり方もあります。

    なお、即時関数の引数に _global とつけるとか、最後の括弧内が this なのは、
    ツクールMVで本格的にJavascriptを始めた僕では、ちょっと分からないので詳しい人助けてください。
     
    メルサイアたかッシュ がいいね!しています
  13. たかッシュ

    たかッシュ ユーザー

    >神無月サスケさん
    詳しく教えていただきまして、ありがとうございます!

    私は本当に何も分かってないところから
    自分用のカスタマイズプラグインを書くことの必要性を感じて書き始めたわけですが
    細かいことを理解せず呪文のようにやっていたので
    ご説明をいただけて理解しやすく、とても助かりました。

    ツクールは専門的なプログラミングスキルがなくてもゲームが作れるありがたいツールではありますが
    プログラミングの知識があればより幅広い発展性へ繋げられるでしょうし
    ツクールに触っているうちに、そちらもちゃんと勉強したいなと感じてきました。
    私程度の書くものは皆さんの本格的なプログラムとは程遠いですが、
    それでも制作補助的に活用するだけでも役立って捗りますからね。
     
    神無月サスケ がいいね!しました
  14. 豆豆豆

    豆豆豆 ユーザー

    トリアコンタン様、お返事ありがとうございます。
    処理の見直し箇所が多数になってしまうのですね
    当方の知識不足で気軽に要望を出してしまい申し訳ございませんでした

    教えていただいたスクリプトを是非、使用させていただき処理を見直してみます。
    この度は御検討、アドバイスありがとうございました!
     
    トリアコンタン がいいね!しました
  15. ツミオ

    ツミオ ユーザー

    こんばんは。
    いつもお世話になっております。

    本日はトリアコンタンさんの制作したHalfMove.jsについて質問があります。

    プラグインの設定で変更している部分は
    コード:
    ・8方向モードにしている
    ・半歩移動はOFFにしている
    だけです。

    このとき、イベントを対象としてmoveTowardCharacter()を実行すると、稀にイベントが動きません。
    「稀に」を詳しく調べたところ「イベントがプレイヤーを真っ直ぐに追従する必要があるとき」にこの現象が発生するようでした。

    コードを見たところ、
    「moveTowardCharacterを実行したとき」
    「イベントがプレイヤー(あるいは他のイベントでも)を真っ直ぐに追従する必要があるとき」
    「Math.randomInt(4) === 0が満たされないとき」
    「isDiagonalDirectionが満たされないため」
    「イベントはmoveTowardCharacterしない」
    ということになっているようでした(コードを見た感じmoveAwayFromCharacterでも同じようなことが起きると思われます)。

    moveTowardCharacterを実行したときは必ず1マス進んで欲しかったため、HalfMove.js内のmoveTowardCharacterを以下のように調整してみました。

    PHP:
        var _Game_Character_moveTowardCharacter      Game_Character.prototype.moveTowardCharacter;
        
    Game_Character.prototype.moveTowardCharacter = function(character) {
            if (!
    this.canDiagonalMove() || Math.randomInt(4) === 0) {
                
    _Game_Character_moveTowardCharacter.apply(thisarguments);
                return;
            }
            var 
    direction this.getDiagonalTowardDirection(character.xcharacter.y);
            if (
    this.isDiagonalDirection(direction)) {
                
    this.executeDiagonalMove(direction);
            }else {
                
    _Game_Character_moveTowardCharacter.apply(thisarguments);
            }
        };

    変更したのはコードの最後の方で、isMovementSucceeded()で判定することなく、それまでにmoveされていなければ必ず動かすようにしました。
    これは何か動作に不具合が発生しそうでしょうか?
    お手数ですが、ご回答いただけましたら幸いです。
    よろしくお願いいたします。
     
    最後に編集: 2018-12-18
    コテツMM がいいね!しました
  16. トリアコンタン

    トリアコンタン モデレーター スタッフ モデレーター

    こんばんは!
    プラグインのご利用および修正ありがとうございます。

    こちらでも現象を確認しました。
    修正方針ですが、おおよそご提示の通りで大丈夫なのですが、isDiagonalDirectionを満たしたときかつ(障害物等で)斜め移動に失敗したときにもリトライをするために以下のような修正とさせていただきました。

    PHP:
        var _Game_Character_moveTowardCharacter      Game_Character.prototype.moveTowardCharacter;
        
    Game_Character.prototype.moveTowardCharacter = function(character) {
            if (!
    this.canDiagonalMove() || Math.randomInt(4) === 0) {
                
    _Game_Character_moveTowardCharacter.apply(thisarguments);
                return;
            }
            var 
    direction this.getDiagonalTowardDirection(character.xcharacter.y);
            if (
    this.isDiagonalDirection(direction)) {
                
    this.executeDiagonalMove(direction);
                if (!
    this.isMovementSucceeded()) {
                    
    _Game_Character_moveTowardCharacter.apply(thisarguments);
                }
            } else {
                
    _Game_Character_moveTowardCharacter.apply(thisarguments);
            }
        };
    プレイヤーに近づく、遠ざかる処理で特定条件下で正しく移動しない場合がある問題を修正(ver1.12.3)
    https://raw.githubusercontent.com/triacontane/RPGMakerMV/master/HalfMove.js
     
    ツミオ がいいね!しました
  17. ツミオ

    ツミオ ユーザー

    修正ありがとうございます!
    なるほどisMovementSucceeded()は斜め移動失敗時のリトライ判定のためにあったのですね。
    まだ少ししか試していませんが、全く問題なく動いています!
    本当にありがとうございました:guffaw:
     
    トリアコンタン がいいね!しました
  18. ネオジム

    ネオジム ユーザー

    こんばんは
    トリアコンタンさんの「イベント動的生成プラグイン」と「テンプレートイベントプラグイン」を併用しています

    やりたいこと
    プラグインコマンドの座標指定に独自宣言変数(actionItemPosX[n] など)を使用したい

    試したこと
    コード:
    this.pluginCommand("ERS_テンプレート生成", ['91', '$gameVariables.value(31)', '$gameVariables.value(32)']);
    とりあえずはゲーム内変数 31番と 32番で上記のように試したところイベントの生成には成功したのですが、座標が0,0で生成されてしまいました。console.logで確認したところ変数自体には座標が正しく代入されているようなのですが、スクリプトで呼び出す記述に間違いがあればご指摘、ご教授願いたいです
     
  19. トリアコンタン

    トリアコンタン モデレーター スタッフ モデレーター

    こんにちは!
    プラグインのご利用ありがとうございます。

    みたところ、変数の値ではなく「$gameVariables.value(31)」という文字列自体を渡しているようです。
    以下のように、変数の値を文字列に変換した値を渡すとうまくいくかもしれません。

    PHP:
    ['91'$gameVariables.value(31).toString(), $gameVariables.value(32).toString()];
     
    ネオジム がいいね!しました
  20. ネオジム

    ネオジム ユーザー

    素早い対応ありがとうございます!

    上記記述で動作いたしました。
    また独自変数に関しても同様に

    PHP:
    ['91'actionItemPosX[n].toString(), actionItemPosY[n].toString()];
    で動作しました助かりました:kaophew:
     
    トリアコンタン がいいね!しました

このページを共有