【解決】マップ上でのターン制を実装したい

青猫_
記事: 42
登録日時: 2017年11月07日(火) 22:47

Re: 【解決】マップ上でのターン制を実装したい

投稿記事by 青猫_ » 2017年11月09日(木) 01:05

追記ありがとうございます。
公開していただいているだけでもありがたいので、動作対象外という事は重々承知していますが、
想定外の挙動に2つ遭遇したので報告させていただきます。

1つ目はマップの中に実行内容が無い、空イベントを一つでも設置すると、
全てのイベント(敵シンボル)が、ゲームスタートから、二回行動したところで自律行動を停止してしまう現象が起きました。
色々実験して見たところ、自律移動が「固定」のイベントの速度を「1/8倍速」にすると、何故かこの現象が発生しない事が判明しました。
逆に「4倍速」にすると、ゲームスタートから一回行動したところで停止する事が確認できました。
動けないイベントの行動ポイントがスタックでも起こしてるんでしょうか?
とにかく「1/8倍速」にすると動かすことができた事を報告させていただきます。

2つ目はイベントを最初「固定」にしておき、特定のスイッチが入ると、「近づく」に変更するイベントを作ったのですが、
それまでプレイヤーが行動した分の行動量が保持されているのか、スイッチが入った瞬間、今までの歩数分一気にイベントが歩いてしまいます。
これは実行内容に、スイッチが入ると同時に保持されている行動量を0に戻すようなスクリプトを入れれば解決できるのではないかと思うのですが……

あれもこれもと要求して大変恐縮ですが、時間・ネタバレに支障の無い範囲でお力をお借りいただけたら幸いです。

おのき
記事: 14
登録日時: 2017年8月28日(月) 18:07
連絡を取る:

Re: 【解決】マップ上でのターン制を実装したい

投稿記事by おのき » 2017年11月09日(木) 16:48

>青猫_様

お役に立てたようで嬉しいです。

さて,いろいろ要望が出てきたようですね。
先にも申しました通り,すべてにはお応えできない可能性が高いです。
私自身の時間もそうですが,なにより私のMVでの開発スタイルがプラグイン不使用によるためです。
私は本家MVのコードを直接編集して開発を進めています。
従って,本家MVでの挙動を確かめるのが少し億劫です。
それが私のプラグイン制作を致さない理由です。
まあ言い訳はこのくらいにして。

一つ一つ見ていきましょう。

>ダッシュするとずれてしまいますが、これは敵が居るエリアのダッシュを禁止すればいいだけなので問題ありません。

本当にそれで宜しいですか?
ゲーム制作では改善意欲が大切だと思います。
下記のコードではプレイヤーのダッシュ状態に応じてイベントの速度をそれに合わせています。

>キーボードの「C」を押すと、その場で行動量(moveWeigh)を6増やす「足踏み」や、

下記のコードで実装しておきました。
動作の保証は致しません。

>メニューからアイテムを使うと1ターン使用し、相手のターンが来るようにしたいのですが……

たぶんデフォルトのシステムだと難しいですね。
どのようなシステムをご希望かによります。
相手のターンというとアイテムを使うたびにメニューを閉じるのですか?
下記のコードではメニューを閉じない方法を採用してみました。
アイテムを使った回数だけ,メニューを閉じた途端にイベントが動きます。
シンボルエンカウントならアリだとは思いますが,いかがでしょうか。

残念ながら機能の追加は致しません。
ご容赦ください。

>1つ目はマップの中に実行内容が無い、空イベントを一つでも設置すると、
>全てのイベント(敵シンボル)が、ゲームスタートから、二回行動したところで自律行動を停止してしまう現象が起きました。

上記のコードはあくまで参考として載せておきました。
不完全なので動作の保証は致しません。
あまり細かい所に行くとゲームを作るに等しいので,下記のコード以上は致せません。

>2つ目はイベントを最初「固定」にしておき、特定のスイッチが入ると、「近づく」に変更するイベントを作ったのですが、

下記のコードで解決できているでしょうか。

申し訳ないですが,タイムリミットです。
以降の対応について私では致しかねます。
他を当たっていただくか,この際ご自分で勉強なさってはいかがでしょうか。

ちなみに,MV本体のコードはJavaScriptという言語で書かれています。
ネット上でも書籍でもかなり情報がありますので覚えやすい言語です。
初心者向けかどうかは微妙ですが,色んな所で使われているし,損はないです。
プログラミングは楽しいですよー。

