赞 0  
 
VIP 0 
 
好人卡 4 
 
积分 1  
经验 15395 
 
最后登录 2016-5-1 
 
在线时间 381 小时 
 
 
 
Lv1.梦旅人 
	梦石 0  星屑 50  
        在线时间 381 小时 
        注册时间 2012-8-13 
        帖子 113  
 
 
	
在外站找到一个脚本应该可以帮到你。先说一下用法:<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  => '(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>
<xstat>
:str  => 15 ,
:con  => 14 ,
:dex  => 13 ,
:int  => 12 ,
:wis  => 11 ,
:cha  => 0 ,
<xstat_end>
$game_actors [ 1 ] .xstat .str 
$game_actors [ 1 ] .xstat .str 
#=============================================================================== 
#                                                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 
#=============================================================================== 
# Update History: 
# - Version 1.1  - Cleaned up some shit, and added enemies xstats for Enemies! 
# - Version 1.0  - Initial release, made for the shit of it <img src='http://forums.rpgmakerweb.com/public/style_emoticons/<#EMO_DIR#>/tongue.png' class='bbc_emoticon' alt=':P' /> 
#=============================================================================== 
# *Notes: 
# - This script can be used to make all sorts of stats that can derive from 
#   an actor's level, and base stats. 
# 
# - This thing can be a pain to set up, but once it's done, it can be a very 
#   powerful way to include new stats into your game! 
# 
# - Made a quick edit to the status screen to show up to 6 stats! 
# 
# *Usage 
# 
# -First is the STATS section.  This is an array that holds all the new 
#  stats that everything else gets info from. 
# 
# - Next fill out the Default Level formula(Use Example Below as a guide) 
#   *ANYTHING that an actor has, you can base it off of (Except other XSTATS!) 
#           (level, hp, mp, atk, spi, agi, maxhp, etc.) 
# 
# -You can use the ACTOR and ENEMY NOTETAGS to customize 
#  the formulas for each actor. 
# 
#  Examples: 
#   Place the following in an actor's notebox(You must make one for each stat): 
#                 <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> 
# 
#   Or you can place this in an actor's/enemy's notebox 
#                 <xstat> 
#                 :str => 15, 
#                 :con => 14, 
#                 :dex => 13, 
#                 :int => 12, 
#                 :wis => 11, 
#                 :cha => 0, 
#                 <xstat_end> 
# 
# - This script also uses notetags for weapons and armors to increase xstats 
#   if you want.  Just place in a notebox: 
# 
#                 <weapon_xstat: STAT x> , where STAT is th name of the new stat 
# 
#           Ex. <weapon_xstat: str 5> , would raise the actor's str +5 
# 
#  *For Scripters 
# 
#  -If you want to access the stats, just use: 
#                actor.xstat.STAT - Where STAT is the name of the new stat 
#           
#           Ex. $game_actors[1].xstat.str , will return actor 1's str 
#   
#=============================================================================== 
# Credits: 
# -Nelderson and Zetu 
#  Original Script was made by Zetu, and I spiced the shit out of it! 
#=============================================================================== 
 
module  Z26
 
  STATS = [ :str ,:con,:dex,:int,:wis,:cha] 
 
  #Default xstat formulas for ACTORS 
  DEFAULT_LEVEL_FORMULA =
                { 
                  :str  => '(level/3.5) + 16 + atk' ,
                  :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' ,
                } 
 
  #Default xstat formulas for ENEMIES           
  DEFAULT_FOR_ENEMIES =
                { 
                  :str  => 0 ,
                  :con  => 0 ,
                  :dex  => 0 ,
                  :int  => 0 ,
                  :wis  => 0 ,
                  :cha  => 0 ,
                } 
 
   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 
#=============================================================================== 
#                                                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 
#=============================================================================== 
# Update History: 
# - Version 1.1  - Cleaned up some shit, and added enemies xstats for Enemies! 
# - Version 1.0  - Initial release, made for the shit of it <img src='http://forums.rpgmakerweb.com/public/style_emoticons/<#EMO_DIR#>/tongue.png' class='bbc_emoticon' alt=':P' /> 
#=============================================================================== 
# *Notes: 
# - This script can be used to make all sorts of stats that can derive from 
#   an actor's level, and base stats. 
# 
# - This thing can be a pain to set up, but once it's done, it can be a very 
#   powerful way to include new stats into your game! 
# 
# - Made a quick edit to the status screen to show up to 6 stats! 
# 
# *Usage 
# 
# -First is the STATS section.  This is an array that holds all the new 
#  stats that everything else gets info from. 
# 
# - Next fill out the Default Level formula(Use Example Below as a guide) 
#   *ANYTHING that an actor has, you can base it off of (Except other XSTATS!) 
#           (level, hp, mp, atk, spi, agi, maxhp, etc.) 
# 
# -You can use the ACTOR and ENEMY NOTETAGS to customize 
#  the formulas for each actor. 
# 
#  Examples: 
#   Place the following in an actor's notebox(You must make one for each stat): 
#                 <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> 
# 
#   Or you can place this in an actor's/enemy's notebox 
#                 <xstat> 
#                 :str => 15, 
#                 :con => 14, 
#                 :dex => 13, 
#                 :int => 12, 
#                 :wis => 11, 
#                 :cha => 0, 
#                 <xstat_end> 
# 
# - This script also uses notetags for weapons and armors to increase xstats 
#   if you want.  Just place in a notebox: 
# 
#                 <weapon_xstat: STAT x> , where STAT is th name of the new stat 
# 
#           Ex. <weapon_xstat: str 5> , would raise the actor's str +5 
# 
#  *For Scripters 
# 
#  -If you want to access the stats, just use: 
#                actor.xstat.STAT - Where STAT is the name of the new stat 
#           
#           Ex. $game_actors[1].xstat.str , will return actor 1's str 
#   
#=============================================================================== 
# Credits: 
# -Nelderson and Zetu 
#  Original Script was made by Zetu, and I spiced the shit out of it! 
#=============================================================================== 
 
module  Z26
 
  STATS = [ :str ,:con,:dex,:int,:wis,:cha] 
 
  #Default xstat formulas for ACTORS 
  DEFAULT_LEVEL_FORMULA =
                { 
                  :str  => '(level/3.5) + 16 + atk' ,
                  :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' ,
                } 
 
  #Default xstat formulas for ENEMIES           
  DEFAULT_FOR_ENEMIES =
                { 
                  :str  => 0 ,
                  :con  => 0 ,
                  :dex  => 0 ,
                  :int  => 0 ,
                  :wis  => 0 ,
                  :cha  => 0 ,
                } 
 
   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 
http://forums.rpgmakerweb.com/in ... -nasty-extra-stats/