Arena80 Forum
Arena80 Forum
Vai al sito | Profilo | Topics Attivi | Utenti | Cerca | FAQ
 Tutti i Forums
 Il Forum
 Varie
 Tutorial AGS di WarioPunk: Programmazione

Nota: Devi essere un utente registrato per lasciare una risposta.

Dim.schermo:
UserName:
Password:
Format Mode:
Format: BoldItalicizedUnderlineStrikethrough Align LeftCenteredAlign Right Horizontal Rule Insert HyperlinkInsert EmailInsert Image Insert CodeInsert QuoteInsert List Insert YouTube
   
Messaggio:

* HTML è OFF
* Forum Code è ON
Smilies
Smile [:)] Big Smile [:D] Cool [8D] Blush [:I]
Tongue [:P] Evil [):] Wink [;)] Clown [:o)]
Black Eye [B)] Eight Ball [8] Frown [:(] Shy [8)]
Shocked [:0] Angry [:(!] Dead [xx(] Sleepy [|)]
Kisses [:X] Approve [^] Disapprove [V] Question [?]
Cheeky [:x)] Speechless [:u] Spin [88] Loud [()]
Bugout [8~o] Kiss [xox] Love [xo] Cry [:-[)]

 
Check qui per subscribe a questo topic.
   
Gli smilies suggeriti dagli utenti:
Smile [ZA] Smile [ZB] Smile [ZC] Smile [ZD] Smile [ZE] Smile [ZF] Smile [ZG] Smile [ZH] Smile [ZI] Smile [ZJ] Smile [ZL] Smile [Z0] Smile [Z2] Smile [Z4] Smile [Z5] Smile [Z6] Smile [Z7] Smile [Z9] Smile [ZO] Smile [ZP] Smile [ZT] Smile [ZW] Smile [Z3] Smile [ZR] Smile [ZS] Smile [ZV] Smile [ZX] Smile [Z8] Smile [Z1C] Smile [Z1D] Smile [Z1E] Smile [Z1G] Smile [Z1H] Smile [Z1I] Smile [Z1A] Smile [Z1B] Smile [Z1J] Smile [Z1L] Smile [Z1M] Smile [Z1N] Smile [Z1O] Smile [Z1P] Smile [Z1Q] Smile [Z1S] Smile [Z1T] Smile [Z1U] Smile [Z1V] Smile [Z1R] Smile [Z1Y] Smile [Z2A] Smile [Z2B] Smile [AZZ] Smile [EVVAI] Smile [KA] Smile [KICKING] Smile [PERCHE] Smile [SCALATA] Smile [SIROTOLA]
Smile [ZK] Smile [Z1] Smile [ZM] Smile [ZQ] Smile [ZU] Smile [ZN] Smile [ZY] Smile [ZZ] Smile [Z1F] Smile [Z1K] Smile [Z1W] Smile [Z1X] Smile [Z1Z] Smile [Z2C] Smile [CIAO] Smile [DOTS] Smile [LOL] Smile [SUPER]

T O P I C    R E V I E W
WarioPunk Posted - 21/02/2012 : 19:20:19
passiamo ora alla parte piu' difficile ma che una volta appresa rendera' possibile creare qualsiasi cosa

Ogni volta che in un'iterazione del pannello Events (il simbolo col fulmine sopra alle tabelle di oggetti, personaggi, bottoni ecc.) viene aperta una funzione o nel Global Script o nella Room specifica in caso di un elemento della Room stessa

questo perche' tutto cio' che e' presente nel Global Script e' presente in tutto il gioco mentre tutta la programmazione delle interazioni della stanza e' limitata alla stanza stessa percio' quando si scrive l'interazione di un personaggio (global script) non si puo' influire su un elemento della stanza come un hotspot o un object (script della stanza in cui si trova)

La programmazione ha delle semplici regole di punteggiatura, ogni parentesi deve avere una chiusura e ogni frase deve finire con un punto e virgola ; per poter passare alla prossima riga


Ora elenchero' gli script piu' comuni, che useremo per creare la nostra avventure, sono faicli da memorizzare e facilmente reperibili nel caro DYNAMIC HELP
quote:


