Project1

标题: 怎么让玩家可以对已经学会的技能进行位置排列 [打印本页]

作者: yang1zhi    时间: 2016-1-11 15:53
标题: 怎么让玩家可以对已经学会的技能进行位置排列
假设玩家学会了火球,再学会了冰球。此时火球位置在冰球前面。怎么让玩家可以自己排列。
作者: kuerlulu    时间: 2016-1-19 02:13
深夜挖坑,求轻拍。
  1. ### 技能排序 即插即用
  2. ## 括号君被我吃了系列///
  3. # 虚拟键位 (实际默认键盘按键):
  4. #   技能界面按 A (Z) 键进入排序模式, 此时
  5. #   上下左右: 移动光标
  6. #   C (C) 或 A (Z): 确认将刚刚选过的两个技能位置对调 立即见效
  7. #   B (X): 取消本次排序

  8. class Game_Actor
  9.   # 去掉默认中学到新技能时自动重新排序: Game_Actor 495
  10.   def learn_skill skill_id
  11.     if skill_id > 0
  12.       @skills.push skill_id unless skill_learn? skill_id
  13.     end
  14.   end
  15.   # attr_writer
  16.   def skills= skills
  17.     @skills = skills
  18.   end
  19. end

  20. # 在特技场景可以调整特技排序
  21. class Scene_Skill

  22.   alias yang1zhi_main main
  23.   def main
  24.     @yang1zhi_vars = {
  25.       :sort_switch => false,
  26.       :skill_id    => 0
  27.     }
  28.     yang1zhi_main
  29.   end

  30.   alias yang1zhi_update_skill update_skill
  31.   def update_skill
  32.     if @yang1zhi_vars[:sort_switch]
  33.       if Input.trigger? Input::B
  34.         $game_system.se_play $data_system.cancel_se
  35.         @yang1zhi_vars[:sort_switch] = false
  36.       end
  37.       if Input.trigger? Input::C or Input.trigger? Input::A
  38.         $game_system.se_play $data_system.decision_se
  39.         @yang1zhi_vars[:sort_switch] = false
  40.         swap_value @actor.skills, @skill_window.skill.id, @yang1zhi_vars[:skill_id]
  41.         @skill_window.refresh
  42.       end
  43.     else
  44.       yang1zhi_update_skill
  45.       if Input.trigger? Input::A
  46.         $game_system.se_play $data_system.decision_se
  47.         @yang1zhi_vars[:sort_switch] = true
  48.         @yang1zhi_vars[:skill_id] = @skill_window.skill.id
  49.       end
  50.     end
  51.   end

  52.   def swap_value arr, a, b
  53.     i = arr.index a
  54.     j = arr.index b
  55.     arr[i], arr[j] = b, a
  56.   end
  57. end
复制代码





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