Creare un rpg in flash parte 3 – Creare un combattimento a turni

luglio 31, 2009 at 11:23 am (Guide) (, , , , , )

A questo punto abbiamo il nostro personaggio che si muove all’interno di una mappa ed ha delle statistiche da noi assegnate, come abbiam visto nei primi due tutorial, adesso vediamo invece come creare un combattimento a turni stile Final Fantasy per intenderci.

Innazitutto creaiamo una nuova scena che sarà lo stage del comabttimento, così come ho fatto per Colosseum Battle il personaggio potrà essere mosso verso l’ingresso del colosseo e viene portato all’interno di esso che non sarà altro che un altra scena del filmato da noi creato, per ottenere ciò basterà creare, come nel mio caso, un clip filmato a cui daremo il nome BAD (bad è solo il nome che ho usato io nel filmato ma potrete usare qualunque nome voi vogliate) e nel clip filmato del personaggio aggiungiamo il seguente script:

onClipEvent (enterFrame) {
if (this.hitTest(_root.BAD)) {
_root.gotoAndPlay(“start”);
// “start” è il nome dell’etichetta della scena dove si trova lo stage del combattimento
}
}

Grazie a questo script il personaggio appena entrerà in contato col clip Bad si passerà allo stage del comattimento che potrà essere come nel mio caso un altra scena del filmato stesso o un determinato frame dello stesso.

A questo punto tenendo conto che averte optato per creare un altra scena dovrete creare la parte grafica delo stage, posto un immagine di colossseum battle come esempio:

Aprend il sorgente fla di colosseum battle potrete trovare lo stage nella scena chiamata lvl 1, nel primo frame sulla linea temporale occorrerà inserire le statistiche del nemico in particolare ci interessa l’ Hp dello stesso, quindi nel 1 frame della linea temporale inseriamo il seguente script:

enemyHP = 200

Per poter rendere visibile L’hp del nemico basterà creare un campo di testo dinamico con var enemyHP e piazzare il campo di testo come ho fatto io vicino ad un imagine del nemico stesso.

Se volete visualizzare le statistiche del vostro personaggio basterà copiare i campi di testo dinamici precedentemente creati nella 1 scena cosi come abbiamo visto nel tutorial 2.

A questo punto occorrerà creare 5 animazioni differenti (ma potreteche anke usare dei semplici frame statici) che caratterizzano il combattimento in sè stesso, ovvero standing iniziale, il tuo attacco, l’attacco del nemico, quando vinci e quando perdi.

Nella fattispecie al secondo frame ho asegnato l’etichetta You alla quale si viene reindirizzati ogni qualvolta il nemico ci attacca o nooi attacchiamo il nemico in modo da determinare se l’hp del vostro personaggio o del nemico stesso sarà inferiore a zero. Nel frame relativo all’etichetta You ho iinserito il seguente script:

if (_root.HP<0) {
gotoAndPlay(“lose”); //
“lose” è letichetta del frame dove il pg perde in quanto l’energia del pg stesso è inferiore a zero.
}
if (_root.enemyHP<0) {
gotoAndPlay(“win”);
// “win” è l’etichetta del frame dove il pg vince in quanto l’hp del nemico è inferiore a zero.
}

A questo punto passiamo all’attacco vero e proprio del vostro pg nei confronti del nemico, l’etichetta che io ho dato al frame da cui parte l’animazione dell’attacco è attack nel frame ho inserito un pulsante con un semplice comando gotoAndPlay che fà partire l’animazione del pg che si dirige verso il nemico, nell’ultimo frame dell’animazione dell’attacco ho inserito lo script che permette di determinare il danno causato al nemico, nel dettaglio lo script è il seguente:

_root.enemyHP = _root.enemyHP-random(70)* lvl;
gotoAndPlay(“enemyatk”)

Lo script indica che la nuova Hp del nemico sarà uguale all’ HP attuale meno un numero variabile che andrà da 0 a 70 per il lvl del vostro personaggio, in questo modo avremo che maggiore sarà il livello del vostro pg maggiore sarà il danno che potrete causare. nella seconda parte dello script invece indichiamo al filmato stesso di andare al frame relativo all’attacco nemico al quale come potete vedere ho dato l’etichetta enemyattatk.

