Forum MUGENATION: problema con il cmd - Forum MUGENATION

Salta al contenuto

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

problema con il cmd

#1 L   demongorne 

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

  Inviato 30 April 2009 - 16:36

ho programmato l'AI nel cmd del dragon punch in modo tale ke quando riceve i colpi degli stae indicati contrattacchi automaticante xò il codice nn vuole lavorare

[State -1, shoryuken,AI]
type = ChangeState
value = 1100
triggerall = var(59) = 1
triggerall = roundstate = 2
triggerall = statetype = S
triggerall = ctrl
triggerall = hitdefattr = SC, NA, SA, HA
trigger1 = stateno = 100&& movecontact
trigger2 = stateno = 200&& movecontact
trigger3 = stateno = 210&& movecontact
trigger4 = stateno = 201&& movecontact
trigger5 = stateno = 211&& movecontact
trigger6 = stateno = 230&& movecontact
trigger7 = stateno = 231&& movecontact
trigger8 = stateno = 240&& movecontact
trigger9 = stateno = 241&& movecontact
trigger10 = stateno = 250&& movecontact
trigger11 = stateno = 1100&& movecontact
trigger12 = stateno = 100&& movecontact
trigger13 = stateno = 20&& movecontact


dove ho sbagliato?
0

#2 L   Nobun 

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

Inviato 30 April 2009 - 19:36

Tutti quei & MoveContact sul winmugen non hanno effetto.
Questo perché i trigger move* (movecontact, movehit, etc) in winmugen non sono più booleani, ma restituiscono un valore di tempo. Questa differenza è spesso causa, ad esempio, del fastidioso problema "colpi in loop" (personaggio che non si ferma più quando inizia un colpo, oppure cade all'infinito, etc) proprio perché char - pensati per Dos - basano la programmazione su una struttura boolena di tali trigger, che in WinMugen non sussite più.

Prova quindi, prima di tutto, a sostituire tutti quei

& movecontact

con

& movecontact != 0

----

(nota: scrivere solo "Movecontact" in un certo senso è come scrivere "MoveContact = 1").
0

#3 L   demongorne 

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

Inviato 30 April 2009 - 19:51

ho fatto quello ke mi hai detto ma il codice nn lavora


[State -1, shoryuken,AI]
type = ChangeState
value = 1100
triggerall = var(59) = 1
triggerall = roundstate = 2
triggerall = statetype = S
triggerall = ctrl
triggerall = hitdefattr = SC, NA, SA, HA
trigger1 = stateno = 100&& movecontact != 0
trigger2 = stateno = 200&& movecontact != 0
trigger3 = stateno = 210&& movecontact != 0
trigger4 = stateno = 201&& movecontact != 0
trigger5 = stateno = 211&& movecontact != 0
trigger6 = stateno = 230&& movecontact != 0
trigger7 = stateno = 231&& movecontact != 0
trigger8 = stateno = 240&& movecontact != 0
trigger9 = stateno = 241&& movecontact != 0
trigger10 = stateno = 250&& movecontact != 0
trigger11 = stateno = 1100&& movecontact != 0
trigger12 = stateno = 100&& movecontact != 0
trigger13 = stateno = 20&& movecontact != 0
0

#4 L   Nobun 

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

Inviato 30 April 2009 - 21:09

prova a spostare il trigger ctrl
da triggerall
a trigger14

In teoria, poiché il colpo va fatto subito dopo il colpo precedente, il char non ha controllo, quindi i vari triggerX non hanno effetto per questo motivo.

State -1, shoryuken,AI]
type = ChangeState
value = 1100
triggerall = var(59) = 1
triggerall = roundstate = 2
triggerall = statetype = S
triggerall = hitdefattr = SC, NA, SA, HA
trigger1 = stateno = 100&& movecontact != 0
trigger2 = stateno = 200&& movecontact != 0
trigger3 = stateno = 210&& movecontact != 0
trigger4 = stateno = 201&& movecontact != 0
trigger5 = stateno = 211&& movecontact != 0
trigger6 = stateno = 230&& movecontact != 0
trigger7 = stateno = 231&& movecontact != 0
trigger8 = stateno = 240&& movecontact != 0
trigger9 = stateno = 241&& movecontact != 0
trigger10 = stateno = 250&& movecontact != 0
trigger11 = stateno = 1100&& movecontact != 0
trigger12 = stateno = 100&& movecontact != 0
trigger13 = stateno = 20&& movecontact != 0
trigger14 = ctrl
0

#5 L   demongorne 

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

Inviato 01 May 2009 - 10:36

nn succede niente :unsure:


ho provato in quest'altro modo


[State -1, shoryuken,AI]
type = ChangeState
value = 1100
triggerall = var(59) = 1
triggerall = roundstate = 2
triggerall = statetype = S
triggerall = hitdefattr = SC, NA, SA, HA
trigger1 = enemy,stateno = 100
trigger2 = enemy,stateno = 200
trigger3 = enemy,stateno = 210
trigger4 = enemy,stateno = 201
trigger5 = enemy,stateno = 211
trigger6 = enemy,stateno = 230
trigger7 = enemy,stateno = 231
trigger8 = enemy,stateno = 240
trigger9 = enemy,stateno = 241
trigger10 = enemy,stateno = 250
trigger11 = enemy,stateno = 400
trigger12 = enemy,stateno = 410
trigger13 = enemy,stateno = 420
trigger14 = enemy,stateno = 610
trigger15 = enemy,stateno = 620
trigger16 = enemy,stateno = 1100
trigger17 = enemy,stateno = 100
trigger18 = enemy,stateno = 20
trigger19 = ctrl
triggerall = P2bodydist X<= 30


