The RPG Maker Resource Kit

RMRK RPG Maker Creation => RPG Maker General => General Scripting => Topic started by: Irgna on February 20, 2007, 02:23:23 AM

Title: Paperdoll Script [RESLOVED]
Post by: Irgna on February 20, 2007, 02:23:23 AM
I need a script that will "paste" charsets over my characters. I need it so that it will affect both the charsets and battlers. I need it to work with hats, armors, and accesories seperately. Thanks in advance.
Title: Re: Paperdoll Script
Post by: :) on February 20, 2007, 03:14:12 AM
events...

conditional branch: Armor___ equipped.
  - Change character graphic: ____
Title: Re: Paperdoll Script
Post by: Morris Lawry on February 20, 2007, 07:22:50 AM
He means, like without the 100000+ Sprites, like a generated one. I dont think its possible
Title: Re: Paperdoll Script
Post by: Irgna on February 20, 2007, 06:57:30 PM
I don't see why not, there are similar scripts in existance.
Title: Re: Paperdoll Script
Post by: italianstal1ion on February 20, 2007, 11:02:33 PM
Retaime's nice and easy to understand. It doesn't cover battlers though...I would try making some battler edits and seeing if you can even do all that work.

All pics go in CharacterSets folder
#==============================================================================
# ? Visual_Equipment
# Written by Rataime
#
# Edit below
#
# Note : If you have a custom Window_SaveFile, check the one at the end of the script,
# add the added lines to yours, and delete the whole Window_SaveFile class here
#==============================================================================
def equip_update(light=false)

$visual_equipment=Array.new
$visual_equipment[0]=light
for i in 0..3
  $visual_equipment[i+1]=[]
end

#===================================================
# ? EDIT HERE !
#===================================================   

#If weapon n°33 is equiped, add the charset tpl_helmet_1.png (I don't have a weapon charset ><)
#add_weapon_sprite(33,"tpl_helmet_1")

#If weapon n°6 is equiped, add the charset tpl_helmet_1.png
add_armor_sprite(6,"tpl_helmet_1")

add_armor_sprite(7,"tpl_helmet_2")
add_armor_sprite(20,"tpl_armor_white")
add_armor_sprite(15,"tpl_armor_blue")
add_armor_sprite(21,"tpl_armor_cape")

#===================================================
# ? Visual_equip functions
#===================================================
    RPG::Cache.clear
    @game_party = $game_party
    @game_party = $game_party2 if $visual_equipment[0]
    for i in 0...@game_party.actors.size
      for img in $visual_equipment[i+1]
        bitmap = RPG::Cache.character(@game_party.actors[i].character_name, @game_party.actors[i].character_hue)
        if img!=true and img!=false
          add_equip(bitmap,img,i)
        end
      end
    end
end

  def add_equip(sprite,to_add,character)
  @game_party = $game_party
  @game_party = $game_party2 if $visual_equipment[0]
  bmp = Sprite.new
  bmp.visible =false
  bmp.bitmap = RPG::Cache.character(to_add,@game_party.actors[character].character_hue)
  color = bmp.bitmap.get_pixel(0, 0)
  x=sprite.width
  y=sprite.height
  if $visual_equipment[0]
    x=x/4
    y=y/4
  end
  for i in 0..x
    for j in 0..y
      color_get=bmp.bitmap.get_pixel(i, j)
      if color_get!=color
        sprite.set_pixel(i, j ,color_get)
      end
    end
  end
 
  bmp=nil
 
  end

  def add_weapon_sprite(id,sprite)
    @game_party = $game_party
    @game_party = $game_party2 if $visual_equipment[0]
    for i in 0...@game_party.actors.size
      if @game_party.actors[i].weapon_id==id
        $visual_equipment[i+1].push(sprite)
      end
    end
  end

  def add_armor_sprite(id,sprite)
    @game_party = $game_party
    @game_party = $game_party2 if $visual_equipment[0]
    for i in 0...@game_party.actors.size
      if @game_party.actors[i].armor1_id==id or @game_party.actors[i].armor2_id==id or @game_party.actors[i].armor3_id==id or @game_party.actors[i].armor4_id==id
        $visual_equipment[i+1].push(sprite)
      end
    end
  end

