Forum MUGENATION: far apparire l'img di back ground quando si vince un round - Forum MUGENATION

Salta al contenuto

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

far apparire l'img di back ground quando si vince un round

#1 L   demongorne 

  • Senpai
  • PuntoPuntoPunto
  • Gruppo: Membro
  • Messaggi: 533
  • Iscritto: 07-November 06

  Inviato 05 April 2009 - 11:17

vorrei fare in modo ke quando mr.karate vince un round con un hyper move appaia sullo sfondo una scritta (come lo shun goku satsu di Akuma) io ho fatto in questo modo

mi sono innanzitutto creato l'anim della scritta ke deve apparire a fine round poi ho aggiunto un explod nelllo statedef dell'hyper ke mi inreressa


[StateDef 3151]
type = S
movetype= A
physics = N
juggle = 1
velset = 0,0
ctrl = 0
anim = 3003


[State 0, PlaySnd_voice]
type = PlaySnd
trigger1 = Animelem = 1
value = 850,0
;volume = 0
channel = -1

[State 0, PlaySnd_voice]
type = PlaySnd
trigger1 = time = 50
value = 3500,1
;volume = 0
channel = -1

[State 3000, Super A]
type = SuperPause
trigger1 = Time = 1
pos = 18, -57
sound = 20, 0
poweradd = -1000
time = 49
movetime = 49
darken = 0
anim = -1

[State 3001, Super]
type = Helper
trigger1 = Time = 2
id = 8000
name = "Super"
pos = 0,-75
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 1000, Proj]
type = Projectile
trigger1 = Animelem = 20
projanim = 7200
Projhitanim = 7205
projremanim = 7200
projcancelanim = -1
projmisstime = 0
projhits = 1
offset = 93, -65
projpriority = 1
projsprpriority = 4
velocity = 16
attr = S, HP
damage= 70
animtype = Heavy
hitflag = MAF
guardflag = M
pausetime = 3,4
sparkno = -1
guard.sparkno = S8105
sparkxy = 0, 0
hitsound = S3500,2
guardsound = S1,1
ground.type = Low
ground.slidetime = 18
ground.hittime = 18
air.hittime = 18
guard.ctrltime = 18
ground.velocity = -5, -6.67
guard.velocity = -8
air.velocity = -5, -6.67
airguard.velocity = -6.67,-1
air.juggle = 8
fall = 1
fall.recover = 0
air.fall = 1
air.recover = 0
envshake.time = 12
envshake.ampl = 2
ProjID = 3005
getpower = 0,0
givepower = 35, 35
palfx.time = 12*var(41)
palfx.add = 255,255,255
palfx.mul = 128,128,128
forcestand = 1
supermovetime = 1
yaccel = .5
kill = 0



[State 1000, Proj 2]
type = Projectile
trigger1 = Animelem = 25
projanim = 7200
Projhitanim = 7205
projremanim = 7200
projcancelanim = -1
projmisstime = 0
projhits = 1
offset = 93, -65
projpriority = 1
projsprpriority = 4
velocity = 16
attr = S, HP
damage= 70
animtype = Heavy
hitflag = MAF
guardflag = M
pausetime = 3,4
sparkno = -1
guard.sparkno = S8105
sparkxy = 0, 0
hitsound = S3500,2
guardsound = S1,1
ground.type = Low
ground.slidetime = 18
ground.hittime = 18
air.hittime = 18
guard.ctrltime = 18
ground.velocity = -5, -6.67
guard.velocity = -8
air.velocity = -5, -6.67
airguard.velocity = -6.67,-1
air.juggle = 8
fall = 1
fall.recover = 0
air.fall = 1
air.recover = 0
envshake.time = 12
envshake.ampl = 2
ProjID = 3005
getpower = 0,0
givepower = 35, 35
palfx.time = 12*var(41)
palfx.add = 255,255,255
palfx.mul = 128,128,128
forcestand = 1
supermovetime = 1
yaccel = .5
kill = 0


[State 7000, 3]
type = Projectile
trigger1 = AnimElem = 30
projanim = 7200
projhitanim = 7205
projpriority = 1
projheightbound = -150, 100
projedgebound = 100
projscreenbound = 100
projshadow = -1
offset = 93, -65;questo dice al mugen da qualle altezza il proiettile parte
velocity = 16;la velocità del proiettile
attr = S, SP
damage = 125;il danno
animtype = heavy
guardflag = MA
hitflag = MAFDP
pausetime = 3,4
hitsound = S3500,2
sparkno = S8220+(random%8)
sparkxy = 0,0
guardsound = S1,0
ground.slidetime = 18
ground.hittime = 18
air.hittime = 18
ground.slidetime = 20
ground.hittime = 20
guard.ctrltime = 20
ground.velocity = -10.5,-8.5
guard.velocity = -8
air.velocity = -10.5,-8.5
airguard.velocity = -6.67,-1
ground.cornerpush.veloff = 0
guard.cornerpush.veloff = -11.2
air.animtype = diugup
air.juggle = 2
air.fall = 1
down.velocity = -4,-6
down.hittime = 15
down.bounce = 0