下記のコードを未来のローグライク作者のために書き置きしておきます。
後ほど来られた方がコピペで気軽に試せるよう,他のプラグインとの競合問題になるべく配慮しました。
それでご勘弁ください。

コード: 全て選択

/*以下のコードには不具合があります。
* 最新版は後ろの投稿をご覧ください。
*/

(function() {
  'use strict';// 厳格モード

  // 番号は「pc キーボード コード 一覧」等でググって下さい。
  Input.keyMapper[67] = 'idle';// C

  /////////////////////////////////////////////////////////////////////////////
  // Game_Map

  var _Game_Map_setup = Game_Map.prototype.setup;
  Game_Map.prototype.setup = function(mapId) {// add.マップ開始時の初期化
    _Game_Map_setup.apply(this, arguments);
    this._turn = -1;// add.現マップでの経過ターン
    $gamePlayer._stepAnime = true;// 常に足踏み(この辺りはエディタのスクリプトで設定しましょう)
    $gamePlayer.setMoveSpeed(4);// 通常速度(これも状態変化で変わるためイベントで書きましょう)
  };

  var _Game_Map_update = Game_Map.prototype.update;
  Game_Map.prototype.update = function(sceneActive) {// add.毎フレームの更新
    $gameMap.checkNextTurn();// add.ターン進行チェック
    _Game_Map_update.apply(this, arguments);
  };

  // add.......................................................................

  Game_Map.prototype.checkNextTurn = function() {
    if ($gamePlayer.isRestMover() || $gameMap.isEventRunning()) {
      return;// イベント実行中はターンを更新しません。
    }
    for (var i = 1; i < this._events.length; i++) {
      if (this._events[i].isRestMover()) {
        return;
      }
    }
    for (var i = 1; i < this._events.length; i++) {
      if (this._events[i].isNearThePlayer()) {
        this._events[i].addMoveWeight();
      } else {
        this._events[i].zeroWeight();
      }
    }
    $gamePlayer.addMoveWeight();
    this._turn++;
  };

  /////////////////////////////////////////////////////////////////////////////
  // Game_CharacterBase

  var _Game_CharacterBase_initMembers = Game_CharacterBase.prototype.initMembers;
  Game_CharacterBase.prototype.initMembers = function() {// add.
    _Game_CharacterBase_initMembers.apply(this, arguments);
    this._moveWeight = 0;// 行動量
  };

  var _Game_CharacterBase_setMovementSuccess = Game_CharacterBase.prototype.setMovementSuccess;
  Game_CharacterBase.prototype.setMovementSuccess = function(success) {// add.
    _Game_CharacterBase_setMovementSuccess.apply(this, arguments);
    if (success) {// 移動に成功した際
      this.removeWeight();
    } else {// 囲まれていた場合
      for (var i = 1; i <= 9; i++) {
        if (this.canPass(this.x, this.y, i)) {
          return;
        }
      }
      this.removeWeight();
    }
  };

  var _Game_CharacterBase_realMoveSpeed = Game_CharacterBase.prototype.realMoveSpeed;
  Game_CharacterBase.prototype.realMoveSpeed = function() {// add.
    var speed = _Game_CharacterBase_realMoveSpeed.apply(this, arguments);
    if (speed < 4) {
      speed = 4;// 標準未満は遅いので標準に合わせる
    }
    return speed;
  };

  var _Game_CharacterBase_isDashing = Game_CharacterBase.prototype.isDashing;
  Game_CharacterBase.prototype.isDashing = function() {// mod.
    return $gamePlayer.isDashButtonPressed();// プレイヤーに合わせてダッシュ
  };

  // add.......................................................................

  Game_CharacterBase.prototype.getBaseWeight = function() {
    if (this._moveType === 0) {
      return 0;// 固定
    }
    switch (this._moveSpeed) {
      case 1: return 0;// 停止
      case 2: return 18;// 1/3倍速
      case 3: return 12;// 1/2倍速
      case 4: return 6;// 通常
      case 5: return 3;// 2倍速
      case 6: return 2;// 3倍速
      case 7: return 1;// ダッシュ用
      default: throw new Error('The getBaseWeight() value is invalid');
    }
  };

  Game_CharacterBase.prototype.addMoveWeight = function() {
    if (!this.getBaseWeight()) {
      this.zeroWeight();
      return;
    }
    this._moveWeight += $gamePlayer.getBaseWeight() || 6;
  };

  Game_CharacterBase.prototype.removeWeight = function() {
    if ($gameMap.isEventRunning()) {
      return;
    }
    this._moveWeight -= this.getBaseWeight() || this._moveWeight;
  };

  Game_CharacterBase.prototype.zeroWeight = function() {
    this._moveWeight = 0;
  };

  Game_CharacterBase.prototype.isRestMover = function() {
    if ($gameMap.isEventRunning()) {
      return true;
    } else if (!this.getBaseWeight()) {
      return false;
    }
    return this._moveWeight >= this.getBaseWeight();
  };

  /////////////////////////////////////////////////////////////////////////////
  // Game_Player

  var _Game_Player_moveByInput = Game_Player.prototype.moveByInput;
  Game_Player.prototype.moveByInput = function() {// add.
    _Game_Player_moveByInput.apply(this, arguments);
    if (!this.isMoving() && this.canMove()) {
      if (Input.isRepeated('idle')) {// add.「C」キーで足踏み
        this.removeWeight();
      }
    }
  };

  var _Game_Player_canMove = Game_Player.prototype.canMove;
  Game_Player.prototype.canMove = function() {// add.
    return _Game_Player_canMove.apply(this, arguments) &&  this.isRestMover();
  };

  /////////////////////////////////////////////////////////////////////////////
  // Game_Event

  var _Game_Event_updateSelfMovement = Game_Event.prototype.updateSelfMovement;
  Game_Event.prototype.updateSelfMovement = function() {// mod.
    if (!this._locked && this.canMove()) {
      switch (this._moveType) {
        case 1: this.moveTypeRandom(); break;
        case 2: this.moveTypeTowardPlayer(); break;
        case 3: this.moveTypeCustom(); break;
        default:
      }
    }
  };

  // add.......................................................................

  Game_Event.prototype.canMove = function() {
    return !$gamePlayer.isRestMover() && this.isRestMover();
  };

  /////////////////////////////////////////////////////////////////////////////
  // Scene_Map

  var _Scene_Map_updateCallMenu = Scene_Map.prototype.updateCallMenu;
  Scene_Map.prototype.updateCallMenu = function() {// mod.
    if (this.isMenuEnabled()) {
      if (this.isMenuCalled()) {
        this.menuCalling = true;
      }
      if (this.menuCalling && !$gamePlayer.isMoving() && $gamePlayer.canMove()) {// add.
        this.callMenu();
      }
    } else {
      this.menuCalling = false;
    }
  };

  /////////////////////////////////////////////////////////////////////////////
  // Scene_ItemBase

  var _Scene_ItemBase_useItem = Scene_ItemBase.prototype.useItem;
  Scene_ItemBase.prototype.useItem = function() {// add.
    _Scene_ItemBase_useItem.apply(this, arguments);
    $gamePlayer.removeWeight();
  };

})();


