01-05-2011, 08:10 PM
(Questo messaggio è stato modificato l'ultima volta il: 07-08-2012, 12:44 PM da Johnny 97.)
Su richiesta di Zapetino, ho fatto questa guida e la posto qui su Making Videogames. Mi scuso con Zapetino per il ritardo. La copia di questa guida è vietata, se non con l’autorizzazione dell’autore.
L’RGSS2, è il linguaggio di programmazione utilizzato in RPG Maker VX. Imparando questo linguaggio, si potranno aggiungere nuove funzioni al gioco, migliorare script ecc… L’RGSS” è una versione migliorata, o meglio, aggiornata dell’RGSS, utilizzato in RPG Maker XP.
L’RGSS2 (così come l’RGSS) è una variante del Ruby, e non è molto complesso, ma bisogna comunque impararlo bene per ottenere risultati decenti. Come per quasi tutti gli altri linguaggi di programmazione, bisogna essere a conoscenza di una buona parte della lingua inglese per memorizzare facilmente tutto o quasi, comunque, come già detto prima, non è complicato…
Iniziamo con lo scoprire le varie parti principali in uno script:
LE CLASSI:
Le Classi possono essere definite il gruppo principale in cui si sviluppa lo script. Senza una classe, uno script non può funzionare. Alcuni script hanno più di una classe per questioni di funzionalità, ma questo, non ci importa al momento. Le classi iniziano con il comando, e finiscono con il comando . Ad ogni classe, bisogna attribuire un nome (Il nome lo deciderete voi, il nome non è un comando, quindi potrete scrivere una parola qualsiasi come nome, ma deve avere come prima lettera una lettera maiuscola, può contenere un underscore "_", e non può contenere numeri.) , così . Una Variabile Locale (Ne parleremo in seguito) settata in una classe, non può essere utilizzata in un’altra classe. Ci sono poi classi, che possono essere delle sottoclassi di un’altra classe. Quando una classe è sottoclasse, può utilizzare le stesse variabili locali utilizzate nella classe da cui deriva (Al momento di sicuro non avrete capito il concetto, lo riprenderemo dopo, quando faremo le variabili). In questo modo, le variabili locali di uno script possono essere riprese in un altro script.
LE METHOD DEFINITIONS:
Le Method Definitions, sono importanti quanto le classi, in quanto possono essere considerate come dei sottogruppi. Senza di esse, lo script non funzionerebbe . Il tipo di Method Definitions da utilizzare dipendono dallo scopo dello script. Le Method Definitions, iniziano con il comando, e terminano con il comando (Capitan Ovvio xD). Io non sono un esperto di scripting, ho imparato a scriptare guardando gli altri script, posso dirvi che esistono tanti tipi di Method Definitions, ma non so dirveli tutti e quali funzioni svolgono… Cioè, io non conosco la differenza fra due def diverse xD. Ecco una lista delle def che conosco e quali funzioni svolgono (Non sono sicuro delle funzioni che svolgono):
Ne conosco molti, eh? xD Comunque, vi ripeto quest’argomento sulle Method Definitions non l’ho ancora capito tanto bene, e non sono sicuro sulle funzioni dei def postati sopra. Per fare pratica, consiglio di utilizzare il (uso sempre quello xD).
AGGIORNAMENTO 28/07/2012: E' passato un bel po' di tempo da quando ho scritto questa guida e da allora ho scoperto qualcosa in più, soprattutto su che cosa sono queste "def". Innanzitutto, quasi tutto ciò che ho scritto sopra, riguardante le def, è sbagliato. Alla fine del post avrete altre informazioni.
I COMMENTI:
Il commento, è l’unica parte dello script che non viene elaborata dal compilatore, cioè, il commento non ha alcun effetto sullo script, è utilizzato soltanto per annotare qualcosa, magari per dare istruzioni per l’impostazione dello script. Comunque, nel suo piccolo, è molto utile perchè, come già detto, è utilizzato dagli autori degli script per comunicare con chi userà lo script. Per scrivere un commento basta anteporre il # nella riga.
Il commento, come potete notare, non ha bisogno del comando end per terminare, bensì terminerà automaticamente alla fine della riga
Questo commento, al contrario di un normale commento, ha bisogno del comando end per terminare, questa volta preceduto da un “=”.
LE CONDIZIONI:
Le condizioni, possono essere considerate la parte portante di uno script. Quasi tutti gli script hanno bisogno di queste funzioni particolari, perché permettono di impostare meglio uno script. Le condizioni iniziano con il comando if (Che in inglese significa “se”) e terminano con… vabbè non ve lo dico… ormai credo l’abbiate capito che tutto termina con quel comando che mi sono stufato di pronunciare xD [spoiler]una vocina dal nulla parla… la sento… cosa dice? O.O[/spoiler] Comunque, end o non end, la struttura di una if è un po’ complessa. Dipende dall’utilizzo che ne vogliamo fare, può assumere diverse forme.
Questa è la struttura più semplice che può avere una if. Esaminiamola:
Controlla se l’azione è compiuta. In questo caso se tu stai leggendo questa guida.
L’azione da compiere se quella di prima è compiuta. In questo caso, se tu stai leggendo questa guida, il computer dice “ciao!”.
-.-“
Un’altra struttura è :
esaminiamo questa struttura:
Controlla se l’azione è compiuta. In questo caso se tu stai leggendo questa guida.
L’azione da compiere se quella di prima è compiuta. In questo caso, se tu stai leggendo questa guida, il computer dice “ciao!”.
In inglese, “else” significa “altrimenti”. Questo comando, controlla che se la prima azione (Quella con l’if), non è compiuta, si compie un’altra azione.
… Mi dispiace dirlo ma… termina la condizione. xD L’ho detto xD
Poi ci sono strutture più complesse ancora, dove ci sono if dentro if, if dentro else e molto altro, che oggi non analizzeremo. Inoltre, una fi può essere sviluppata tutta su una riga sola, così:
L’unica cosa che cambia è che fra l’if e l’azione da compiere, c’è then, ma questa cosa di sviluppare un’if su tutta una riga non ha senso, quindi, è meglio utilizzare la struttura normale, che è molto più ordinata e non fa confondere.
LE VARIABILI:
Le variabili, sono molto utilizzate nelle condizioni, o per impostare qualcosa. Esistono 3 tipi di variabili:
Variabili Locali (Quella di cui vi ho parlato prima), che funziona solo nella classe in cui è stata impostata;
Variabili Istanze , che funziona in tutto lo script;
Variabili Globali, che funziona in tutti gli script del gioco.
Esempi:
Alle variabili, è possibile, aggiungere, sottrarre, moltiplicare, dividere un numero, oppure impostarla di nuovo. Impariamo ad eseguire operazioni con le variabili, e a controllarle:
Come potete vedere, con le variabili non solo si possono eseguire operazioni, ma anche espressioni. Inoltre, le variabili, possono anche essere settate come lettere, invece di numeri:
se una variabile, è settata su nil, così: vuol dire che è nulla, cioè, esiste, ma è annullata.
LE SWITCH:
Utili come le variabili, ma hanno meno possibilità di settaggio, infatti può essere settata solo su ON o OFF. Ecco due esempi di switch: Come potete notare, le switch iniziano con @, proprio come le variabili istanze. Esempi di controlli delle switch:
VARIABILI GLOBALI UTILI:
Il gioco, utilizza molte variabili globali, ad esempio, ce n’è una per I soldi, una per indicare le variabili impostate dalla finestra eventi, ecc… Queste variabili globali, possono essere molto utili nella creazione degli script. Ecco qui le più importanti:
Credo che questi vi basteranno e avanzeranno per iniziare a scriptare…
Bene adesso che abbiamo finito una parte di teoria (Il resto lo analizzeremo in un’altra futura guida, al momento usate questa parte di RGSS2), passiamo alla pratica. Proveremo a fare uno script, che aggiunge al giocatore 900 monete, sela prima switch del gioco è attivata. E’ uno script semplicissimo da fare, iniziamo!
Come prima cosa, bisogna mettere la classe e la method definition:
poi, bisogna controllare se la switch è attivata, quindi sviluppare il resto della condizione:
Ecco il risultato finale:
Spero abbiate capito tutto xD Ciao, e grazie per aver letto la guida!
La copia della seguente guida è vietata a chiunque, se non con l’autorizzazione dell’autore (Io xD)
AGGIORNAMENTO 28/07/2012: Presto posterò una nuova guida nella sezione RPG Maker VX Ace, che riprenderà alcuni concetti di questa guida per approfondirli (Come ad esempio le method definitions, che non ho spiegato bene in questa guida), e spiegherò le varie differenze fra i vari RGSS (RGSS in RPGM XP, RGSS2 in RPGM VX e RGSS3 in RPGM VX Ace).
L’RGSS2, è il linguaggio di programmazione utilizzato in RPG Maker VX. Imparando questo linguaggio, si potranno aggiungere nuove funzioni al gioco, migliorare script ecc… L’RGSS” è una versione migliorata, o meglio, aggiornata dell’RGSS, utilizzato in RPG Maker XP.
L’RGSS2 (così come l’RGSS) è una variante del Ruby, e non è molto complesso, ma bisogna comunque impararlo bene per ottenere risultati decenti. Come per quasi tutti gli altri linguaggi di programmazione, bisogna essere a conoscenza di una buona parte della lingua inglese per memorizzare facilmente tutto o quasi, comunque, come già detto prima, non è complicato…
Iniziamo con lo scoprire le varie parti principali in uno script:
LE CLASSI:
Le Classi possono essere definite il gruppo principale in cui si sviluppa lo script. Senza una classe, uno script non può funzionare. Alcuni script hanno più di una classe per questioni di funzionalità, ma questo, non ci importa al momento. Le classi iniziano con il comando
Codice:
class
Codice:
end
Codice:
class Nome_Classe
Codice:
class SottoClasse < Nome_Classe
LE METHOD DEFINITIONS:
Le Method Definitions, sono importanti quanto le classi, in quanto possono essere considerate come dei sottogruppi. Senza di esse, lo script non funzionerebbe . Il tipo di Method Definitions da utilizzare dipendono dallo scopo dello script. Le Method Definitions, iniziano con il comando
Codice:
def
Codice:
end
Codice:
def main (Svolge le funzioni principali, se è presente in uno script è sempre messo all’inizio, ed è sconsigliato da utilizzare per dei principanti)
def initialize (Svolge quasi tutto, se è presente in uno script è di solito all’inizio, ma può anche trovarsi dopo altre def)
def refresh (Dovrebbe essere utilizzato per aggiornare principalmente la grafica del gioco, come finestre, sprite ecc…)
def update (Dovrebbe far comparire le finestre, gli sprite, ecc… ma può svolgere anche le funzioni di “def refresh”)
Ne conosco molti, eh? xD Comunque, vi ripeto quest’argomento sulle Method Definitions non l’ho ancora capito tanto bene, e non sono sicuro sulle funzioni dei def postati sopra. Per fare pratica, consiglio di utilizzare il
Codice:
def initialize
AGGIORNAMENTO 28/07/2012: E' passato un bel po' di tempo da quando ho scritto questa guida e da allora ho scoperto qualcosa in più, soprattutto su che cosa sono queste "def". Innanzitutto, quasi tutto ciò che ho scritto sopra, riguardante le def, è sbagliato. Alla fine del post avrete altre informazioni.
I COMMENTI:
Il commento, è l’unica parte dello script che non viene elaborata dal compilatore, cioè, il commento non ha alcun effetto sullo script, è utilizzato soltanto per annotare qualcosa, magari per dare istruzioni per l’impostazione dello script. Comunque, nel suo piccolo, è molto utile perchè, come già detto, è utilizzato dagli autori degli script per comunicare con chi userà lo script. Per scrivere un commento basta anteporre il # nella riga.
Codice:
#Questo è un commento
Codice:
#Questo è un commento
Adesso non è più un commento #Da qui in poi è un commento
Adesso non è più un commento.
Codice:
=inizio commento
Bla bla bla bla…
Bla bla bla…
Bla bla…
Bla…
…
..
.
Fine commento =end
LE CONDIZIONI:
Le condizioni, possono essere considerate la parte portante di uno script. Quasi tutti gli script hanno bisogno di queste funzioni particolari, perché permettono di impostare meglio uno script. Le condizioni iniziano con il comando if (Che in inglese significa “se”) e terminano con… vabbè non ve lo dico… ormai credo l’abbiate capito che tutto termina con quel comando che mi sono stufato di pronunciare xD [spoiler]una vocina dal nulla parla… la sento… cosa dice?
Codice:
end
Codice:
if tu stai leggendo questa guida
Il computer dice “ciao!”
end
Codice:
if tu stai leggendo questa guida
Codice:
il computer dice “ciao!”
Codice:
end
Un’altra struttura è :
Codice:
if tu stai leggendo questa guida
Il computer dice “ciao!”
else
il computer ti dice “Leggimi!”
end
Codice:
if tu stai leggendo questa guida
Codice:
il computer dice “ciao!”
Codice:
else
Codice:
il computer ti dice “Leggimi!”[code] Questa è “l’altra azione”.E’ l’azione da copiere se la prima azione (Quella con l’if) non viene compiuta. In questo caso, se tu non stai leggendo questa guida, il computer ti dice “Leggimi!”
[code]end
Poi ci sono strutture più complesse ancora, dove ci sono if dentro if, if dentro else e molto altro, che oggi non analizzeremo. Inoltre, una fi può essere sviluppata tutta su una riga sola, così:
Codice:
if tu stai leggendo questa guida then Il computer dice “ciao!” else il computer ti dice “Leggimi!” end
LE VARIABILI:
Le variabili, sono molto utilizzate nelle condizioni, o per impostare qualcosa. Esistono 3 tipi di variabili:
Variabili Locali (Quella di cui vi ho parlato prima), che funziona solo nella classe in cui è stata impostata;
Variabili Istanze , che funziona in tutto lo script;
Variabili Globali, che funziona in tutti gli script del gioco.
Esempi:
Codice:
variabile_locale #Inizia con una lettera minuscola
Codice:
@variabile_istanza #Inizia con @
Codice:
$variabile_globale #inizia con $
Codice:
class prova
@variabile = 1 #Ho creato una variabile e l’ho settata a 1
def initialize
if @variabile == 1 #Controlla se la variabile @variabile è uguale a 1
@variabile + 3 #Se la variabile è uguale a 1, aggiunge 3
end
if @variabile > 1 #Controlla se la variabile @variabile è maggiore di 1
@variabile – 2 #Se la variabile è maggiore di 1, sottrae 2
end
if @variabile < 4 #Controlla se la variabile @variabile è minore di 4
@variabile * 2 #Se la variabile è minore di 4, moltiplica per 2
end
if @variabile => 4 #Controlla se la variabile @variabile, è uguale o maggiore a 4
@variabile / 4 #Se la variabile è maggiore o uguale a 4, divide per 4
end
if @variabile =< 2 #Controlla se la variabile @variabile è uguale o minore a 2
(@variabile + 1) * 2 #Se la variabile è minore o uguale a 2, aggiungi 1 e poi moltiplica per 2.
end
if @variabile >< 0 #Controlla se la variabile @variabile è diversa da 0
@variabile / (1 + 1) #Se la variabile è diversa da zero, divide per 2
end
Codice:
@variabile = ciao
Codice:
@variabile = nil
LE SWITCH:
Utili come le variabili, ma hanno meno possibilità di settaggio, infatti può essere settata solo su ON o OFF. Ecco due esempi di switch:
Codice:
@switch = true #Switch ON
Codice:
@switch = false #Switch OFF
Codice:
if @switch == true/false #Controllla se la switch @switch è ON/OFF
succede qualcosa
end
VARIABILI GLOBALI UTILI:
Il gioco, utilizza molte variabili globali, ad esempio, ce n’è una per I soldi, una per indicare le variabili impostate dalla finestra eventi, ecc… Queste variabili globali, possono essere molto utili nella creazione degli script. Ecco qui le più importanti:
Codice:
$game_switches[switch_id] #E’ una switch impostata dalla finestra eventi. Al posto di switch_id va inserito l’ID della switch.
$game_variables[variable_id] #E’ una variabile impostata dalla finestra eventi. Al posto di variable_id va inserito l’ID della variabile.
$game_party.gain_item(Item ID, Quantità) #Da un determinate oggetto al party. Al posto di Item ID va messo l’ID dell’item, al posto di Quantità, la quantità di oggetti da ricevere.
$game_party.gain_gold(Quantità) #Da monete al party. Al posto di Quantità va messa la quantità di soldi da ricevere.
$game_party.gain_weapon(Weapon ID, Quantità) #Da un’arma al party. Ormai credo abbiate capito che al posto di Weapon ID va messo l’ID dell’arma, mentre al posto di Quantità, la quantità di armi da ricevere…
$game_party.gain_armor(Armor ID, Quantità) #Da un’armatura al party.
$game_party.actors[Actor ID].learn_skill(Skill ID) #Fa imparare una skill ad un personaggio. Al posto di Actor ID va messo l’ID del personaggio a cui far imparare la skill, e al posto di Skill ID va messo l’ID della skill da far imparare.
Credo che questi vi basteranno e avanzeranno per iniziare a scriptare…
Bene adesso che abbiamo finito una parte di teoria (Il resto lo analizzeremo in un’altra futura guida, al momento usate questa parte di RGSS2), passiamo alla pratica. Proveremo a fare uno script, che aggiunge al giocatore 900 monete, sela prima switch del gioco è attivata. E’ uno script semplicissimo da fare, iniziamo!
Come prima cosa, bisogna mettere la classe e la method definition:
Codice:
class Cheat_Soldi #Classe e nome della classe
def initialize #Def e tipo di def
Codice:
if $game.switches[0001] == true #Controlliamo se la switch 0001 è attiva
$game_party.gain_gold(900) #Aggiunge 900 gold se la switch è ON
end #Termina la condizione
Codice:
class Cheat_Soldi
def initialize
if $game.switches[0001] == true
$game_party.gain_gold(900)
end
end
end
Spero abbiate capito tutto xD Ciao, e grazie per aver letto la guida!
La copia della seguente guida è vietata a chiunque, se non con l’autorizzazione dell’autore (Io xD)
AGGIORNAMENTO 28/07/2012: Presto posterò una nuova guida nella sezione RPG Maker VX Ace, che riprenderà alcuni concetti di questa guida per approfondirli (Come ad esempio le method definitions, che non ho spiegato bene in questa guida), e spiegherò le varie differenze fra i vari RGSS (RGSS in RPGM XP, RGSS2 in RPGM VX e RGSS3 in RPGM VX Ace).