Forum MUGENATION: altro messaggio di errore su winmugen! - Forum MUGENATION

Salta al contenuto

Pagina 1 di 1
  • Non puoi iniziare una nuova discussione
  • Non puoi rispondere a questa discussione

altro messaggio di errore su winmugen! ma tutti a me!!!

#1 L   emi 

  • Kohai
  • PuntoPunto
  • Gruppo: Membro
  • Messaggi: 427
  • Iscritto: 24-October 05

Inviato 25 December 2005 - 18:48

salve, mi si è appena chiuso il muugen con il seguente errore:

error message: state machine stuck in loop (stopped after 2500 loops): 100 for superman check your state for infinite changestate loops.

Che caspita vuol dire? l'errore è nel char di superman.

Nei chars del mugen non ci capisco molto! Cosa sono i Changestate? Dove devo mettere le mani per correggere l'errore? Spero mi rispondiate presto! >:(
0

#2 L   SlayerGatsu 

  • Sensei. Squadra dei Falchi
  • PuntoPuntoPuntoPunto
  • Gruppo: Membro
  • Messaggi: 5545
  • Iscritto: 26-December 04

Inviato 25 December 2005 - 20:50

emi... e'
parecchi che stai qui con noi.... vorrei che ora cominciassi un attimo a leggere i tutorial e a capire le definizioni base... altrimenti quando rispondo a questa domanda non mi capiresti in primis....

comunque...
<modalita' esplicatoria per utenti insesperti>

ebbe un changestate e' uno state, Non uno state def, ma uno state.
uno state def e' quello che tu chiameresti stato, o meglio ad esempio una mossa.

[statedef 200] ;e' quasi sicuramente un cazzotto, ma non si chiama state, bensi state def.

[state 200, 1] ;e' invece uno state, vero e proprio. lo state e' una parte dello state def, tale parte e' definita dal type.

type = Changestate ; questo parametro, come suggerisce il nome, cambia lo stato in cui ti trovi, MA non lo stato stato... quello che Tu chiami stato! (o meglioi lo statedef).

trigger1 = 1;questo serve perche almeno un trigger e' necessario al funzionamento dello stato

value = 200 ; il parametro value rappresenta la valuta dello state nel quale verrai portato....

come puoi osservare il mio value e' settatto a 200... ma e' all'interno dello "stato" 200 stesso! cosa succedera quando muge lo legge?

semplice a dirsi, avvienee un crash, poiche una volta che tu dai un cazzotto partirebbe questo statedef vituale e comincerebbe (grazie al changestate) a ri andare nello stato 200, una due tre, infinite volte!

adesso... il problema non e' cosi semplice... prendiamo in considerazione 3 stati...

[statedef 200]
[statedef 2001]
[statedef 203]
[statedef 800]

adesso questi sono i numeri... ora inserisco i cambiostato....

[statedef 200]
[state 200, 1]
type = changestate
vale = 2001

[statedef 2001]
[state 2001, 1]
type = changestate
vale = 800

[statedef 203]
[state 203, 1]
type = changestate
vale = 200

[statedef 800]
[state 800, final] ;NB possono essere anche parole dopo la virgola...
type = changestate
vale = 203

ora studia cosa succede e dimmelo B)
0

#3 L   Nobun 

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

Inviato 25 December 2005 - 23:54

No, Slay... purtroppo la terminologia Mugen (soprattutto a livello di segnalazioni errori) è fatta un po' male e quindi fa fare molta confusione...

Sarebbe bello che fosse come dici tu... invece...

Quando il Mugen parla di state, esso intende tutta la serie di istruzioni introdotta da uno statedef

Error in state... significa errore in uno statedef

Infatti statedef significa "state definition" per cui con uno statedef introduci e definisci uno state

[StateDef 200] ;inizia lo state 200

Quindi l'istanza StateDef dichiara l'inizio di uno state

----

Ogni istanza che invece comincia con [State x,y] contiene un controller dello state, ovvero un singolo comando della programmazione CNS (es. playSnd per eseguire un suono, ChangeState per cambiare state...)

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

[StateDef 200] ;comincia lo state 200

[State 200, ChangeState] ;state 200: controller ChangeState
type = ChangeState
value = 200
trigger1 = 1

Emi, questa istruzione causa l'errore di cui sopra e poi ti spiego perchè...

Qui l'istruzione ChangeState richiama erroneamente sè stessa (sei nel 200 e cambi a 200.. non ha senso) e lo fa sempre e continuamente... questo è un caso proprio estremo... comunque questo errore secondo me è indice del fatto che il char che usi O è corrotto O è fatto coi piedi... in entrambi i casi da buttare via... almeno questa è la sensazione... perché mi pare strano che a un autore un minimo attento possa essere sfuggito una cosa gigantesca come un (per il Mugen incomprensibile) ChangeState ricorsivo (ovvero che ritorna a sè stesso)...

PS so che la terminologia fa fare confusione, ma è questa che uso ora quella corretta... generalmente non la uso mai e tendo ad usare un terminologia un po' meno corretta onde evitare confusioni, ma in questo caso era indispensabile.
0

