Project1

标题: 关于混乱移动脚本的设定 [打印本页]

作者: 火锅深处    时间: 2017-9-5 19:58
标题: 关于混乱移动脚本的设定
想请教一下这个脚本里关于混乱移动的设定,
我是希望变成中了“混乱移动”以后上下方向调转,左右方向调转。
现在状况貌似是中了一次后会变成上述情况,但是接连再中一次就不是这个调转顺序了(有可能按“下”的时候向左走)
  1. =begin
  2.       RGSS3
  3.       
  4.       ★混乱移動ステート★

  5.       キー入力割り当てがシャッフルされて正常に歩けなくなるステートを作ります。
  6.       
  7.       ● 使い方 ●========================================================
  8.       ステートのメモ欄に「混乱移動」と記述してください。
  9.       ====================================================================
  10.       
  11.       ● 注意 ●==========================================================
  12.       ニューゲームから始めないとエラーを吐きます。
  13.       ====================================================================
  14.       
  15.       ver1.00

  16.       Last Update : 2012/01/11
  17.       01/11 : RGSS2からの移植
  18.       
  19.       ろかん   http://kaisou-ryouiki.sakura.ne.jp/
  20. =end

  21. $rsi ||= {}
  22. $rsi["混乱移動ステート"] = true

  23. class RPG::State < RPG::BaseItem
  24.   def panic_move?
  25.     self.note.include?("混乱移動")
  26.   end
  27. end

  28. class Game_Actor < Game_Battler
  29.   #--------------------------------------------------------------------------
  30.   # ● 新しいステートの付加
  31.   #--------------------------------------------------------------------------
  32.   alias panic_move_add_new_state add_new_state
  33.   def add_new_state(state_id)
  34.     panic_move_add_new_state(state_id)
  35.     update_panic_move(state_id)
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● ステートの解除
  39.   #--------------------------------------------------------------------------
  40.   alias panic_move_remove_state remove_state
  41.   def remove_state(state_id)
  42.     panic_move_remove_state(state_id)
  43.     update_panic_move(state_id)
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 混乱移動判定
  47.   #--------------------------------------------------------------------------
  48.   def panic_move?
  49.     states.any?{|state| state.panic_move?}
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 混乱移動判定の更新
  53.   #--------------------------------------------------------------------------
  54.   def update_panic_move(state_id)
  55.     if $data_states[state_id].panic_move? && $game_party.members.include?(self)
  56.       $game_party.update_panic_move
  57.     end
  58.   end
  59. end

  60. class Game_Party < Game_Unit
  61.   #--------------------------------------------------------------------------
  62.   # ● アクターを加える
  63.   #--------------------------------------------------------------------------
  64.   alias panic_move_add_actor add_actor
  65.   def add_actor(actor_id)
  66.     panic_move_add_actor(actor_id)
  67.     update_panic_move
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● アクターを外す
  71.   #--------------------------------------------------------------------------
  72.   alias panic_move_remove_actor remove_actor
  73.   def remove_actor(actor_id)
  74.     panic_move_remove_actor(actor_id)
  75.     update_panic_move
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 混乱移動判定の更新
  79.   #--------------------------------------------------------------------------
  80.   def update_panic_move
  81.     $game_player.panic = members.any?{|actor| actor.panic_move?}
  82.   end
  83. end

  84. class Game_Player < Game_Character
  85.   #--------------------------------------------------------------------------
  86.   # ● 公開インスタンス変数
  87.   #--------------------------------------------------------------------------
  88.   attr_writer :panic
  89.   #--------------------------------------------------------------------------
  90.   # ● 公開メンバ変数の初期化
  91.   #--------------------------------------------------------------------------
  92.   alias panic_move_init_public_members init_public_members
  93.   def init_public_members
  94.     panic_move_init_public_members
  95.     @panic = false
  96.   end
  97.   #--------------------------------------------------------------------------
  98.   # ● 非公開メンバ変数の初期化
  99.   #--------------------------------------------------------------------------
  100.   alias panic_move_init_private_members init_private_members
  101.   def init_private_members
  102.     panic_move_init_private_members
  103.     @panic_input = {2=>8, 4=>4, 6=>2, 8=>6}
  104.   end
  105.   #--------------------------------------------------------------------------
  106.   # ● 混乱移動判定の設定
  107.   #--------------------------------------------------------------------------
  108.   def panic=(bool)
  109.     set_panic_input if !@panic && bool
  110.     @panic = bool
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● 混乱移動方向キーの割り当て
  114.   #--------------------------------------------------------------------------
  115.   def set_panic_input
  116.     list = [2, 4, 6, 8]
  117.     @panic_input.each_key{|key|
  118.       @panic_input[key] = list.delete_at(rand(list.size))
  119.     }
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 方向ボタン入力による移動処理
  123.   #--------------------------------------------------------------------------
  124.   alias move_by_input_with_panic move_by_input
  125.   def move_by_input
  126.     @panic ? panic_move_by_input : move_by_input_with_panic
  127.   end
  128.   #--------------------------------------------------------------------------
  129.   # ● 方向ボタン入力による移動処理 (混乱中)
  130.   #--------------------------------------------------------------------------
  131.   def panic_move_by_input
  132.     return if !movable? || $game_map.interpreter.running?
  133.     move_straight(@panic_input[Input.dir4]) if Input.dir4 > 0
  134.   end
  135. end
复制代码

作者: 魔法丶小肉包    时间: 2017-9-9 21:14
RUBY 代码复制
  1. class Game_Player < Game_Character
  2.   def set_panic_input
  3.     @panic_input[2] = 8
  4.     @panic_input[4] = 6
  5.     @panic_input[6] = 4
  6.     @panic_input[8] = 2
  7.   end
  8. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1