Saltar al contenido

Más en DLAN: Nuestras Traducciones | Otras Traducciones | Mods y modding | Revisiones y Guías | Videojuegos | Arte | Literatura | Rol y Rol por foro e IRC | Mapa de la web
Foto

Textos de conversación al azar


5 respuestas al tema

#1 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 210 posts

Posteado 15 August 2018 - 07:34 AM

Saludos a todos, hoy ando con la idea de crear un pnj que de consejos (algo así como un maestro) para personajes que se enfocan en sabiduría, para ello voy a hacer una conversación donde este le da al pj un consejo al azar (para que no sea siempre el mismo), y estaba pensando en usar un script en "el texto aparece cuando" y luego usarlo de manera porcentual en cada posible respuesta del pnj, ¿se puede hacer esto con el mismo script en vez de crear 1 para cada respuesta del pnj?.

Por el momento pensaba colocarlo así, dando un porcentaje de menor a mayor para que todas las opciones tengan la misma posibilidad de salir (por ejemplo):
_______________


PJ: Maestro, ¿tiene algún consejo para darme hoy?.

PNJ: Ve con prudencia y todo saldrá mejor. (20%)
        El fracaso es el mejor maestro. (40%)
        Alterar el orden natural de las cosas solo provoca desequilibrio. (60%)
        Crea tu propio destino. (80%)
        No bebas del agua estancada. (100%)

 

_______________

 

No se si funcionará bien de esta forma y creo que meterle un script a cada una es demasiado, la idea de colocarlos de menor a mayor es para que todas tengan la misma posibilidad de salir, ya que si coloco a todas el mismo script con mismo porcentaje, siempre va a tener mas chance la primera opción por el hecho de ser la primera.


La primera opción, por ejemplo, llevaría este script:

 

int StartingConditional()
{
object oPC = GetPCSpeaker();

if (d100()>20) return FALSE;

return TRUE;
}
 

 

Claro podria colocar un script similar a cada una aumentando el chance, pero no se me ocurre como colocarle el mismo script a todas y que todas tengan el mismo chance de salir.

Y esa es la idea, para luego dar exp o un bono temporal de sabiduría al PJ, marcándole con una variable para que no se repita, pero esto ya lo puedo hacer sin problemas, ¿alguna idea de como hacer lo anterior dicho? gracias de antemano.


Editado por Zoraga, 15 August 2018 - 07:43 AM.

Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 


#2 Setaka

Setaka

    Ancillae

  • Miembro
  • PipPipPip
  • 372 posts

Posteado 17 August 2018 - 09:27 AM

Mírate el tutorial de scripts, el último tema es de conversaciones y probablemente te ayudará.

 

Puedes hacerlo en un solo script usando un custom token o bien la opción rápida que puse (aunque no da probabilidades iguales en cada línea). También puedes crear un set de scripts que te sirvan para otros PNJs que den misma probabilidad a cada línea (que probablemente debería haber añadido al tuto en su día  :joder: )

 

PNJ: Ve con prudencia y todo saldrá mejor (el texto aparece cuando Random(5)+1 == 1)  (aquí sería probabilidad 1/5 que es 20%)
        El fracaso es el mejor maestro (el texto aparece cuando Random(4)+1 == 1)  (aquí 4/5 anterior * 1/4 actual, 20% de que salga)
        Alterar el orden natural de las cosas solo provoca desequilibrio (el texto aparece cuando Random(3)+1 == 1)  (aquí 4/5 anterior * 3/4 anterior * 1/3 actual, 20% de que salga)
        Crea tu propio destino (el texto aparece cuando Random(2)+1 == 1)  (4/5 * 3/4 * 2/3 * 1/2 actual, 20%)
        No bebas del agua estancada (por defecto siempre que no cumpla las anteriores, queda solo un 20% restante)

 

 

Si en otra conversación quieres 6 respuestas, creas también la de random6, si en otro quieres solo 3, empiezas la primera línea con la que ya tienes creada de random3 y así ya lo tienes genérico.

 

PD: ando super desconectado del nwn y más del scripting, así que comprueba por si acaso cómo lo hacen en módulos de la campaña oficial que esto me ha salido sin más

 

Buen veranito a todos chic@s :)


Tutorial NWN Scripting: Click aquí


#3 Gonarin

Gonarin

    Humano

  • Miembro
  • Pip
  • 68 posts

Posteado 19 August 2018 - 03:21 PM

Voy a intentar ayudarte, creo que mejorare tu idea, para que además con un solo script te pueda servir para varios maestros.

 

Tengo en cuenta los porcentajes que distes y expresados en un unico tanto por cien serían:

 

20% es 7%

40% es 13%
60% es 20%
80% es 27%
100% es 33%

 

Empezamos, partiendo de lo dicho.

 

Primero crear la conversación:

 

Hola alumno.
  --> Algún consejo maestro.
    --> <CUSTOM7654>

 

Segundo vamos a la parte del maestro <CUSTOM7654> y en la pestaña "El texto aparece cuando..." creamos un script, ponle el nombre que quieras, por ejemplo conv_c_maestros y lo editas. Copias y pegas el siguiente código.

 