とりあえず動作確認お願いします。
もし何か不備がございましたらご連絡ください。
機能の追加は致しません。

【2017-11-17追記】
青猫_様の熱心さは伝わりました。
私事ですが、ただいま祖母が危篤状態なので返信が遅れます。
しばらくお待ち下さい。

【2017-11-18追記】
最新版を投稿しました。
後ろの記事をご覧ください。
最後に編集したユーザー おのき on 2017年11月18日(土) 06:21 [ 編集 2 回目 ]
青猫_
記事: 42
登録日時: 2017年11月07日(火) 22:47

Re: 【解決】マップ上でのターン制を実装したい

投稿記事by 青猫_ » 2017年11月09日(木) 22:24

>おのき様

何から何まで申し訳ありません。
早速、動作の確認をしてみます。

既存のRPGツクールMVの上にズブの初心者がゼロからローグライク風のプログラムを書くのは、
あまりにも無謀で諦めかけていたのですが、
行動量の概念など目から鱗の解決方法をお教えいただいたので、改めて自分でも勉強してみます!
知りたい事の方向性が判った事で、挑戦の敷居も少し下がった気がします。
青猫_
記事: 42
登録日時: 2017年11月07日(火) 22:47

Re: 【解決】マップ上でのターン制を実装したい

投稿記事by 青猫_ » 2017年11月17日(金) 02:05

