赞 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>
在武器或护甲的备注里按照如下格式填写可以让该装备增加对应属性:
范例,让装备增加5点‘str’属性:
调用属性:
$game_actors [ 1 ] .xstat .str
$game_actors [ 1 ] .xstat .str
范例,设置x技能的伤害公式为【人物的‘str’乘以5】:
----------------------------------------------------------分割线------------------------------------------------------------
脚本:
#===============================================================================
# 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/