A questo punto dovremo creare l’animazione dell’attacco nemico, nel primo frame relativo all’attacco nemico occorrerà inserire lo script già visto sopra per determinare i valori hp di entrambi prima di avviare l’attacco, i modo che se dopo il vosto ultimo attacco il nemico ha l’energia al di sotto dello zero verrete portato al frame di vittoria, quindi reinseriamo al primo frame di enemyattatk :

if (_root.HP<0) {
gotoAndPlay(“lose”);
}
if (_root.enemyHP<0) {
gotoAndPlay(“win”);
}

Mentre all’ultimo frame di enemyatk dobbiamo inserire lo scrip che permette di determinare il danno causato dal nemico stesso, così come abbiamo fatto precedentemente per l’attacco de vostro pg:

_root.HP = _root.HP-random(80)
gotoAndStop(“You”)

Lo script quindi indica che danno causato dal nemico porterà Il valore HP attuale meno un numero variabile tra 0 e 80 ( a differenza dell’attacco del vostro pg l’attacco del nemico non verrà moltiplicato per il livello ma ad ogni stage o ad ogni nemico da voi settato dare un valore random differente). Inoltre lo script ci riporta al frame con l’etichetta You in modo da eseguire il controllo dei rispettivi valori Hp e se uno dei 2 valori sarà inferiore a zero vi manderà al frame Win (vittoria del vostro pg) o Lose (morte del vostro pg), vediamo quidi nel dettaglio i due frame appena indicati.

Il frame indicato con l’etichetta win dovrà contenere i valori di esperienza ottenuta avendo vinto e per esempio i soldi guadagnati dall’incontro, lo script da me inserito nel frame win è il seguente:

_root.xp = _root.xp+random(150)
_root.gold = _root.gold+random(50)
stop();

lo script indica che l’attuale valore xp diventerà maggiore di un numero variabile tra 0 e 150 mentre il valore gold diventerà maggiore di un numero variabile tra 0 e 50. Io a questo punto nel frame ho messo 2 pulsanti che ti permettono di decidere se continuare a combattere nel colosseo o uscire dal colosseo.

Per quanto concerne invece il frame con etichetta lose indica come detto il frame dove il vostro pg viene sconfitto in quanto l’hp del pg stesso è diventata inferiore a zero. Script particolari in questo frame non ce ne sono ma ad eccezzione di un comando stop nel frame e di un pulsante che ovviamente ti porta fuori dal colosseo, ma si potrebbe comunque prevedere ce una volta subità una sconfitta si perda xp e gold utilizzando come base lo script visto sopra.

Questo tutorial lo ritengo concluso se avete dubbi postate pure i vostri commenti.

NB: Tutti gli script descritti in queste guide sono contenuti all’interno della release Colosseum Battle progetto open source liberamente scaricabile.

Permalink Lascia un commento

Colosseum Battle Beta Release Gioco in flash Open Source

luglio 30, 2009 at 11:42 PM (Flash Games, Flash Games Source Code) (, , , , , , )

Colosseum Battle Beta Release

Colosseum Battle Beta release è un gioco in flash semi rpg open source, il file è liberamente scaricabile e il sorgente può essere modificato e studiato, in caso di riutilizzo del file vi chiedo solo di comunicarmelo o di inserire i credits, se invece appportate aggiunte al file originale comunicatemelo e una volta vagliate le aggiungerò al progetto originale.

All’interno del gioco in sè potrai muovere il tuo personaggio all’interno dell’arena e combattere contro gli opponenti, anche se in un primo momento essi si presenteranno piuttosto forti alla fine di ogni incontro avrai la possibilità di decidere se uscire dal colosseo o cotinuare a combattere. Uscendo guadagnerai l’esperienza relativa ai combattimenti fatti e salirai di livello per poter affrontare più facilmente gli incontri successivi.

Update Versione 4.1 – Con l’attuale versione sarà possibile salvare il gioco localmente attraverso lo shared object, quindi grazie ai cookie, in questo modo i progressi di gioco resteranno memorizzati sul pc del giocatore.-  Aggiunto il parametro mana per restorare i punti Hp durante i combattimenti nel colosseo. – Massimo livello settato a 20. – Aggiunti altri stage al colosseo per un totale di 6 stage.

Prova Colosseum Battle Beta Release

Permalink Lascia un commento