Vai al contenuto

Scripts NWN


Jace

Messaggio consigliato

Spero che non ci siano altri Topics con questo scopo...

Vorrei aprire un Topics per la raccolta di scripts utili per il tileset di NWN e per spiegazioni sulla loro creazione.

Dato che sono una scarpa in questo ambiente, apro questo forum per RICEVERE consigli, non per DARLI ( eccetto alcuni scripts trovati in giro... )

Che lo script sia con voi!

Link al commento
Condividi su altri siti


  • Risposte 13
  • Creato
  • Ultima risposta

Principali partecipanti

Principali partecipanti

  • 3 settimane dopo...

Non uno... mi sto avviando alla creazione di moduli, e non riesco ad arricchirli con script decenti. N.B.: NWN 1.

Inoltre, conosco il valut, ma maneggio ancora abbastanza male l' inglese; inoltre l' idea era di creare un Topic accessibile a tutti per raccogliere script da ovunque, compreso il valut.

Inizio anticipando 'sto script. Dovrebbe funzionare come una "pietra del richiamo" ( gioca campagna originale ), ma non mi funge. Dicono che il problema sta' in "area", che non viene in blu. Ho corretto ma non va. Se qualcuno e` cosi` illuminato da trovarci un errore, sono felice di ottenere correzioni.

Spoiler:  
Pietra del richiamo: inserire il seguente script nel’’evento: On ActivedItem delle modulo:

N.B:

- sostituire tag_destinazione con il tag della tappa in cui si vuole che il pg appaia dopo aver usato la pietra

- sostituire tag_pietra con il tag della pietra

void main()

{

object pg = GetItemActivator();

object item = GetItemActivated();

location des = GetLocation(GetObjectByTag("tag_destinazione"));

location zona = GetLocation(pg);

if (GetIsPC(pg))

{

if ( GetTag(item)=="tag_pietra")

{

SetLocalLocation(pg, “zona”, zona); // per ricordare da dove viene usato il portale

AssignCommand(pg,JumpToLocation(des));

}

}

}

1. Creazione guidata oggetto, oggetti vari e selezionare la categoria, aprire la scheda delle proprietà

2. Assegnare un tag, e una descrizione da identificato

3. Andare su proprietà, selezionare lanciare incatesimi, e selezionare potere unico solo su stessi

4. Modificare le proprietà di questo e selezionare illimitato

5. Selezionare identificato

N.B.: Lo SPOILero solo per risparmiare spazio.

E per gli appassionati, ecco il "portale del richiamo" ( gioca ancora campagna originale )

Spoiler:  
void main()

{

object pg = GetItemActivator();

object item = GetItemActivated();

location des = GetLocation(GetObjectByTag("tag_destinazione"));

location zona = GetLocation(pg);

if (GetIsPC(pg))

{

if ( GetTag(item)=="tag_pietra")

{

SetLocalLocation(pg, “zona”, zona); // per ricordare da dove viene usato il portale

AssignCommand(pg,JumpToLocation(des));

}

}

}

1. Creazione guidata oggetto, oggetti vari e selezionare la categoria, aprire la scheda delle proprietà

2. Assegnare un tag, e una descrizione da identificato

3. Andare su proprietà, selezionare lanciare incatesimi, e selezionare potere unico solo su stessi

4. Modificare le proprietà di questo e selezionare illimitato

5. Selezionare identificato

dopo che fai sto script ti fai il portale e nnel'onused ci metti questo

void main()

{

object oUser = GetLastUsedBy();

location lTarget = GetLocalLocation(oUser, "zona");

AssignCommand(oUser, JumpToLocation(lTarget));

DeleteLocalLocation(oUser, "zona");

}

Link al commento
Condividi su altri siti

Che nostalgia!!!! quanto tempo c'ho perso dietro agli script di NWN, ricodo che avevo creato un favoloso script per la spada di mordenkainen per sostituire quella schifezza che c'è nel gioco. A casa forse ce l'ho ancora da qualche parte...

