Forum MUGENATION: problema chars mk project - Forum MUGENATION

Salta al contenuto

  • 4 Pagine +
  • « Primo
  • 2
  • 3
  • 4
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

problema chars mk project

#61 L   Nobun 

  • Horse Rider Skull Phantom. Rarely Here.
  • Gruppo: SuperModeratore
  • Messaggi: 4898
  • Iscritto: 11-July 04

Inviato 26 December 2006 - 14:47

Scusatemi ragazzi... mi permetto di darvi un consiglio a tutti quanti.

NON FATE DOMANDE ETEROGENEE TRA LORO IN UNA SOLA DISCUSSIONE.

Prendere spunto da una discussione per fare una domanda e originare una concatenazione di domande diverse tra loro è controproducente per tutti:

1) Perché la discussione diventa poco fluida, molto confusa, e chi legge si disorienta

2) Perché, in virtù di questa poca fluidità, si rischia di creare una confusione generale che rischia di danneggiare anche le stesse persone che hanno bisogno di aiuto

3) Perché poi, le domande che fate, risultano avere poca visibiltà e si rischiano di confondere nella massa di interventi rendendo impossibile individuare ogni richiesta

PERTANTO

se avete domande da fare diverse da quella che è nata per prima, fatelo solo se essa ha già ricevuto una risposta esauriente (completata) e non vi sono altre domande lasciate in sospeso (extrema ratio). Altrimenti evitatelo. E' molto meglio piuttosto aprire una nuova discussione con la vostra domanda: la vostra richiesta sarà più "visibile" ed inoltre non "confonderete le acque" all'interno della discussione da cui avete preso spunto.

ORA RIPRENDO IL FILO DA QUELLA CHE MI PARE ESSERE LA PRIMA DOMANDA IRRISOLTA

Visualizza Messaggiwilliamwilson, su Dec 20 2006, 14:41, detto:

x nobun...
grazie del tuo intervento,
lo state def -2 nei chars di mk project non l'ho trovato,
cmq ti invito a leggere se non lo avessi fatto, gli ultimi sviluppi.
con il blokko di programma(che ho postato) che ho aggiunto a questi chars,
molti problemi si sono risolti, gli avversari non si bloccano, barcollano nel momento delle fatality,
e subiscono anche le fatality.

Il problema è che prendendo scorpion per esempio, esegue la fatality, compare lo scheletro infiammato,
ma il chars avversario invece di scomparire resta a terra, come mostra un immagine precedentemente postata.
se potessi darci il tuo parere su questo...
te ne sarei grato
bye bye


Avevo capito benissimo il problema e mi ero concentrato su come rimuovere lo sprite avversario che lo raffigura disteso.

Comunque lascia perdere quanto ti avevo detto prima e proviamo con queste altre istruzioni che qui a seguito riporto (elimina mentalmente quanto ti ho detto nel messaggio precedente, come non lo avessi mai scritto).

---------------

Alla base di tutto c'è una difficolta tecnica.

Fondamentalmente, quando si esegue la Fatality:

1) Dapprima si evita la morte del nemico
2) in seguito alla mossa lo si lascia morire

---------

Quando un char "muore", l'evento normalmente viene gestito dal common1.cns che fa eseguire una sucessione di eventi predefinita (l'avversario si sdraia). Cambiare il common1.cns può essere una soluzione, ma è estremamente complessa (e poi bisognerebbe conoscere la programmazione, in questo caso, del common di ogni singolo char AVVERSARIO di scorpion). Pertanto, istintivamente, sconsiglierei questa strada.

---------------

Quando scorpion esegue la sua fatality egli dovrebbe riuscire a fare queste operazioni (almeno io sceglierei questa strada):

1) Rendere invisibili i frame della morte avversaria (la caduta di default dove il char alla fine rimane sdraiato)
2) "Rimpiazzarli" con degli explod che si posizionano al posto dell'avversario

---------------

