RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Syns Actor Customization

0 Members and 1 Guest are viewing this topic.

**
Rep:
Level 88
What is it?

  Do you want a system where you can let the player decide what they specialize in? As in, the player 'upgrades' their stats based upon the points provided? If so, Synthesizes Actor Customization is for you! The script allows players to upgrade the stats of their party based on the amount of upgrade points that the have. Popular among most commercial Online Role Playing Games.

What is new?

 Creating a skin has never been so easy! In the previous versions you had constant trouble trying to create your own skin that you like, not no more. With a new customization section the entire skin stands before your eyes in a very easy to edit basis. Before it could take hours to create a nice looking skin, now you can get a basic skin in almost half the time!

Feature List
- Turn various controls of the script ON/OFF
- Adjust Numerical Values of Statistics quick and easy
- Code is much cleaner then before
- Create new skins in a snap!
- Auto Statistics feature! Allow the computer to place your points for you!
More...

Screen shots:


In older versions, it never displayed if the stats goes up or not. Now it does. You can also choose weather to display the map or not.

Only one screen this time. Since most of the improvements were made on the script itself. I was mainly focused on getting a system set-up where those with not a lot of RGSS can create their own unique and fun skins. I think I accomplished that.

The Script:



Name Scene_Upgrade
Code: [Select]

#--------------------------------------------------------------------------------
# kS System - Upgrade System V3.5
# kS System - Customize System V1.0
# Created by Synthesize
# Add point on level-up: IcedMetal57
# Help from Raziel & Trickster
#--------------------------------------------------------------------------------
#==========================================================================
# Begin Customization Section.
# Only Edit the Customization Section. Leave the rest of the script alone.
#==========================================================================
#------------------------------------------------------------------                                                                                                 
# Begin System Customization
# You handle what features you would like turned ON or OFF.
#------------------------------------------------------------------
$automatic_stats = true # Turn Auto Stats on or off. True = ON. False = OFF
$show_mapbg = true # Turn the Map BackGround ON or OFF. True = ON (Not Recommended). False = OFF
Display_points = true # Show the Point Window? True = YES. False = NO
$actor_swap = true # Allow player to swap actors? True = YES. False = NO
Swap_right = Input::R # Button used to Swap Actors
Swap_left = Input::L # Button used to Swap Actors
Auto_distribute = Input::X # Button used to automatically distribute stats
Points_Gained = 3 # Points gained on level-up.
#------------------------------------------------------------------
#------------------------------------------------------------------
# Skin Customization
# This is where the skin is created.
#------------------------------------------------------------------
# Command Window
Command_x = 300 # Change the X location of the command window
Command_y = 110 # Change the Y location of the command window
Command_opacity = 150 # Change the opacity of the command window
#------------------------------------------------------------------
# Status (Raise) Screen Values
Raise_x = 300 # Change the X values for the Raise Window
Raise_y = 50 # Change the Y for the Raise window
Raise_opacity = 150 # Change the values of Raise opacity
#------------------------------------------------------------------
# Status (Invalid) Screen Values
Error_x = 300 # Change Error X Values
Error_y = 50 # Change Errors Y values
Error_opacity = 150 # Change Errors Opacity
#------------------------------------------------------------------
# Point Stock Screen Values
Points_x = 300 # Change Points X Values
Points_y = 350 # Change Points Y values
Points_opacity = 150 # Change Points Opacity
#------------------------------------------------------------------
# Actor Screen Values
$auto_x = 500 # Adjust Auto Text X Values
$auto_y = 875 # Adjust Auto Text Y Values
$swap_x = 400 # Adjust Swap Text X Values
$swap_y = 875 # Adjust Swap Text Y Values
Status_x = 0 # Adjust Status X Values
Status_y = 0 # Adjust Status Y Values
Status_opacity = 200 # Adjust Status Opacity Values
$super_w = 640 # Change Actor Status Width
$super_h = 480 # Change Actor Status Height
#------------------------------------------------------------------
#------------------------------------------------------------------
# Begin Value Customization
# Here you handle what values to increase.
#------------------------------------------------------------------
# Change these Values to what you want the values to add to that max stat.
$point_count = 3 # Set the Starting Point Count
Hp_raise = 10 # Set the amount of HP to Raise
Sp_raise = 10 # Set amount of SP to raise
Str_raise = 1 # Set amount of STR to Raise
Dex_raise = 1 # Set amount of Dex to Raise
Agi_raise = 1 # Set amount of Agility to Raise
Int_raise = 1 # Set amount of Intellegence to Raise
$points_used = 0 # The amount of points used, Do not Change.
Points_used_raise = 1 # The amount the $points_used increases with each point used
# --------------------------------------------------------------------------------------
#------------------------------------------------------------------
# Text Customization
# Change what the Commands say
#------------------------------------------------------------------
Hp_text = "HP"
Sp_text = "SP"
Str_text = "Strength"
Dex_text = "Dexterity"
Agi_text = "Agility"
Int_text = "Intellegence"
Increase_by = "Increase"
#==================================================================================
# END CUSTOMIZATION
# Leave everything below this point alone!!!
#==================================================================================