[State 3000, AfterImage]
type = AfterImage
triggerall = !var(18) && prevstateno != [3151,3999]
trigger1 = time = 4
time = 55
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 3105, AssertSpecial]
type = AssertSpecial
trigger1 = win
trigger1 = Time <= 110
flag = NoBarDisplay
flag2 = NoBG


[State 3103, K.O.]-------------------------------- explod della scritta
type = Explod
trigger1 = Win
anim = 8660+var(12)
id = 8660
pos = ifelse(var(12),-24,0),ifelse(var(12),-40,0)
postype = Left
sprpriority = -4
bindtime = -1
ownpal = 1
ignorehitpause = 1
persistent = 0
scale = .5,.5




[State 3003, end]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1



ma la scritta nn compare a fine round....dove ho sbagliato??
0

#2 L   Nobun 

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

Inviato 05 April 2009 - 13:38

Devi spiegarmi come funziona questo helper, quando viene attivato, etc.

Quale sarebbe lo scopo di questo Helper (solo la scritta di fine round o altro?... vedo dei Projectile sospetti che mi fanno pensare ad un helper pensato per altro scopo diverso dalla "scritta")

Questa scritta finale dovrebbe apparire SEMPRE o SOLO IN CERTI CASI? (es. solo in caso di morte a seguito di una determinata mossa)

l'animazione contenente la scritta qual è esattamente?

----

Poi vorrei invitarti a riflettere, perché vedo tu continui a seguire di pari passo Warusaki e le sue espressioni complesse. Vorrei verificare che tu stia capendo cosa scrivi.

Quote

[State 3103, K.O.]-------------------------------- explod della scritta
type = Explod
trigger1 = Win
anim = 8660+var(12)
id = 8660
pos = ifelse(var(12),-24,0),ifelse(var(12),-40,0)
postype = Left
sprpriority = -4
bindtime = -1
ownpal = 1
ignorehitpause = 1
persistent = 0
scale = .5,.5


Questo è il pezzo di codice che vorrei esaminare.
Ora andiamo ai vari punti:

1) anim = 8660+var(12)
secondo te cosa significa esattamente? cosa implica tale espressione?

2) pos = ifelse(var(12),-24,0),ifelse(var(12),-40,0)
secondo te cosa significa esattamente? quali sono i valori di pos che vengono assunti? In quali casi esattamente? (e qui ti voglio... bisogna conoscere molto bene le espressioni per rispondere CORRETTAMENTE a questa domanda e senza omissioni).

Dovresti in particolare chiederti cosa registra, esattamente, la var(12) e quali valori può assumere (a questo non potrei risponderti perché non posso aver idea di come viene usata).

Io do' per scontato (anche perché so che sei un tipo sveglio) che sai cosa significano i vari parametri dei comandi. Quello che voglio farti capire è che non puoi utilizzare un codice che implica l'uso di una espressione se non conosci A FONDO cosa significa una espressione. Devi essere sicuro di capire PUNTO PER PUNTO quello che scrivere ed evitare automatismi. Dico questo perché vedo continui ad applicare automaticamente i valori passati da Warusaki nei vari parametri, i quali rispecchino i risultati da te usati.
Solo che, essendo il codice di warusaki basato su espressioni complesse, non è detto che il trasferimento ad altri luoghi di codice produca gli stessi effetti.
0

#3 L   demongorne 

  • Senpai
  • PuntoPuntoPunto
  • Gruppo: Membro
  • Messaggi: 533
  • Iscritto: 07-November 06

Inviato 05 April 2009 - 15:00

quell'espressione è la parte finale di un hyper dove mr karate finisce la mossa con 3 palle di fuoco(i 3 proj) mentre l'explod si riferisce alla scritta ke dovrebbe apparire ke nn è un helper come ho detto ho solo creato l'anim della scritta in modo tale ke fosse rikiamata dall'explod
mentre il trigger1 = win fa si ke questa venga visualizzata solo quando vince un round mentre penso ke le var12 siano irrilevanti (l'ho copiato da un char di warusaki ke adottava lo stesso principio )ma x me sono inutili....apparte l'explod il resto del codice l'ho programmato io


ah no ho capito l'errore era lostatedef di un altra mossa ho fatto un pò di confusione
:wacko:

cmnq ora funziona correttamente...
scusa Nobun anke se so già ke hai i tuoi impegni ma volevo kiederti se puoi dirmi doa dove si parte x aumentare il livello di difesa nell'AI e come si programma una counter
0

#4 L   Nobun 

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

Inviato 06 April 2009 - 17:50

Il counter (il tipo di grafica che appare al susseguirsi dei colpi di una combo) viene gestito dal Mugen e dipende dallo screenpack (il counter è poi, nello specifico, un font)

Comunque ti sbagli. Perché se la var(12) viene usata questo può produrre un comportamento non corretto.

1) anim = 8660+var(12)
Se ad esempio la var(12) è uguale a 3 viene eseguita l'animazione 8663. Se però hai solo l'anim 8660 capisci bene che non ha senso dare un valore variabile legato ad una var

