查看: 3013|回复: 1

[RMVA发布] 【新人乱改】修改普通攻击、防御的技能ID的脚本

[复制链接]

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2013-12-3 18:00:12 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 taroxd 于 2014-3-3 17:59 编辑

基本是改的别人在这里发过的脚本,但是原帖找不到了……
感谢2L提醒!灵感来源&原作者:feizhaodan  不是不想尊重原作者,是真心找了半小时没找到……

总之是修复了原来的脚本里,修改默认普通攻击技能id会出bug的情况,增加了指令栏技能名称的修改,增加了好多可以加备注的地方。基本是为了我自己的需要啦~{:2_287:}
我是新手一只,第一次在这里发东西,有什么问题请多多指教~

http://rpg.blue/thread-344203-1-1.html 的8L是兼容性更好的版本,并且可能会有该脚本的更新,但链接8L的脚本需要安装链接顶楼的脚本。此处脚本不再更新,仅作在脚本的注释中提供使用方法之用。

[pre lang="ruby" line="1"]
=begin
  使用方法:
    在装备/技能/角色/职业上备注 <attackskill x>或<guardskill x>

  效果:
    装上装备后/学会技能后/设定的角色中/设定的职业中,普通攻击/防御变为第x号技能

  优先级:
    装备 > 技能 > 角色 > 职业
    装备:武器 > 武器2/盾牌 > 头盔 > 铠甲 > 饰品
    技能:技能ID小的优先。
  
  [2014.1.17] 添加了防御技能的设置,完善了command_attack的重定义,删除了修改优先级的说明
=end

class Module
  #--------------------------------------------------------------------------
  # ● 依次把 prefix 作为前缀定义 method1、method2 ... 的别名。
  #    返回处理顺序的别名的数组。
  #--------------------------------------------------------------------------
  def alias_methods(prefix, *methods)
    methods.each do |item|
      if method_defined?("#{prefix}#{item}")
        msgbox("在类 #{self} 中已经定义了方法 #{prefix}#{item}")
        exit
      end
      alias_method("#{prefix}#{item}", item)
    end
    methods.collect {|item| "#{prefix}#{item}".to_sym }
  end
end

class RPG::BaseItem
  #--------------------------------------------------------------------------
  # ● 获取普通攻击的技能 ID
  #--------------------------------------------------------------------------
  def attack_skill
    /<ATTACK\s*SKILL\s+(\d+)>/i =~ @note ? $1.to_i : nil
  end
  #--------------------------------------------------------------------------
  # ● 获取防御的技能 ID
  #--------------------------------------------------------------------------
  def guard_skill
    /<GUARD\s*SKILL\s+(\d+)>/i =~ @note ? $1.to_i : nil
  end
end

class Game_Actor < Game_Battler
  alias_methods(:attack_guard_skill_, :attack_skill_id, :guard_skill_id)
  #--------------------------------------------------------------------------
  # ● 获取普通攻击的技能 ID
  #--------------------------------------------------------------------------
  def attack_skill_id
    (equips.compact + skills + [actor] + [self.class]).each {|item|
      return item.attack_skill if item.attack_skill }
    attack_guard_skill_attack_skill_id
  end
  #--------------------------------------------------------------------------
  # ● 获取防御的技能 ID
  #--------------------------------------------------------------------------
  def guard_skill_id
    (equips.compact + skills + [actor] + [self.class]).each {|item|
      return item.guard_skill if item.guard_skill }
    attack_guard_skill_guard_skill_id
  end
end

class Scene_Battle < Scene_Base
  alias_methods(:attack_guard_skill_, :command_attack, :command_guard)
  #--------------------------------------------------------------------------
  # ● 普通攻击无需选择目标的情况
  #--------------------------------------------------------------------------
  def command_attack
    skill = $data_skills[BattleManager.actor.attack_skill_id]
    if !skill.need_selection?
      BattleManager.actor.input.set_attack
      next_command
    elsif skill.for_opponent?
      attack_guard_skill_command_attack
    else
      BattleManager.actor.input.set_attack
      select_actor_selection
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 防御需要选择目标的情况
  #--------------------------------------------------------------------------
  def command_guard
    skill = $data_skills[BattleManager.actor.guard_skill_id]
    if skill.need_selection?
      BattleManager.actor.input.set_guard
      skill.for_opponent? ? select_enemy_selection : select_actor_selection
    else
      attack_guard_skill_command_guard
    end
  end
end

class Window_ActorCommand < Window_Command
  #--------------------------------------------------------------------------
  # ● 更改攻击指令名称
  #--------------------------------------------------------------------------
  def add_attack_command
    name = $data_skills[@actor.attack_skill_id].name
    add_command(name, :attack, @actor.attack_usable?)
  end
  #--------------------------------------------------------------------------
  # ● 更改防御指令名称
  #--------------------------------------------------------------------------
  def add_guard_command
    name = $data_skills[@actor.guard_skill_id].name
    add_command(name, :guard, @actor.guard_usable?)
  end
end
[/pre]

评分

参与人数 1星屑 +2 收起 理由
3106345123 + 2 精品文章

查看全部评分

梦石
0
星屑
124
在线时间
900 小时
注册时间
2012-11-13
回帖
845
发表于 2013-12-4 12:55:49 | 显示全部楼层
基本是改的别人在这里发过的脚本,但是原帖找不到了……

请尊重原作者:http://rpg.blue/forum.php?mod=re ... 124&pid=2025205
总之是修复了原来的脚本里,修改默认普通攻击技能id会出bug的情况,增加了指令栏技能名称的修改,增加了好多可以加备注的地方。

还是要鼓励。

点评

谢谢帮忙找到原作者~  发表于 2013-12-4 17:42
废弃
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

在本版发帖返回顶部