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
[VX Ace]Yami Symphony multiple Holder's sprites for a character
● ARCHIVED · READ-ONLY
-
-
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. -
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? -
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. -
BUMP
-
BUMP
-
BUMP
-
BUMP
-
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.
Spoiler#===============================================================================# 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? -
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.
-
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.
Spoiler#===============================================================================# 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#===============================================================================Spoiler
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? -
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.
SpoilerCode:#=============================================================================== # 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 #=============================================================================== -
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) -
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.
Haven't been able to replicate the escaping freeze, not part of yanfly(as far as I can tell).Spoiler#===============================================================================# 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#=============================================================================== -
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 -
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?
-
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.
-
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? -
up!
-
Selchar, your Holder battle addon is amazing and does eactly what I'd like it to do :D