>おのき様
動作確認が遅くなってすみません。
Cボタンでの足踏み、ダッシュの等速、アイテムの使用とターン経過の動作が確認できました。
ありがとうございます。
しかし、やっぱりスイッチを操作して自律移動のタイプが「固定」のイベントの移動を開始させると、
今まで保持した分だけ一気に動いてしまう現象が起きています。

それはそれとして、アイテムはやはり「風来のシレン」のように一度使う毎にメニューが閉じる方式にしたかったので、
「コモンイベントが作動するとメニューが閉じる」という仕様を利用して、アイテムの使用効果にコモンイベントの起動を加え、連動するコモンイベントの方に、
条件分岐にスクリプト「$gameParty.inBattle()」(戦闘中である)を満たさなかった場合、(マップ上であるという判定スクリプトが見つからなかった)
「○○を食べた!」という文章の表示、
キャラを透明状態にして、自作のもぐもぐモーションを再生、透明を解除、
回復のキラリとしたエフェクト、
さらにその後に、スクリプトで「$gamePlayer.removeWeight();」と書き込む事で、
かなり理想に近い動作をするようになりました。
(その部分が「プレイヤーが1ターン動いた」意味するコードだと見つけるのに2時間かかりました……)

これをやっている内に思いついたのですが、
「固定」のイベントを起動させるスイッチを入れたとき、EVページ2に「固定」のまま、「このイベントが保持する行動量を=0にする」のような内容のスクリプトを入れて、セルフスイッチでEVページ3に飛ばして、
その3が追跡なり巡回なりの内容のページにすれば、
「今まで保持した分だけ一気に動いてしまう」現象を回避できるのではないか、と愚考しました。

それで質問なんですが「このイベントが保持する行動量を=0にする」という意味のスクリプトはどんな文章になるのでしょうか?
頂いたコードの中にあるのでは、と「this._moveWeight = 0;// 行動量」や「this.removeWeight();」「this._events[i].zeroWeight();」
「(function() {
this._moveWeight = 0;
})」
あたりのそれっぽい文章をいろいろ入力して見ましたが、何も起きないかクラッシュするだけでした。(当然ですが)
「自分で勉強してみます」と大見得切っといて何ですが、今一度お力をお借りできませんか?
青猫_
記事: 42
登録日時: 2017年11月07日(火) 22:47

Re: 【解決】マップ上でのターン制を実装したい

投稿記事by 青猫_ » 2017年11月18日(土) 02:55

>おのき様

こんなところ見てる場合じゃないじゃないですか
お手隙の折にご助力いただけるだけで、ありがたいです
ご回復をお祈り申し上げます
おのき
記事: 14
登録日時: 2017年8月28日(月) 18:07
連絡を取る:

Re: 【解決】マップ上でのターン制を実装したい

投稿記事by おのき » 2017年11月18日(土) 06:15

>青猫_様

余計なことを書いてしまい申し訳ないです。
偶然タイミングが一致したため抑えきれませんでした。
昨日,手術前の説明で○○の疑いがあると言ってました。
2,3年ぶりに顔を合わせて思わずホロリしたので悔いはないです。

それでは返信を致します。

>しかし、やっぱりスイッチを操作して自律移動のタイプが「固定」のイベントの移動を開始させると、
>今まで保持した分だけ一気に動いてしまう現象が起きています。

これは私の不注意によるものでした。
申し訳ありません。
下記のコードでは毎ターン初期化をしています。
動作の保証は致しませんので,そちらでご確認ください。

>それで質問なんですが「このイベントが保持する行動量を=0にする」という意味のスクリプトはどんな文章になるのでしょうか?

イベント処理のスクリプトコマンドからでは下記になります。
「this.character(0).zeroWeight();」
「()」の中の数字はイベント番号です。
「0」は「このイベント」で,「-1」でプレイヤーを指定できます。

また,敵の硬直を解いた時に1ターン遅れるのがお好みでない場合は下記をお試しください。
「this.character(0).initWeight();」
下記コードでは,こちらを採用しています。

コード: 全て選択

/*【重み式ターン制システム ver.2017.11.18】
* 以下のコードについて,Demon's License (DMNL)を適用します。
* 動作の保証は致しません。
* 機能の追加は致しません。
* 権利の主張は致しません。
* その他,気分的に私じゃなくても出来ることは致しません。
* どうかご容赦ください。
* 上記以外で,何か不備がございましたらご連絡ください。
*/

