Project1

标题: 技能延迟脚本问题 [打印本页]

作者: chd114    时间: 2016-11-27 18:08
标题: 技能延迟脚本问题
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● require Taroxd基础设置
  3. #    使用方法:技能备注<delay n>,n 为延迟的回合数,n <= 0 为当前回合结束时发动
  4. #             技能备注<delay message s>,s为技能施放时提示的信息。
  5. #             其中使用者名称用\N代替。
  6. #--------------------------------------------------------------------------
  7.  
  8. module Taroxd
  9.   DelayItem = '\N'     # 用 \N 代替使用者名称
  10. end
  11. class RPG::UsableItem
  12.   note_i :delay, false
  13.   note_s :delay_message
  14. end
  15.  
  16. class Window_BattleLog < Window_Selectable
  17.  
  18.   def display_delay_use_item(subject, item)
  19.     add_text(item.delay_message.gsub(Taroxd::DelayItem, subject.name))
  20.   end
  21. end
  22.  
  23. class Scene_Battle < Scene_Base
  24.  
  25.   def_after(:start) { @delay_list = [] }
  26.  
  27.   def_chain :use_item do |old|
  28.     item = @subject.current_action.item
  29.     return old.call unless item.delay
  30.       #p i
  31.     @log_window.display_delay_use_item(@subject, item)
  32.     subject = @subject
  33.     action = @subject.current_action
  34.     for i in 0..item.delay#
  35.       @delay_list.push Fiber.new {
  36.       i#
  37.       subject.actions.unshift(action)#报错:NoMethodError undefined method‘actions’for nil:NilClass
  38.       @subject, subject = subject, @subject
  39.       old.call
  40.       @subject.remove_current_action
  41.       @subject = subject
  42.       }
  43.     end#
  44.   end
  45.  
  46.   def_before(:turn_end) { @delay_list.delete_if(&:resume) }
  47. end

想要把技能延迟改成持续施法,但是在修改之后的subject.actions.unshift(action)报了NoMethodError undefined method‘actions’for nil:NilClass的错(可是@delay_list里的行动数一个不少)




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