Is this possible?
I can't use crystal extra stats viewing inventory with an item equipped causes issues.
Ace Equip engine
Kread-EX Actor Inventory and Item Charges
Two rows for nasty extra stats
● ARCHIVED · READ-ONLY
-
-
While I am not a VXAce scripter, let me suggest that you provide additional content. The best would be to provide links to the current scripts in which you need assistance. This way, an experienced VXAce scripter may be able to give you aid. Not everyone would be familiar with these works.
Say HI to my friend Kread-Ex. ;) -
Try this
Multiple rowsCode:#=============================================================================== # 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 sheep, and added enemies xstats for Enemies! # - Version 1.0 - Initial release, made for the sheep of it :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 sheep out of it! # # Multiple rows addon by Roninator2 with guidance from Night_Runner # # Added increasing stats # Script Calls: # change_xstat(actor_id, stat, value) # Alter the specified stat by the specifed # value. Can be either positive or negative. # e.g. change_xstat(1, :str, 10) #=============================================================================== module Z26 STATS = [:str,:con,:dex,:int,:wis,:cha,:spd,:div,:hth] #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', :spd => '(level/10.5) + 10', :div => '(level/10.5) + 10', :hth => '(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 Game_Interpreter #-------------------------------------------------------------------------- # * Modify an Extra Stat #-------------------------------------------------------------------------- def change_xstat(id, stat, value) $game_actors[id].xstat[stat] += value end end ############################################################## class Window_Status < Window_Selectable def draw_block3(y) draw_parameters(0, y) draw_equipments(self.contents.width-172, y) draw_xstat_parameters(stat_widths / 0.9, y) end def draw_xstat_parameters(x, y) dy = 0 @actor.xstat.size.times {|i| draw_actor_xstat_param(@actor, x, y + line_height * i, i) #} dy += line_height if dy > 120 dy = 0 y -= line_height * (i + 1) x += stat_widths / 0.9 end } end #-------------------------------------------------------------------------- # * Draw Parameters #-------------------------------------------------------------------------- def draw_actor_param(actor, x, y, param_id) change_color(system_color) draw_text(x, y, stat_widths, line_height, Vocab::param(param_id)) change_color(normal_color) draw_text(x + stat_widths-36, y, 36, line_height, actor.param(param_id), 2) 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) draw_text(x + stat_widths-36, y, 36, line_height, eval("actor.xstat.#{id}"), 2) end def stat_widths wind_wid = self.contents.width xstat_cols = (Z26::STATS.length + 5) / 6 return (((wind_wid - 172) / (xstat_cols + 1))*0.9).to_i 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 -
Crystal Engine – Extra Stats Script line 314: NoMethodError occurred, so I have
Yanfly Engine Ace – Ace Equip Engine v1.06 with Kread-EX’s Actor Inventory Version 1.11 and Item charges Version 1.05 installed in that order. everything works fine until I equip an item then click on status then I get the script error.I did test this with the N.A.S.T.Y. Extra Stats Version 1.1 by Nelderson and it was able to display the stats with out giving me the error.
https://grimoirecastle.wordpress.com/rgss3-scripts/gameplay-scripts/actor-inventory/
https://grimoirecastle.wordpress.com/rgss3-scripts/gameplay-scripts/item-charges/
https://github.com/Archeia/Kread-Ex-Scripts/tree/master/RGSS3 Scripts
also is there a way to add extra stats with a script call with Nelderson's version? IE having a skill/spell add a stat gain when it is used... -
Made changes to my script post above.