//:://////////////////////////////////////////////
//:: Creado por: Gonar
//:: Creado en:  2018
//:://////////////////////////////////////////////
int StartingConditional()
{
    // Declaracion de variables basicas.
    object oPC  = GetPCSpeaker();      // El personaje.
    object oMa  = OBJECT_SELF;         // El maestro.
    int    iTir = d100();              // Tirada que decidira frase.
    // La siguiente variable recupera la frase que tuviera ya asignada.
    string sFra = GetLocalString(OBJECT_SELF, "FRASEASIGNADA");
    string sTag = GetTag(OBJECT_SELF); // Etiqueta del maestro
    // Si ya tenia una frase asignada, la repetira sin dar XP.
    // Tiene un 75 % de cambiar la frase.
    if(sFra != "" && d100() >= 76)
    {
        // En un principio  aqui no hace falta nada, repetira la misma frase,
        // que se supone ya asignada.
    }

    
    // COMIENZO MAESTRO1.
    // Comienzan las opciones del MAESTRO1.
    else if(iTir <= 7 && sTag == "MAESTRO1")
    {
        if(GetLocalInt(oPC, "CONSEJO1"+sTag) != 1) // Primera vez que recibe el consejo.
            GiveXPToCreature(oPC, 10); // 10 puntos de experiencia.
        // Este es el consejo, lo que se ver en el juego.
        sFra = "Frase del consjeo 1.";
        SetLocalInt(oPC, "CONSEJO1"+sTag, 1); // Guardamos consejo recibido.
    }
    else if(iTir >= 8 && iTir <= 20 && sTag == "MAESTRO1")
    {
        if(GetLocalInt(oPC, "CONSEJO2"+sTag) != 1) // Primera vez que recibe el consejo.
            GiveXPToCreature(oPC, 10); // 10 puntos de experiencia.
        // Este es el consejo, lo que se ver en el juego.
        sFra = "Frase del consjeo 2.";
        SetLocalInt(oPC, "CONSEJO2"+sTag, 1); // Guardamos consejo recibido.
    }
    else if(iTir >= 21 && iTir <= 40 && sTag == "MAESTRO1")
    {
        if(GetLocalInt(oPC, "CONSEJO3"+sTag) != 1) // Primera vez que recibe el consejo.
            GiveXPToCreature(oPC, 10); // 10 puntos de experiencia.
        // Este es el consejo, lo que se ver en el juego.
        sFra = "Frase del consjeo 3.";
        SetLocalInt(oPC, "CONSEJO3"+sTag, 1); // Guardamos consejo recibido.
    }
    else if(iTir >= 41 && iTir <= 67 && sTag == "MAESTRO1")
    {
        if(GetLocalInt(oPC, "CONSEJO4"+sTag) != 1) // Primera vez que recibe el consejo.
            GiveXPToCreature(oPC, 10); // 10 puntos de experiencia.
        // Este es el consejo, lo que se ver en el juego.
        sFra = "Frase del consjeo 4.";
        SetLocalInt(oPC, "CONSEJO4"+sTag, 1); // Guardamos consejo recibido.
    }
    else if(iTir >= 68 && sTag == "MAESTRO1")
    {
        if(GetLocalInt(oPC, "CONSEJO5"+sTag) != 1) // Primera vez que recibe el consejo.
            GiveXPToCreature(oPC, 10); // 10 puntos de experiencia.
        // Este es el consejo, lo que se ver en el juego.
        sFra = "Frase del consjeo 5.";
        SetLocalInt(oPC, "CONSEJO5"+sTag, 1); // Guardamos consejo recibido.
    }
    // Si se copia desde el comienzo MAESTRO1, hasta el fin MAESTRO1
    // y se cambia el resultado de sTag, por el de otro maestro apropiado,
    // con una conversacion y un script, se tienen dos maestros.
    // se puede aplicar a infinitos maestros, si sus etiquetas (Tag) son
    // distintas.
    // FIN MAESTRO1.


    // Se guarda a continuacion la frase, se establece la conversacion
    // se devuelve TRUE, para ejecutar la conversacion en juego.
    SetLocalString(OBJECT_SELF, "FRASEASIGNADA", sFra);
    SetCustomToken(7645, sFra);
    return TRUE;
}

 

Tercero, configuras las frases del maestro, los XP que da, etc...

 

Si quieres añadir más maestros, en el propio script te pongo como, copiar, pegar y cambiar el condicional de etiqueta, los consejos, XP, etc...

 

Un saludo, ya me dices como va.


JG8WpNH.jpg

¿No se puede?, Abre el Aurora Toolset o pídenos ayuda en NWN_ EE - España, grupo de Steam.


#4 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 210 posts

Posteado 23 August 2018 - 04:12 AM

Ah buenísimo, disculpen por tardar en responder, gracias, haré uso de todo esto, chekaré el tutorial de setaka aver si lo pillo un poco mejor, y probaré la idea Gonarin, se ve bastante interesante, ya les cuento.


Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 


#5 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 210 posts

Posteado 24 August 2018 - 01:25 AM

Estaba probando el script Gonarin, ahi en la conversación al npc le coloco <CUSTOM7654> en su linea y agrego el script en "el texto aparece cuando", una vez dentro del juego el npc me da los puntos de experiencia, pero me dice <UNRECOGNIZED TOKEN> ... igual me fijé que el tag del npc sea MAESTRO1, pero parece que le erré a algo.


Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 


#6 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 210 posts

Posteado 25 August 2018 - 06:05 AM

Bueno, acabo de encontrar la falla, leyendo el tutorial de Setaka pude entender cual era, y es que <CUSTOM7654> dentro del script marcaba como 7645, y lo cambié por <CUSTOM7645> ahora creo que anda todo bien, gracias a los 2, está muy bueno el sistema Gonarin.


Colaborando en:



Nombre servidor: ES) Rebelión del Submundo
Tipo de servidor: rol/acción/jvj
Jugadores: 1-25
Niveles: 1-30
Base literaria: Reinos Olvidados
IP (conectar directamente): sombrasdefaerun.no-ip.org
Foro: http://usn-rol.foroes.org/



 




Responder



  


A Bragol. Tus amigos te echan de menos.