#------------------------------------------------------------------
# Command Save
# Handles Save and Load Functions
#------------------------------------------------------------------
#============================================================
# If a script requires the use of saving to a savile file simply:
# Add         Marshal.dump(variable, file) in the Scene_Save class and:
#  $variable = Marshal.load(file)
#============================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # * Change EXP
  #     exp : new EXP
  #--------------------------------------------------------------------------
  def exp=(exp)
    @exp = [[exp, 9999999].min, 0].max
    # Level up
    while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
      @level += 1
      $point_count += Points_Gained
      # Learn skill
      for j in $data_classes[@class_id].learnings
        if j.level == @level
          learn_skill(j.skill_id)
        end
      end
    end
    # Level down
    while @exp < @exp_list[@level]
      @level -= 1
    end
    # Correction if exceeding current max HP and max SP
    @hp = [@hp, self.maxhp].min
    @sp = [@sp, self.maxsp].min
  end
end

class Scene_Save < Scene_File
    def write_save_data(file)
 characters = []
    for i in 0...$game_party.actors.size
      actor = $game_party.actors[i]
      characters.push([actor.character_name, actor.character_hue])
    end
    Marshal.dump(characters, file)
    Marshal.dump(Graphics.frame_count, file)
    $game_system.save_count += 1
    $game_system.magic_number = $data_system.magic_number
    Marshal.dump($game_system, file)
    Marshal.dump($game_switches, file)
    Marshal.dump($game_variables, file)
    Marshal.dump($game_self_switches, file)
    Marshal.dump($game_screen, file)
    Marshal.dump($game_actors, file)
    Marshal.dump($game_party, file)
    Marshal.dump($game_troop, file)
    Marshal.dump($game_map, file)
    Marshal.dump($game_player, file)
    Marshal.dump($point_count, file)
    Marshal.dump($points_used, file)   
  end
end

class Scene_Load < Scene_File
    def read_save_data(file)
    characters = Marshal.load(file)
    Graphics.frame_count = Marshal.load(file)
    $game_system        = Marshal.load(file)
    $game_switches      = Marshal.load(file)
    $game_variables     = Marshal.load(file)
    $game_self_switches = Marshal.load(file)
    $game_screen        = Marshal.load(file)
    $game_actors        = Marshal.load(file)
    $game_party         = Marshal.load(file)
    $game_troop         = Marshal.load(file)
    $game_map           = Marshal.load(file)
    $game_player        = Marshal.load(file)
    $point_count = Marshal.load(file)
    $points_used = Marshal.load(file)
    if $game_system.magic_number != $data_system.magic_number
      $game_map.setup($game_map.map_id)
      $game_player.center($game_player.x, $game_player.y)
    end
  end
end 


#============================================================
# Begin Windows
#============================================================
#--------------------------------------------------------------------------
# Random Window
#--------------------------------------------------------------------------
class Window_Raise< Window_Base
  def initialize
    super(0, 0, 240, 60)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Arial" # Font used in Points Window
    self.contents.font.size = 22 # Font Size in Points Window
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    # Display text in the Point Window
  if $random_stat == 0
  self.contents.draw_text(4, 0, 200, 30, "HP Has been Raised by #{Hp_raise}")
elsif $random_stat == 1
    self.contents.draw_text(4, 0, 200, 30, "SP Has been Raised by #{Sp_raise}")
elsif $random_stat == 2
  self.contents.draw_text(4, 0, 200, 30, "Str. Has been Raised by #{Str_raise}")
elsif $random_stat == 3
  self.contents.draw_text(4, 0, 200, 30, "Dex. Has been Raised by #{Dex_raise}")
elsif $random_stat == 4
  self.contents.draw_text(4, 0, 200, 30, "Agi. Has been Raised by #{Agi_raise}")
elsif $random_stat == 5
  self.contents.draw_text(4, 0, 200, 30, "Int. Has been Raised by #{Int_raise}")
  end
  end
end
#--------------------------------------------------------------------------
# Points Window
#--------------------------------------------------------------------------
class Window_Points< Window_Base
  def initialize
    super(0, 0, 160, 60)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Arial" # Font used in Points Window
    self.contents.font.size = 22 # Font Size in Points Window
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    # Display text in the Point Window
    self.contents.draw_text(4, 0, 120, 32, "Points:")
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 80, 32, $point_count.to_s, 2)
  end