(function() {
  'use strict';// 厳格モード

  // 番号は「pc キーボード コード 一覧」等でググって下さい。
  Input.keyMapper[67] = 'idle';// C

  /////////////////////////////////////////////////////////////////////////////
  // Game_Map

  var _Game_Map_setup = Game_Map.prototype.setup;
  Game_Map.prototype.setup = function(mapId) {// mod.マップ開始時の初期化
    _Game_Map_setup.apply(this, arguments);
    this._turn = -1;// 現マップでの経過ターン
    $gamePlayer._stepAnime = true;// 常に足踏み(この辺りはエディタのスクリプトで設定しましょう)
    $gamePlayer.setMoveSpeed(4);// 通常速度(これも状態変化で変わるためイベントで書きましょう)
  };

  var _Game_Map_update = Game_Map.prototype.update;
  Game_Map.prototype.update = function(sceneActive) {// mod.毎フレームの更新
    $gameMap.checkNextTurn();// ターン進行チェック
    _Game_Map_update.apply(this, arguments);
  };

  // add.......................................................................

  Game_Map.prototype.checkNextTurn = function() {// add.
    if ($gamePlayer.isRestMover() || $gameMap.isEventRunning()) {
      return;// イベント実行中はターンを更新しません。
    }
    for (var i = 1; i < this._events.length; i++) {
      if (this._events[i].isRestMover()) {
        return;
      }
    }
    for (var i = 1; i < this._events.length; i++) {
      if (this._events[i].isNearThePlayer()) {
        this._events[i].addMoveWeight();
      } else {
        this._events[i].zeroWeight();
      }
    }
    if ($gamePlayer.getBaseWeight()) {
      $gamePlayer.addMoveWeight();
    }
    this._turn++;
  };

  /////////////////////////////////////////////////////////////////////////////
  // Game_CharacterBase

  var _Game_CharacterBase_initMembers = Game_CharacterBase.prototype.initMembers;
  Game_CharacterBase.prototype.initMembers = function() {// mod.
    _Game_CharacterBase_initMembers.apply(this, arguments);
    this._moveWeight = 0;// 行動量
  };

  var _Game_CharacterBase_setMovementSuccess = Game_CharacterBase.prototype.setMovementSuccess;
  Game_CharacterBase.prototype.setMovementSuccess = function(success) {// mod.
    _Game_CharacterBase_setMovementSuccess.apply(this, arguments);
    if (success) {// 移動に成功した際
      this.removeWeight();
    } else if (this.isSurrounded()) {
      this.removeWeight();
    }
  };

  var _Game_CharacterBase_realMoveSpeed = Game_CharacterBase.prototype.realMoveSpeed;
  Game_CharacterBase.prototype.realMoveSpeed = function() {// mod.
    var speed = _Game_CharacterBase_realMoveSpeed.apply(this, arguments);
    return (speed < 4) ? 4 : speed;// 標準未満は遅いので標準に合わせる
  };

  var _Game_CharacterBase_isDashing = Game_CharacterBase.prototype.isDashing;
  Game_CharacterBase.prototype.isDashing = function() {// mod.
    return $gamePlayer.isDashButtonPressed();// プレイヤーに合わせてダッシュ
  };

  // add.......................................................................

  Game_CharacterBase.prototype.getBaseWeight = function() {// add.
    if (this._moveType === 0) {
      return 0;// 固定
    }
    switch (this._moveSpeed) {
      case 1: return 0;// 停止
      case 2: return 18;// 1/3倍速
      case 3: return 12;// 1/2倍速
      case 4: return 6;// 通常
      case 5: return 3;// 2倍速
      case 6: return 2;// 3倍速
      case 7: return 1;// ダッシュ用
      default: throw new Error('The getBaseWeight() value is invalid');
    }
  };

  Game_CharacterBase.prototype.addMoveWeight = function() {// add.
    if (this.getBaseWeight()) {
      this._moveWeight += $gamePlayer.getBaseWeight() || 6;
    } else {
      this.initWeight();
    }
  };

  Game_CharacterBase.prototype.removeWeight = function(force) {// add.
    force = (force === undefined) ? false : force;// 強制フラグ(JSのデフォルト引数はFirefoxだけらしいので)
    if ($gameMap.isEventRunning() && !force) {
      return;
    }
    this._moveWeight -= this.getBaseWeight() || this._moveWeight;
  };

  Game_CharacterBase.prototype.initWeight = function() {// add.
    this._moveWeight = $gamePlayer.getBaseWeight() || 6;
  };

  Game_CharacterBase.prototype.zeroWeight = function() {// add.
    this._moveWeight = 0;
  };

  Game_CharacterBase.prototype.isRestMover = function() {// add.
    if (!this.getBaseWeight()) {
      this.initWeight();//「固定」「行動不能」を検知した時点で初期化
    }
    if ($gameMap.isEventRunning()) {
      return true;
    }
    return this.getBaseWeight() && this._moveWeight >= this.getBaseWeight();
  };

  Game_CharacterBase.prototype.isSurrounded = function() {// add.
    loop: for (var i = 1; i <= 9; i++) {
      var isDir8 = $gamePlayer.getInputDirection() === Input.dir8; // 8方向?
      var canPass = this.canPass(this.x, this.y, i);
      switch (i) {// 包囲判定(方向を示す数字はテンキー準拠)
        case 2: case 4: case 6: case 8: {// 上下左右
          if (canPass) {
            break loop;
          }
          continue;
        }
        case 1: case 3: case 7: {// 斜め
          if (isDir8 && canPass) {
            break loop;
          }
          continue;
        }
        case 9: {// 右上
          if (isDir8 && canPass) {
            break;
          }
          return true;// 囲まれている
        }
        default: {
          continue;
        }
      }
    }
    return false;
  };

  /////////////////////////////////////////////////////////////////////////////
  // Game_Player

  var _Game_Player_moveByInput = Game_Player.prototype.moveByInput;
  Game_Player.prototype.moveByInput = function() {// mod.
    _Game_Player_moveByInput.apply(this, arguments);
    if (!this.isMoving() && this.canMove()) {
      if (Input.isRepeated('idle')) {// 「C」キーで足踏み
        this.removeWeight();
      }
    }
  };

  var _Game_Player_canMove = Game_Player.prototype.canMove;
  Game_Player.prototype.canMove = function() {// mod.
    return _Game_Player_canMove.apply(this, arguments) && this.isRestMover();
  };

  /////////////////////////////////////////////////////////////////////////////
  // Game_Event

  var _Game_Event_updateSelfMovement = Game_Event.prototype.updateSelfMovement;
  Game_Event.prototype.updateSelfMovement = function() {// mod.
    if (!this._locked && this.canMove()) {
      switch (this._moveType) {
        case 1: this.moveTypeRandom(); break;
        case 2: this.moveTypeTowardPlayer(); break;
        case 3: this.moveTypeCustom(); break;
        default:
      }
    }
  };

  // add.......................................................................

  Game_Event.prototype.canMove = function() {// add.
    return !$gamePlayer.isRestMover() && this.isRestMover();
  };

  /////////////////////////////////////////////////////////////////////////////
  // Scene_Map

  var _Scene_Map_updateCallMenu = Scene_Map.prototype.updateCallMenu;
  Scene_Map.prototype.updateCallMenu = function() {// mod.
    if (this.isMenuEnabled()) {
      if (this.isMenuCalled()) {
        this.menuCalling = true;
      }
      if (this.menuCalling && !$gamePlayer.isMoving() && $gamePlayer.canMove()) {
        this.callMenu();
      }
    } else {
      this.menuCalling = false;
    }
  };

  /////////////////////////////////////////////////////////////////////////////
  // Scene_ItemBase

  var _Scene_ItemBase_useItem = Scene_ItemBase.prototype.useItem;
  Scene_ItemBase.prototype.useItem = function() {// mod.
    _Scene_ItemBase_useItem.apply(this, arguments);
    $gamePlayer.removeWeight();
  };

})();


以上でどうでしょうか。
もし何か不備がございましたらご連絡ください。
機能の追加は致しません。
青猫_
記事: 42
登録日時: 2017年11月07日(火) 22:47

Re: 【解決】マップ上でのターン制を実装したい

投稿記事by 青猫_ » 2017年11月18日(土) 19:30

お忙しい所ありがとうございます。
さっそく確認してみます

追記
理想通り動いています!
ありがとうございました。
プレイヤーキャラとイベントの行動量のヒントが掴めました。
いきなりコードを書く事が出来なくとも、
コードに書かれている内容を理解できるレベルまで到達できれば、
お手を煩わせる事も無くす事ができると思いますので、精進いたします。

“MV:質問” へ戻る