Ecco il problemone che non riesco a risolvere, e che probabilmente senza nessuna soffiata, non saprei nemmeno dove andare a parare.
Ho trovato un bellissimo personaggio per mugen su internet, davvero bello, ben realizzato, giocabile e chi più ne ha più ne metta!
Questo personaggio ha 1 problemone però!
2 sue mosse sono buggate!
Una di queste blocca il personaggio stesso, paralizzandolo, letteralmente. Sono costretto a premere esc per tornare alla schermata di selezione dei personaggi per riselezionarlo.
Un'altra mossa lo fa letteralmente migrare (nemmeno fosse un'anatra selvatica), nel senso che è una mossa aerea, alla fine dell'esecuzione della mossa, al posto di tornare a terra, continua a salire (suppongo all'infinito) superando il limite dello schermo e lasciando l'avversario in perfetta solitudine con se stesso che continua a inveire colpi a vuoto di quella direzione! Anche in questo caso sono costretto a premere Esc.
Si parla di mosse univoche composte sa una sequenza di tasti (tipo ad esempio l'hadoken di Ryu, per intenderci).
Beh, a parte questi 2 bug, il personaggio davvero non mi dispiace, basta che quando lo scelgo non eseguo le 2 mosse incriminate!
Il problema nasce quando lo voglio affrontare.
Considerando che il personaggio è perfettamente giocabile e ben bilanciato anche senza queste 2 mosse, vorrei sapere solo se e come fosse possibile decurtarle.
Sarebbe una cosa fantastica portare sino alla fine un equilibratissimo incontro con finale al cardiopalmo contro di lui!
Spero che esista una soluzione, intanto vi ringrazio anticipatamente!
Cristian
Pagina 1 di 1
Rimuovere mosse a un personaggio! alcune mosse danno dei problemi.
#2
Inviato 26 June 2009 - 08:28
A questo punto sorgono un paio di interrogativi:
Di che personaggio stiamo parlando?
Chi è l'autore di questo personaggio?
Di quali mosse stiamo parlando?
Te lo chiedo perchè è possibile che i programmatori presenti nella community riescano a correggere l'errore senza per forza dover togliere mosse al char. :)
Di che personaggio stiamo parlando?
Chi è l'autore di questo personaggio?
Di quali mosse stiamo parlando?
Te lo chiedo perchè è possibile che i programmatori presenti nella community riescano a correggere l'errore senza per forza dover togliere mosse al char. :)
#3
Inviato 26 June 2009 - 11:09
Per risolvere il tuo problema (il problema dei "colpi in loop" devi fare le seguenti sostituzioni:
devi cercare, nei file CNS, i trigger move*
(es. movecontact, movehit etc)
e fare le seguenti sostituzioni
triggerX = move* = 1
diventa
triggerX = move* != 0
---
triggerX = move*
diventa
triggerX = move* != 0
----
triggerX != move*
meglio sostituirlo con
triggerX = move* = 0
----
triggerX = move* = 0
rimane uguale
--------
Esempio:
se trovi una scritta
triggerall = movecontact = 1
devi cambiarla in
triggerall = movecontact != 0
--
Esempio 2:
se trovi una scritta
trigger2 = movehit
devi cambiarla in
trigger2 = movehit != 0
-------------------------------------------
Aiutati con la funzione di ricerca del tuo editor di testo. ricordati che questi trigger possono trovarsi anche in espressioni complesse
####
Se ti chiedi il perché del problema, te lo spiego subito.
Non è un errore dei programmatori. Semplicemente i char sono pensati per il DosMugen (precedente al WinMugen). In WinMugen i trigger move* funzionano in maniera diversa rispetto a come funzionavano in Dos, ecco perché risultano necessarie le sostituzioni che ti ho detto.
devi cercare, nei file CNS, i trigger move*
(es. movecontact, movehit etc)
e fare le seguenti sostituzioni
triggerX = move* = 1
diventa
triggerX = move* != 0
---
triggerX = move*
diventa
triggerX = move* != 0
----
triggerX != move*
meglio sostituirlo con
triggerX = move* = 0
----
triggerX = move* = 0
rimane uguale
--------
Esempio:
se trovi una scritta
triggerall = movecontact = 1
devi cambiarla in
triggerall = movecontact != 0
--
Esempio 2:
se trovi una scritta
trigger2 = movehit
devi cambiarla in
trigger2 = movehit != 0
-------------------------------------------
Aiutati con la funzione di ricerca del tuo editor di testo. ricordati che questi trigger possono trovarsi anche in espressioni complesse
####
Se ti chiedi il perché del problema, te lo spiego subito.
Non è un errore dei programmatori. Semplicemente i char sono pensati per il DosMugen (precedente al WinMugen). In WinMugen i trigger move* funzionano in maniera diversa rispetto a come funzionavano in Dos, ecco perché risultano necessarie le sostituzioni che ti ho detto.
#4
Inviato 26 June 2009 - 12:42
Innanzitutto vi ringrazio
Gentile OttoMenoPaip
si tratta di shermie
se non riesco a risolverlo da solo ti darò tutti i dettagli
per adesso voglio provare a risolvere da solo come mi ha consigliato squall (anche perchè da solo provo anche più soddisfazione!, :P, anche se chiaramente, senza il vostro aiuto, non avrei risolto un bel nulla fino ad adesso.)
Gentile Nobun
chiedo solo una conferma...
trigger1 = stateno = 410 && var(4) = 3 && movecontact && hitcount < 3
deve diventare
trigger1 = stateno = 410 && var(4) = 3 && movecontact != 0 && hitcount < 3
?
Gentile OttoMenoPaip
si tratta di shermie
se non riesco a risolverlo da solo ti darò tutti i dettagli
per adesso voglio provare a risolvere da solo come mi ha consigliato squall (anche perchè da solo provo anche più soddisfazione!, :P, anche se chiaramente, senza il vostro aiuto, non avrei risolto un bel nulla fino ad adesso.)
Gentile Nobun
chiedo solo una conferma...
trigger1 = stateno = 410 && var(4) = 3 && movecontact && hitcount < 3
deve diventare
trigger1 = stateno = 410 && var(4) = 3 && movecontact != 0 && hitcount < 3
?
#5
Inviato 26 June 2009 - 12:58
Non che io sappia. io programmo in winmugen, ed il movecontact senza valore me lo legge bene, e funziona.
inoltre, se anche non avesse funzionato, avresti dovuto dire movecontact = 1
ti spiego perché.
considera 1 e 0 come on e off.
movecontact praticamente dice "se questo colpo tocca l'avversario", ed è equivalente a Movecontact = 1
se mettiamo = 0, vuol dire "se questo colpo NON tocca l'avversario". capito?
il != sarebbe il contrario di =, quindi diverso.
se dici diverso da 0, vuol dire uguale a 1 XD
@ Nobun: non credo serva mettere != 0, perché io metto semplicemente movecontact, e funziona XD
Saluti
Squall
inoltre, se anche non avesse funzionato, avresti dovuto dire movecontact = 1
ti spiego perché.
considera 1 e 0 come on e off.
movecontact praticamente dice "se questo colpo tocca l'avversario", ed è equivalente a Movecontact = 1
se mettiamo = 0, vuol dire "se questo colpo NON tocca l'avversario". capito?
il != sarebbe il contrario di =, quindi diverso.
se dici diverso da 0, vuol dire uguale a 1 XD
@ Nobun: non credo serva mettere != 0, perché io metto semplicemente movecontact, e funziona XD
Saluti
Squall
#6
Inviato 26 June 2009 - 19:42
Squall, scusami se ti correggo, ma non è così.
Questo è un tipico problema del winmugen che ho scoperto io come risolvere e che ha sempre funzionato.
Poi entro nel dettaglio e ti spiego perché stai sbagliando.
I trigger Move* (movecontact, movehit, etc) NON SONO booleani (true/false) come lo erano nel DosMugen. Nel DosMugen era come dicevi tu. Se in DosMugen mettevo MovHit = 1 allora la condizione era vera se, all'interno dello state in corso, il mio personaggio aveva colpito l'avversario.
Il valore di MoveHit rimaneva sempre 1 fino a fine dello state (eccetto si faccia proseguire il conteggio su state successivo) o fino a che non venivano resettati tali valori.
Nel WinMugen NON è così. I trigger Move* NON sono più boleani (insomma non si limitano a restituire come UNICI valori o 0 o 1) ma esprimono un valore di tempo, che misura quanto tempo è passato dalla realizzazione della condizione.
Faccio un esempio con movehit (hai colpito l'avversario).
Facciamo finta che il mio char ha colpito l'avversario e che dal colpo effettuato sono passati 3 tick di tempo. In DosMugen il valore di MoveHit sarà 1, ma in Winmugen sarà 3.
Quindi, come nel DosMugen, quando la condizione NON è avverata il valore è uguale a 0, ma se è vera il valore ritornato NON E' DETTO sia 1.
I char DosMugen, che non contemplano questo problema, possono trovarsi a verificare una condizione impossibile. Ad esempio può essere necessario verificare che il primo colpo sia andato a segno, ad una certa distanza temporale. Se non ho modo di verificare la distanza temporale il valore !=0 mi salva dal dover verificare il valore preciso che MoveHit deve assumere (che presumibilmente sarà anche MAGGIORE di 1).
Il fatto che, anche in WinMugen, può essere corretto utilizzare un comando movehit = 1 (lo puoi trovare anche nei miei chars) dipende da un'altra cosa: in quel caso il programmatore, che vuole il trigger sia verificato NELL'ESATTO MOMENTO IN CUI SI E' APPENA VERIFICATO L'EVENTO può anche usare questa forma.
Questa stessa scelta NON VA PIù BENE se è necessario un controllo che deve contemplare anche momenti successivi al tick in cui si verifica l'evento di contatto.
In DosMugen questa differenza non c'è. Molti programmatori, quando realizzavano il personaggio, avevano in mente il perdurare di un valore sempre uguale ad 1 e quindi usavano tale valore anche a distanza di tempo.
In WinMugen la verifica a distanza di tempo, anziché essere vera, diviene falsa. Ecco perché è necessaria tale modifica.
Scusami la correzione :rotfl:
Questo è un tipico problema del winmugen che ho scoperto io come risolvere e che ha sempre funzionato.
Poi entro nel dettaglio e ti spiego perché stai sbagliando.
I trigger Move* (movecontact, movehit, etc) NON SONO booleani (true/false) come lo erano nel DosMugen. Nel DosMugen era come dicevi tu. Se in DosMugen mettevo MovHit = 1 allora la condizione era vera se, all'interno dello state in corso, il mio personaggio aveva colpito l'avversario.
Il valore di MoveHit rimaneva sempre 1 fino a fine dello state (eccetto si faccia proseguire il conteggio su state successivo) o fino a che non venivano resettati tali valori.
Nel WinMugen NON è così. I trigger Move* NON sono più boleani (insomma non si limitano a restituire come UNICI valori o 0 o 1) ma esprimono un valore di tempo, che misura quanto tempo è passato dalla realizzazione della condizione.
Faccio un esempio con movehit (hai colpito l'avversario).
Facciamo finta che il mio char ha colpito l'avversario e che dal colpo effettuato sono passati 3 tick di tempo. In DosMugen il valore di MoveHit sarà 1, ma in Winmugen sarà 3.
Quindi, come nel DosMugen, quando la condizione NON è avverata il valore è uguale a 0, ma se è vera il valore ritornato NON E' DETTO sia 1.
I char DosMugen, che non contemplano questo problema, possono trovarsi a verificare una condizione impossibile. Ad esempio può essere necessario verificare che il primo colpo sia andato a segno, ad una certa distanza temporale. Se non ho modo di verificare la distanza temporale il valore !=0 mi salva dal dover verificare il valore preciso che MoveHit deve assumere (che presumibilmente sarà anche MAGGIORE di 1).
Il fatto che, anche in WinMugen, può essere corretto utilizzare un comando movehit = 1 (lo puoi trovare anche nei miei chars) dipende da un'altra cosa: in quel caso il programmatore, che vuole il trigger sia verificato NELL'ESATTO MOMENTO IN CUI SI E' APPENA VERIFICATO L'EVENTO può anche usare questa forma.
Questa stessa scelta NON VA PIù BENE se è necessario un controllo che deve contemplare anche momenti successivi al tick in cui si verifica l'evento di contatto.
In DosMugen questa differenza non c'è. Molti programmatori, quando realizzavano il personaggio, avevano in mente il perdurare di un valore sempre uguale ad 1 e quindi usavano tale valore anche a distanza di tempo.
In WinMugen la verifica a distanza di tempo, anziché essere vera, diviene falsa. Ecco perché è necessaria tale modifica.
Scusami la correzione :rotfl:
#7
Inviato 26 June 2009 - 19:50
No figurati XD dunque funzionava comunque perché non voleva dire "ON", ma "dopo 1 tick" (quindi comunque subito) :P ok
però resta il fatto, che mi funziona anche "movecontact" (ad sempio) a se stante, senza nessun valore ad esso applicato... forse in questo modo viene considerato "on"?
Saluti
Squall
però resta il fatto, che mi funziona anche "movecontact" (ad sempio) a se stante, senza nessun valore ad esso applicato... forse in questo modo viene considerato "on"?
Saluti
Squall
#8
Inviato 26 June 2009 - 20:15
Il discorso che ti ho fatto vale, pari pari, per TUTTI i trigger move*
(quindi sia per MoveHit che per MoveContact, che per MoveGuarded che per l'altro che ora non ricordo come si chiama :rotfl: )
----
Nota:
scrivere
trigger1 = movecontact
equivale a scrivere
trigger1 = movecontact = 1
(in virtù della natura intrinseca booleana delle espressioni trigger... un concetto un po' difficile da spiegare :P)
-----------------------
quindi quando non si specifica il valore, implicitamente si chiede di verificare se è uguale ad 1
(ecco perché ad esempio si può scrivere
triggerX = ctrl
anziché
triggerX = ctrl = 1
)
;)
(quindi sia per MoveHit che per MoveContact, che per MoveGuarded che per l'altro che ora non ricordo come si chiama :rotfl: )
----
Nota:
scrivere
trigger1 = movecontact
equivale a scrivere
trigger1 = movecontact = 1
(in virtù della natura intrinseca booleana delle espressioni trigger... un concetto un po' difficile da spiegare :P)
-----------------------
quindi quando non si specifica il valore, implicitamente si chiede di verificare se è uguale ad 1
(ecco perché ad esempio si può scrivere
triggerX = ctrl
anziché
triggerX = ctrl = 1
)
;)
#9
Inviato 01 July 2009 - 10:28
Grazie ragazzi, dopo aver impostato i suddetti parametri il mio personaggio non ha più atteggiamenti strani.
Quindi non era un problema di programmazione ma di "compatibilità"!
Anche se mi sono avvicinato da pochissimo al mugen, grazie a voi sto imparando un casino di cose :)
E' un piacere leggere le vostre discussioni!
Quindi non era un problema di programmazione ma di "compatibilità"!
Anche se mi sono avvicinato da pochissimo al mugen, grazie a voi sto imparando un casino di cose :)
E' un piacere leggere le vostre discussioni!
Condividi questa discussione:
Pagina 1 di 1

Aiuto









