ページ 11

特定のスキルを使うとスクリプト実行

Posted: 2017年9月08日(金) 18:45
by よしだとものり
質問ばかりで済みません。
この時期は、まとまった休みがなくて作り方を
勉強するのみになっています。

現在、バザーはなんとか形にできそうなので
次に興味があるオンラインバトルを考えています。

ターン開始時にスクリプトを呼べるので同期はなんとか
出来そうな気がしますが、全体を回復する魔法や
ランダムで蘇生する魔法の実現方法がイメージできません。

特定のスキル発動後にスクリプト実行することはできないでしょうか?

Re: 特定のスキルを使うとスクリプト実行

Posted: 2017年9月08日(金) 19:26
by しぐれん
スキルが発動するタイミングはBattleManagerのstartActionかendActionのどちらかでチェックすると良いと思います。
対象を実際にランダムにするのではなく、スキルを発動したタイミングであらかじめ候補を絞り込んでおくと良いと思います。

Re: 特定のスキルを使うとスクリプト実行

Posted: 2017年9月08日(金) 21:32
by よしだとものり
ありがとうございます。
やっぱり簡単な方法はないんですね;;

endActionだと上手く関数にアクセスできなかったので
Game_Action.prototype.apply
を書き換えることにします。

ターゲットの絞り込みは、なるべく通信処理を書きたくなかったので
ランダムか全体にしようと考えていました。
絞り込もうとするとオンライン中の死亡者リストを管理しないと
いけなさそうなので、それは面倒だなと;;

Re: 特定のスキルを使うとスクリプト実行

Posted: 2017年9月08日(金) 22:05
by しぐれん
BattleManager.endActionにうまくアクセスできなかったとはどういった状態ですか?
**Manager系はprototypeを付けずに再定義します。
死亡者リストですが、アクターの生死は常にチェックしたほうがいいかと思います。
スキルの発動は通信が必須になる部分だと思います。
どのレベルでオンラインで動作させるかわからないので、何とも言えません。

それと、ランダムではなく先に候補順に並べて通信を抑える小手先のテクニックもあると思います。

Re: 特定のスキルを使うとスクリプト実行

Posted: 2017年9月09日(土) 00:05
by よしだとものり
通信量というより通信のプログラムを作るのが面倒そうだなぁと;;
データベースも生存者管理とか考えること増えそうですし
できれば知識が少ないので簡単なことからやりたいかなと


endActionの関数にアクセスできなかったのは多分thisの使い方を
理解してないからですね

Game_Action.prototype.apply = function(target) 内部では下のような
isMagicSkillの呼び出し方をしてもエラーが出なかったのですが
endAction内ではおそらくthisが指している物が違うため
タイプエラーかなんかが出ました。

if(this.isMagicSkill()){
window.alert("aaa");
}