Peccato (beh, di fa per dire) che ogni volta che smettessi di usare gli script dimenticassi automaticamente il linguaggio, e ogni volta mi toccava reimpararlo! si vede che non ho la mentalità adatta....

Per curiosità, perchè non lo fai in NWN2?

Link al commento
Condividi su altri siti

Ho iniziato una miriade di moduli di NWN1 ; lasciarli li` sarebbe blasfemia. Inoltre, costa il 2!

Vorrei comunque incitarvi a popstare script o manuali per crearli.

E, per dare il buon esempio, posto 'sto script, sempre trovato in giro.

Spoiler:  
//Created by Terminus

//Modified by Lo SvIzZeRo

//Questo script va inserito nell'evento OnActivateItem del modulo.

//Il bersaglio dell'unique power dell'oggetto viene congelato per circa 10 secondi.

//Basta creare un oggetto che possegga la tag "lock" (senza le "") e spuntare la proprietà: Unique Power

//L'oggetto creato potrebbe rilevarsi molto utile per i PG che coadiuvano a sorvegliare le attività in un server, tanto per fare un esempio

void main()

{

object oItem = GetItemActivated();

effect eBrain = EffectCutsceneDominated();

object oTarget = GetItemActivatedTarget();

effect eStasis = EffectVisualEffect(VFX_FNF_SCREEN_BUMP);

effect eLock = EffectVisualEffect(VFX_DUR_SANCTUARY);

effect eRem = EffectVisualEffect(VFX_IMP_REMOVE_CONDITION);

if(GetTag(oItem)=="lock")

{

ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBrain, oTarget);

ApplyEffectToObject(DURATION_TYPE_INSTANT, eStasis, oTarget);

ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLock, oTarget);

FloatingTextStringOnCreature("Cerebral Lockdown..", oTarget);

DelayCommand(2.0, FloatingTextStringOnCreature("10", oTarget));

DelayCommand(3.0, FloatingTextStringOnCreature("9", oTarget));

DelayCommand(4.0, FloatingTextStringOnCreature("8", oTarget));

DelayCommand(5.0, FloatingTextStringOnCreature("7", oTarget));

DelayCommand(6.0, FloatingTextStringOnCreature("6", oTarget));

DelayCommand(7.0, FloatingTextStringOnCreature("5", oTarget));

DelayCommand(8.0, FloatingTextStringOnCreature("4", oTarget));

DelayCommand(9.0, FloatingTextStringOnCreature("3", oTarget));

DelayCommand(10.0, FloatingTextStringOnCreature("2", oTarget));

DelayCommand(11.0, FloatingTextStringOnCreature("1", oTarget));

DelayCommand(12.0, RemoveEffect(oTarget, eBrain));

DelayCommand(12.0, RemoveEffect(oTarget, eLock));

DelayCommand(12.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eRem, oTarget));

}

}

N.B.: Metto gli script tra spoiler perche` occupano spazio. Se non e` vietato, vorrei invitarvi a farlo.

Curare un PG in un dialogo :

1) inserire questo script in AZIONI COMPIUTE del nodo del dialogo in cui si vuole che il pg venga curato:

void main()
{
object npg = OBJECT_SELF;
object pg = GetPCSpeaker();
int spell = SPELL_CURE_CRITICAL_WOUNDS;
int meta = METAMAGIC_ANY;
AssignCommand(npg, ActionCastSpellAtObject(spell, pg
, meta, TRUE));
}[/CODE]

Link al commento
Condividi su altri siti

Nel gioco, anche nel due, l'incantesimo evoca un golem. Io avevo implementato lo script per implementare un "uomo invisibile" con annessa spada, ed era la spada che cambiava caratteristiche a seconda dell'evocatore per fare i danni giusti, evitare le riduzioni, e senza mettere nuovi file (quindi tutto tramite script).

Lo stesso avevo fatto per vari altri incantesimi. Il migliore se ben ricordo era sciame mortale (dovrebbe esser quello) che invece che evocare 3 scarabei idioti evocava il solito uomo invisibile con effetto sciame di mosche attorno, con varie aure che facevano i danni giusti. Miii non mi ricordo bene quale sia lo spell di partenza.

Poi c'erano i vari holy word, dictum e simili, fatti pure quelli; disintegrate, gate...

Uno molto bello che ricordo era uno script per l'effetto divorare del worm that wolks.

Link al commento
Condividi su altri siti

ho appena fatto uno script che spero mettano per la pietra portale della nostra gilda sul server dove gioco: la attivi e vieni circondato da una piramide di luce mentre preghi, e dopo 5 sec ti porta in sede... 70 e passa righe di script solo per l'effetto grafico :-D

Link al commento
Condividi su altri siti

Non farmi sbavare invano : POSTALO

P.S.: Qualcuno sa come fare in modo che appaia l' effetto grafico di un incantesimo ( solo l' effetto grafico ) quando tiri una leva, o cambi area, o entri in un attivatore? Vorrei fare in modo che

Spoiler:  
la camminata dell' eroe diventi una scena di luci e colori!

Avrei un ambizione : creare una serie di "oggetti dell' inventario" che facciano da tappe, tipo attivatori della "reliquia del Mietitore" ( gioca espansione 2 ). Ovviamente dovrei anche creare una cosa tipo "pietra temporale", "verga temporale" e via cosi` che mi permetta di andarci. In questo modo mollo l' oggettino per terra e con la verga ci posso andare. N.B.: NON intendo la modalita` "potere unico" dei moduli : vorrei una verga che in qualunque modulo tu vada funzioni. In poche parole, un effetto comune ( tipo "bonus di potenziamento +3"; quello funziona in ogni area di ogni terra di ogni continente di ogni mondo di ogni universo di ogni dimensione di ogni modulo. ). Se non chiedo troppo vorrei chiedervi di darmi aiuti o suggerimenti ( abbastanza poderosi ) a compilarlo ( cosi` poderosi che fate prima a farlo e postarlo... sono una vera schiappa D.O.C. con gli script ; per questo metto in evidenza che voglio imparare a compilarli! ).