Fare la seconda operazione è facile (basta un explod posizionato con gli assi dell'avversario) e da quello che ho visto e sentito questo c'è già.

Fare la prima operazione invece è un po' più complicato.

Per rendere invisibile il char avversario bisogna agire su quest'ultimo. Personalmente propenderei per la scelta di inserire un AsserSpecial (flag=invisible) ma anche metterci un ChangeAnim può essere una buona soluzione (e forse potrebbe essere più semplice).

Proviamo con il ChangeAnim e vediamo se (modificando principalmente scorpion modificando il common1.cns degli avversari in maniera minima) riusciamo a risolvere il problema.

--------------------
Ecco cosa suggerisco di fare (in parte riprendo quanto già detto, ma spiegandolo - spero - meglio).
-----------------------

PROBLEMA 1: Far Fare all'avversario ciò che pare a noi mentre eseguiamo la fatality.
-------------------

Per fare questo dobbiamo creare un "custom state" all'interno del personaggio di Scorpion, che però venga letto da chi subisce la presa. Per ottenere questo scopo dobbiamo programmare l'inizio del colpo come fosse una presa. Pertanto dobbiamo avere almeno 3 states

1) Un primo state che programmi il "tentativo di presa". Ovvero uno state con un HitDef che, qualora colpisca l'avversario, obblighi l'avversario a leggere il custom state da te programmato e che si trova nel CNS di scorpion (ti consiglio di dare una occhiata anche il mio tutorial sulle prese se qualcosa di questi concetti ti è poco chiaro. Lo trovi nella sezione tutorial di questo forum. Lì troverai anche un esempio pronto di un tipico state di "tentare la presa").

2) Un secondo state dove invece programmare ciò che scorpion farà se il tentativo di presa va a buon segno e l'HitDef colpisce l'avversario. In poche parole qui ci andrà tutta la programmazione vera e propria della fatality di scorpion

3) Un terzo state destinato ad essere letto da chi subisce la fatality e che io - provvisoriamente - programmerei così (non testato lo sto scrivendo "a braccio")

[StateDef X]
type = S
movetype = H
physics = N

[State X, 1]
type = SelfState
value = 6000
ctrl = 0
trigger1 = time = ?


----------

Come vedi l'avversario andrà allo state 6000 dopo ? tick di tempo che devi inserire e misurare tu.
Ho proposto lo state 6000, ma devi usare uno state che non sia usato da nessuno dei personaggi che sono destinati a subire la presa, perché lo devi programmare tu e lo devi inserire nel common1.cns (così ce lo hanno tutti una volta per tutte).

Nel mio esempio cmq lo state è il 6000

[StateDef 6000]
type = L
movetype = H
physics = N

[State 6000, 1]
type = LifeAdd
value = -4000
trigger1 = time = 0

[State 6000, 2]
type = AssertSpecial
flag = invisible
trigger1 = 1


Nota: questo codice più o meno funziona, ma blocca per qualche secondo i chars dopo l'annuncio "KO" prima che la win pose venga eseguita. Ho provato ad eliminare il problema, ma ammetto una carenza personale. Bisognerebbe capire alla perfezione come viene gestita la sconfitta dal common1.cns (copiare lo state 5150 comunque produce lo stesso tipo di errore), ma ancora oggi non conosco tutto. Forse Slay sa qualcosa in più. In alternativa seguite il secondo metodo spiegato nella prossima risposta
0

#62 L   Nobun 

  • Horse Rider Skull Phantom. Rarely Here.
  • Gruppo: SuperModeratore
  • Messaggi: 4898
  • Iscritto: 11-July 04

Inviato 27 December 2006 - 15:46

Il secondo metodo, che dovrebbe eliminare il bug di sopra, richiede - come prima - 3 states fondamentali, ovvero

3 states come prima che sono alla base della esecuzione della mossa (tentativo di presa, esecuzione fatality, state che deve essere letto dall'avversario). Per maggiori dettagli si rilegga quanto ho scritto nella mia risposta precedente e nel mio tutorial delle prese.

-----------------

Rispetto a prima cambiano un po' le programmazioni degli states (inoltre qui non si userà uno state 6000)

----------------

PRIMA DI COMINCIARE:

Bisogna individuare una var che non venga usata da nessun char. Essa verrà usata solo per far sparire il char avversario. Bisogna essere assolutamente certi che la var non fosse stata previamente utilizzata, perché la tecnica di programmazione che suggerisco ora sarebbe - normalmente - ESTREMAMENTE SCONSIGLIATA. Qui si fa infatti una operazione delicata, che se sfugge da questo previo controllo, può produrre comportamenti anomali sul char che subisce la presa.
Nel mio esempio uso la var(59), in quanto è una var che, con molta probabilità, può non essere stata effettivamente usata da nessuno dei char che puoi avere.
Uso questa tecnica per obbligare il char avversario a diventare invisibile, allo stesso tempo lasciando che lui esegua tranquillamente le cadute pre-programmate nel CNS così che possiamo essere tranquilli sul fatto che il bug del codice proposto sopra qui non dovrebbe presentarsi.

PRIMO STATE:

Nell'HitDef del tentativo di presa (per scorpion) deve essere presente anche questo parametro:

id=9999

Ovviamente per il resto rinvio al tutorial delle prese (e quindi non dimenticatevi "p1stateno" e "p2stateno").

SECONDO STATE:

Qui ci deve stare - come prima - tutta la programmazione vera e propria della fatality. In più CI DEVE essere un HitDef che colpisca a morte l'avversario che si trovi in bilico in attesa della fatality. L'HitDef in questione DEVE ASSOLUTAMENTE contenere questi parametri (e se presenti settarli come qui si prospetta):

attr = S, HT
chainid = 9999

TERZO STATE:

Anche qui - come prima - lo state è destinato ad essere letto dall'avversario, ma cambia totalmente la programmazione

[StateDef X]
type = S
movetype = H
physics = N

[State X, 1]
type = HitBy
value = S, HT
trigger1 = 1

[State X, 2]
type = AssertSpecial
flag = invisible
trigger1 = 1

[State X, 3]
type = ChangeAnim2
value = X
trigger1 = time = 0

[State X, 4]
type = VarSet
v = 59
value = 1
trigger1 = time = 0


ChangeAnim2 fa riferimento ad una animazione, presente in scorpion, che DEVE ASSOLUTAMENTE contenere un CLSN2 (rettangolo blu) abbastanza grande da poter essere intercettato dal CLSN1 dell'HitDef del colpo finale (che costringerà l'avversario a leggere le sue normali cadute).

