[NWN] Sito per Script
  • In diretta da GamesVillage.it
    • News
    • -
    • In Evidenza
    • -
    • Recensioni
    • -
    • RetroGaming
    • -
    • Anteprime
    • -
    • Video
    • -
    • Cinema

Visualizzazione risultati da 1 a 6 di 6

Discussione: [NWN] Sito per Script

Cambio titolo
  1. #1
    Kelvan
    Ospite

    [NWN] Sito per Script

    Conoscete un sito in ITALIANO dove venga spiegato come usare gli script per NWN?

  2. #2
    Oh my iPod! L'avatar di er patata
    Registrato il
    11-02
    Località
    Bari Downtown
    Messaggi
    13.118
    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:
    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);
    
    }
    8. Una volta modificato lo script, salvatelo, chiudete l’editor di script, salvate la conversazione e chiudete l’editor di conversazioni.



    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!

  3. #3
    Oh my iPod! L'avatar di er patata
    Registrato il
    11-02
    Località
    Bari Downtown
    Messaggi
    13.118

    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!

  4. #4
    .::D TVB::. L'avatar di [>>VK<<]
    Registrato il
    02-04
    Località
    In Your Mind
    Messaggi
    2.864
    io con amici stiamo facendo una picola espansione di NWN, praticamente se sai programmare in C++; non hai problemi

    Si cercano collaboratori per il sito se siete interessati contattatemi via MP

  5. #5
    Kelvan
    Ospite
    Mmmmm devo proprio consocere qualcosa di C++ per riuscire a fare qualcosa di concreto?

  6. #6
    Oh my iPod! L'avatar di er patata
    Registrato il
    11-02
    Località
    Bari Downtown
    Messaggi
    13.118
    Citazione Kelvan
    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 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!

Regole di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •