[VX Ace]Yami Symphony multiple Holder's sprites for a character

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA
Hello, I have a question, is it possible a character can use more than one sprite?

For example, I have a character can equip books and scythes, so I'll need one sprite when he uses books and another when he uses scythes, is that possible with Yami Symphony? Please keep in mind I'm using Holder's battle sprites with Yami Symphony

Yami Symphony's script: https://github.com/suppayami/rmvxa-collection/blob/master/battle-symphony/Battle%20Symphony%20v1.16c.exe

Holder's add-on script: https://github.com/suppayami/rmvxa-collection/blob/master/battle-symphony/add-on/Holder-Battlers.rb

Thanks for you attention
 
Last edited by a moderator:

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,355
Reaction score
7,668
First Language
German
Primarily Uses
RMMV
Theoretically yes, but it's not easy.


You cannot do this with notetags as you need to dynamically change the datastructure of Symphony's Holder Add-ON, and that can only be done by script commands, and most probably you need a third script to even give you those commands.


Please link to both Symphony script and holder add-on script, that info is needed before anyone can check how to do this.
 

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA
Added

So, It is possible! Interesting... If it's possible via script call, that means I need to make a common event for every weapon type with this script call, right?
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,355
Reaction score
7,668
First Language
German
Primarily Uses
RMMV
I was talking about it being an option - now you need to wait until a scripter can tell you how much work it would be to create the neccessary comands, and how they would have to be used (most probably they can't use the notetag format).


But yes, they would need a script call for all specific changes. How that script call is given is another thing - it might be by common events or by other structures.
 

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA

Selchar

Veteran
Veteran
Joined
Dec 28, 2012
Messages
299
Reaction score
81
First Language
English
Primarily Uses
Sorry, would have expected seeing this under requests.  It's easy enough to do.  I've done it for classes, I've done it for states, guess I'm now doing it for weapon type?  It'll be based on the first equipped weapon type.

#===============================================================================# Script: Customizable Holder Battlers# Author: Selchar# Requestor: Piers# Credits: Yami#================================================================================beginThis is an extention of Yami's Holder Battler addon for Battle Engine Symphony.It allows for different battlers based on the equipped weapon type.#-------------------------------------------------------------------------------# Actor Notetag#-------------------------------------------------------------------------------<wtype holder battler wtype: filename>Examples:<wtype holder battler 4: Aluxis_Sword>=end#===============================================================================# The script#===============================================================================$imported ||= {}unless $imported["BattleSymphony-HB"]  msgbox('Symphony Holder Add-On not detected, exiting')  exitend module Selchar  module Symphony    #Can't get the amount in the database, so use this if you have more than 10    WType_Count = 10        def self.holder_wtype(wtype_id)      /<wtype[-_ ]?holder[-_ ]?battler[-_ ]?#{wtype_id}:\s*(.*)\s*>/i    end  endend class Game_Actor < Game_Battler  def holders_name    wtype = sel_get_weapon_type    return actor.wtype_holder_name(wtype) if actor.wtype_holder_name(wtype)    return actor.holders_name  end    def sel_get_weapon_type(slot = 0)    a = weapons[slot]    return nil unless a    return a.wtype_id  endend class RPG::Actor  def wtype_holder_name(wtype_id)    if @wtype_holder_name.nil?      @wtype_holder_name = {}      Selchar::Symphony::WType_Count.times do |i|        @wtype_holder_name = $1 if @note =~ Selchar::Symphony.holder_wtype(i)      end    end    @wtype_holder_name[wtype_id]  endend#===============================================================================# End of File#===============================================================================

This good enough for you?
 
Last edited by a moderator:

Zetu

Level 99 Stabomancer
Veteran
Joined
Apr 28, 2012
Messages
247
Reaction score
99
First Language
English
Primarily Uses
N/A
I remember creating a script for this. I can't remember for which system it was... I'll see if I can dig through time and find it.
 

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA
Sorry, would have expected seeing this under requests.  It's easy enough to do.  I've done it for classes, I've done it for states, guess I'm now doing it for weapon type?  It'll be based on the first equipped weapon type.

#===============================================================================# Script: Customizable Holder Battlers# Author: Selchar# Requestor: Piers# Credits: Yami#================================================================================beginThis is an extention of Yami's Holder Battler addon for Battle Engine Symphony.It allows for different battlers based on the equipped weapon type.#-------------------------------------------------------------------------------# Actor Notetag#-------------------------------------------------------------------------------<wtype holder battler wtype: filename>Examples:<wtype holder battler 4: Aluxis_Sword>=end#===============================================================================# The script#===============================================================================$imported ||= {}unless $imported["BattleSymphony-HB"]  msgbox('Symphony Holder Add-On not detected, exiting')  exitend module Selchar  module Symphony    #Can't get the amount in the database, so use this if you have more than 10    WType_Count = 10        def self.holder_wtype(wtype_id)      /<wtype[-_ ]?holder[-_ ]?battler[-_ ]?#{wtype_id}:\s*(.*)\s*>/i    end  endend class Game_Actor < Game_Battler  def holders_name    wtype = sel_get_weapon_type    return actor.wtype_holder_name(wtype) if actor.wtype_holder_name(wtype)    return actor.holders_name  end    def sel_get_weapon_type(slot = 0)    a = weapons[slot]    return nil unless a    return a.wtype_id  endend class RPG::Actor  def wtype_holder_name(wtype_id)    if @wtype_holder_name.nil?      @wtype_holder_name = {}      Selchar::Symphony::WType_Count.times do |i|        @wtype_holder_name = $1 if @note =~ Selchar::Symphony.holder_wtype(i)        p $1      end    end    @wtype_holder_name[wtype_id]  endend#===============================================================================# End of File#===============================================================================


This good enough for you?


It's not working, the wtype 1 in my game is sword, the 4 is a bow, so I put those tags

<wtype holder battler 1: Test_sword>

<wtype holder battler 4: Test_bow>

 

Of course, with the proper sprites in the Character folder, and... It doesn't show the Holder's sprite, it shows the default one, as if I were not using the Holder's add-on

 

Can you help me with that one? Thanks a lot for the help

 

P.D: You have made that for states, right? Can you mix both funcionalities? Like if the character is using a Bow and has the zombie state, it'll be displayed like X sprite? And... Can you make a different sprite is displayed when the character has not any weapon eqquiped?
 
Last edited by a moderator:

Selchar

Veteran
Veteran
Joined
Dec 28, 2012
Messages
299
Reaction score
81
First Language
English
Primarily Uses
1: You need to also use the default holder notetag, <holders_battler: name>, that itself enables the holder style in the first place.  You can also think of that as the 'bare handed' sprite.

 

2: I just noticed I left a p statement on line 57 that should have been deleted.  I fixed it in the above post.

 

3: Other than having state specific holder sprites(it's linked to the state, so would be the same for everyone), literally combining it with weapon type/state combo(zombie archer?) might be a bit too much work.  Regardless here's my State version, place it below my weapon type variant.

Code:
#===============================================================================
# Script: Symphony Holder Graphic change by State
# Author: Selchar
# Requestor: Slasherzeta
# Credits: Yami
#===============================================================================
=begin
This is an extention of Yami's Holder Battler addon for Battle Engine Symphony.
It allows for different battlers based on states
 
#-------------------------------------------------------------------------------
# State
#-------------------------------------------------------------------------------
<state holder battler: filename>
 
=end
#===============================================================================
# The script
#===============================================================================
$imported ||= {}
unless $imported["BattleSymphony-HB"]
  msgbox('Symphony Holder Add-On not detected, exiting')
  exit
end
 
class Game_Actor < Game_Battler
  alias :sel_state_holders_name :holders_name
  def holders_name
    return state_holder_name? if state_holder_name?
    return sel_state_holders_name
  end
  
  def state_holder_name?
    states.each {|i| return i.state_holder_name if i.state_holder_name}
    return false
  end
end
 
class Game_Enemy < Game_Battler
  alias :sel_state_holders_name :holders_name
  def holders_name
    return state_holder_name? if state_holder_name?
    return sel_state_holders_name
  end
  
  def state_holder_name?
    states.each {|i| return i.state_holder_name if i.state_holder_name}
    return false
  end
end
 
class RPG::State
  def state_holder_name
    if @state_holder_name.nil?
      if self.note =~ /<state[-_ ]?holder[-_ ]?battler:\s*(.*)\s*>/i
        @state_holder_name = $1
      else
        @state_holder_name = false
      end
    end
    @state_holder_name
  end
end
#===============================================================================
# End of File
#===============================================================================
 

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA
Well, I'll understand if you can't make the mix of state and weapon style, but it'd be kinda strange seeing the sprite of a guy equiped with a sword in zombie state when he has equiped a bow lol so if you can make a script can make that I'd be really glad

Anyways, the script works, but there is something odd... When I try to escape for a battle, the game freezes, that only happens when I use your script, can you fix that, please?

EDIT: That's bizarre, now it freeze sometimes when I try to run for the battle, even without your script (I'm using Yanfly's battle engine too btw)
 
Last edited by a moderator:

Selchar

Veteran
Veteran
Joined
Dec 28, 2012
Messages
299
Reaction score
81
First Language
English
Primarily Uses
I just tried with only symphony, symphony holder, and my two scripts and I didn't get any freezing/errors.  Is there another script you have that might have something to do with escaping?

On further reflection what you asked in regards to a state/weapon type combo might be easier than I thought, I just have to figure out one small detail and do some tests.

Edit: Finally tracked down a typo that delayed this update.  The following will do as you request, weapon type specific actor batters, state variants of weapon type battlers, and you can use 0 as your wtype id for barehanded(you still need the default holder notetag).  The following is to be used instead of the ones posted in my previous posts.

#===============================================================================# Script: Weapon Type/State Holder Add-on# Author: Selchar# Requestor: Piers# Credits: Yami#================================================================================beginThis is an extention of Yami's Holder Battler addon for Battle Engine Symphony.It allows for different battlers based on the equipped weapon type.#-------------------------------------------------------------------------------# Actor Notetag#-------------------------------------------------------------------------------<wtype holder battler wtype: filename>Examples:<wtype holder battler 4: Aluxis_Sword> <wstate holder battler wtype-state_id: filename>Examples:<wstate holder battler 4-7: Zom_Alux_Sword><wstate holder battler 0-7: Zom_Alux_Barehanded>=end#===============================================================================# The script#===============================================================================$imported ||= {}unless $imported["BattleSymphony-HB"]  msgbox('Symphony Holder Add-On not detected, exiting')  exitend module Selchar  module Symphony    #Can't get the amount in the database, so use this if you have more than 10    WType_Count = 10        def self.holder_wtype(wtype_id)      /<wtype[-_ ]?holder[-_ ]?battler[-_ ]?#{wtype_id}:\s*(.*)\s*>/i    end        def self.holder_wstate(wtype_id, state_id)      /<wstate[-_ ]?holder[-_ ]?battler[-_ ]?#{wtype_id}-#{state_id}:\s*(.*)\s*>/i    end  endend class Game_Actor < Game_Battler  def holders_name    wtype = sel_get_weapon_type    return wstate_holder_name?(wtype) if wstate_holder_name?(wtype)    return actor.wtype_holder_name(wtype) if actor.wtype_holder_name(wtype)    return actor.holders_name  end    def sel_get_weapon_type(slot = 0)    a = weapons[slot]    return nil unless a    return a.wtype_id  end    def wstate_holder_name?(wtype)    states.each do |i|      return actor.wstate_holder_name(wtype, i.id) if actor.wstate_holder_name(wtype, i.id)    end    return false  endend class RPG::Actor  def wtype_holder_name(wtype)    if @wtype_holder_name.nil?      @wtype_holder_name = {}      (Selchar::Symphony::WType_Count+1).times do |i|        @wtype_holder_name[i-1] = $1 if @note =~ Selchar::Symphony.holder_wtype(i-1)      end    end    wtype = 0 if wtype.nil?    @wtype_holder_name[wtype]  end    def wstate_holder_name(wtype, stateid)    if @wstate_holder_name.nil?      @wstate_holder_name = Hash.new {|hash, key| hash[key] = {} }      (Selchar::Symphony::WType_Count+1).times do |w|        @wstate_holder_name[w-1] = {}        $data_states.each do |s|          next unless s          if @note =~ Selchar::Symphony.holder_wstate(w-1, s.id)            @wstate_holder_name[w-1][s.id] = $1          end        end      end    end    wtype = 0 if wtype.nil?    @wstate_holder_name[wtype][stateid]  endend#===============================================================================# End of File#===============================================================================
Haven't been able to replicate the escaping freeze, not part of yanfly(as far as I can tell).
 
Last edited by a moderator:

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA
Well, thanks a lot for this script, it works really well, and well, I'm using the other add-ons of this sytem (skill effect tags, visual effect tags and enemy charset) so maybe they are related to this

Again, thank you for this script, that'll help a lot in my project
 

S.Court

Veteran
Veteran
Joined
Oct 17, 2012
Messages
394
Reaction score
98
First Language
Español
Primarily Uses
RMVXA
I have a doubt, what will happen when you have more then 1 state can change the sprite, will the priority of this one defines the sprite the character will have in battle?
 

Selchar

Veteran
Veteran
Joined
Dec 28, 2012
Messages
299
Reaction score
81
First Language
English
Primarily Uses
It loops through your current states and finds the first one that you added a notetag for the actor..  This check is done every frame I believe so long as the battler on the screen exists.  States have a priority system and, a quick look tells me that your states are sorted every time a new one is added.  The state with the highest priority and a corresponding notetag will be the one who's display is shown.
 

blamethepoet

Veteran
Veteran
Joined
Oct 30, 2014
Messages
38
Reaction score
3
First Language
Italian
Primarily Uses
Guys can I have a written example of this?

I mean let's say I want to change holder's batter for "actor one" when he equips "short sword"

let's say the new fiel I want to use is called "newfile.png"

I must add this in the character's notetag

<wtype newfile.png wtype: short_sword>

right?
 

BCj

Veteran
Veteran
Joined
Jun 19, 2014
Messages
1,731
Reaction score
929
First Language
Dutch
Primarily Uses
N/A
Selchar, your Holder battle addon is amazing and does eactly what I'd like it to do :D  
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

How many parameters is 'too many'??
Yay, now back in action Happy Christmas time, coming back!






Back in action to develop the indie game that has been long overdue... Final Fallacy. A game that keeps on giving! The development never ends as the developer thinks to be the smart cookie by coming back and beginning by saying... "Oh bother, this indie game has been long overdue..." How could one resist such? No-one c
So I was playing with filters and this looked interesting...

Versus the normal look...

Kind of gives a very different feel. :LZSexcite:
To whom ever person or persons who re-did the DS/DS+ asset packs for MV (as in, they are all 48x48, and not just x2 the pixel scale) .... THANK-YOU!!!!!!!!! XwwwwX

Forum statistics

Threads
105,849
Messages
1,016,981
Members
137,563
Latest member
cexojow
Top