Grazie dell' aiuto!;-)

[MOD] Segnalo il tasto Modifica per editare post recenti. ^^ - Morwen

Link al commento
Condividi su altri siti

ok posto lo script di cui ho parlato: da mettere come OnItemActivated nel modulo, e creare un waypoint con la tag 'arrivo':

Spoiler:  
object PC=GetItemActivator();

location lLoc = GetLocation(PC);

object oggetto=GetItemActivated();

string nome=GetTag(oggetto);

void CreatePyramid(location lTarget, int BeamFX_TYPE, float Duration)

{

object destin=GetWaypointByTag("arrivo");

location arrival=GetLocation(destin);

int nEffect = BeamFX_TYPE;

object Area = GetAreaFromLocation(lTarget);

vector v1 = GetPositionFromLocation(lTarget);

vector v2 = GetPositionFromLocation(lTarget);

vector v3 = GetPositionFromLocation(lTarget);

vector v4 = GetPositionFromLocation(lTarget);

vector v5 = GetPositionFromLocation(lTarget);

int offset=2;

v1 = Vector(v1.x-offset,v1.y+offset,v1.z);

v2 = Vector(v2.x-offset,v2.y-offset,v2.z);

v3 = Vector(v3.x+offset,v3.y-offset,v3.z);

v4 = Vector(v4.x+offset,v4.y+offset,v4.z);

v5 = Vector(v5.x,v5.y,v5.z+offset);

location loc1= Location(Area, v1, 0.0);

location loc2= Location(Area, v2, 0.0);

location loc3= Location(Area, v3, 0.0);

location loc4= Location(Area, v4, 0.0);

location loc5= Location(Area, v5, 0.0);

object Base1 = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_invisobj", loc1);

object Base2 = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_invisobj", loc2);

object Base3 = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_invisobj", loc3);

object Base4 = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_invisobj", loc4);

object Center = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_invisobj", loc5);

effect eBeam1 = EffectBeam(nEffect, Base1, BODY_NODE_CHEST);

effect eBeam2 = EffectBeam(nEffect, Base2, BODY_NODE_CHEST);

effect eBeam3 = EffectBeam(nEffect, Base3, BODY_NODE_CHEST);

effect eBeam4 = EffectBeam(nEffect, Base4, BODY_NODE_CHEST);

effect eBeam5 = EffectBeam(nEffect, Base1, BODY_NODE_CHEST);

effect eBeam6 = EffectBeam(nEffect, Base2, BODY_NODE_CHEST);

effect eBeam7 = EffectBeam(nEffect, Base3, BODY_NODE_CHEST);

effect eBeam8 = EffectBeam(nEffect, Base4, BODY_NODE_CHEST);

DelayCommand(0.1, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam1, Base2, Duration));