ma nn funziona
0

#6 L   Nobun 

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

Inviato 01 May 2009 - 11:22

Quel triggerall posto alla fine è un ERRORE (prima vanno scritti i triggerall, poi i trigger1, poi i trigger2 etc).

Prova ad eliminare l'hitdef attr

[State -1, shoryuken,AI]
type = ChangeState
value = 1100
triggerall = var(59) = 1
triggerall = roundstate = 2
triggerall = statetype = S
trigger1 = enemy,stateno = 100
trigger2 = enemy,stateno = 200
trigger3 = enemy,stateno = 210
trigger4 = enemy,stateno = 201
trigger5 = enemy,stateno = 211
trigger6 = enemy,stateno = 230
trigger7 = enemy,stateno = 231
trigger8 = enemy,stateno = 240
trigger9 = enemy,stateno = 241
trigger10 = enemy,stateno = 250
trigger11 = enemy,stateno = 400
trigger12 = enemy,stateno = 410
trigger13 = enemy,stateno = 420
trigger14 = enemy,stateno = 610
trigger15 = enemy,stateno = 620
trigger16 = enemy,stateno = 1100
trigger17 = enemy,stateno = 100
trigger18 = enemy,stateno = 20
trigger19 = ctrl

Anche se non capisco come mai fai dipendere questo attacco da tutte queste mosse dell'AVVERSARIO che potrebbe non avere tutti questi states O_o

secondo me questo comando CMD va un attimo ripensato daccapo...

1) Di che mossa si tratta? in che casi va eseguita esattamente (ti chiedo come ti aspettavi si comportasse il char, insomma)
0

#7 L   demongorne 

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

Inviato 01 May 2009 - 12:48

si tratta del dragon punch lo scopo era di rendere meno attacfcabile mr.karate in modo tale ke quando il p2 si trova negli states indicati a una distanza <=30 scatti il contrattacco automatico del dragon punch mentre hitdef attr fa in modo ke il p1 nn viene colpito da p2 mentre il dragon punch è in esecuzione

ho modificato togliendo i movecontact e mettendo control come trigger1 anzikè triggerall ma niente da fare

[State -1, shoryuken,AI]
type = ChangeState
value = 1100
triggerall = var(59) = 1
triggerall = roundstate = 2
triggerall = hitdefattr = SC, NA, SA, HA
triggerall = enemy,statetype = S
trigger1 = (ctrl)&&(P2bodydist X<= 60)
trigger1 = stateno = 100
trigger2 = stateno = 200
trigger3 = stateno = 210
trigger4 = stateno = 201
trigger5 = stateno = 211
trigger6 = stateno = 230
trigger7 = stateno = 231
trigger8 = stateno = 240
trigger9 = stateno = 241
trigger10 = stateno = 250
trigger11 = stateno = 400
trigger12 = stateno = 410
trigger13 = stateno = 420
trigger14 = stateno = 610
trigger15 = stateno = 620
trigger16 = stateno = 1100
trigger17 = stateno = 100
trigger18 = stateno = 20
0

#8 L   Squall LionHeart™ 

  • Programmatore M.U.G.E.N.
  • Gruppo: Moderatore
  • Messaggi: 1097
  • Iscritto: 23-July 07

Inviato 01 May 2009 - 14:19

non mi piace molto questo fatto. l'AI è fatta bene quando sembra "ragionata". Obbligare un pg a fare una cosa SEMPRE in determinate condizioni, fa vedere troppo che è un bot, e inoltre rende debole il personaggio. (perché no nc'è più sfida. basta capire le cose standard che fa, e sai come prevenirle).

Saluti

Squall
0

#9 L   Nobun 

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

Inviato 01 May 2009 - 19:08

Nemmeno a me piace questo tipo di AI, ma va molto di moda.
In realtà non rende il personaggio debole, ma lo rende innaturale.

Infatti, se utilizzata bene, questa tecnica fa sì che il personaggio colpisca l'avversario senza sosta senza dare un attimo di respiro (e senza permetterti nemmeno di rialzarti, cosa che non sopporto perché devono essere lasciati dei tempi per la strategia... io ad es. - per un motivo simile - ho messo un "freno" a Ranmaru [dopo 5 oka si ferma per 1/2 di secondo dandoti il tempo di contrattaccare, cosa scritta anche nella documentazione]).

Innaturale perché il char sfrutta tempistiche e combinazioni che per il giocatore umano sono assolutamente impossibili, mentre secondo me una buona AI deve riprodurre un comportamento generale che sia riproducibile anche dal giocatore umano (es. se mi vedi combattere coi miei char contro le mie AI noterai che sto al passo con il computer, riuscendo a ripetere tutte le combo che fa anche la AI).
0

#10 L   demongorne 

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

Inviato 02 May 2009 - 12:39

ok ma come si usa questo tipo di comando(è evidente ke io commetto qualke errore ke x cui il codice nn lavora correttamente)
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