2) pos = ifelse(var(12),-24,0),ifelse(var(12),-40,0)
Poi la var(12), nel tuo codice, influenza la posizione dell'explod. Nel caso specifico:
Se la var(12) = 1 allora la posizione è pos = -24, -40
Se la var(12) != 1 (diversa da 1) allora la posizione è pos = 0,0

Come vedi devi cominciare ad interrogarti se non è il caso di cominciare a capire cosa stai facendo ESATTAMENTE.

Inoltre, nel tuo codice, programmi la "scritta KO aggiuntiva" nell'Helper dei proiettili. Non mi sembra il posto migliore per un codice del genere. Mi sembra più indicata metterla sotto lo statedef -2.
In ogni caso tieni presente che, se vuoi far apparire la scritta solo in determinate condizioni, devi programmare bene i trigger in modo da essere il più preciso possibile (ricorda che il parametro "persistent" NON funziona negli statedef negativi).

----

Come incrementare la difesa della AI?
Non saprei. Dipende un po' da cosa intendi. Se vuoi fare una AI con strategia difensiva devi fare un buon lavoro. In ogni caso è difficile dare consigli generici sulla AI. Per fare una AI bisogna conoscere a menadito il proprio personaggio, i suoi punti di forza e i suoi punti deboli. Anche nelle mie AI (che sono offensive e quindi più semplici da realizzare) comunque una consapevolezza della struttura del char (perché l'ho fatto interamente io) il che mi ha reso possibile crearla. Fare una buona AI su un char altrui è molto più difficile.

Le combo (immagino volessi scrivere questo) si possono programmare in moltissimi modi diversi., dipende dall'effetto e dalle esigenze. Puoi dare una occhiata ai miei chars Ranmaru e Nobunaga che di "combo" ne hanno diverse (Ranmaru ha poi una combo che si trasforma in hyper se hai almeno due livelli di power).

Molti fanno una cosa (che è molto semplice) per le Ai, ovvero una serie di ChangeState a catena (molto prima del termine degli attacchi) così da non lasciare respiro all'avversario. E' una cosa molto facile da fare ma che io non ho mai voluto usare. Sono convinto che il char deve muoversi con le stesse regole (o quasi) del giocatore umano (non a caso se mi vedeste giocare con i miei chars scontrandomi con le versioni AI vedreste che riesco a mettere in pratica quasi tutte le combo - tranne le mosse a caricamento di Nobunaga - del PC ed inoltre anche altre. Proprio perché anche nelle mie AI i chars sono sottoposti alle stesse "pause " (inteso char fuori controllo perché sta eseguendo una mossa e fino ad un certo punto la mossa non parte) a cui è soggetto il giocatore umano.
0

#5 L   demongorne 

  • Senpai
  • PuntoPuntoPunto
  • Gruppo: Membro
  • Messaggi: 533
  • Iscritto: 07-November 06

Inviato 06 April 2009 - 18:45

si lo so infatti gli ho tolto le variabili avevo solo copiato l'explod xkè volevo ottenere un effetto simile (xò la presenza delle var era irrilevante nel codice in cui l'ho inserito)
quella dei changestate a catena è una tecnica ke adotto ank'io solo ke spesso i colpi mi vengono parati ad es.

;combo_zanretsuken
[State -2, Ai Pugno Normale]
type = ChangeState
value = 230
ctrl = 0
triggerall = var(59) = 1
trigger1 = (statetype = S) && (ctrl)
trigger1 = p2bodyDist X = [-30,30] ;da calibrare sulla distanza del pugno normale
trigger1 = random = [0,180]


[State -2, ChangeState]
type = ChangeState
Triggerall = roundstate = 2
triggerall = (var(59)!=0)&&(statetype = S)&&(stateno = 230)&&(random=[0,180])
trigger1 =movecontact
value = 231

[State -2, ChangeState]
type = ChangeState
Triggerall = roundstate = 2
triggerall = (var(59)!=0)&&(statetype = S)&&(random=[0,180])
trigger1 =(stateno = 231)&&(prevstateno = 230)&&(movecontact)
value = 250

[State -2, ChangeState]
type = ChangeState
Triggerall = roundstate = 2
triggerall = (var(59)!=0)&&(statetype = S)&&(random=[0,180])
trigger1 =(stateno = 250)&&(prevstateno = 231)&&(movecontact)
value = 1350


cmnq volevo kiederti x far si ke la scritta k.o. compaia solo alcune volte e nn sempre(ad es. 1 ogni 5 win round) cosa devo fare?
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