DelayCommand(0.2, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam2, Base3, Duration));

DelayCommand(0.3, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam3, Base4, Duration));

DelayCommand(0.4, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam4, Base1, Duration));

DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam5, Center, Duration));

DelayCommand(0.6, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam6, Center, Duration));

DelayCommand(0.7, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam7, Center, Duration));

DelayCommand(0.8, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBeam8, Center, Duration));

DelayCommand(Duration, DestroyObject(Base1));

DelayCommand(Duration, DestroyObject(Base2));

DelayCommand(Duration, DestroyObject(Base3));

DelayCommand(Duration, DestroyObject(Base4));

DelayCommand(Duration, DestroyObject(Center));

DelayCommand(5.0,AssignCommand(PC,JumpToLocation(arrival)));

}

void main()

{

if(nome=="portale_ordine")

{

int Ani = ANIMATION_LOOPING_MEDITATE;

CreatePyramid(lLoc, 444, 10.0);

AssignCommand(PC, ActionPlayAnimation(Ani, 1.0, 5.2));

}

}

allora ci tengo a precisare che è una cosa fatta nel giro di 10 minuti, l'ottimizzazione è uguale a zero. Per la tua richiesta di verghe e pietre del teletrasporto mi spiace ma semplicemente non puoi creare qualcosa di convenzionale per ogni modulo, devo scriverlo e importarlo di volta in volta. Però stai chiedendo una cosa particolare quindi credo ti serva per un modulo specifico, o sbaglio?;-)

edit: ho appena letto il tocco della sirenetta nel tuo messaggio, occhio a non farla arrabbiare XD

Link al commento
Condividi su altri siti

E` con me che non funziona il compilatore o nel codice 59 qualcosa non va? (

DelayCommand(5.0,AssignCommand(PC,JumpToLocation(a rrival)));[/CODE]

)

Comunque, non volevo farci un modulo specifico : avrei usato l' ActivateItem. Volevo poterlo portare nei Server mondiali. Cosi` mi risparmiavo le rotture come "ripetere il viaggio", "tornare dal mercante o dal tempio" ecc.

Comunque, grazie.

[color="Red"]

[A MOD] : Sorry... gli avevo scritti senza troppa attenzione ai messaggi precedenti.[/color]

Link al commento
Condividi su altri siti

  • 3 settimane dopo...

Ah, Ok...

cestino dell'immondizia:


2) tab base: utilizzabile, inventario e di trama (cosi è indistruttibile)
3)tab script: rimuovi gli script negli eventi: OnOpen e OnDeath
4) Inserisci il seguente script nell'evento OnClose (gli puoi dare un nome a piacimento):

void main()
{
object item = GetFirstItemInInventory();
while(GetIsObjectValid(item))
{
DestroyObject(item);
item = GetNextItemInInventory();
}
}[/SPOILER]
1) Metti un barile (posizionabili\contenitori interruttori)

Link al commento
Condividi su altri siti

  • 1 anno dopo...

Ciao... vorrei chiedere una mano anch'io...

Ho creato un arco a cui voglio dare il potere unico solo su se stesso di creare speciali frecce una volta al giorno (sempre di mia creazione). Che script devo mettere nell'OnActivateItem del modulo?

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente registrato per poter lasciare un commento

Crea un account

Crea un nuovo account e registrati nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.
 

Accedi ora

×
×
  • Crea nuovo...