--------------

In tutto questo dove sta l'invisibilità DEFINITIVA del char avversario?
Essa viene gestita dalla nostra var(59). Generalmente bisogna assolutamente evitare di modificare le variabili del giocatore avversario, ma qui non vedo alternative. Però se abbiamo controllato che tutti gli avversari non usano tale var, possiamo andare tranquilli e proseguire oltre.

----------------------

Ora bisogna aprire il CNS di ogni singolo char avversario e cercare lo [StateDef -3]
Se un char dispone di più di un CNS (a volte si usa l'estensione .ST state attenti) bisogna cercarlo dentro ogni singolo file finché non viene trovato.

Se lo statedef -3 esiste aggiungeteci, in fondo, questo comando:

[State -3, Char invisibile se subisce fatality di scorpion]
type = AssertSpecial
flag = invisible
trigger1 = var(59) = 1


Se lo statedef -3 non esiste createlo voi in fondo ad uno qualsiasi dei file CNS ed inseriteci le stesse istruzioni. In tal caso quindi ecco come apparirà il codice

[StateDef -3]

[State -3, Char invisibile se subisce fatality di scorpion]
type = AssertSpecial
flag = invisible
trigger1 = var(59) = 1


Nota finale: quella etichetta "Char invisibile..." nello [state -3] non è obbligatoria... rende solo più chiaro il codice e si può tranquillamente sostituire con altra frase o con un semplice numero progressivo.

----------

Anche questo codice non è testato, ma credo funzioni correttamente. Spero di essere stato sufficientemente chiaro e che tu riesca a risolvere il problema. Fammi sapere. ^_^
0

#63 L   williamwilson 

  • EvilMugen
  • Gruppo: Moderatore
  • Messaggi: 1374
  • Iscritto: 30-September 06

Inviato 27 December 2006 - 17:36

grazie nobun,
provero' cio' che hai suggerito e ti faro' sapere se tutto funziona correttamente,
sempre se riesco ad apportare le modifiche in modo corretto perchè
ancora di programmazione mugen sono a zero, pero' vorrei imparare...
non è venuto mai in mente a nessuno di scrivere una bella guida dalla A alla Z
sulla programmazione mugen? :D
0

#64 L   Nikki 

  • Un poveraccio
  • PuntoPunto
  • Gruppo: Membro
  • Messaggi: 325
  • Iscritto: 10-May 04

Inviato 07 June 2007 - 05:25

riprendo il filo di questa discussione per fare una domanda. Nonostante abbia fatto tutto quello di cui si è parlato, ancora ho un problemino. Quando ai personaggi MK gli viene fatta una presa, appaiono sprite confusi (come quando si usano personaggi DOS). Per il resto il personaggio è perfetto (grazie alle modifiche di cui si è parlato qui). Si può risolvere questo fastidioso problema?

http://img168.imageshack.us/img168/6840/mugen0ul7.gif

P.S.
Un'altra domanda forse stupida: il file Fatal.st va sostituito nel file .def con Fatality.st??
0

#65 L   williamwilson 

  • EvilMugen
  • Gruppo: Moderatore
  • Messaggi: 1374
  • Iscritto: 30-September 06

Inviato 07 June 2007 - 19:11

Visualizza MessaggiNikki, su Jun 7 2007, 06:25, detto:

riprendo il filo di questa discussione per fare una domanda. Nonostante abbia fatto tutto quello di cui si è parlato, ancora ho un problemino. Quando ai personaggi MK gli viene fatta una presa, appaiono sprite confusi (come quando si usano personaggi DOS). Per il resto il personaggio è perfetto (grazie alle modifiche di cui si è parlato qui). Si può risolvere questo fastidioso problema?

http://img168.imageshack.us/img168/6840/mugen0ul7.gif

P.S.
Un'altra domanda forse stupida: il file Fatal.st va sostituito nel file .def con Fatality.st??


sono a conoscenza del problema che citi riguardo questi chars.
analizzando il file sff ti puoi rendere conto che quegli sprite confusi che escono fuori,
esistono nel file sff cosi' come ti appaiono nel mugen e nn si tratta di problemi di palette.
nel gioco mkmugen questi sprites nn vengono utilizzati, infatti non appaiono mai.
io penso cmq che siano sprites da completare. Gli stessi vengono fuori quando aggiungi questi chars
al tuo mugen personale perchè il file sff dei char dell'mkproject sono organizzati e numerati in modo un po'
differente dai chars compatibili con qualsiasi mugen.
per risolvere questi prob quindi bisogna riorganizzare un po' di cose nel char che richiede una certa conoscenza di come funge un chars.

per quanto riguarda il file fatal io nel file def lo piazzo proprio sopra il file fatality

esempio :

...
st4= fatal.st
st5=fatality.st
...
...

spero di essere stato chiaro!
0

#66 L   Nikki 

  • Un poveraccio
  • PuntoPunto
  • Gruppo: Membro
  • Messaggi: 325
  • Iscritto: 10-May 04

Inviato 08 June 2007 - 05:41

Visualizza Messaggiwilliamwilson, su Jun 7 2007, 20:11, detto:

sono a conoscenza del problema che citi riguardo questi chars.
analizzando il file sff ti puoi rendere conto che quegli sprite confusi che escono fuori,
esistono nel file sff cosi' come ti appaiono nel mugen e nn si tratta di problemi di palette.
nel gioco mkmugen questi sprites nn vengono utilizzati, infatti non appaiono mai.
io penso cmq che siano sprites da completare. Gli stessi vengono fuori quando aggiungi questi chars
al tuo mugen personale perchè il file sff dei char dell'mkproject sono organizzati e numerati in modo un po'
differente dai chars compatibili con qualsiasi mugen.
per risolvere questi prob quindi bisogna riorganizzare un po' di cose nel char che richiede una certa conoscenza di come funge un chars.

per quanto riguarda il file fatal io nel file def lo piazzo proprio sopra il file fatality

esempio :

...
st4= fatal.st
st5=fatality.st
...
...

spero di essere stato chiaro!


Tu sei riuscito a risolverlo? Capisco che sia difficile, ma controllando nel file sff quegli sprite proprio non ci sono! Voglio dire, nel MKP da dove li pesca? ho provato a vedere anche in alcuni file sff che si trovano nella cartella data di MKP ma non ci sono nemmeno lì.
Sei stato chiarissimo grazie!
0

#67 L   williamwilson 

  • EvilMugen
  • Gruppo: Moderatore
  • Messaggi: 1374
  • Iscritto: 30-September 06

Inviato 11 June 2007 - 08:39

Visualizza MessaggiNikki, su Jun 8 2007, 06:41, detto:

Tu sei riuscito a risolverlo? Capisco che sia difficile, ma controllando nel file sff quegli sprite proprio non ci sono! Voglio dire, nel MKP da dove li pesca? ho provato a vedere anche in alcuni file sff che si trovano nella cartella data di MKP ma non ci sono nemmeno lì.
Sei stato chiarissimo grazie!


il gioco dell'mkp nn richiama mai questi sprite confusi, sono i normali mugen che li richiamano!
e cmq si trovano nel file sff di ogni chars dell'mkp nn nei file sff della cartella data!

io non ci ho provato a risolvere questo prob... pero' forse mettero' mano a qualcuno prima o poi...
perchè innanzi tutto alcuni chars... li puoi avere solo prendendoli da queso project e anche perchè
sia qualitativamente, grafica e sonoro, sia come IA sono ottimi.
peccato per la compatibilita', non al 100%
0

Condividi questa discussione:


  • 4 Pagine +
  • « Primo
  • 2
  • 3
  • 4
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

1 utenti stanno leggendo questa discussione
0 utenti, 1 ospiti, 0 utenti anonimi