end
 #----------------------------------------------------------------------
 # Error Status Window
 #----------------------------------------------------------------------
class Window_Error< Window_Base
  def initialize
    super(0, 0, 240, 60)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Arial" # Font used in Points Window
    self.contents.font.size = 22 # Font Size in Points Window
    refresh
  end
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(4, 0, 200, 30, "Not Enough Stat Points.") # Display text in the Error Window
  end
end

#============================================================
# Begin Upgrade Script
#============================================================

class Scene_Upgrade
  #--------------------------------------------------------------------------
  # Object Initalize
  #--------------------------------------------------------------------------
  def initialize(actor_index = 0)
    @actor_index = actor_index
  end
  #--------------------------------------------------------------------------
  # Main Processing
  #--------------------------------------------------------------------------
  def main
    file = File.open("Data/Point_Count.rxdata", "w")
    Marshal.dump($point_count, file)
    if $show_mapbg == true
    @spriteset = Spriteset_Map.new
  end
    # Begin Upgrade Commands
    s1 = "#{Increase_by} #{Hp_text}: #{Hp_raise}"
    s2 = "#{Increase_by} #{Sp_text}: #{Sp_raise} "
    s3 = "#{Increase_by} #{Str_text}: #{Str_raise}"
    s4 = "#{Increase_by} #{Dex_text}: #{Dex_raise}"
    s5 = "#{Increase_by} #{Agi_text}: #{Agi_raise}"
    s6 = "#{Increase_by} #{Int_text}: #{Int_raise}"
    @command_window = Window_Command.new(260, [s1, s2, s3, s4, s5, s6])
    # Set Player Data
    @actor = $game_party.actors[@actor_index]
    @status_window = Window_CustomStatus.new(@actor)
    @status_window.opacity= Status_opacity
    @status_window.x = Status_x
    @status_window.y = Status_y
    # Set Command Window Data
    @command_window.x = Command_x
    @command_window.y = Command_y
    @command_window.z = 103
    @command_window.opacity = Command_opacity
  # Set Raise Window Data
    @raise_window = Window_Raise.new
    @raise_window.x = 300
    @raise_window.y = 50
    @raise_window.opacity = Raise_opacity
    # Set Stat Points Window
    @new_window = Window_Points.new
    @new_window.opacity= Points_opacity
    @new_window.x = Points_x
    @new_window.y = Points_y
    if Display_points == true
    @new_window.visible = true
  else
    @new_window.visible = false
    end
    # Graphics Transition
    Graphics.transition
    # Main Loop
    loop do
      # Update Graphics
      Graphics.update
      # Update Input
      Input.update
      # Renew
      update
      # Discontinue Loop
      if $scene != self
        break
      end
    end
    # Prepare Transition
    Graphics.freeze
    # Dispose Windows
    @command_window.dispose
    @new_window.dispose
    @status_window.dispose
    @raise_window.dispose
    if @spriteset != nil
      @spriteset.dispose
      end
    if @error_window != nil
      @error_window.dispose
    end
  end
  #--------------------------------------------------------------------------
  # Window Update
  #--------------------------------------------------------------------------
  def update
    if Input.trigger?(Swap_right)
    if $actor_swap == true
      $game_system.se_play($data_system.cursor_se)
      @actor_index += 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Upgrade.new(@actor_index)
      end
      return
    end
    if Input.trigger?(Swap_left)
      if $actor_swap == true
      $game_system.se_play($data_system.cursor_se)
      @actor_index += $game_party.actors.size - 1
      @actor_index %= $game_party.actors.size
      $scene = Scene_Upgrade.new(@actor_index)
      end
      return
    end
    if Input.trigger?(Auto_distribute)
      if $automatic_stats == true
     $random_stat = rand(6)
     if $random_stat == 0
      if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.maxhp += Hp_raise
          $point_count -= 1
          $points_used += Points_used_raise
          @raise_window.visible = true
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
            @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            return
          end
         end
       end
    if $random_stat == 1
      if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.maxsp += Sp_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    @raise_window.visible = true
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            return
          end
         end
          end
    if $random_stat == 2
      if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.str += Str_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    @raise_window.visible = true
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            return
          end
         end
       end
    if $random_stat == 3
      if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.dex += Dex_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    @raise_window.visible = true
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            return
          end
         end
      end
    if $random_stat == 4
      if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.agi += Agi_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    @raise_window.visible = true
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            return
          end
        end
        end
    if $random_stat == 5
      if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.int += Int_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    @raise_window.visible = true
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            end
            return
          end
         end
      end
      return
    end
    # Update Window
    @command_window.update
    @status_window.update
    # When Command Window Active
    if @command_window.active
      update_command
      return
    end
    if @status_window.active
      update_status
      return
    end
  end
  #--------------------------------------------------------------------------
  # ? When frame renewal (the command window is active)
  #--------------------------------------------------------------------------
  def update_command
    # When Button B is Pushed...
    if Input.trigger?(Input::B)
      # Play Cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Load Map
      $scene = Scene_Map.new
      return
    end
    # When C is Pushed
    if Input.trigger?(Input::C)
      # Collect Cursor Position
      case @command_window.index
      # Activate Desired Command
      when 0
        if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.maxhp += Hp_raise
          $point_count -= 1
          $points_used += Points_used_raise
          $random_stat = 0
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                                        @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            return
          end
        end
      when 1
        if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.maxsp += Sp_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    $random_stat = 1
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                            @raise_window.visible = false
          @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
          return
        end
      end
      when 2
        if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.str += Str_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    $random_stat = 2
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                            @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            return
          end
        end
      when 3
        if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.dex += Dex_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    $random_stat = 3
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                            @raise_window.visible = false
          @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
          return
          end
        end
      when 4
        if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.agi += Agi_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    $random_stat = 4
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                            @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            return
          end
        end
      when 5
        if $point_count >= 1
          $game_system.se_play($data_system.shop_se)
          @actor.int += Int_raise
          $point_count -= 1
                    $points_used += Points_used_raise
                    $random_stat = 5
          $scene = Scene_Upgrade.new
        else
          $game_system.se_play($data_system.buzzer_se)
          if @error_window ==nil
                            @raise_window.visible = false
            @error_window = Window_Error.new
            @error_window.opacity= Error_opacity
            @error_window.x = Error_x
            @error_window.y = Error_y
            return
          end
        end
      end
      return
    end
  end
  end
