Pagina 1 di 1
Hyper Combo backgrounds
#1
Inviato 06 June 2007 - 21:30
Ciao a tutti! ;)
Nobun, volevo sapere come applicare delle Hyper Combo backgrounds ai chars, ovvero gli sfondi speciali che compaiono quando un char esegue un hyper (un pò come Marvel Vs Capcom) ^_^
Che costanti devo utilizzare sul file common1.cns in modo che esca su tutti i chars? :huh:
Nobun, volevo sapere come applicare delle Hyper Combo backgrounds ai chars, ovvero gli sfondi speciali che compaiono quando un char esegue un hyper (un pò come Marvel Vs Capcom) ^_^
Che costanti devo utilizzare sul file common1.cns in modo che esca su tutti i chars? :huh:
#2
Inviato 09 June 2007 - 16:16
Mi scuso per il ritardo della risposta, ma fino ad ora non avevo avuto mai tempo sufficiente perché è una cosa un pochino lunghetta.
NOTA: Il sistema, così come suggerito, non può funzionare nei personaggi che usano un personale common1.cns. Per tali
personaggi (es. Gill) sarà quindi necessario inserire il codice direttamente nel CNS del personaggio oppure decidere di affiancare un file CNS aggiuntivo con queste istruzioni helper (scelta consigliata) aggiungendo una riga stX (x è un numero)
st9 = hyper_flash.cns
FASE 1: MODIFICA DEL COMMON1.CNS
Inseriamo un Helper in uno state inesistente. Io scelgo lo state 9999 che non credo venga mai usato.
I valori "value" potrebbero richiedere modifiche
[StateDef 9999]
type = S
movetype = I
physics = N
[State 9999, 0]
type = ChangeAnim
value = F9999
trigger1 = time = 0
[State 9999, Suono Finale]
type = PlaySnd
value = F7,0
trigger1 = ...
[State 9999, Flash]
type = Explod
id = 9999
anim = F7
ownpal = 1
pos = 0,0
postype = left
bindtime = -1
sprpriority = -3
trigger1 = ...
Se poi vuoi prolungare la durata della animazione puoi specificare nel comando explod anche il valore
removetime = 180
(o altro valore: il valore indica i tick di tempo -> 60 tick = 1 secondo).
Come vedi non ho specificato i trigger di due comandi... lo farò nella terza parte di questa spiegazione
FASE 2: MODIFICA DEI FILE DEGLI EFFETTI
Ora devi inserire gli effetti comuni (ovvero l'animazione BackGround e il suono da riprodurre con la hyper background) nei file degli effetti comuni (fightfx.sff, fightfx.air, common.snd)
Nel fightfx.sff devi inserire tutti i frame che compongono l'animazione di BackGround da visualizzare. Nel mio esempio li presuppongo inseriti nel gruppo 7 (da 7,1 a 7,..) Ovviamente se il gruppo è già utilizzato, scegline un altro.
ATTENZIONE: Perché funzioni correttamente la visualizzazione dell'effetto le immagini devono avere le dimensioni di 320x240 ed essere posizionate tutte a 0,0.
Nel fightfx.air devi definire l'animazione del BackGround sulla base dei frame prima inseriti in FightFx.sff. Come prima presupponiamo di creare una animazione [Begin Action 7]. Ovviamente se esiste scegli un altro valore e modifica di conseguenza il valore value = f7 dell'Explod (il valore della animazione preceduto da "F").
Sempre nel Fightfx.air devi definire la seguente animazione:
Infine nel common.snd bisogna aggiungere il suono da riprodurre con la hyper background. Nel mio esempio inserisco il suono in 7,0 ma se è un suono già utilizzato ovviamente devo scegliere un altro valore.
In tal caso devo modificare di conseguenza il valore value = f7,0 che ho specificato nel PlaySND (anche qui il valore a due parametri viene preceduto da una "F"
FASE 3: DEFINIZIONE DELLA CHIAMATA DELL'EFFETTO
Dopo aver programmato cosa succede quando l'effetto viene chiamato dobbiamo anche decidere con quali modalità effettivamente si andrà a chiamare l'effetto in questione.
Basiamoci su un metodo che si fonda sul principio che NORMALMENTE tutte le mosse hyper sono ricomprese nei valori da 3000 a 4999 (tale idea non è farina del mio sacco, ndr).
Questo metodo, però con alcuni personaggi potrebbe non funzionare (per quei rarissimi casi in cui l'autore non segue la numerazione consigliata dalla Elecbyte) e potrebbe anche non funzionare in determinate situazioni anche quando l'autore segue fedelmente la numerazione normale (per non complicarti la vita non ti sto a spiegare perché sennò rischio di farti fare confusione).
Per farti un esempio pratico credo che un caso in cui potrebbe non funzionare potrebbe capitare con Ranmaru quando colpisce con la hyper "Deioka" (il proiettile fatto da tanti triangolini).
Ora, seguendo quindi il criterio secondo cui le hyper sono ricomprese nei valori da 3000 a 4999 noi definiamo i trigger che avevamo lasciato in sospeso
il trigger "winko" si accerta che l'effetto venga eseguito se metti al tappeto l'avversario
il trigger "parent, stateno" controlla quale state sta eseguendo il genitore dell'helper (ovvero il char)
il parametro "persistent = 0" fa sì che i comandi vengano eseguiti SOLO UNA VOLTA (quindi quando si verificano le condizioni corrette i comandi si eseguono, ma dopo l'esecuzione non verranno reiterati più.
UN ULTIMO ACCORGIMENTO E' ATTIVARE L'HELPER ALL'INIZIO DELLA LOTTA
Quindi dobbiamo modificare lo [state 0] del common1.cns inserendo questa istruzione alla fine dello state
NOTA FINALE
Ho cercato di prospettarti un codice fatto in maniera tale di fare solo una modifica che venisse automaticamente riconosciuta dai personaggi senza costringerti a modificare file interni agli stessi.
Ho quindi evitato di usare statedef negativi o chiamate command (o altro) appositamente per questo motivo.
Tra le altre cose ti segnalo di averti suggerito una cosa che non ho avuto modo di testare. Per evitare di costringerti a modificare i file AIR di tutti i personaggi inserendo l'animazione 9999 (vedi parte 2) ho provato a suggerirti un metodo che preveda l'inserimento di tale animazione nel FightFx.
Lo scopo di tale animazione è evitare che appaiano dei "cloni" fissi dei personaggi associando all'helper una animazione invisibile (programmare un AssertSpecial flag=Invisible potrebbe far scomparire pur il personaggio principale).
Ora, le animazioni del FightFx.AIR non vengono riconosciute se le si prova a chiamare nei parametri statedef... il che significa che se nello statedef 9999 avessi messo "anim = F9999" o mi avrebbe dato un errore o mi avrebbe creato un "clone" fisso per ogni personaggio (non mi ricordo quale dei due eventi succede... era una cosa che avevo constatato un po' di tempo fa).
Pertanto ho provato a risolvere il problema non definendo direttamente l'animazione nello statedef, ma inserire invece una istanza "ChangeAnim" che dovrebbe riuscire nell'intento senza alcun inconveniente.
Non avendolo testato non posso essere sicuro al 100%. Fammi sapere
-------
PS... Ti avevo anticipato che era una risposta parecchio Lunga... :wacko: :wacko: :wacko:
Spero di essere stato sufficientemente chiaro che è stata 'na faticaccia 0:)
NOTA: Il sistema, così come suggerito, non può funzionare nei personaggi che usano un personale common1.cns. Per tali
personaggi (es. Gill) sarà quindi necessario inserire il codice direttamente nel CNS del personaggio oppure decidere di affiancare un file CNS aggiuntivo con queste istruzioni helper (scelta consigliata) aggiungendo una riga stX (x è un numero)
st9 = hyper_flash.cns
FASE 1: MODIFICA DEL COMMON1.CNS
Inseriamo un Helper in uno state inesistente. Io scelgo lo state 9999 che non credo venga mai usato.
I valori "value" potrebbero richiedere modifiche
[StateDef 9999]
type = S
movetype = I
physics = N
[State 9999, 0]
type = ChangeAnim
value = F9999
trigger1 = time = 0
[State 9999, Suono Finale]
type = PlaySnd
value = F7,0
trigger1 = ...
[State 9999, Flash]
type = Explod
id = 9999
anim = F7
ownpal = 1
pos = 0,0
postype = left
bindtime = -1
sprpriority = -3
trigger1 = ...
Se poi vuoi prolungare la durata della animazione puoi specificare nel comando explod anche il valore
removetime = 180
(o altro valore: il valore indica i tick di tempo -> 60 tick = 1 secondo).
Come vedi non ho specificato i trigger di due comandi... lo farò nella terza parte di questa spiegazione
FASE 2: MODIFICA DEI FILE DEGLI EFFETTI
Ora devi inserire gli effetti comuni (ovvero l'animazione BackGround e il suono da riprodurre con la hyper background) nei file degli effetti comuni (fightfx.sff, fightfx.air, common.snd)
Nel fightfx.sff devi inserire tutti i frame che compongono l'animazione di BackGround da visualizzare. Nel mio esempio li presuppongo inseriti nel gruppo 7 (da 7,1 a 7,..) Ovviamente se il gruppo è già utilizzato, scegline un altro.
ATTENZIONE: Perché funzioni correttamente la visualizzazione dell'effetto le immagini devono avere le dimensioni di 320x240 ed essere posizionate tutte a 0,0.
Nel fightfx.air devi definire l'animazione del BackGround sulla base dei frame prima inseriti in FightFx.sff. Come prima presupponiamo di creare una animazione [Begin Action 7]. Ovviamente se esiste scegli un altro valore e modifica di conseguenza il valore value = f7 dell'Explod (il valore della animazione preceduto da "F").
Sempre nel Fightfx.air devi definire la seguente animazione:
[Begin Action 9999] -1,0, 0,0, 1
[Begin Action 7] 7,1, 0,0, 3 7,2, 0,0, 3 7,3, 0,0, 3 ....
Infine nel common.snd bisogna aggiungere il suono da riprodurre con la hyper background. Nel mio esempio inserisco il suono in 7,0 ma se è un suono già utilizzato ovviamente devo scegliere un altro valore.
In tal caso devo modificare di conseguenza il valore value = f7,0 che ho specificato nel PlaySND (anche qui il valore a due parametri viene preceduto da una "F"
FASE 3: DEFINIZIONE DELLA CHIAMATA DELL'EFFETTO
Dopo aver programmato cosa succede quando l'effetto viene chiamato dobbiamo anche decidere con quali modalità effettivamente si andrà a chiamare l'effetto in questione.
Basiamoci su un metodo che si fonda sul principio che NORMALMENTE tutte le mosse hyper sono ricomprese nei valori da 3000 a 4999 (tale idea non è farina del mio sacco, ndr).
Questo metodo, però con alcuni personaggi potrebbe non funzionare (per quei rarissimi casi in cui l'autore non segue la numerazione consigliata dalla Elecbyte) e potrebbe anche non funzionare in determinate situazioni anche quando l'autore segue fedelmente la numerazione normale (per non complicarti la vita non ti sto a spiegare perché sennò rischio di farti fare confusione).
Per farti un esempio pratico credo che un caso in cui potrebbe non funzionare potrebbe capitare con Ranmaru quando colpisce con la hyper "Deioka" (il proiettile fatto da tanti triangolini).
Ora, seguendo quindi il criterio secondo cui le hyper sono ricomprese nei valori da 3000 a 4999 noi definiamo i trigger che avevamo lasciato in sospeso
Quote
[StateDef 9999]
type = S
movetype = I
physics = N
anim = 9999
[State 9999, 0]
type = ChangeAnim
value = F9999
trigger1 = time = 0
[State 9999, Suono Finale]
type = PlaySnd
value = F7,0
trigger1 = winko
trigger1 = parent, stateno = [3000,4999]
persistent = 0
[State 9999, Flash]
type = Explod
id = 9999
anim = F7
ownpal = 1
pos = 0,0
postype = left
bindtime = -1
sprpriority = -3
trigger1 = winko
trigger1 = parent, stateno = [3000,4999]
persistent = 0
type = S
movetype = I
physics = N
anim = 9999
[State 9999, 0]
type = ChangeAnim
value = F9999
trigger1 = time = 0
[State 9999, Suono Finale]
type = PlaySnd
value = F7,0
trigger1 = winko
trigger1 = parent, stateno = [3000,4999]
persistent = 0
[State 9999, Flash]
type = Explod
id = 9999
anim = F7
ownpal = 1
pos = 0,0
postype = left
bindtime = -1
sprpriority = -3
trigger1 = winko
trigger1 = parent, stateno = [3000,4999]
persistent = 0
il trigger "winko" si accerta che l'effetto venga eseguito se metti al tappeto l'avversario
il trigger "parent, stateno" controlla quale state sta eseguendo il genitore dell'helper (ovvero il char)
il parametro "persistent = 0" fa sì che i comandi vengano eseguiti SOLO UNA VOLTA (quindi quando si verificano le condizioni corrette i comandi si eseguono, ma dopo l'esecuzione non verranno reiterati più.
UN ULTIMO ACCORGIMENTO E' ATTIVARE L'HELPER ALL'INIZIO DELLA LOTTA
Quindi dobbiamo modificare lo [state 0] del common1.cns inserendo questa istruzione alla fine dello state
[State 0, Attiva Helper per Flash Finale] type = Helper id = 9999 ownpal = 1 stateno = 9999 trigger1 = NumHelper(9999) = 0 trigger1 = roundstate = 2
NOTA FINALE
Ho cercato di prospettarti un codice fatto in maniera tale di fare solo una modifica che venisse automaticamente riconosciuta dai personaggi senza costringerti a modificare file interni agli stessi.
Ho quindi evitato di usare statedef negativi o chiamate command (o altro) appositamente per questo motivo.
Tra le altre cose ti segnalo di averti suggerito una cosa che non ho avuto modo di testare. Per evitare di costringerti a modificare i file AIR di tutti i personaggi inserendo l'animazione 9999 (vedi parte 2) ho provato a suggerirti un metodo che preveda l'inserimento di tale animazione nel FightFx.
Lo scopo di tale animazione è evitare che appaiano dei "cloni" fissi dei personaggi associando all'helper una animazione invisibile (programmare un AssertSpecial flag=Invisible potrebbe far scomparire pur il personaggio principale).
Ora, le animazioni del FightFx.AIR non vengono riconosciute se le si prova a chiamare nei parametri statedef... il che significa che se nello statedef 9999 avessi messo "anim = F9999" o mi avrebbe dato un errore o mi avrebbe creato un "clone" fisso per ogni personaggio (non mi ricordo quale dei due eventi succede... era una cosa che avevo constatato un po' di tempo fa).
Pertanto ho provato a risolvere il problema non definendo direttamente l'animazione nello statedef, ma inserire invece una istanza "ChangeAnim" che dovrebbe riuscire nell'intento senza alcun inconveniente.
Non avendolo testato non posso essere sicuro al 100%. Fammi sapere
-------
PS... Ti avevo anticipato che era una risposta parecchio Lunga... :wacko: :wacko: :wacko:
Spero di essere stato sufficientemente chiaro che è stata 'na faticaccia 0:)
#3
Inviato 09 June 2007 - 17:38
Grazie, lo proverò senz' altro!
Tuttavia non capisco il Winko: voglio dire...
Lo sfondo hyper deve comparire durante una super, non quando si stende l' avversario con una super, quello era l' Hyper Finish.
Tuttavia non capisco il Winko: voglio dire...
Lo sfondo hyper deve comparire durante una super, non quando si stende l' avversario con una super, quello era l' Hyper Finish.
#4
Inviato 10 June 2007 - 12:29
Scusami... avevo capito male la domanda...
In effetti il codice che ti ho dato riguarda la Hyper da mostrare a fine combattimento e non viene mostrata ad ogni hyper...
Avevo capito la domanda, scusa :azz:
Il codice che ti ho dato quindi va modificato e pure parecchio... però visto che per fare uno sfondo hyper per ogni hyper "esterna" al char ci vuole qualche accortezza in più ti chiedo di avere pazienza... appena posso (entro una-due settimane) ti do il codice riveduto e corretto (devo anche fare qualche test).
Scusa la lentezza delle mie risposte, ma come ben sai il mio tempo libero è molto poco e quindi risposte parecchio analitiche come questa faccio fatica a farle anche perché devo trovare banalmente un giorno che ho tempo sufficiente per scrivere tutto quello che serve.
Comunque ti faccio notare che un codice del genere è "pericoloso" perché può accadere che si riproduca in contemporanea ad un altro sfondo hyper con altro suono perché era quello già presente nel personaggio.
In effetti il codice che ti ho dato riguarda la Hyper da mostrare a fine combattimento e non viene mostrata ad ogni hyper...
Avevo capito la domanda, scusa :azz:
Il codice che ti ho dato quindi va modificato e pure parecchio... però visto che per fare uno sfondo hyper per ogni hyper "esterna" al char ci vuole qualche accortezza in più ti chiedo di avere pazienza... appena posso (entro una-due settimane) ti do il codice riveduto e corretto (devo anche fare qualche test).
Scusa la lentezza delle mie risposte, ma come ben sai il mio tempo libero è molto poco e quindi risposte parecchio analitiche come questa faccio fatica a farle anche perché devo trovare banalmente un giorno che ho tempo sufficiente per scrivere tutto quello che serve.
Comunque ti faccio notare che un codice del genere è "pericoloso" perché può accadere che si riproduca in contemporanea ad un altro sfondo hyper con altro suono perché era quello già presente nel personaggio.
#6
Inviato 27 June 2007 - 19:49
E hai fatto bene, sono messo un po' male in questo periodo (soprattutto a causa del caldo) e mi era passata di mente questa cosa... ora mi ci rimetto al lavoro, scusami!
#8
Inviato 29 June 2007 - 20:45
Ti ringrazio per la cortesia :P
Allora, non ho testato il codice e ti propongo una soluzione al volo (anche al fine di evitarti ulteriori lunghe attese a rischio di dimenticarmi di nuovo).
Secondo me alla fine basta riprogrammare solo lo statedef 9999 (tutto il resto che ti avevo detto prima va bene).
-------------
[StateDef 9999]
type = S
movetype = I
physics = N
[State 9999, 0]
type = ChangeAnim
value = F9999
trigger1 = 1
persistent = 0
[State 9999, Suono Finale]
type = PlaySnd
value = F7,0
trigger1 = var(1) = 0
trigger1 = parent, stateno = [3000,4999]
[State 9999, Flash]
type = Explod
id = 9999
anim = F7
ownpal = 1
pos = 0,0
postype = left
bindtime = -1
sprpriority = -3
trigger1 = var(1) = 0
trigger1 = parent, stateno = [3000,4999]
[State 9999, Var 1 Evita che si ripeta il flash all'infinito]
type = varset
v = 1
value = 1
trigger1 = var(1) = 0
trigger1 = parent, stateno = [3000,4999]
[State 9999, Var 1 Si resetta non appena il giocatore non sta più in uno state tipo Hyper]
type = varset
v = 1
value = 0
trigger1 = var(1) = 1
trigger1 = parent, stateno != [3000,4999]
------------
Così dovrebbe funzionare correttamente... una breve spiegazione... (ometto le cose spiegate nella prima board che comunque risultano al 90% corrette... qui solo alcune brevi aggiunte sulle modifiche)
L'helper appena parte si mette a vedere l'animazione 9999 (invisibile) nel fightfx.air e poi non la richiama più (persistent = 0)
L'helper esegue i suoni e lo sfondo BackGround della hyper appena il personaggio entra in uno state "hyper" (da 3000-a 4999).
La var(1) * Attenzione questa è la var(1) dell'helper e non la var(1) del personaggio quindi non ci sono rischi di conflitti *
Serve per evitare un ciclico ripetersi dello sfondo e del suono durante l'esecuzione della Hyper (si evita l'effetto "disco rotto").
Quando è a 0 significa che non ti trovi in uno state hyper
Quando è 1 significa che ti trovi in uno state hyper
Questo vuol dire che la var impedisce che lo sfondo si visualizzi mentre sei in uno state hyper
Ecco quindi l'importanza di mettere le istruzioni di gestione della VAR come ultime istruzioni... il Mugen ad ogni tick di secondo esegue le istruzioni in ordine di scrittura. Quindi nel momento in cui il char ENTRA nello state hyper (provenendo da uno state non hyper) le istruzioni del Background vengono eseguite perché la var non è stata ancora cambiata (verrà cambiata in quello stesso tick di tempo ma solo dopo l'attivazione del background perché quelle istruzioni erano messe prima).
Spero di essere stato chiaro... fammi sapere se funziona...
Allora, non ho testato il codice e ti propongo una soluzione al volo (anche al fine di evitarti ulteriori lunghe attese a rischio di dimenticarmi di nuovo).
Secondo me alla fine basta riprogrammare solo lo statedef 9999 (tutto il resto che ti avevo detto prima va bene).
-------------
[StateDef 9999]
type = S
movetype = I
physics = N
[State 9999, 0]
type = ChangeAnim
value = F9999
trigger1 = 1
persistent = 0
[State 9999, Suono Finale]
type = PlaySnd
value = F7,0
trigger1 = var(1) = 0
trigger1 = parent, stateno = [3000,4999]
[State 9999, Flash]
type = Explod
id = 9999
anim = F7
ownpal = 1
pos = 0,0
postype = left
bindtime = -1
sprpriority = -3
trigger1 = var(1) = 0
trigger1 = parent, stateno = [3000,4999]
[State 9999, Var 1 Evita che si ripeta il flash all'infinito]
type = varset
v = 1
value = 1
trigger1 = var(1) = 0
trigger1 = parent, stateno = [3000,4999]
[State 9999, Var 1 Si resetta non appena il giocatore non sta più in uno state tipo Hyper]
type = varset
v = 1
value = 0
trigger1 = var(1) = 1
trigger1 = parent, stateno != [3000,4999]
------------
Così dovrebbe funzionare correttamente... una breve spiegazione... (ometto le cose spiegate nella prima board che comunque risultano al 90% corrette... qui solo alcune brevi aggiunte sulle modifiche)
L'helper appena parte si mette a vedere l'animazione 9999 (invisibile) nel fightfx.air e poi non la richiama più (persistent = 0)
L'helper esegue i suoni e lo sfondo BackGround della hyper appena il personaggio entra in uno state "hyper" (da 3000-a 4999).
La var(1) * Attenzione questa è la var(1) dell'helper e non la var(1) del personaggio quindi non ci sono rischi di conflitti *
Serve per evitare un ciclico ripetersi dello sfondo e del suono durante l'esecuzione della Hyper (si evita l'effetto "disco rotto").
Quando è a 0 significa che non ti trovi in uno state hyper
Quando è 1 significa che ti trovi in uno state hyper
Questo vuol dire che la var impedisce che lo sfondo si visualizzi mentre sei in uno state hyper
Ecco quindi l'importanza di mettere le istruzioni di gestione della VAR come ultime istruzioni... il Mugen ad ogni tick di secondo esegue le istruzioni in ordine di scrittura. Quindi nel momento in cui il char ENTRA nello state hyper (provenendo da uno state non hyper) le istruzioni del Background vengono eseguite perché la var non è stata ancora cambiata (verrà cambiata in quello stesso tick di tempo ma solo dopo l'attivazione del background perché quelle istruzioni erano messe prima).
Spero di essere stato chiaro... fammi sapere se funziona...
#9
Inviato 03 July 2007 - 18:38
Scusa il ritardo della mia risposta, ma sono stato con Internet fuori uso per un pò...
GRAZIE, LO PROVERO' SUBITO! ;)
GRAZIE, LO PROVERO' SUBITO! ;)
#11
Inviato 07 July 2007 - 10:51
Grazie Nobun (indirettamente :P )
mi serviva anke a me questo provo subito anke io :D
mi serviva anke a me questo provo subito anke io :D
Condividi questa discussione:
Pagina 1 di 1

Aiuto










