Conoscete un sito in ITALIANO dove venga spiegato come usare gli script per NWN?
Conoscete un sito in ITALIANO dove venga spiegato come usare gli script per NWN?
come primi risultati ho trovato questo
Editor Aurora per Neverwinter Nights di Bioware
Tutorial 9: Script (programmazione)
Introduzione
Il linguaggio di programmazione di Nwn è molto potente, e con esso potete riuscire a realizzare cose davvero incredibili.
Il gioco si preoccupa di far partire lo script sull’istanza di un oggetto ogniqualvolta accada un evento che lo coinvolga. Le istanze di ciascun tipo di oggetto del gioco, possiedono un set di eventi ai quali possono essere assegnati degli script. Inoltre, ogni area, e l’intero modulo nell’insieme possiedono determinati eventi. Tuttavia (e per fortuna!), il gioco non richiede che ad ogni evento venga assegnato uno script.
Questo tutorial si propone di presentare il linguaggio di programmazione di Nwn e l’editor degli Script.
Obiettivo
Assegnare uno script personalizzato all’evento del modulo “OnAcquireItem”, che aggiorni il diario del giocatore non appena questo raccolga l’anello di Jacen.
Tutorial
Lo Script “OnAcquireItem”
1. Fate partire l’editor e caricate il modulo “tutorial”.
2. Selezionate “Proprietà del modulo” dal menù “Modifica” nella barra dei Menù.
3. Premete il pulsante “modifica” sulla linea dell’evento “OnAcquireItem”, nella tabella “Eventi” delle Proprietà del Modulo, per aprire l’Editor degli Script con un nuovo script.
4. Inserite il testo seguente nello script, sovrascrivendo completamente qualsiasi altro testo vi fosse in precedenza.
Codice:void main () { // variable declarations object oPC; // il PG che ottiene l’oggetto object oItem; // l’oggetto che è stato ottenuto // recepisci l’oggetto che è stato ottenuto oItem = GetModuleItemAcquired () ; // se quest’oggetto è valido if (GetIsObjectValid(oItem) == TRUE) { // se il tag dell’oggetto valido è "it_RingJacen" if (GetTag(oItem) == "it_RingJacen") { // recepisci il PG che ha ottenuto l’oggetto oPC = GetItemPossessor(oItem); // sul PG, imposta il diario con il tag"jt_Falstadd" // alla sua seconda entrata AddJournalQuestEntry("jt_Falstadd", 2, oPC); } // if }//if }
5. Salvate lo script come “me_acquireitem” e chiudete l’editor di Script.
Nota: Dovrebbe apparirvi un messaggio di Notifica di Compilazione, il che significa che gli script devono essere compilati correttamente prima di poter funzionare nel gioco. A meno che questa opzione sia disattivata (non raccomandato) l’editor di script compilerà automaticamente qualsiasi script modificato.
6. Premete “OK” per chiudere la finestra delle Proprietà del Modulo.
Script personalizzato di “Azioni Compiute”
1. Aprite la conversazione di Falstadd nel pannello a sinistra sui contenuti del modulo, selezionando “Modifica” dal suo menù a comparsa.
2. Selezionate il Testo 3 (“Grazie comunque per…”). Spostatevi nella tabella “Azioni Compiute”, e premete il pulsante di Creazione guidata script.
3. Spuntate la casella con la voce “Assegna ricompensa” e premete “Avanti”.
4. Inserite 2000 (in base al valore inserito nell’editor del Diario per questa quest) nel campo “Assegna PE”, spuntate l’opzione “Al gruppo” in basso e premete “Avanti”.
5. Nominate lo script “at_falstadd03”, spuntate l’opzione “Avvia l’editor di Script” e premete “Fine”.
6. Una volta aperto l’editor di script, lo script dovrebbe apparire così:
Codice:void main() { // assegna al giocatore un pò di XP GiveXPToCreature(GetPCSpeaker(), 2000); }
7. L’unico problema con uno script di questo tipo è che se decidiamo di cambiare l’ammontare di punti esperienza distribuiti come ricompensa per la quest, all’interno del diario, dovremo di conseguenza anche andare a modificare e ricompilare lo script. Sarebbe molto più efficiente determinare durante il gioco l’ammontare dei punti esperienza da assegnare alla quest dal diario ed usare direttamente quel valore. Questo implica che lo script dovrà essere strutturato come segue:
8. Una volta modificato lo script, salvatelo, chiudete l’editor di script, salvate la conversazione e chiudete l’editor di conversazioni.Codice:void main() { // dichiarazione variabili int iXP; // determina quanti punti esperienza assegnerà la quest iXP = GetJournalQuestExperience("jt_Falstadd"); // assegna al giocatore gli XP GiveXPToCreature(GetPCSpeaker(), iXP); }
Salvate il modulo, chiudete l’editor e provate a giocare il modulo dall’inizio alla fine
Spunti ulteriori
Create una conversazione per i minatori. Il minatore a cui il PG dovesse rivolgere la parola dovrebbe dimostrare gratitudine per essere stato salvato e il PG dovrebbe potergli dire di lasciare la miniera immediatamente.
Il PG dovrebbe inoltre ricevere 50 XP e il minatore dovrebbe dirigersi immediatamente verso l’uscita e tornare a Fern. Qualora il minatore dovesse essere nuovamente interpellato dal PG, dovrebbe rispondere ringraziando ancora il PG per averlo salvato ma non fare nessuna ulteriore azione.
Per fare tutto questo è sufficiente creare tre script: due con la creazione guidata degli script (apportando solo piccole modifiche) e uno creato ad hoc.
Prima di tutto create la conversazione. Sarà simile a quella con Falstadd dato che la prima volta che il PG gli parlerà, il minatore dirà una cosa mentre successivamente risponderà in maniera differente.
I due script che controllano cosa dirà il minatore devono impostare e verificare lo stato di una variabile locale collegata al minatore. Questi script possono essere tranquillamente creati con la “Creazione guidata script”, come quelli visti nel tutorial 6, e successivamente modificati in maniera tale da utilizzare la costante OBJECT_SELF anziché la funzione GetPCSpeaker(). OBJECT_SELF fa riferimento semplicemente all’oggetto che sta in quel momento eseguendo lo script, in questo caso il minatore. Questo permette inoltre al PG di salvare diversi minatori e ricevere da ciascuno di essi dei punti esperienza come ricompensa. Se la variabile fosse collegata al PG, questi potrebbe salvare un solo minatore dato che la verifica sui minatori successivi indicherebbe che il giocatore ha già parlato con lui.
Il terzo script deve essere collegato e attivato da una parte di conversazione accessibile solamente la prima volta che il PG parla con il minatore. Questo script deve assegnare 50XP al PG e far sì che il minatore si diriga verso l’uscita e torni in città. La maniera più semplice per far muovere una creatura è spostarla in un’altra locazione o oggetto. Utilizzate le funzioni: GetObjectByTag, AssignCommand e ActionMoveToObject per far correre da Falstadd il minatore.
Non dimenticate di utilizzare la costante OBJECT_SELF come già visto ed assegnate la conversazione all’oggetto “Minatore”.
A volte credo di essere fin troppo nerd. Naa, never too much.
Vuoi personalizzare l'aspetto del forum di GamesRadar? Clicca qui!
Consortium.ru 2004 3D Motion Demo, shocking graphics. (QuickTime 60MB)
Vuoi guadagnare soldi velocemente? Clicca qui!
anche questo: Introduzione allo scripting
A volte credo di essere fin troppo nerd. Naa, never too much.
Vuoi personalizzare l'aspetto del forum di GamesRadar? Clicca qui!
Consortium.ru 2004 3D Motion Demo, shocking graphics. (QuickTime 60MB)
Vuoi guadagnare soldi velocemente? Clicca qui!
Mmmmm devo proprio consocere qualcosa di C++ per riuscire a fare qualcosa di concreto?
ovvio che no, ma lo scripting di nwn è quasi uguale al c++, se lo conoscessi non avresti da imparare, ma puoi sempre imparare solo lo scriptingKelvan
A volte credo di essere fin troppo nerd. Naa, never too much.
Vuoi personalizzare l'aspetto del forum di GamesRadar? Clicca qui!
Consortium.ru 2004 3D Motion Demo, shocking graphics. (QuickTime 60MB)
Vuoi guadagnare soldi velocemente? Clicca qui!