幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2346|回复: 7

装备特殊效果!

[复制链接]

7

主题

18

帖子

568

积分

⑤进阶

积分
568
发表于 2004-11-10 15:45:40 | 显示全部楼层 |阅读模式
我不知道怎么用,谁能告诉我,应该加在脚本编辑器里的哪一个脚本里


一、装备特殊效果

效果:


代码(两部分):

PART 1:




# ▼▲▼ XRXS21. 特殊効果詰め合わせ:その他 with 4 parts ver..04 ▼▲▼
# by 桜雅 在土

#==============================================================================
# ◇ 付加属性名称判定モジュール
#==============================================================================
module Check_ElementName_Set
  #--------------------------------------------------------------------------
  # ● スキルが指定名の属性を持つか判定
  #--------------------------------------------------------------------------
  def skill_element_include?(skill, element_name)
    @one = @two = nil
    return false if skill == nil or !skill.is_a?(RPG::Skill)
    for i in skill.element_set
      if $data_system.elements =~ /#{element_name}([+-]?[0-9]+)?(%)?/
        @one = $1
        @two = $2
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● アイテムが指定名の属性を持つか判定
  #--------------------------------------------------------------------------
  def item_element_include?(item, element_name)
    @one = @two = nil
    return false if item == nil or !item.is_a?(RPG::Item)
    for i in item.element_set
      if $data_system.elements =~ /#{element_name}([+-]?[0-9]+)?(%)?/
        @one = $1
        @two = $2
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 武器が指定名の属性を持つか判定
  #--------------------------------------------------------------------------
  def weapon_element_include?(weapon_id, element_name)
    @one = @two = nil
    return false if weapon_id == nil or weapon_id <= 0
    for i in $data_weapons[weapon_id].element_set
      if $data_system.elements =~ /#{element_name}([+-]?[0-9]+)?(%)?/
        @one = $1
        @two = $2
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 防具が指定名の属性を持つか判定
  #--------------------------------------------------------------------------
  def armor_element_include?(armor_id, element_name)
    @one = @two = nil
    return false if armor_id == nil or armor_id <= 0
    for i in $data_armors[armor_id].guard_element_set
      if $data_system.elements =~ /#{element_name}([+-]?[0-9]+)?(%)?/
        @one = $1
        @two = $2
        return true
      end
    end
    return false
  end
  #--------------------------------------------------------------------------
  # ● 防具が指定名の属性を持つ場合その後に付く接尾テキストを取得
  #--------------------------------------------------------------------------
  def armor_element_suftext(armor_id, element_name)
    return nil if armor_id == nil or armor_id <= 0
    for i in $data_armors[armor_id].guard_element_set
      if $data_system.elements =~ /#{element_name}(.*)/
        return $1
      end
    end
    return nil
  end
  #--------------------------------------------------------------------------
  # ● アクターが指定名の属性を持つ武器/防具を装備中か判定 数値の合計も保持
  #--------------------------------------------------------------------------
  def actor_element_equip?(actor, element_name)
    one_total = 0
    bool = false
    return false if !actor.is_a?(Game_Actor)
    weapon = $data_weapons[actor.weapon_id]
    armor1 = $data_armors[actor.armor1_id]
    armor2 = $data_armors[actor.armor2_id]
    armor3 = $data_armors[actor.armor3_id]
    armor4 = $data_armors[actor.armor4_id]
    if weapon_element_include?(weapon.id, element_name)
      one_total += @one.to_i
      bool = true
    end
    if armor_element_include?(armor1.id, element_name)
      one_total += @one.to_i
      bool = true
    end
    if armor_element_include?(armor2.id, element_name)
      one_total += @one.to_i
      bool = true
    end
    if armor_element_include?(armor3.id, element_name)
      one_total += @one.to_i
      bool = true
    end
    if armor_element_include?(armor4.id, element_name)
      one_total += @one.to_i
      bool = true
    end
    @one = one_total
    return bool
  end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ◇ インクルード
  #--------------------------------------------------------------------------
  include Check_ElementName_Set
  #--------------------------------------------------------------------------
  # ● セットアップ
  #--------------------------------------------------------------------------
  alias xrxs21_setup setup
  def setup(actor_id)
    xrxs21_setup(actor_id)
    @character_name_original = @character_name
    @battler_name_original = @battler_name
  end
  #--------------------------------------------------------------------------
  # ● 属性補正値の取得
  #--------------------------------------------------------------------------
  alias xrxs21_element_rate element_rate
  def element_rate(element_id)
    rate = xrxs21_element_rate(element_id)
    element_name = $data_system.elements[element_id]
    # 属性防御を持つ"装備スキル"をもつ場合は半減
    for i in @skills
      skill = $data_skills
      next if skill == nil
      if skill_element_include?(skill, "装備スキル")
        for j in skill.element_set
          if $data_system.elements[j] != nil
            if $data_system.elements[j] =~ /^#{element_name}属性([+-]?[0-9]+)(%|%)/
              rate += $1.to_i
            end
            if $data_system.elements[j] =~ /^全属性([+-]?[0-9]+)(%|%)/
              rate += $1.to_i
            end
          end
        end
      end
    end
    return rate
  end
  #--------------------------------------------------------------------------
  # ● ステート有効度の取得
  #--------------------------------------------------------------------------
  def state_percent(state_id)
    effect_percent = [0,100,80,60,40,20,0][self.state_ranks[state_id]]
    state_name = $data_states[state_id].name
    return effect_percent if self.is_a?(Game_Enemy)
    # 防具にステート%防御が設定されている場合は確率減少
    for k in [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
      armor = $data_armors[k]
      next if armor == nil
      for j in armor.guard_state_set
        if $data_states[j] != nil
          if $data_states[j].name =~ /^#{state_name}確率([0-9]+)(%|%)/
            effect_percent -= $1.to_i
          end
        end
      end
    end
    # ステートのステート変化を参照
    for k in @states
      # マイナスステートにステート%防御が設定されている場合は確率減少
      for j in $data_states[k].minus_state_set
        if $data_states[j] != nil
          if $data_states[j].name =~ /^#{state_name}確率([0-9]+)(%|%)/
            effect_percent -= $1.to_i
          end
        end
      end
      # プラスステートにステート%防御が設定されている場合は確率上昇
      for j in $data_states[k].plus_state_set
        if $data_states[j] != nil
          if $data_states[j].name =~ /^#{state_name}確率([0-9]+)(%|%)/
            effect_percent += $1.to_i
          end
        end
      end
    end
    # ステート防御を持つ"装備スキル"をもつ場合は確率計算
    for i in @skills
      skill = $data_skills
      next if skill == nil
      if skill_element_include?(skill, "装備スキル")
        for j in skill.plus_state_set
          if $data_states[j] != nil
            if $data_states[j] =~ /^#{state_name}確率([0-9]+)(%|%)/
              effect_percent += $1.to_i
            end
          end
        end
        for j in skill.minus_state_set
          if $data_states[j] != nil
            if $data_states[j] =~ /^#{state_name}確率([0-9]+)(%|%)/
              effect_percent -= $1.to_i
            end
          end
        end
      end
    end
    return effect_percent
  end
  #--------------------------------------------------------------------------
  # ● 装備の変更
  #--------------------------------------------------------------------------
  alias xrxs21_equip equip
  def equip(equip_type, id)
    # 防具の場合
    if equip_type >= 1
      if id == 0 or $game_party.armor_number(id) > 0
        # 既存装備の判定
        case equip_type
        when 1
          armor_id = @armor1_id
        when 2
          armor_id = @armor2_id
        when 3
          armor_id = @armor3_id
        when 4
          armor_id = @armor4_id
        end
        file_name = armor_element_suftext(armor_id, "キャラクター変化")
        if file_name != nil
          # "キャラクター変化"がある防具を外した場合、元に戻す。
          @character_name = @character_name_original
        end
        file_name = armor_element_suftext(armor_id, "バトラー変化")
        if file_name != nil
          # "バトラー変化"がある防具を外した場合、元に戻す。
          @battler_name = @battler_name_original
        end
        
        # 新規装備の判定
        file_name = armor_element_suftext(id, "キャラクター変化")
        if file_name != nil
          # "キャラクター変化"がある防具を装備した場合、変化。
          #if FileTest.exist?("Graphic/Character" + file_name + ".png")
            @character_name = file_name
          #end
        end
        file_name = armor_element_suftext(id, "バトラー変化")
        if file_name != nil
          # "バトラー変化"がある防具を装備した場合、変化。
          #if FileTest.exist?("Graphic/Battler" + file_name + ".png")
            @battler_name = file_name
          #end
        end
        # プレイヤーをリフレッシュ
        $game_player.refresh
      end
    end
    # 戻す
    xrxs21_equip(equip_type, id)
  end
  #--------------------------------------------------------------------------
  # ● 基本腕力の取得
  #--------------------------------------------------------------------------
  alias xrxs19_base_str base_str
  def base_str
    percentage = 100
    for i in @skills
      skill = $data_skills
      if skill_element_include?(skill, "装備スキル")
        percentage = percentage * skill.str_f / 10
      end
    end
    return xrxs19_base_str * percentage / 100
  end
  #--------------------------------------------------------------------------
  # ● 基本器用さの取得
  #--------------------------------------------------------------------------
  alias xrxs19_base_dex base_dex
  def base_dex
    percentage = 100
    for i in @skills
      skill = $data_skills
      if skill_element_include?(skill, "装備スキル")
        percentage = percentage * skill.dex_f / 10
      end
    end
    return xrxs19_base_dex * percentage / 100
  end
  #--------------------------------------------------------------------------
  # ● 基本素早さの取得
  #--------------------------------------------------------------------------
  alias xrxs19_base_agi base_agi
  def base_agi
    percentage = 100
    for i in @skills
      skill = $data_skills
      if skill_element_include?(skill, "装備スキル")
        percentage = percentage * skill.agi_f / 10
      end
    end
    return xrxs19_base_agi * percentage / 100
  end


本帖子中包含更多资源

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

x
回复

使用道具 举报

7

主题

18

帖子

568

积分

⑤进阶

积分
568
 楼主| 发表于 2004-11-10 15:46:58 | 显示全部楼层
PART 2:
#--------------------------------------------------------------------------
  # ● 基本魔力の取得
  #--------------------------------------------------------------------------
  alias xrxs19_base_int base_int
  def base_int
    percentage = 100
    for i in @skills
      skill = $data_skills
      if skill_element_include?(skill, \"装備スキル\")
        percentage = percentage * skill.int_f / 10
      end
    end
    return xrxs19_base_int * percentage / 100
  end
  #--------------------------------------------------------------------------
  # ● 基本攻撃力の取得
  #--------------------------------------------------------------------------
  alias xrxs19_base_atk base_atk
  def base_atk
    percentage = 100
    for i in @skills
      skill = $data_skills
      if skill_element_include?(skill, \"装備スキル\")
        percentage = percentage * skill.atk_f / 10
      end
    end
    return xrxs19_base_atk * percentage / 100
  end
  #--------------------------------------------------------------------------
  # ● 基本物理防御の取得
  #--------------------------------------------------------------------------
  alias xrxs19_base_pdef base_pdef
  def base_pdef
    percentage = 100
    for i in @skills
      skill = $data_skills
      if skill_element_include?(skill, \"装備スキル\")
        percentage = percentage * skill.pdef_f / 10
      end
    end
    return xrxs19_base_pdef * percentage / 100
  end
  #--------------------------------------------------------------------------
  # ● 基本魔法防御の取得
  #--------------------------------------------------------------------------
  alias xrxs19_base_mdef base_mdef
  def base_mdef
    percentage = 100
    for i in @skills
      skill = $data_skills
      if skill_element_include?(skill, \"装備スキル\")
        percentage = percentage * skill.mdef_f / 10
      end
    end
    return xrxs19_base_mdef * percentage / 100
  end
  #--------------------------------------------------------------------------
  # ● 基本回避修正の取得
  #--------------------------------------------------------------------------
  alias xrxs19_base_eva base_eva
  def base_eva
    percentage = 100
    for i in @skills
      skill = $data_skills
      if skill_element_include?(skill, \"装備スキル\")
        percentage = percentage * skill.eva_f / 10
      end
    end
    return xrxs19_base_eva * percentage / 100
  end
  #--------------------------------------------------------------------------
  # ● グラフィックの変更
  #--------------------------------------------------------------------------
  alias xrxs21_set_graphic set_graphic
  def set_graphic(character_name, character_hue, battler_name, battler_hue)
    xrxs21_set_graphic(character_name, character_hue, battler_name, battler_hue)
    @character_name_original = @character_name
    @battler_name_original = @battler_name
  end
end
#==============================================================================
# ■ Window_Skill
#==============================================================================
class Window_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # ◇ インクルード
  #--------------------------------------------------------------------------
  include Check_ElementName_Set
  #--------------------------------------------------------------------------
  # ● 項目の描画
  #--------------------------------------------------------------------------
  alias xrxs19_draw_item draw_item
  def draw_item(index)
    skill = @data[index]
    actor_element_equip?(@actor, \"SP消費\")
    # SP消費%の取得
    if actor_element_equip?(@actor, \"SP消費\")
      skill.sp_cost_percent = 100 + @one
    else
      skill.sp_cost_percent = 100
    end
    xrxs19_draw_item(index)
  end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ◇ インクルード
  #--------------------------------------------------------------------------
  include Check_ElementName_Set
  #--------------------------------------------------------------------------
  # ● スキルアクション 結果作成
  #--------------------------------------------------------------------------
  alias xrxs21_make_skill_action_result make_skill_action_result
  def make_skill_action_result
    # スキルを取得
    @skill = $data_skills[@active_battler.current_action.skill_id]
    # SP消費%の取得
    if actor_element_equip?(@active_battler, \"SP消費\")
      @skill.sp_cost_percent = 100 + @one
    else
      @skill.sp_cost_percent = 100
    end
    xrxs21_make_skill_action_result
  end
end
#==============================================================================
# ◇ RPG::系
#==============================================================================
module RPG
  class Skill
    alias xrxs19_initialize initialize
    def initialize
      @sp_cost_percent = 100
      xrxs19_initialize
    end
    attr_accessor :sp_cost_percent
    def sp_cost
      [@sp_cost * @sp_cost_percent / 100, 0].max
    end
  end
end

回复 支持 反对

使用道具 举报

16

主题

289

帖子

4162

积分

⑥精研

~鼻涕牛牛~

积分
4162
QQ
发表于 2004-11-10 15:58:30 | 显示全部楼层
干嘛不改变角色行走图来实现......
哎哟——是蜗牛壳壳拉~~~
回复 支持 反对

使用道具 举报

7

主题

18

帖子

568

积分

⑤进阶

积分
568
 楼主| 发表于 2004-11-10 16:05:03 | 显示全部楼层
不明白,仔细说说
回复 支持 反对

使用道具 举报

3

主题

45

帖子

1043

积分

⑥精研

积分
1043
发表于 2004-11-10 16:41:49 | 显示全部楼层
http://f26.aaa.livedoor.jp/~xxms/RPGXP_HowToUse.htm XRXS.RGSS使用方法说明,就算不懂日文,也可以看图理解。

[特殊效果ElseEX]必须要加[XRXS修正自设] http://f26.aaa.livedoor.jp/~xxms/RPGXP_XRXS_Customize.htm 使用方法请看图

不过楼主的版本好象是旧的,我去网站看,最新的似乎是ver 01b


所有在这个网站的RGSS都是以新建SCRIPT的方式使用(放在Main和Scene_Debug之间;XRXS修正要放在所有XRXS的RGSS之上)。在使用他的RGSS时也请先看一下是否需要加修正。








[此贴子已经被作者于2004-11-10 16:56:26编辑过]
回复 支持 反对

使用道具 举报

7

主题

18

帖子

568

积分

⑤进阶

积分
568
 楼主| 发表于 2004-11-10 18:25:15 | 显示全部楼层
怎么用呀
回复 支持 反对

使用道具 举报

0

主题

43

帖子

1456

积分

⑥精研

积分
1456
发表于 2005-8-23 00:59:38 | 显示全部楼层
看不懂....[em04]
回复 支持 反对

使用道具 举报

0

主题

3

帖子

1227

积分

⑥精研

积分
1227
发表于 2005-9-3 19:40:26 | 显示全部楼层
干啥的?看不懂啊 难道可以一回攻击两次?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-6-12 12:20 , Processed in 0.025210 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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