#4 L   SlayerGatsu 

  • Sensei. Squadra dei Falchi
  • PuntoPuntoPuntoPunto
  • Gruppo: Membro
  • Messaggi: 5545
  • Iscritto: 26-December 04

Inviato 26 December 2005 - 01:22

nobun uno state def e' l'instestazione... sono i singoli state a definire cosa avviene (e comunque non cambia niente se il marmo lo chiami marmo o travertino... sempre marmo resta........)

e poi guarda...

error message:


state machine = il lettore fdegli state, chje legge ANCHE (e tiene conto di tutto) gli statedef

stuck in loop (stopped after 2500 loops): 100 = significa stato 100 credo... mo lo provoco e vi dico...

allroa prima cosa:

mi viene il dubbio che tu stia tentando di editare o modificare Gill, poiche grazie ai 2 lati questo errore avveniva molto frequentemente...

comunque l'errore si verifica quando i tuoi state cambiano istantaneamente dovuto ad un trigger che e' vero per entrambi, facendo loopare il char 2000 volte nel giro di un secondo...

un esempio pratico:

[statedef 0]
[state 0, otherside]
type = changestate
trigger1 = facing = 1
value = 1

[statedef 1]
[state 1, otherside]
type = changestate
trigger1 = Facing = 1
value = 1

allora se leggi, dato che il parametro facing si attiva quando il char guarda a destra (1) eo a sinistra (-1) se il char guarda a destra nello state 0 (lo standing state) allora cambia instantaneamente allo stato 1 (dove sarebbe definita l'animazione per l'altro lato...) ma dato che il trigger cambia l'animazione SE il char guarda a destra (1) e il char deve guardare a destra per essere arrivato allo statodef 1... allora si ritorna allo statedef 0 e si rilegge tutto fino a cambiare allo state 1 e poi lo 0

tutto cio' vviene un miliardo di folte al secondo... e mugen se ne accorge, soprattutto perche l'animazione non viene neanche cominciata!

dicasi = per trigger1 = 1 che avviene instantaneo...
0

#5 L   Nobun 

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

Inviato 26 December 2005 - 16:33

Non ci siamo capiti, Slay...

Quello che tu chiami erroneamente state si chiama in realtà controller

Lo state quindi non è il singolo comando, ma tutta la serie di comandi introdotta da un nuovo statedef

[StateDef 200]
type = S

[State x, y]
type = PlaySnd
...

[State x,y]
type = ChangeState
...

[StateDef 201]
...


Lo state 200, quindi è tutto il pezzo di codice compreso tra lo statedef 200 che ne definisce l'inizio e lo statedef successivo (escluso) che definisce l'inizio di un nuovo state... (nell' esempio lo state 200 termina nel punto in cui c'è lo statedef 201 che definisce quest'altro nuovo state)...

Non ti far confondere dal fatto che le singole istruzioni siano introdotte da una istanza [State x,y]... perché per state si intende, lo ripeto, tutto il pezzo di codice (la serie di istruzioni) comprese tra lo StateDef che introduce lo state e lo StateDef sucessivo (escluso) che definisce uno state diverso...

Le singole istruzioni invece si chiamano CONTROLLER... e non state...

Questa è la terminologia corretta...
0

#6 L   SlayerGatsu 

  • Sensei. Squadra dei Falchi
  • PuntoPuntoPuntoPunto
  • Gruppo: Membro
  • Messaggi: 5545
  • Iscritto: 26-December 04

Inviato 26 December 2005 - 19:19

ripeto che il marmo e' anche traburtino :P
non cambia molto se comunque si segue.... poi non per dire ma i docs fanno casino tra loro... e gli errori ti dicono errore nello state x,y non nel controller... mentre se l'errore e' nello statedef ti dicono proprio error in statedef y e il resto...
0

#7 L   Nobun 

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

Inviato 27 December 2005 - 12:14

E già... la terminologia tecnica è un po' caotica :rolleyes:

Comunque quando l'errore dice "error in State x, y" non fa altro che restituire il contenuto della stringa

[State x, y]

Infatti non è un caso che suggerisco che x sia uguale al numero dello state ed y ad una label facilmente riconoscibile... infatti

[State 200, Esecuzione pugno]

l'errore contenuto qui apparirà come "error in state 200, Esecuzione Pugno" che sarebbe da leggersi come "errore nello state 200, nella parte denominata esecuzione pugno"

Anche se x può essere un valore diverso dallo state effettivo che si sta utilizzando è molto importante invece riportarvi il numero dello state che si sta effettivamente usando proprio per avere una segnalazione di errori il più possibile "semplice ed ordinata" da leggere...

Come ho detto nella restituzione di errore il Mugen si limita a riportare il contenuto della stringa [State x, y] così come è scritta per indicarti il punto in cui si presenta l'errore...

---------

Tornando ad Emi... riguardo al tuo problema rinvio a quanto dissi nel mio primo intervento...
0

Condividi questa discussione:


Pagina 1 di 1
  • 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