-
.
innanzi tutto inizierei a mettere qualche parentesi { dato che dopo un if o un else viene eseguita solo la prima istruzione più vicina, quando ci sono due o più istruzioni può dare problemi, ma non essere indicato come errore.
Questo if ( sTag == "TAG OGGETTO ATTIVATO" ) mi sa che non corrisponde al vero oggetto attivato -
.
premesso che non no nwn installato e non lo apro da un anno....
Per fare questa modifica devi trovare la conversazione e aggiungere i token in questo modo:
<custom2125> Salve bla bla<custom2099>
2125 è il token di riferimento
il 2099 serve come interruzione o chiusura altrimenti se metti solo quello iniziale tutto il testo viene colorato, funziona allo stesso modo dei tag colore di questo forum.
in testo appare quando uno script che genera i colori dei token, il valore del token è un codisce ASCII che rappresenta un coloreCODICEvoid main()
{
SetCustomToken(2099,"</c>");//CHIUSO
SetCustomToken(2100,"<c@ >");
SetCustomToken(2101,"<c€ >");
SetCustomToken(2102,"<cÀ >");
SetCustomToken(2103,"<cÿ >");
SetCustomToken(2104,"<cÿ@ >");
SetCustomToken(2105,"<cÿ€ >");
SetCustomToken(2106,"<cÿÀ >");
SetCustomToken(2107,"<cÿÿ >");
SetCustomToken(2108,"<cÀÀ >");
SetCustomToken(2109,"<c€€ >");
SetCustomToken(2110,"<c@@ >");
SetCustomToken(2111,"<cÀÿ >");
SetCustomToken(2112,"<c€ÿ >");
SetCustomToken(2113,"<c@ÿ >");
SetCustomToken(2114,"<c ÿ >");
SetCustomToken(2115,"<c À >");
SetCustomToken(2116,"<c € >");
SetCustomToken(2117,"<c @ >");
SetCustomToken(2118,"<c ÿ@>");
SetCustomToken(2119,"<c ÿ€>");
SetCustomToken(2120,"<c ÿÀ>");
SetCustomToken(2121,"<c ÿÿ>");
SetCustomToken(2122,"<c ÀÀ>");
SetCustomToken(2123,"<c €€>");
SetCustomToken(2124,"<c @@>");
SetCustomToken(2125,"<c Àÿ>");
SetCustomToken(2126,"<c €ÿ>");
SetCustomToken(2127,"<c @ÿ>");
SetCustomToken(2128,"<c ÿ>");
SetCustomToken(2129,"<c À>");
SetCustomToken(2130,"<c €>");
SetCustomToken(2131,"<c @>");
SetCustomToken(2132,"<c@ ÿ>");
SetCustomToken(2133,"<c€ ÿ>");
SetCustomToken(2134,"<cÀ ÿ>");
SetCustomToken(2135,"<cÿ ÿ>");
SetCustomToken(2136,"<cÀ À>");
SetCustomToken(2137,"<c€ €>");
SetCustomToken(2138,"<c@ @>");
SetCustomToken(2139,"<cÿ À>");
SetCustomToken(2140,"<cÿ €>");
SetCustomToken(2141,"<cÿ @>");
SetCustomToken(2142,"<cÿÿÿ>");
SetCustomToken(2143,"<cÀÀÀ>");
SetCustomToken(2144,"<c€€€>");
SetCustomToken(2145,"<c@@@>");
SetCustomToken(2146,"<c >");
}
i colori di riferimentoSPOILER (clicca per visualizzare)<CUSTOM2101>
<CUSTOM2102>
<CUSTOM2103>
<CUSTOM2104>
<CUSTOM2105>
<CUSTOM2106>
<CUSTOM2107>
<CUSTOM2108>
<CUSTOM2109>
<CUSTOM2111>
<CUSTOM2112>
<CUSTOM2113>
<CUSTOM2114>
<CUSTOM2115>
<CUSTOM2116>
<CUSTOM2117>
<CUSTOM2118>
<CUSTOM2119>
<CUSTOM2121>
<CUSTOM2122>
<CUSTOM2123>
<CUSTOM2124>
<CUSTOM2125>
<CUSTOM2126>
<CUSTOM2127>
<CUSTOM2128>
<CUSTOM2129>
<CUSTOM2131>
<CUSTOM2132>
<CUSTOM2133>
<CUSTOM2134>
<CUSTOM2135>
<CUSTOM2136>
<CUSTOM2137>
<CUSTOM2138>
<CUSTOM2139>
<CUSTOM2141>
<CUSTOM2142>
<CUSTOM2143>
<CUSTOM2144>
<CUSTOM2145>
<CUSTOM2146>
in questo modo hai delle conversazioni colorate.
Con questi token che hai messo
SetCustomToken(1601, "Da selezionare");
SetCustomToken(1602, "Da selezionare");
hai solo la scritta bianca, dovresti cambiarlo con SetCustomToken(2125,"<c Àÿ>Da selezionare"); o SetCustomToken(1601,"<c Àÿ>Da selezionare");
i numeri dei token che ho usato sono oltre il 2000 per evitare conflitti con quelli di nwn
la variabile della creatura puoi leggerla usando https://nwnlexicon.com/index.php?title=GetAssociate
con lo script in user defined non ci fai nulla se non lo leghi da un evento specifico e indichi quale è l'evento
p.s. per esperienza ti posso dire che è meglio ricaricare i token ad ogni conversazione -
.
Andando a memoria, quando un pw era attivo, la posizione dei pg veniva salvata e mantenuta per qualche minuto, senza alcuno script. Ovviamente riavviando il server quella posizione viene eliminata. Se non saltano alla posizione salvata, il problema sta nel Oncliententer o come viene salvata la posizione, se viene usato Onclientleave auguri...
Quello che dovresti fare è salvare ciclicamente la posizione. -
.CODICEvoid main()
{
object oPC = GetPCLevellingUp();
int nLevel = GetHitDice(oPC);
/* int nBlocco = GetPersistentInt(oPC,"BloccoLivello"); */
/* if (nBlocco==0)
{
SetPersistentInt(oPC, "BloccoLivello",4);
nBlocco = 4;
} */
//Altrimenti la gestione viene effettuata a mano.
int nPx = (((nLevel * (nLevel - 1)) / 2) * 1000)-1;
int nGold = ((nLevel * (nLevel - 1)) / 2) * 100;
/* if (nLevel >= nBlocco) //controllo x blocco di livello
{
SetXP(oPC, nPx);
SendMessageToPC(oPC, "Non sei abilitato a raggiungere questo livello, per maggiori informazioni contatta i dm");
return;
} */
//SOLDI
//Disabilitati i soldi ottenuti per l'avanzamento di livello
//GiveGoldToCreature(oPC, nGold);
int nDisc = nPx/50;
int nExp = GetXP(oPC);
/* if (nLevel < 4) return; */
if (nExp > (nPx+nDisc))
SetXP(oPC, nPx+2);
}
Cosi non blocca nulla.
puoi anche toglierlo, questa int nPx = (((nLevel * (nLevel - 1)) / 2) * 1000)-1; non è altro che il calcolo della exp richiesta
tutto quello che fa è aumentare di 2 la exp, se la exp del pg è maggiore alla exp calcolata più la exp calcolata diviso 50
-
.CITAZIONENWNX esiste ancora?
www.nwnx.org/
https://nwnxee.github.io/unified/
-
.
quando hai a che fare col tempo il problema è sempre il passaggio da 23 - 0 oppure il giorno 28 - 0 (su nwn), per risolvere a questi problemi in maniera definitiva ho fatto in modo da avere sempre e comunque una situazione del tipo data attuale e azione a / cooldown nella fascia oraria 0 - 23 quindi
se data attuale >= cooldown fa qualcosa altrimenti aspetta, per farlo prende la data e la fa diventare un numero partendo dal anno, mese, giorno e ora, che diventa la data attuale, aggiungo le ore che si vuole il numero del cooldown viene adattato, ad esempio:
ore 21 del 24/10/2021 attuale diventa
2021102421
aggiundendo 24 ore e con gli adattamenti relativi diventa
2021102521
30 diventa
2021102703
quindi la condizione è if ( 2021102421 >= 2021102703 )
e ad ogni ora
if ( 2021102422 >= 2021102703 )
if ( 2021102423 >= 2021102703 )
if ( 2021102500 >= 2021102703 )
https://nevitaimg.altervista.org/temp/modulo000.mod
come da screen c'è il comando da chat per aumentare il tempo +10 +5 +3 +2 +1CITAZIONEsingle player utilizzabile anche in multi che viene salvato per proseguire nella storia.
in questo caso SetLocal va benissimo -
.sugli oggetti anziché sui pg fa sì che la variabile rimanga anche se è tutto spento. Ricordo bene?
ehh.. no! SetLocal perdura solamente fino a che il modulo rimane attivo o salvato , qualunque modalità sia e su qualunque oggetto la salvi.
quelli che dici tu ovvero uno degli altri sistemi sono i SetCampaign.. io però mi guardarei bene dal usarlo dato che è proprio una porcheria con la stabilità di unCITAZIONEquesto sistema è concepito anche per essere utilizzato in multiplayer
quindi è un sigle player utilizzabile anche in multi che viene salvato per proseguire nella storia? -
.
questo sistema lo utilizzi su un modulo multiplayer?
salvare qualcosa con SetLocalInt perdura solamente fino a che il modulo rimane attivo o salvato, sia che venga giocato single, multi o pw, se invece vuoi che rimangano attivi anche quando è tutto spento devi usare altri sistemi.CITAZIONEpuò essere utilizzata entro 24 ore dall'ultimo utilizzo da parte dello stesso pg e del suo party (
se la attiva un pg che non fa parte del gruppo si attiva la leva? o forse è meglio salvare le ore direttamente sulla leva stessa cosi che chiunque la utilizzi rimane bloccata 24 ore ? -
.
La prima parte si i file sono disponibili qui -
.CITAZIONEe gli dirai la differenza
Perchè? Sei a livello 15? Vuoi tornare al 10.. digiti /rit10 e il pg torna al livello 10... effetti visivi e bon fatto.
Vuole ripristinare ci va uno script usabile da un DM che faccia la stessa cosa oppure salvare in qualche modo, tipo sul DB, il livello a cui era prima.
Poi dal mio punto di vista se scegli di cambiarti il livello, anche se hai fatto mezzo livello quella esp te la perdi. -
.CODICEGiveXPToCreature(oPC, (currentXP - targetXP)); // Restituiamo la differenza per permettergli di livellare nuovamente
se non viene salvato da qualche parte questo calcolo sparisce a fine esecuzione dello script. -
.
Assolutamenti si -
.
Per questo de là ho sempre cancellato -
.
Aggiunta in fondo?