#=============================================================
# End Script
# Created by Synthesize.
# V3.0 Exclusive ONLY to:
# Symptco Designs
# RPG RPG Revolution
# Netplay Plus™ Forums.
# Creation Asylum
# Rpg Underground
# hbgames.org
#=============================================================


Call Window_CustomStatus

Code: [Select]
#--------------------------------------------------------------------------------
# Created by Synthesize
# Based from Default Scene_Menu
#--------------------------------------------------------------------------------
class Window_CustomStatus < Window_Base

  def initialize(actor)
    super(0, 0, $super_w, $super_h)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = "Arial"
    self.contents.font.size = 22
    @actor = actor
    refresh
  end
  def refresh
    self.contents.clear
    draw_actor_graphic(@actor, 40, 112)
    draw_actor_name(@actor, 4, 0)
    draw_actor_class(@actor, 4 + 144, 0)
    draw_actor_level(@actor, 96, 32)
    draw_actor_state(@actor, 96, 64)
    draw_actor_hp(@actor, 96, 112, 172)
    draw_actor_sp(@actor, 96, 144, 172)
    draw_actor_parameter(@actor, 96, 192, 0)
    draw_actor_parameter(@actor, 96, 224, 1)
    draw_actor_parameter(@actor, 96, 256, 2)
    draw_actor_parameter(@actor, 96, 304, 3)
    draw_actor_parameter(@actor, 96, 336, 4)
    draw_actor_parameter(@actor, 96, 368, 5)
    draw_actor_parameter(@actor, 96, 400, 6)
    if $automatic_stats == true
    self.contents.draw_text($auto_x, 0, 600, $auto_y, "X: Auto Stats")
  end
  if $actor_swap == true
   self.contents.draw_text($swap_x, 0, 600, $swap_y, "L: <- R: ->")
  end
   end
end
Customization
  Only edit the first 74 lines of Scene_Upgrade. Since those lines handle everything in the script itself. It is all pretty heavily commented so you should not have any trouble understanding. The sections are also organized accordingly but I will do a breif run-down.

Quote
# Begin System Customization
In this section you can choose what features you want on/off. True means it is on while false means it is off.

Quote
# Skin Customization
This is the section where you can build your skin. You change the X and Y of windows and place them where you want. Note: This does not handle Parameters requests. It will in a later version.

Quote
# Begin Value Customization
Nothing changed here, adjust the values by the amount you want each stat to rise.

Questions/concerns? Please feel free to post them.

Synthesize.
« Last Edit: January 08, 2007, 03:01:44 PM by Synthesize »

**
Rep: +0/-0Level 82
So how exactly do you insert this and have it call up when you level?