"script name personaggio".ChangeRoom(int room, int x, inty);


questo comando teletrasporta un personaggio (funziona su personaggi giocanti e non e in qualsiasi momento e luogo) nella stanza indicata tra parentesi e nelle coordinate x e y sempre indicate tra parentesi


quote:
"scriptnamepersonaggio".Say("");


Questo comando indica che il tale personaggio pronuncia la frase scritta tra le virgolette (in cas il perosnaggio non sia nella nostra stessa stanza, la frase appare al centro dello schermo)
quote:

"scriptname personaggio".AddInventory("scriptname oggetto");

"scriptname personaggio".LoseInventory("scriptnameroggetto");


Aggiunge/toglie un oggetto dall'inventario del personaggio scelto (protagonista o altro personaggio in caso di giochi come Maniac Mansion dove ci sono piu' personaggi e piu' inventari)


quote:
"scriptname musica".Play();


viene eseguita una musica o un suono
quote:

"scriptname dialogo".Start();


Parte il dialogo indicato

quote:
"script name gui".Visible = True;

"script name gui".Visible = false;


Rende visibile/invisibile una GUI


quote:
"script name object".Visible = True;

"script name object".Visible = false;


Rende Visibile/invisibile l'object di una mappa

quote:

"scriptname hotspot".Enable = true;

"scriptname hotspot".Enable = false;



Rende Visibile/invisibile un hotspot

quote:
Wait();


Pausa tra uno script e l'altro di un numero di fps a seconda del numero inserito tra parentesi

quote:
"scriptname personaggio".ChangeView();


