Help caricamento Hyper
#1
Inviato 01 December 2008 - 15:59
[Statedef 2999]
type = S
ctrl = 0
anim = 2990
velset = 0,0
[State 3000, Super A]
type = SuperPause
trigger1 = Time = 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 = 18,-70
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 = 850,0
;volume = 100
channel = -1
[State 192, 2]
type = ChangeState
trigger1 = Command != "hold y"
trigger2 = Time = 120
value = 3000
seguito dallo state dell'hyper
[StateDef 3000]
type = S
movetype= A
physics = S
juggle = 1
velset = 0,0
ctrl = 0
anim = 3000
[State -3,Super]
type = Helper
trigger1 = AnimElem = 3
id = 7200
name = "haoshookoken"
pos = 70,-65
postype = P1
stateno = 7200
helpertype = normal
keyctrl = 0
ownpal = 1
ignorehitpause = 1
persistent = 0
[State 3000, AfterImage]
type = AfterImage
triggerall = !var(18) && prevstateno != [3000,3999]
trigger1 = time = 4
time = 45
TimeGap = 3
FrameGap = 4
length = 10
PalBright = 1,1,1
PalContrast = ifelse(!var(5), 128, ifelse(var(5) = 1, 50, 150)),ifelse(!var(5), 128, ifelse(var(5) = 1, 50, 50)),ifelse(!var(5), 128, ifelse(var(5) = 1, 150, 50))
PalAdd = 0,0,0
PalMul = .5,.5,.5
trans = add1
[State 0, PlaySnd_voice]
type = PlaySnd
trigger1 = time = 2
value = 3500,0
;volume = 0
channel = -1
[State 3003, end]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
quersto comando mi funziona solo cn "hold y" ma se vovoglio programmarlo xkè funzioni ad es. anche con il comando "hod x" il cricamento viene saltato cioè se scrivo in questo modo
[State 192, 2]
type = ChangeState
trigger1 = Command != "hold y" && Command ! = "hold x"
trigger2 = Time = 120
value = 3000
nn funziona il caricamento;inoltre con l'AI il caricamento viene spesso saltato eseguendo direttamente lo state del lancio
;AI (cmd)
[State -1, AI]
type = VarSet
trigger1 = command = "AI1"
v = 59
value = 1
[Command]
name = "AI1" ;Required (do not remove)
command = F
time = 1
[Statedef -2] (cns)
;Charge haoh
[State -2, ChangeState]
type = ChangeState
TriggerAll = roundstate = 2
value = 2999
triggerall = (var(59)!=0)&&(statetype= S)&&(ctrl)&&(random=[0,951])
trigger1 = (P2bodydist X>=100)&& (power>=1000)
#2
Inviato 01 December 2008 - 16:05
Quote
type = ChangeState
trigger1 = Command != "hold y" && Command ! = "hold x"
trigger2 = Time = 120
value = 3000
Secondo me dovrebbe essere così:
[State 192, 2]
type = ChangeState
trigger1 = Command != "hold x"
trigger2 = Time = 120
value = 3000
non vedo perchè dovresti aggiungere:
"hold y" && Command !
#3
Inviato 01 December 2008 - 17:25
#4
Inviato 04 December 2008 - 22:32
Se tu scrivi
command != "hold x" && command !="hold y"
attivi il comando se NON hai premuto NE' "hold x" NE' "hold y".
Inoltre MAI usare le espressioni con il trigger command. Non so bene il motivo ma, mentre realizzavo KingLion, ho scoperto un bug nel funzionamento del mugen.
Se scrivi ad esempio
trigger1 = command = "comando 1" && command = "comando 2"
sono molto probabili comportamenti anomali del char. Se invece scrivi
trigger1 = command = "comando 1"
trigger1 = command = "comando 2"
no. Teoricamente le due scritture sono uguali. Ma la prima, come ho detto, può produrre problemi.
Come ho detto... MAI usare espressioni con il trigger command.
#5
Inviato 05 December 2008 - 13:59
[Statedef 2999]-----------------------------(statedef del caricamento)
type = S
ctrl = 0
anim = 2990
velset = 0,0
[State 3000, Super A]
type = SuperPause
trigger1 = Time = 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 = 18,-70
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 = 850,0
;volume = 100
channel = -1
[State 192, 2]
type = ChangeState
trigger1 = Command != "hold y"
trigger1 = Command != "hold x"
trigger2 = Time = 120
value = 3000
inoltre nn riesco a far funzionare correttamente il caricamento dell'hyper nell'AI :unsure:
#7
Inviato 05 December 2008 - 18:39
Io ho detto che, OLTRE a dover scrivere i trigger command separatamente dovevi modificarli perché sbagliati.
!= significa DIVERSO DA
invece devi scrivere
=
che significa UGUALE A
---
Prima di scrivere il codice dovresti cercare di abituarti a capire PERCHE' un dato comando viene scritto in una certa maniera. Ricordo inoltre che il codice di Ranmaru del caricamento di power può servirti come prototipo per qualunque tipo di caricamento.
Pertanto, prima di programmare, ti suggerisco di approfondire questi argomenti:
1) Operatori (sia logici che matematici) e loro funzionamento (gli operatori sono =, !=, >, <, &&, ||, etc)
2) La Trigger Logic (in cns.html)
3) approfondire il funzionamento del trigger command (essendo un trigger particolarmente complesso che spesso viene sottovalutato perché solo apparentemente semplice. Invece contiene in sè dei principi sull'overloading delle funzioni da non sottovalutare, che si rivelano poi utilissimi se li si sanno sfruttare)
Visto che ciclicamente mi sembra che tu ripeta gli stessi errori, ho l'impressione che tu abbia le idee un po' confuse ed è quindi opportuno secondo me cercare di rischiarirsele.
#8
Inviato 05 December 2008 - 23:30
[State 192, 2]
type = ChangeState
trigger1 = Command = "hold y"
trigger1 = Command = "hold x"
trigger2 = Time = 120
value = 3000
#9
Inviato 06 December 2008 - 09:13
Con il codice scritto come da te detto si passa allo state 3000 in uno di questi due casi:
1) Vengono rilasciati O il tasto x O il tasto y
2) Trascorrono i 120 tick di tempo
Quindi Appena vengono rilasciati uno dei due tasti, oppure alla scandenza del tempo massimo, il cambio state è assicurato,
Aggiungo anche che, data la "persistenza" del tipo di controllo, più che usare i comandi "hold x" ed "hold y" io suggerirei di provare a valutare semplicemente "x" ed "y"
[State 192, 2]
type = ChangeState
trigger1 = Command = "y"
trigger1 = Command = "x"
trigger2 = Time = 120
value = 3000
#10
Inviato 06 December 2008 - 12:38
un'altra cosa strana è ke il comando funziona solo con "y" ad es. se metto "x" o "z" il comando nn viene attivato :unsure:
#11
Inviato 06 December 2008 - 13:13
Ma forse tu vuoi fare in modo che basti tenerne premuto uno solo...
oppure non ho capito esattamente ciò che tu vuoi fare (perché alla luce dell'effetto esatto può cambiare il codice).
In ogni caso credo che, dato il tipo di valutazione, sia meglio "x" che "hold x" e "y" anziché "hold y"...
#12
Inviato 06 December 2008 - 15:27
Nobun, su Dec 6 2008, 13:13, detto:
Ma forse tu vuoi fare in modo che basti tenerne premuto uno solo...
oppure non ho capito esattamente ciò che tu vuoi fare (perché alla luce dell'effetto esatto può cambiare il codice).
In ogni caso credo che, dato il tipo di valutazione, sia meglio "x" che "hold x" e "y" anziché "hold y"...
NN so se hai presente svc Mr.karate di Warusaki3 ha il caricamento dell 'hyper ke si attiva sia con hold x ke con hold y(nn premendoli insieme come ad es si fa con il Power charge ma ottenenedo due comandi distinti e separati ke attivano la stessa mossa)
questo è la statedef di caricamento hyper ke usa warusaki x svc Mr.karate
[Statedef 3501]
type = S
movetype= A
physics = S
ctrl = 0
velset = 0,0
anim = 1601
[State 1600,3]
type = Changestate
trigger1 = Command != "holdx" && var(5) = 0
trigger2 = Command != "holdy" && var(5) = 1
trigger3 = time = 150
value = 3502
in questo modo con hold x lancia la palla di fuoco lenta mentre con hold y lancia la la stessa palla di fuoco ma con velocità maggiore
#13
Inviato 06 December 2008 - 17:55
Allora, nel cns va bene allora usare il segno di diverso, ma usa il comando "x" ed il comando "y", non usare invece "hold x" ed "hold y".
Nel CMD però devi distinguere i due trigger
[State -1, Colpo in Caricamento]
type = ChangeState
value = ...
ctrl = 0
trigger1 = command = "x"
trigger2 = command = "y"
#14
Inviato 06 December 2008 - 19:39
il problema era nel cmd infatti funzionava solo con hold y xkè c'era un solo comando cioè questo
[Command]
name = "haoshookoken"
command = ~F, B, DB, D, DF, F, y
time = 21
xciò ho innanzitutto creato un' altro comando x la stessa mossa in questo modo (nominandolo diversamente)
[Command]
name = "haoshookoken_1"
command = ~F, B, DB, D, DF, F, x
time = 21
poi nel changestate del cmd ho modificato il triggerall = Command = "haoshookoken"
con -triggerall = Command = "haoshookoken" || Command = "haoshookoken_1"
infine nel cns ho messo questo changestate(i "!" sono necessari x rilasciare il caricamento quando lo desidero fino a 120 game ticks)
[State 192, 2]
type = ChangeState
trigger1 = Command != "hold x"
trigger1 = Command != "hold y"
trigger2 = Time = 120
value = 3000
Ora xò rimane ancora la questione dell'AI ke avvolte salta l'anim del caricamento hyper
io x ora ho scritto cosi -
;cns
[Statedef -2]
;Charge haoh
[State -2, ChangeState]
type = ChangeState
TriggerAll = roundstate = 2
value = 2999
triggerall = (var(59)!=0)&&(statetype= S)&&(ctrl)&&(random=[0,951])
trigger1 = (P2bodydist X>=100)&& (power>=1000)
;haoh_lancio
[State -2, ChangeState]
type = ChangeState
TriggerAll = roundstate = 2
value = 3000
triggerall = (var(59)!=0)&&(statetype= S)&&(ctrl)&&(random=[0,951])
trigger1 = (P2bodydist X>=100)&& (power>=1000)
;cmd
;AI
[State -1,AI]
type = varset
trigger1 = command = "AI1"
trigger2 = command = "AI2"
v = 59
value = 1
------------------------------------------------------------------------------------------
;AI command
[Command]
name = "AI1" ;Required (do not remove)
command = F
time = 1
[Command]
name = "AI2" ;Required (do not remove)
command = F, B, D, B, D, D, F, F
time = 1
dove ho sbagliato?
#15
Inviato 06 December 2008 - 20:38
[Command]
name = "Fireball"
command = ~D, DF, F, x
[Command]
name = "Fireball"
command = ~D, DF, F, y
---
in questo caso quando fai
triggerx = command = "Fireball"
sarà valido SIA premendo il tasto x che il tasto y (se noti nei miei chars uso spesso tale tecnica).
-------------------------
Cosa hai sbagliato? E' sempre lo stesso errore. Il changestate dell'umano e della AI deve essere diverso
Se non ho capito male la var(59) identifica la AI. Se è così
---------
QUINDI, AL POSTO DI
[State 192, 2]
type = ChangeState
trigger1 = Command != "hold x"
trigger1 = Command != "hold y"
trigger2 = Time = 120
value = 3000
DEVI SCRIVERE
[State 2999, Human Changestate]
type = ChangeState
triggerall = var(59) = 0
trigger1 = Command != "x"
trigger1 = Command != "y"
trigger2 = Time = 120
value = 3000
[State 2999, AI ChangeState]
type = ChangeState
triggerall = var(59) != 0
trigger1 = enemy, movetype = A ;se avversario va in attacco rilascia subito la sfera
trigger2 = enemy, stateno = 20 ;se avversario cammina in avanti rilascia subito la sfera
trigger3 = time = 120 ;come l'umano mantiene il caricamento entro 120 ticks massimo
---
Questa è una idea approssimativa di rilascio della AI. Puoi abbellire o modificare i casi in cui vuoi che la AI decida di ritenere opportuno di abbandonare il caricamento prima del tempo.
--
#16
Inviato 06 December 2008 - 22:44
Nobun, su Dec 6 2008, 20:38, detto:
[Command]
name = "Fireball"
command = ~D, DF, F, x
[Command]
name = "Fireball"
command = ~D, DF, F, y
---
in questo caso quando fai
triggerx = command = "Fireball"
sarà valido SIA premendo il tasto x che il tasto y (se noti nei miei chars uso spesso tale tecnica).
-------------------------
Cosa hai sbagliato? E' sempre lo stesso errore. Il changestate dell'umano e della AI deve essere diverso
Se non ho capito male la var(59) identifica la AI. Se è così
---------
QUINDI, AL POSTO DI
[State 192, 2]
type = ChangeState
trigger1 = Command != "hold x"
trigger1 = Command != "hold y"
trigger2 = Time = 120
value = 3000
DEVI SCRIVERE
[State 2999, Human Changestate]
type = ChangeState
triggerall = var(59) = 0
trigger1 = Command != "x"
trigger1 = Command != "y"
trigger2 = Time = 120
value = 3000
[State 2999, AI ChangeState]
type = ChangeState
triggerall = var(59) != 0
trigger1 = enemy, movetype = A ;se avversario va in attacco rilascia subito la sfera
trigger2 = enemy, stateno = 20 ;se avversario cammina in avanti rilascia subito la sfera
trigger3 = time = 120 ;come l'umano mantiene il caricamento entro 120 ticks massimo
---
Questa è una idea approssimativa di rilascio della AI. Puoi abbellire o modificare i casi in cui vuoi che la AI decida di ritenere opportuno di abbandonare il caricamento prima del tempo.
--
seguendo il tuo consiglio ho messo nel cns
[State 2999, Human Changestate]
type = ChangeState
triggerall = var(59) = 0
trigger1 = Command != "hold x"
trigger1 = Command != "hold y"
trigger2 = Time = 120
value = 3000
nell' AI
;Charge haoh
[State -2, AI ChangeState]
type = ChangeState
triggerall = var(59) != 0
trigger1 = enemy, movetype = A
trigger2 = enemy, stateno = 20
trigger3 = time = 120
ma quando faccio partire il mugen mi da messaggi di errore nel changestate dell'AI del cns
#17
Inviato 07 December 2008 - 14:05
...però potevi accorgerti anche da solo di come risolvere il problema :P
[State 2999, AI ChangeState]
type = ChangeState
triggerall = var(59) != 0
trigger1 = enemy, movetype = A
trigger2 = enemy, stateno = 20
trigger3 = time = 120
value = 3000
---
Comunque questo ChangeState NON VA messo nello statedef -2, ma va messo nello stesso state di Human ChangeState, subito dopo.
Insomma i due comandi vanno scritti, uno di seguito all'altro, come te li ho scritti io ed ENTRAMBI nello state 2999.
#18
Inviato 07 December 2008 - 16:39
ma quindi nell0 state -2 dell'AI e nel cmd dell'AI nn va aggiunto niente x il caricamento dell' hyper?
L'ho appena testate ma nn funziona nel senso ke avvolte rikiama il caricamento altre voltre salta tale animazione (nn riesco a capire dove diavolo è l'errore)
ho cambiato nello statedef 2999 del cns (nn dell'AI come facevo prima) il changestate del caricamento come mi hai detto di fare
[State 2999, Human]
type = ChangeState
triggerall = var(59) = 0
trigger1 = Command != "hold x"
trigger1 = Command != "hold y"
trigger2 = Time = 120
value = 3000
[State 2999, AI ChangeState]
type = ChangeState
triggerall = var(59) != 0
trigger1 = enemy, movetype = A
trigger2 = enemy, stateno = 20
trigger3 = time = 120
value = 3000
la cosa strana poi è ke avvolte funziona ed altre no :unsure:
#20
Inviato 07 December 2008 - 18:50
x sicurezza posto il cns e il cmd dell'AI
CvS_mr.karate normal AI
cns
[Statedef -2]
;Charge haoh
[State -2, ChangeState]
type = ChangeState
triggerall = (var(59)!=0)&&(statetype= S)&&(ctrl)&&(random=[0,951])
trigger1 = (P2bodydist X>=100)&& (power>=1000)
value = 2999
;haoh
[State -2, ChangeState]
type = ChangeState
triggerall = (var(59)!=0)&&(statetype= S)&&(ctrl)&&(random=[0,951])
trigger1 = (P2bodydist X>=100)&& (power>=1000)
value = 3000
cmd
;AI
[State -1,AI]
type = varset
trigger1 = command = "AI1"
trigger2 = command = "AI2"
v = 59
value = 1
------------------------------------------------------------------------------------------
;AI command
[Command]
name = "AI1" ;Required (do not remove)
command = F ---------------------------------(caricamento)
time = 1
[Command]
name = "AI2" ;Required (do not remove)
command = F, B, D, B, D, D, F, F------------------------------(lancio Hyper)
time = 1
;CvS serious karate AI (qui ho aggiunto un altra hyper ke è la stessa di normal mr.karate solo ke lancia 3 fire ball anzikè 1 (max haoh))
;cns
[Statedef -2]
;Charge haoh
[State -2, ChangeState]
type = ChangeState
TriggerAll = roundstate = 2
value = 2999
triggerall = (var(59)!=0)&&(statetype= S)&&(ctrl)&&(random=[0,951])
trigger1 = (P2bodydist X>=100)&& (power>=1000)
;Haohshookoken, launch
[State -2, ChangeState]
type = ChangeState
TriggerAll = roundstate = 2
value = 3000
triggerall = (var(59)!=0)&&(statetype= S)&&(ctrl)&&(random=[0,951])
trigger1 = (P2bodydist X>=100)&& (power>=1000)
;Charge Max_haoh
[State -2, ChangeState]
type = ChangeState
TriggerAll = roundstate = 2
value = 3150
triggerall = (var(59)!=0)&&(statetype= S)&&(ctrl)&&(random=[0,951])
trigger1 = (P2bodydist X>=100)&& (power>=2000)
;Max_haoh, launch
[State -2, ChangeState]
type = ChangeState
TriggerAll = roundstate = 2
value = 3151
triggerall = (var(59)!=0)&&(statetype= S)&&(ctrl)&&(random=[0,951])
trigger1 = (P2bodydist X>=100)&& (power>=1000)
;cmd
;AI
[State -1,AI]
type = varset
trigger1 = command = "AI1"
trigger2 = command = "AI2"
trigger3 = command = "AI3"
trigger4 = command = "AI4"
v = 59
value = 1
------------------------------------------------------------------------------------------
;AI command
[Command]
name = "AI1" ;Required (do not remove) ----------------- (caricamento haoh)
command = F
time = 1
[Command]
name = "AI2" ;Required (do not remove)-------------------(caricamento Max haoh)
command = F
time = 1
[Command]
name = "AI3" ;Required (do not remove)----------------------(haoh lancio)
command = F, B, D, B, D, D, F, F
time = 1
[Command]
name = "AI4" ;Required (do not remove)----------------------(max haoh lancio)
command = D, D, B, D, D, B
time = 1

Aiuto










