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

Project1

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

[已经过期] 新增属性设置求教!

[复制链接]

Lv2.观梦者

梦石
0
星屑
347
在线时间
48 小时
注册时间
2017-11-18
帖子
8
跳转到指定楼层
1
发表于 2018-5-24 10:18:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
=begin
#===============================================================================
#                                                N.A.S.T.Y. Extra Stats
#                                  Nelderson's Awesome Scripts To You
# By: Nelderson
# Made On: 12/19/2011
# Last Updated : 3/27/2012

该脚本来源于

发布者/作者?:Member+
#===============================================================================
# Update History:
# - Version 1.1  - Cleaned up some dear, and added enemies xstats for Enemies!
# - Version 1.0  - Initial release, made for the dear of it <img src='
' class='bbc_emoticon' alt=':P' />
在人物备注填写,属性成长
<xstat>
:str => '(level/3.5) + 16',
:con => '(level/5.6) + 12',
:dex => '(level/5.25) + 15 + agi',
:int => '(level/10.5) + 10',
:wis => '(level/10.5) + 10',
:cha => '(level/10.5) + 10',
<xstat_end>

      也可以直接在备注填写固定属性
<xstat>
:str => 15,
:con => 14,
:dex => 13,
:int => 12,
:wis => 11,
:cha => 0,
<xstat_end>

在武器或护甲的备注里按照如下格式填写可以让该装备增加对应属性
<weapon_xstat: STAT x>
范例,让装备增加5点‘str’  <weapon_xstat: str 5>
调用属性:$game_actors[1].xstat.X     例:$game_actors[1].xstat.str
伤害公式范例:    a.xstat.str * 5
#===============================================================================
=end
module Z26

  STATS = [:力量,:体力,:智力,:精神,:命中率,:回避率]

  #Default xstat formulas for ACTORS
  #玩家基础属性
  DEFAULT_LEVEL_FORMULA =
                {
                  :力量 => 2,
                  :体力 => 2,
                  :智力 => 2,
                  :精神 => 2,
                  :命中率 => 2,
                  :回避率 => 2,
                }

  #Default xstat formulas for ENEMIES\
  #敌对基础属性
  DEFAULT_FOR_ENEMIES =
                {
                  :力量 => 1,
                  :体力 => 1,
                  :智力 => 1,
                  :精神 => 1,
                  :命中率 => 1,
                  :回避率 => 1,
                }

   def self.actor_level_formulas(actor_id)
          jhh = ""
          strin = $data_actors[actor_id].get_start_end_cache
          strin.each do |i|
                jhh += i
          end
          return DEFAULT_LEVEL_FORMULA if strin == "" or strin == []
          return eval("{#{jhh}}")
        end

        def self.enemy_stats(enemy_id)
          jhh = ""
          strin = $data_enemies[enemy_id].get_start_end_cache
          strin.each do |i|
                jhh += i
          end
          return DEFAULT_FOR_ENEMIES if strin == "" or strin == []
          return eval("{#{jhh}}")
        end

  #=============================================================================
  SYMBOLS = []
  for stat in STATS
        SYMBOLS.push(stat)
  end
  Xstats = Struct.new(*SYMBOLS)
end

class Game_Enemy < Game_Battler
  attr_accessor :xstat

  alias z26_enemy_set initialize unless $@
  def initialize(*args)
        z26_enemy_set(*args)
        @xstat = Z26::Xstats.new(*([0]*Z26::STATS.size))
        for stat in Z26::STATS
          z26variate_stats(stat)
        end
  end

  def z26variate_stats(stat)
        return if Z26.enemy_stats(@enemy_id)[stat].nil?
        if Z26.enemy_stats(@enemy_id)[stat].is_a?(String)
          set_in = eval(Z26.enemy_stats(@enemy_id)[stat]).to_i
          eval("@xstat.#{stat} += #{set_in}")
        else
          set_in = Z26.enemy_stats(@enemy_id)[stat]
          @xstat[stat] += set_in
        end
  end
end

class Game_Actor < Game_Battler
  attr_accessor :xstat

  alias z26_s setup unless $@
  def setup(actor_id)
        z26_s(actor_id)
        @xstat = Z26::Xstats.new(*([0]*Z26::STATS.size))
        for item in equips.compact
          z26variate_equip(item)
        end
        for stat in Z26::STATS
          z26variate_stats(stat, @level)
        end
  end

  alias z26_change_equip change_equip
  def change_equip(equip_type, item, test = false)
        last_item = equips[equip_type]
        z26_change_equip(equip_type, item)
        z26variate_equip(item)
        z26variate_equip(last_item, false)
  end

  #=====================#
  ##EDITED BY NELDERSON##
  #=====================#
  def z26variate_equip(item, adding = true)
        return if item.nil?
        for line in item.note.split(/[\r\n]+/).each{ |a|
          case a
          when /<weapon_xstat:[ ](.*)[ ](\d+)>/i
                  if Z26::STATS.include?(eval(":" + $1))
                        if adding
                          eval("@xstat.#{$1} += #{$2}")
                        else
                        eval("@xstat.#{$1} -= #{$2}")
                  end
                end
          end
          }
        end
  end

  def z26variate_stats(stat, level, adding = true)
        return if Z26.actor_level_formulas(@actor_id)[stat].nil?
        if Z26.actor_level_formulas(@actor_id)[stat].is_a?(String)
          amount = eval(Z26.actor_level_formulas(@actor_id)[stat]).to_i
        else
          amount = Z26.actor_level_formulas(@actor_id)[stat]
        end
        if adding
          eval("@xstat.#{stat} += #{amount}")
        else
          eval("@xstat.#{stat} -= #{amount}")
        end
  end

  alias z26level_up level_up unless $@
  def level_up
        for stat in Z26::STATS
          z26variate_stats(stat, @level, false)
        end
        z26level_up
        for stat in Z26::STATS
          z26variate_stats(stat, @level)
        end
  end
end

class Window_Status < Window_Selectable
  def draw_block3(y)
        draw_parameters(0, y)
        draw_equipments(344, y)#288
        draw_xstat_parameters(172, y)
  end

  def draw_xstat_parameters(x, y)
        @actor.xstat.size.times {|i|
        draw_actor_xstat_param(@actor, x, y + line_height * i, i) }
  end
end

class Window_Base < Window
  def draw_actor_xstat_param(actor, x, y, param_id)
        id = Z26::STATS[param_id]
        change_color(system_color)
        draw_text(x, y, 120, line_height, id.capitalize)
        change_color(normal_color)
        draw_text(x + 120, y, 36, line_height, actor.xstat[id], 2)
  end
end

class RPG::BaseItem
  def get_start_end_cache
        record = false
        temp = []
        self.note.split(/[\r\n]+/).each do |line|
          if line =~ /<xstat>/i
                record = true
          elsif line =~ /<xstat_end>/i
                record = false
          end
          if record
                temp << line
          end
        end
        return nil if temp == ""
        temp.delete_at(0)
        temp
  end
end



人物新增属性项脚本求助,我在人物里备注了,但是我想直接读取他原有的基础属性,就是【力量=物理攻击力-武器攻击力】,这样可以直白的看出人物基础的强度。
将 力量=atk时,能读取成功,但是改了 体力=def时就报错了,

修改其他的也是如此,求教这要怎么设置?
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-17 05:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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