#===================================================
# ? CLASS Scene_Equip edit
#===================================================

class Scene_Equip
 
  alias visual_update_right update_right
 
  def update_right
    if Input.trigger?(Input::B)
      equip_update
      $game_system.se_play($data_system.cancel_se)
      $scene = Scene_Menu.new(2)
      return
    end
    visual_update_right
  end
         
end

class Interpreter

  alias visual_command_319 command_319
 
  def command_319
    actor = $game_actors[@parameters[0]]
    if actor != nil
      actor.equip(@parameters[1], @parameters[2])
    end
    equip_update
    return true
  end
 
end

class Game_Character
  attr_accessor :character_hue
end

class Game_Actor < Game_Battler
alias visual_setup setup
  def setup(actor_id)
    visual_setup(actor_id)
    @character_hue = (@character_hue+1)%256
  end
end

class Scene_Load
  alias visual_read_save_data read_save_data
  alias visual_on_cancel on_cancel
 
  def on_cancel
    equip_update
    visual_on_cancel
  end
 
  def read_save_data(file)
    visual_read_save_data(file)
    equip_update
  end
end

class Scene_Save
  alias visual_on_decision on_decision
  alias visual_on_cancel on_cancel
 
  def on_cancel
    equip_update
    visual_on_cancel
  end
 
  def on_decision(file)
    equip_update
    visual_on_decision(file)
  end
end

class Scene_Title
  alias visual_command_new_game command_new_game
 
  def command_new_game
    visual_command_new_game
    equip_update
  end

end

class Window_SaveFile < Window_Base

  def initialize(file_index, filename)
    super(0, 64 + file_index % 4 * 104, 640, 104)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.contents.font.name = $fontface
    self.contents.font.size = $fontsize
    @file_index = file_index
    @filename = "Save#{@file_index + 1}.rxdata"
    @time_stamp = Time.at(0)
    @file_exist = FileTest.exist?(@filename)
    if @file_exist
      file = File.open(@filename, "r")
      @time_stamp = file.mtime
      @characters = Marshal.load(file)
      @frame_count = Marshal.load(file)
      @game_system = Marshal.load(file)
      @game_switches = Marshal.load(file)
      @game_variables = Marshal.load(file)
      @self_variables = Marshal.load(file)#added
      @game_screen = Marshal.load(file)#added
      @game_actors = Marshal.load(file)#added
      $game_party2=@game_party= Marshal.load(file)#added
      @total_sec = @frame_count / Graphics.frame_rate
      file.close
    end
    equip_update(true)#added
    refresh
    @selected = false
  end
 
end
Title: Re: Paperdoll Script
Post by: :) on February 20, 2007, 11:22:12 PM
you still need the pics dude...eventing would do the SAME thing as that script..but none the less good find rockey. (rockey = italianstalion) ;8
Title: Re: Paperdoll Script
Post by: Irgna on February 21, 2007, 12:08:16 AM
Thanks, man. Does this only work with armor, or hats as well?
Title: Re: Paperdoll Script
Post by: italianstal1ion on February 21, 2007, 02:59:09 AM
Quote from: Nouman on February 20, 2007, 11:22:12 PM
you still need the pics dude...eventing would do the SAME thing as that script..but none the less good find rockey. (rockey = italianstalion) ;8

rockey huh? *better than barfbag, I guess*  ;8

Well, with this it just layers over a piece of armor
ie;
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi92.photobucket.com%2Falbums%2Fl14%2Fitalianstal1ion%2Ftpl_helmet_2.png&hash=6f9de238544e53125da64e1ab6407fccb15ae7aa)
Over the hero's sprite. Much easier and faster than actually editing the chracter's sprite over and over.

The script shows a pic over the regular sprite for ANY item that is equipped. No need to set each item as armor, accessory, etc.
Title: Re: Paperdoll Script
Post by: tSwitch on February 21, 2007, 06:39:25 PM
lol, you'll need a naked sprite of the character then.

looks like a really useful script though.