Cambia la view di base di un personaggio (nel caso del protagonista e' quella della camminata)
quote:

"scriptname personaggio".SpeechView = int ;


Cambia la talk view del personaggio
quote:

"script name perosnaggio".SetIdleView( int view, int delay);


Da a un personaggio una determinata dileview, ovvero una view che viene in caso di inattivita' ripetuta ogni tot, la pausa e' determinata dal numero inserito al posto di "int delay"

Un esempio puo' essere Simon The Sorcere che se non viene mosso per un po' inizia giochicchiare col cappello

quote:
object[0].Animate(2, 5);


Anima un oggetto della mappa contrassegnato dal suo numero, il primo numero tra parentesi indica la view mentre il secondo il loop

quote:
cMan.FollowCharacter(cEgo, 5, 80);


Il personaggio specifico seguira' il personaggio tra parentesi (in questo caso il protagonista), 5 rappresenta la distanza in pixel trai due e 80 quanto aspetta il personaggio che segue a partire dopo che l'altro si e' mosso
Un esempio dell'effetto di questo script e' Max diSam e Max o Bagaglio di DiscoWorld


quote:
PlayVideo("intro.mpg", eVideoSkipEscKey, 1);


Indica il video da mostrare, come e se poter skippare il video (per vedere le varie opzioni usate il dynami help alla voce video)

quote:
ShakeScreen(5);


Scuote lo schermo creando un effetto terremoto per un tempo determinato dla numero tra parentesi



Ci sono molti altri script ma questi sono quelli basilari per avere un'avventura classica


Ora parlaimo di come creare una struttura per un enigma e delle condizioni


CONDIZIONI

le condizioni piu' comuni sono due, usare un determinato oggetto e possdere un determinato oggetto

una condizione del tipo "possedere un oggetto" appare cosi'

quote:

if (player.HasInventory("script name dell'oggetto")){
}

else { }


dentro alla prima parentesi graffa andra quello che acacde se abbiamo l'oggetto specificato

mentre nella parentesi graffa dopo else (altrimenti) ci andra' cosa succede se non lo abbiamo, dopo nel dettaglio vedremo un esempio

Mentre questa e' una condizione del tipo "usare un oggetto", funziona allo stesso modo ma e' un po diversa nella prima riga

if (player.ActiveInventory == "scriptname dell'oggetto"){

}

else { }

Possiamo anche non mettere l'opzione else ma in quel caso se non rispettiamo l'esigenza della condizzione non succedera' niente


Ora passiamo a qualche esmpio che potete provare a programmare come esercizio


ESEMPIO ZERBINO-CHIAVE-PORTA

Allora ci troviamo in una stanza con una porta chiusa e uno zerbino
il nostro protagonista vara' lo script name cEGO come negli esempi di AGS

Creiamo un oggetto dell'inventario nell'apposita sezione e chiamiamolo come vogliamo, sara' la nostra chiave, qui nel esempio lo chiameremo iKEY

Sia che lo zerbino sia un Hotspot (lo chiameremo hZERB) sia che sia un Object (lo chiameremo oZERB), andiamo nella sua pagina EVENTS (fulmine sopra la tabella dei suoi dati) e clicchiamo sull'interazione che vogliamo mettere per trovare la chiave nascosta sotto, direi o Look o Interact

Cliccato sul tasto [...] vicino all'interazione apparira l'apposito spazio nel room script dove inseriremo

quote:
cEGO.AddInventory(iKEY);


ora guardando i spostando lo zerbino abbiamo agigunto la chiave all'inventario, il problema e' che s elo rifacciamo otterremo un'altra chiave

ci sono tre modi per risolvere questo problema

se lo zerbino e' un hotspot possiamo disabilitarlo
sempre subito dopo aver ottneuto l'oggetto nella setssa funzione
quote:

hZERB.Enabled = false;


Se e' un oggetto possiamo creare un altro oggetto zerbino uguale e nell asetssa posizione ma che pero' parte con Visibility "false" in questo modo quando avremo preso al chiave quello che da' le chiavi scomparira' e comparira' quello invece che dara' un messaggio del tipo "non c'e' piu' niente"

avremo una cosa simile quindi

quote:
cEGO.AddInventory(iKey);
oZERB.Visible = false;
oZERB2.Visible = true;


poi nella stessa funzione ma dello zerbino numero due metteremo

quote:
cEGO.Say("oltre alla chiave non c'era nient'altro");


Infine possiamo usare una condizione (sia che sia un hotspot che sia un object)
quote:

if (player.HasInventory(iKEY)) {

cEGO.Say("oltre alla chiave non c'era nient'altro");
}

else { cEGO.AddInventory(iKEY);
cEGO.Say("hey! c'e' una chiave sotto allo zerbino");}



in questo caso prima va messo cosa succede se l'abbiamo e quinid la frase d'ordinanza, e dopo l'else cosa succede se non l'abbiamo e quindi la raccolta della chiave.

Il problema di questo sistema e' che una volta che abbiamo usato l'oggetto se c'e' la possibilita' di reinteragire lo possiamo riottenere

ora vediamo come si comporta la porta

creiamo due oggetti nella mappa uno e' la porta apert oPOR2 e l'altro la porta chiusa oPOR

la porta chiusa parte visibile quella aperta no

Ora nella funzione della porta chiusa "Use inventory on object"

scriviamo

quote:
if (player.ActiveInventory == iKEY){
cEGO.Say("bene si e' aperta");
oPOR.Visible = false;
oPOR2.Visible = true;
}

else { cEGO.Say("non e' cosi' che si apre una porta);}



infine nell'object porta aperta, POR2 mettermo nella funzione "interact"
quote:

cEGO.ChangeRoom( 2, 100, 100);


e avremo creato il nostro sistema di porte (unilaterale)
fate in modo che il personaggio finisca in una walkablearea altrimenti rimarra' bloccato, le coordinate fanno come sempre riferimento alla linea di terra dle personaggio


questo sistema puo' essere riutilizztao per i personaggi e l'unione degli oggetti dell'inventario

Come sempre se avete domande o richieste scrivete pure



http://www.miciosegoneags.altervista.org/

http://www.miciosegoneags.altervista.org/space.html http://www.miciosegoneags.altervista.org/wast.html

http://www.miciosegoneags.altervista.org/rex.html http://www.miciosegoneags.altervista.org/dov.html

http://www.miciosegoneags.altervista.org/prix.html http://www.miciosegoneags.altervista.org/larry6.html

http://www.miciosegoneags.altervista.org/night.html

Arena80 Forum © 2008 Go To Top Of Page
Snitz Forums 2000