设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1504|回复: 0
打印 上一主题 下一主题

[已经解决] 技能冷却脚本出错

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1438
在线时间
328 小时
注册时间
2016-4-4
帖子
168

开拓者

跳转到指定楼层
1
发表于 2016-7-28 12:17:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 porlutia 于 2016-7-28 12:24 编辑

RUBY 代码复制
  1. module Sword
  2.   ON = true ; OFF = false ; Sword15_Cooling = Array.new
  3. #=======================================
  4. #★ 魔劍工舖 - 技能冷卻1.02
  5. # 轉貼腳本請著名出處:[url]http://blog.yam.com/a870053jjkj/[/url]
  6. # 如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
  7. #=======================================
  8. #● 使用者自定設置
  9. Sword15_XPVX = 0 # 此腳本用於XP時設為0;此腳本用在VX時設為1
  10. Sword15_Battle = 0  # 戰鬥結束時的冷卻狀態,0為不需冷卻;1為記憶;2為需冷卻
  11. Sword15_Menu1 = OFF # 選單中的技能畫面,是否要顯示剩餘的冷卻時間
  12. Sword15_Menu2 = 0 # 選單中的使用標準,0為一律可用;1為沒冷卻中時可用;
  13.                                   # 2為沒冷卻中時可用(使用後變更為冷卻中);3為一律不可用
  14. Sword15_Enemy = OFF # 敵人使用冷卻技能時,是否需要冷卻
  15. Sword15_Text = ' 剩\V回合' # 技能冷卻的顯示內容,\V表示剩餘冷卻回合數
  16. #--------------------------------------------------------------
  17. #○ 技能冷卻回合(Sword15_Cooling[技能編號] = 冷卻回合數)
  18. Sword15_Cooling[54] = 4
  19. Sword15_Cooling[55] = 4
  20. Sword15_Cooling[56] = 4
  21. Sword15_Cooling[57] = 4
  22. =begin
  23. ========================================
  24. =end
  25.   $Sword ? $Sword[15] = 101 : $Sword = {15=>101} # 腳本使用標誌
  26. end
  27. # 詳細設置說明請參考:[url]http://blog.yam.com/a870053jjkj/article/25549943[/url]
  28. #=======================================
  29. #■ 處理臨時資料的類別
  30. class Game_Temp
  31.   attr_accessor :skill_id # 技能編號(選單用)
  32.   alias sword15_initialize initialize
  33.   def initialize
  34.     @skill_id = 0 ; sword15_initialize
  35.   end
  36. end
  37. #=======================================
  38. #■ 處理戰鬥者的類別
  39. class Game_Battler
  40.   include Sword # 連接自定設置
  41.   attr_accessor :cooling  # 冷卻技能表
  42.   #-------------------------------------------------------------
  43.   #● 初始化物件
  44.   alias sword15_initialize initialize
  45.   def initialize
  46.     sword15_initialize
  47.     [url=home.php?mod=space&uid=10570]@cooling[/url] = {}
  48.     Sword15_Cooling.each_index do |index|
  49.       next if Sword15_Cooling[index] == nil # 沒設置冷卻時間的技能跳過
  50.       if Sword15_Battle == 2 ; @cooling[index] = Sword15_Cooling[index]
  51.       else ; @cooling[index] = 0 ; end
  52.     end
  53.   end
  54.   #-------------------------------------------------------------
  55.   #● 可以使用技能的判定
  56.   alias sword15_skill_can_use? skill_can_use?
  57.   def skill_can_use?(skill_id)
  58.     if Sword15_Enemy or self.is_a?(Game_Actor)
  59.       skill_id = skill_id.id if Sword15_XPVX == 1 # 將數據轉成編號(VX)
  60.       if (not $game_temp.in_battle) # 不是戰鬥中時
  61.         return sword15_skill_can_use?(skill_id) if Sword15_Menu2 == 0 # 一律可用
  62.         return false if Sword15_Cooling.has_key?(skill_id) if Sword15_Menu2 == 3
  63.       end
  64.       return false if self.cooling[skill_id] > 0 if self.cooling[skill_id] # 冷卻技能不可使用
  65.       skill_id = $data_skills[skill_id] if Sword15_XPVX == 1 # 將編號轉成數據(VX)
  66.     end
  67.     sword15_skill_can_use?(skill_id)
  68.   end
  69. end
  70. #=======================================
  71. #■ 處理角色的類別
  72. class Game_Actor < Game_Battler
  73.   include Sword # 連接自定設置
  74.   attr_reader   :actor_id # 角色編號
  75.   attr_accessor :cooling  # 冷卻技能表
  76.   #-------------------------------------------------------------
  77.   #● 初始化物件
  78.   alias sword15_setup setup
  79.   def setup(actor_id)
  80.     sword15_setup(actor_id)
  81.     @cooling = {}
  82.     Sword15_Cooling.each_index do |index|
  83.       next if Sword15_Cooling[index] == nil # 沒設置冷卻時間的技能跳過
  84.       if Sword15_Battle == 2 ; @cooling[index] = Sword15_Cooling[index]
  85.       else ; @cooling[index] = 0 ; end
  86.     end
  87.   end
  88.   #-------------------------------------------------------------
  89.   #● 變更 SP(XP)
  90.   if Sword15_Menu2 == 2 and Sword15_Battle != 0
  91.     if Sword15_XPVX == 0 ; alias sword15_sp= sp=
  92.     else ; alias sword15_mp= mp= ; end
  93.     def sp=(a)
  94.       @cooling[$game_temp.skill_id] = Sword15_Cooling[$game_temp.skill_id] if
  95.       Sword15_Cooling[$game_temp.skill_id] != nil # 自定設置有設定就設置冷卻回合
  96.       self.sword15_sp = a
  97.     end
  98.     #-----------------------------------------------------------
  99.     #●  變更 MP(VX)
  100.     def mp=(a)
  101.       @cooling[$game_temp.skill_id] = Sword15_Cooling[$game_temp.skill_id] if
  102.       Sword15_Cooling[$game_temp.skill_id] != nil # 自定設置有設定就設置冷卻回合
  103.       self.sword15_mp = a
  104.     end
  105.   end
  106. end
  107. #=======================================
  108. #■ 技能畫面、戰鬥畫面、顯示可以使用的技能的瀏覽視窗
  109. class Window_Skill < Window_Selectable
  110.   include Sword # 連接自定設置
  111.   #-------------------------------------------------------------
  112.   #● 描繪項目
  113.   alias sword15_draw_item draw_item
  114.   def draw_item(index)
  115.     if Sword15_Menu1 or $game_temp.in_battle # 允許顯示或戰鬥時的場合
  116.       text = '' # 負責存入冷卻內容的變量
  117.       if @actor.cooling[@data[index].id] ; if @actor.cooling[@data[index].id] > 0
  118.         text = Sword15_Text ; text = text.gsub(/\\[Vv]/) { @actor.cooling[@data[index].id] }
  119.         @data[index].name += text
  120.       end ; end
  121.     end
  122.     sword15_draw_item(index)
  123.     @data[index].name = @data[index].name.gsub(/#{text}/) { '' }
  124.   end
  125. end
  126. #=======================================
  127. #■ 處理戰鬥畫面的類別
  128. class Scene_Battle
  129.   include Sword # 連接自定設置
  130.   #-------------------------------------------------------------
  131.   #● 戰鬥結束
  132.   alias sword15_battle_end battle_end
  133.   def battle_end(result)
  134.     sword15_battle_end(result)
  135.     actor = Sword15_XPVX == 0 ? $game_party.actors : $game_party.members
  136.     xpvx = Sword15_XPVX == 0 ? 1 : 0
  137.     if Sword15_Battle == 0 # 當指定為「不需冷卻」的場合
  138.       (0...actor.size).each {|i| $game_actors[actor[i].id].cooling = Hash.new}
  139.     elsif Sword15_Battle == 2 # 當指定為「需冷卻」的場合
  140.       (0...actor.size).each do |i| ; (1..Sword15_Cooling.size).each do |ii|
  141.         $game_actors[actor[i].id].cooling[ii] = Sword15_Cooling[ii] + xpvx if
  142.         Sword15_Cooling[ii] != nil # 當有設置冷卻時代入冷卻回合
  143.       end ; end
  144.     end
  145.   end
  146.   #-------------------------------------------------------------
  147.   #● 產生技能行動結果(XP)
  148.   if Sword15_XPVX == 0 ; alias sword15_make_skill_action_result make_skill_action_result
  149.   else ; alias sword15_make_skill_action_result execute_action_skill ; end
  150.   def make_skill_action_result
  151.     #○ 確認敵人是否可使用該技能
  152.     skill_id = Sword15_XPVX == 0 ? @active_battler.current_action.skill_id :
  153.     @active_battler.action.skill_id # 縮短腳本長度
  154.     skill = Sword15_XPVX == 0 ?
  155.     $data_skills[@active_battler.current_action.skill_id] :
  156.     $data_skills[@active_battler.action.skill_id]
  157.     no = false
  158.     a = Sword15_XPVX == 0 ?
  159.     @active_battler.current_action.forcing : @active_battler.action.forcing
  160.     b = Sword15_XPVX == 0 ? skill.id : skill
  161.     unless a ; unless @active_battler.skill_can_use?(b)
  162.       @phase4_step = 1 if no # 跳轉到階段1
  163.       no = true
  164.     end ; end
  165.     sword15_make_skill_action_result unless no
  166.     #○ 設置冷卻回合
  167.     return if @active_battler.cooling[skill_id] > 0 if @active_battler.cooling[skill_id] != nil
  168.     xpvx = Sword15_XPVX == 0 ? 1 : 0 # XP和VX的回合數值修正
  169.     @active_battler.cooling[skill_id] = Sword15_Cooling[skill_id] + xpvx if
  170.     Sword15_Cooling[skill_id] != nil # 如果自定設置有設定就設置冷卻回合
  171.     $game_temp.forcing_battler = nil if no # 清除強制行動對象
  172.   end
  173.   #-------------------------------------------------------------
  174.   #● 執行戰鬥行動:使用技能(VX)
  175.   def execute_action_skill
  176.     make_skill_action_result
  177.   end
  178.   #-------------------------------------------------------------
  179.   #● 更新畫面 (主回合步驟 6 : 更新)(XP)
  180.   if Sword15_XPVX == 0 ; alias sword15_update_phase4_step6 update_phase4_step6
  181.   else ; alias sword15_update_phase4_step6 set_next_active_battler ; end
  182.   def update_phase4_step6
  183.     sword15_update_phase4_step6
  184.     return if @active_battler == nil # 如果行動方是空的就中斷
  185.     @active_battler.cooling.each_key do |i|
  186.       @active_battler.cooling[i] -= 1 if @active_battler.cooling[i] > 0
  187.     end
  188.   end
  189.   #-------------------------------------------------------------
  190.   #● 設置下一戰鬥者行動(VX)
  191.   def set_next_active_battler
  192.     update_phase4_step6
  193.   end
  194. end
  195. #=======================================
  196. #■ 處理技能畫面的類別
  197. class Scene_Skill
  198.   include Sword # 連接自定設置
  199.   #-------------------------------------------------------------
  200.   #● 更新畫面 (技能視窗被活化的情況下) (XP)
  201.   if Sword15_XPVX == 0 ; alias sword15_update_skill update_skill
  202.   else ; alias sword15_update_skill update_skill_selection ; end
  203.   def update_skill
  204.     $game_temp.skill_id = @skill_window.skill.id
  205.     sword15_update_skill
  206.     $game_temp.skill_id = nil if $scene.is_a?(Scene_Skill)
  207.   end
  208.   #-------------------------------------------------------------
  209.   #● 更新技能選擇(VX)
  210.   def update_skill_selection
  211.     update_skill
  212.   end
  213. end

插入[main]上面 点击测试游戏就跳出
脚本第78行发生了NameError
undefined method‵setup' for class‵Game_Actor'
这怎么办?
会不会是和其他什么脚本冲突了....
——————————————————————————————————————————————
解决了....  放到除了Game_Actor以外带有Game_Actor类的脚本的上面就可以了...
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-22 06:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表