Pagina 1 di 1
problema CPU
#1
Inviato 27 October 2008 - 15:53
ho inserito il caricamento a un hyper in cui viene lancia0t.o un wall energy ma mi sono accorto ke quando in modalità CPU(cioè quando il char viene manovrato dal computer) avvolte salta l'animazione del caricamento io ho controllato ma mi sembra tutto a posto da cosa può dipendere il malfunzionamento?
#4
Inviato 27 October 2008 - 18:46
Semplicemente perché con la AI devi predisporre comandi appositi per una cosa del genere. In poche parole ci devi aggiungere un comando specifico.
Quindi:
Nel comando ChangeState che dal caricamento passa al lancio devi aggiungere, nei trigger, PRIMA di tutti i trigger1, etc, questo trigger
triggerall = var(xx) = 0 ;al posto di xx devi mettere l'indice della var che inizializza la AI... lo state funziona quando la AI NON è attiva (perché vale per il giocatore umano).
Per il PC invece devi ricopiare il changestate, ma usare altri trigger... es:
triggerall = var(xx) = 1
trigger1 = time = 150
trigger2 = enemy, statetype = A ;Se l'avversario comincia un attacco, lancia subito il colpo
trigger3 = enemy, stateno = [0, 20] && p2BodyDist X < ... ; Se l'avversario è in standing, cammina, si gira, etc...
trigger4 = enemy, statetype = H && enemy, movetype != L ;se l'avversario è stato colpito ma non è sdraiato
Quindi:
Nel comando ChangeState che dal caricamento passa al lancio devi aggiungere, nei trigger, PRIMA di tutti i trigger1, etc, questo trigger
triggerall = var(xx) = 0 ;al posto di xx devi mettere l'indice della var che inizializza la AI... lo state funziona quando la AI NON è attiva (perché vale per il giocatore umano).
Per il PC invece devi ricopiare il changestate, ma usare altri trigger... es:
triggerall = var(xx) = 1
trigger1 = time = 150
trigger2 = enemy, statetype = A ;Se l'avversario comincia un attacco, lancia subito il colpo
trigger3 = enemy, stateno = [0, 20] && p2BodyDist X < ... ; Se l'avversario è in standing, cammina, si gira, etc...
trigger4 = enemy, statetype = H && enemy, movetype != L ;se l'avversario è stato colpito ma non è sdraiato
#5
Inviato 27 October 2008 - 19:07
Nobun, su Oct 27 2008, 19:46, detto:
Semplicemente perché con la AI devi predisporre comandi appositi per una cosa del genere. In poche parole ci devi aggiungere un comando specifico.
Quindi:
Nel comando ChangeState che dal caricamento passa al lancio devi aggiungere, nei trigger, PRIMA di tutti i trigger1, etc, questo trigger
triggerall = var(xx) = 0 ;al posto di xx devi mettere l'indice della var che inizializza la AI... lo state funziona quando la AI NON è attiva (perché vale per il giocatore umano).
Per il PC invece devi ricopiare il changestate, ma usare altri trigger... es:
triggerall = var(xx) = 1
trigger1 = time = 150
trigger2 = enemy, statetype = A ;Se l'avversario comincia un attacco, lancia subito il colpo
trigger3 = enemy, stateno = [0, 20] && p2BodyDist X < ... ; Se l'avversario è in standing, cammina, si gira, etc...
trigger4 = enemy, statetype = H && enemy, movetype != L ;se l'avversario è stato colpito ma non è sdraiato
Quindi:
Nel comando ChangeState che dal caricamento passa al lancio devi aggiungere, nei trigger, PRIMA di tutti i trigger1, etc, questo trigger
triggerall = var(xx) = 0 ;al posto di xx devi mettere l'indice della var che inizializza la AI... lo state funziona quando la AI NON è attiva (perché vale per il giocatore umano).
Per il PC invece devi ricopiare il changestate, ma usare altri trigger... es:
triggerall = var(xx) = 1
trigger1 = time = 150
trigger2 = enemy, statetype = A ;Se l'avversario comincia un attacco, lancia subito il colpo
trigger3 = enemy, stateno = [0, 20] && p2BodyDist X < ... ; Se l'avversario è in standing, cammina, si gira, etc...
trigger4 = enemy, statetype = H && enemy, movetype != L ;se l'avversario è stato colpito ma non è sdraiato
Ma questi trigger vanno messi nel cmd o nello statedef -2 del cns?
#6
Inviato 27 October 2008 - 20:03
Ma questi trigger vanno messi nel cmd o nello statedef -2 del cns?
Poi nn miè kiara una cosa : ho creato uno statedef 3002 del carficamento ke precedesse lo statedef della mossa vera e propria(3003)
[Statedef 3002]
type = S
ctrl = 0
anim = 2990
velset = 0,0,0
[State 3000, Super A]
type = SuperPause
trigger1 = AnimElem = 2
pos = 8, -57
sound = 20, 0
poweradd = -1000
time = 50
darken = 0
anim = -1
[State 3001, Super]
type = Helper
trigger1 = time = 2
id = 8000
name = "Super"
pos = -4,-69
postype = P1
stateno = ifelse((var(20)=[3,5]),8010,8000)
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
;pausemovetime = 999999
supermovetime = 999999
size.xscale = 1
size.yscale = 1
[State 0, PlaySnd_voice]
type = PlaySnd
trigger1 = time = 1
value = 180,2
;volume = 100
channel = -1
[State 192, 2]
type = ChangeState
trigger1 = Command!= "holdc"
trigger2 = Time = 150
value = 3003
---------------------------------------------------------------------------------------
[StateDef 3003]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
ctrl = 0
anim = 3003
poweradd = 20
[State -3,Super]
type = Helper
trigger1 = AnimElem = 4
id = 7201
name = "haou"
pos = 70,-65
postype = P1
stateno = 7201
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0
[State -3,Super]
type = Helper
trigger1 = AnimElem = 13
id = 7202
name = "haou"
pos = 70,-65
postype = P1
stateno = 7202
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0
[State -3,Super]
type = Helper
trigger1 = AnimElem = 22
id = 7203
name = "haou"
pos = 70,-65
postype = P1
stateno = 7203
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0
[State 0, PlaySnd_voice]
type = PlaySnd
trigger1 = time = 1
value = 3500,1
;volume = 0
channel = -1
[State 3003, end]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
ma nel changestate de cmd ho messo questo
cmd
;max haoh
[State -1, max haoh]
type = ChangeState
value = 3002
triggerall = var(59) = 0
triggerall = power>= 2000
triggerall = life<=450
triggerall = command! = "max haoh"
trigger1 = (statetype = s) && ctrl
ora il mio dubbio è questo -devo creare un'altro cmd a parte solo x il caricamento o va bene cosi come l'ho scritto (cioè ke inizia a leggere il 3002 e poi subito dopo il 3003 della mossa vera e propria)?
Poi nn miè kiara una cosa : ho creato uno statedef 3002 del carficamento ke precedesse lo statedef della mossa vera e propria(3003)
[Statedef 3002]
type = S
ctrl = 0
anim = 2990
velset = 0,0,0
[State 3000, Super A]
type = SuperPause
trigger1 = AnimElem = 2
pos = 8, -57
sound = 20, 0
poweradd = -1000
time = 50
darken = 0
anim = -1
[State 3001, Super]
type = Helper
trigger1 = time = 2
id = 8000
name = "Super"
pos = -4,-69
postype = P1
stateno = ifelse((var(20)=[3,5]),8010,8000)
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
;pausemovetime = 999999
supermovetime = 999999
size.xscale = 1
size.yscale = 1
[State 0, PlaySnd_voice]
type = PlaySnd
trigger1 = time = 1
value = 180,2
;volume = 100
channel = -1
[State 192, 2]
type = ChangeState
trigger1 = Command!= "holdc"
trigger2 = Time = 150
value = 3003
---------------------------------------------------------------------------------------
[StateDef 3003]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
ctrl = 0
anim = 3003
poweradd = 20
[State -3,Super]
type = Helper
trigger1 = AnimElem = 4
id = 7201
name = "haou"
pos = 70,-65
postype = P1
stateno = 7201
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0
[State -3,Super]
type = Helper
trigger1 = AnimElem = 13
id = 7202
name = "haou"
pos = 70,-65
postype = P1
stateno = 7202
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0
[State -3,Super]
type = Helper
trigger1 = AnimElem = 22
id = 7203
name = "haou"
pos = 70,-65
postype = P1
stateno = 7203
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0
[State 0, PlaySnd_voice]
type = PlaySnd
trigger1 = time = 1
value = 3500,1
;volume = 0
channel = -1
[State 3003, end]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
ma nel changestate de cmd ho messo questo
cmd
;max haoh
[State -1, max haoh]
type = ChangeState
value = 3002
triggerall = var(59) = 0
triggerall = power>= 2000
triggerall = life<=450
triggerall = command! = "max haoh"
trigger1 = (statetype = s) && ctrl
ora il mio dubbio è questo -devo creare un'altro cmd a parte solo x il caricamento o va bene cosi come l'ho scritto (cioè ke inizia a leggere il 3002 e poi subito dopo il 3003 della mossa vera e propria)?
#7
Inviato 27 October 2008 - 22:50
Come sai non ho tempo di spiegare meglio... prova a dare una occhiata al codice di Ranmaru Mori, ed in particolare la mossa "power charge".
Come noterai Ranmaru, usandolo da giocatore, carica la power premendo z+c e tenendo premuti tali tasti. Se i tasti vengono tolti, o il limite energetico raggiunto, il caricamento finisce.
l'AI invece usa un proprio caricamento personalizzato, per cui rimane a caricarsi finché l'avversario non va all'attacco o finché non raggiunge il limite energetico.
Dovrebbe essere lo state 1070 di Ranmaru... la logica è la stessa.
Come noterai Ranmaru, usandolo da giocatore, carica la power premendo z+c e tenendo premuti tali tasti. Se i tasti vengono tolti, o il limite energetico raggiunto, il caricamento finisce.
l'AI invece usa un proprio caricamento personalizzato, per cui rimane a caricarsi finché l'avversario non va all'attacco o finché non raggiunge il limite energetico.
Dovrebbe essere lo state 1070 di Ranmaru... la logica è la stessa.
#8
Inviato 28 October 2008 - 10:31
ho scritto questo
nel cns
statedef -2
[State 0, ChangeState]
type = ChangeState
triggerall = Var(59) = 1
TriggerAll = roundstate = 2 ------------(comando x la CPU)
value = 3002
triggerall = (var(59)=1)&&(statetype= S)&&(ctrl)&&(random=[0,251])
trigger1 = (P2bodydist X>=100)&& (power>=2000)
nel cmd
;max haoh
[State -1, max haoh]
type = ChangeState
value = 3002
triggerall = Var(59) = 0
triggerall = power>= 2000 ------- comando unico x il caricamento e x la mossa vera e propria
triggerall = life<=450
triggerall = command! = "max haoh"
trigger1 = (statetype = s) && ctrl
xò nn so se è fatto bene anke xkè tu prima parlavi di un changestate specifico x il caricamento) :unsure:
nel cns
statedef -2
[State 0, ChangeState]
type = ChangeState
triggerall = Var(59) = 1
TriggerAll = roundstate = 2 ------------(comando x la CPU)
value = 3002
triggerall = (var(59)=1)&&(statetype= S)&&(ctrl)&&(random=[0,251])
trigger1 = (P2bodydist X>=100)&& (power>=2000)
nel cmd
;max haoh
[State -1, max haoh]
type = ChangeState
value = 3002
triggerall = Var(59) = 0
triggerall = power>= 2000 ------- comando unico x il caricamento e x la mossa vera e propria
triggerall = life<=450
triggerall = command! = "max haoh"
trigger1 = (statetype = s) && ctrl
xò nn so se è fatto bene anke xkè tu prima parlavi di un changestate specifico x il caricamento) :unsure:
#9
Inviato 28 October 2008 - 21:00
tu carichi l'energia, o carichi una "kamehameha" per modo di dire... e quindi intendi dire solo che l'animazione del "caricamento", quando le mani da davanti passano dietro ed esce la sfera, non si vede e passa diretto a lanciare la sfera ?
se cosi' e' probabilemnte
[State 192, 2]
type = ChangeState
trigger1 = Command!= "holdc"
trigger2 = Time = 150
value = 3003
la CPU nn tiene premuti i tasti :P
se cosi' e' probabilemnte
[State 192, 2]
type = ChangeState
trigger1 = Command!= "holdc"
trigger2 = Time = 150
value = 3003
la CPU nn tiene premuti i tasti :P
#10
Inviato 28 October 2008 - 21:58
intendo un colpo stile shinkuu hadoken dove la palla di fuoco viene trttenuta alcuni secondi
tra le mani prima diessere lanciata (il mio problema è appunto nell'esecuzione della mossa della cpu ke salta l'anim del caricamento)
tra le mani prima diessere lanciata (il mio problema è appunto nell'esecuzione della mossa della cpu ke salta l'anim del caricamento)
Condividi questa discussione:
Pagina 1 di 1

Aiuto










