neverwinteritalia - Neverwinter Nights 1

Posts written by Lord Aryall

  1. .
    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 :14:
  2. .
    :52:

    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 colore

    CODICE
    void 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 riferimento
    <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
  3. .
    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.
  4. .
    CODICE
    void 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 :35:


    :52:
  5. .
    CITAZIONE
    NWNX esiste ancora?

    www.nwnx.org/
    https://nwnxee.github.io/unified/

    :52:
  6. .
    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 )

    temp

    https://nevitaimg.altervista.org/temp/modulo000.mod

    come da screen c'è il comando da chat per aumentare il tempo +10 +5 +3 +2 +1

    CITAZIONE
    single player utilizzabile anche in multi che viene salvato per proseguire nella storia.

    in questo caso SetLocal va benissimo
  7. .
    CITAZIONE (Shadow02 @ 22/10/2021, 14:27) 
    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 un
    castello-di-carte-cwfe0x

    CITAZIONE
    questo sistema è concepito anche per essere utilizzato in multiplayer

    quindi è un sigle player utilizzabile anche in multi che viene salvato per proseguire nella storia?
  8. .
    :52:

    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.

    CITAZIONE
    può 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? :huh: o forse è meglio salvare le ore direttamente sulla leva stessa cosi che chiunque la utilizzi rimane bloccata 24 ore ? :87:
  9. .
    La prima parte si i file sono disponibili qui
  10. .
    CITAZIONE
    e 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.
  11. .
    CITAZIONE (Glaivas @ 23/10/2020, 10:05) 
    e ripristinare l'esperienza per poter livellare di nuovo.

    CODICE
    GiveXPToCreature(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.
  12. .
    Assolutamenti si
    400px-Wizard_2_-_Edited
  13. .
    Eccomi qua sono Iagobargle il cugino della sorella del fratello di magobargle! :01:

    direttamente OnPlayerChat al pg basta digitare /rit seguito da un numero per scendere di quando vuole fino a 1

    /rit10

    CODICE
    void main()
    {
    string m=GetPCChatMessage();
     if(GetStringLeft(m,4)=="/rit")
       {
       object P=GetPCChatSpeaker();
       int l=StringToInt(GetSubString(m,4,2));
         if(l>0&&l<GetHitDice(P))
           {
           l*=(l-1);
           SetXP(P,l*=500);
           ApplyEffectToObject(0,EffectVisualEffect(228),P);
           ApplyEffectToObject(0,EffectVisualEffect(91),P);
           return;
           }
       FloatingTextStringOnCreature("<cþ  >Valore non valido o livello superiore a quello attuale",P,0);
       }
    }


    temp
  14. .
    CITAZIONE (magobargle @ 29/7/2020, 14:27) 
    (e sono attualmente 115 pagine di post...)

    Per questo de là ho sempre cancellato :01:
  15. .
    Aggiunta in fondo? :87:
1624 replies since 28/5/2007
.