查看: 2371|回复: 0

[已经过期] 技能延迟脚本问题

[复制链接]
梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2016-11-27 18:08:45 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby"]#--------------------------------------------------------------------------
# ● require Taroxd基础设置
#    使用方法:技能备注<delay n>,n 为延迟的回合数,n <= 0 为当前回合结束时发动
#             技能备注<delay message s>,s为技能施放时提示的信息。
#             其中使用者名称用\N代替。
#--------------------------------------------------------------------------

module Taroxd
  DelayItem = '\N'     # 用 \N 代替使用者名称
end
class RPG::UsableItem
  note_i :delay, false
  note_s :delay_message
end

class Window_BattleLog < Window_Selectable

  def display_delay_use_item(subject, item)
    add_text(item.delay_message.gsub(Taroxd::DelayItem, subject.name))
  end
end

class Scene_Battle < Scene_Base

  def_after(:start) { @delay_list = [] }

  def_chain :use_item do |old|
    item = @subject.current_action.item
    return old.call unless item.delay
      #p i
    @log_window.display_delay_use_item(@subject, item)
    subject = @subject
    action = @subject.current_action
    for i in 0..item.delay#
      @delay_list.push Fiber.new {
      i#
      subject.actions.unshift(action)#报错:NoMethodError undefined method‘actions’for nil:NilClass
      @subject, subject = subject, @subject
      old.call
      @subject.remove_current_action
      @subject = subject
      }
    end#
  end
  
  def_before(:turn_end) { @delay_list.delete_if(&:resume) }
end[/pre]
想要把技能延迟改成持续施法,但是在修改之后的subject.actions.unshift(action)报了NoMethodError undefined method‘actions’for nil:NilClass的错(可是@delay_list里的行动数一个不少)
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部