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

En busca del tesoro (o del sistema de)


10 respuestas al tema

#1 Khan51

Khan51

    Neonato

  • Miembro
  • PipPip
  • 103 posts

Posteado 14 February 2017 - 07:06 PM

Buenas a todos señores. 

 

Pues eso, ando buscando el sistema de tesoros "perfecto", por decirlo de algún modo. 

 

Por ahora los que he encontrado funcionan casi todos con la librería genérica del NWN y te sacan objetos aleatorios sin ton ni son según el nivel del personaje. 

 

El problema que he tenido con el que estamos usando ahora es que al cerrar un cofre, lo regenera automáticamente y tienes dos cofres directamente y luego ya no regenera más. 

 

Lo que busco es algún sistema que regenere los cofres cada X hora y que puedas personalizar que objetos quieres que salgan en tus cofres, que no funcione solo con la librería genérica del juego vamos.

 

Eso es lo esencial. 

 

Si alguien sabe como orientarme o conoce de algún sistema que haga eso y me explica como va, estaré muy agradecido.


"La ignoracia convencida, no tiene remedio. . ."

firma10.jpg


#2 lavafuego

lavafuego

    Ancillae

  • Miembro
  • PipPipPip
  • 366 posts

Posteado 14 February 2017 - 07:20 PM

por ejemplo:

 

#include "NW_O2_CONINCLUDE"
 
void main()
{
  object oJugador = GetLastOpener();//quien abre el cofre
  if( GetLocalInt(OBJECT_SELF, "activo")==FALSE) //si el propio cofre tiene el valor de la int "activo" como cero o false
     {
            int iNivel = GetHitDice(oJugador); //miramos el nivel del pj
            int iCantidad = 5 + d20() + d6(iNivel);  //creamos el valor de la int 5+dado de 20+ dado de seis por el nivel del pj que lo abrio
            CreateItemOnObject("nw_it_gold001",OBJECT_SELF,iCantidad);//creamos la cantidad de oro
            if (iNivel<11) //si es de menos de nivel 11 generamos un tesoro de la tabla de bajos
               {
                 GenerateLowTreasure(OBJECT_SELF);
               }
               else//si es nivel 11 o superior
               {
 
                  int tiradaDeDiez= d10(); //generamos una tirada de diez
                  if(tiradaDeDiez==1)//si sale uno creamos basura
                    {
                    CreateJunk(OBJECT_SELF);
                    }
                 else if(tiradaDeDiez==9)//si sale 9 creamos un pergamino de mago
                    {
                    object oAdventurer=oJugador;
                    CreateArcaneScroll(OBJECT_SELF,oAdventurer,  0);
                    }
                else if(tiradaDeDiez==8) //si sale 8creamos pergamino de clerigo
                    {
                     object oAdventurer=oJugador;
                    CreateDivineScroll(OBJECT_SELF,oAdventurer,0);
                     }
                else if(tiradaDeDiez==10)  //si sale 10 generamos un tesoro de la tabla de medios
                    {
                    object oLastOpener=oJugador;
                    GenerateMediumTreasure(oLastOpener,OBJECT_SELF);
                    }
 
 
            SetLocalInt(OBJECT_SELF, "activo", TRUE);//una vez generado el tesoro ponemos la int en TRUE para uqe no genere mas tesoros
            DelayCommand(800.0, SetLocalInt(OBJECT_SELF, "activo", FALSE));//en 800 segundos ponemos la int en FALSE para que vuelva a generar tesoro
 
         }//fin else mas nivel 11
      } //fin de comprobar que tiene la int "activo" en FALSE
}//fin void main
 
 
puedes jugar con lo que quieras, metiendo una int al cofre con el pj que abrió el cofre y no pueda volver a generar en ese cofre etc
 
compruebas y marcas
 
if  (GetLocalInt(OBJECT_SELF,"iYaCogio"+ GetName(oJugador))==0)
 
{
bla bla bla
 
marcas la int en el cofre:
SetLocalInt(OBJECT_SELF,"iYaCogio"+ GetName(oJugador), 1);
}
 
 
puedes personalizar con lo que quieras si no quieres complicarte usa los genéricos del nwn y simplemente marca el cofre para que no genere mas tesoros en X tiempo como hice arriba y quizás también marcar con el pj que lo ha abierto para que no pueda volver a generar tesoro en ese cofre aunque pase el tiempo de generación 
 
 
 
PD: lo que hace el aburrimiento jjajaja...me dejan 10 min mas y monto un sistema entero jaja

Editado por lavafuego, 14 February 2017 - 07:23 PM.

http://tierrasdenemar.mi-foro.es/  (abierto para test 79.109.30.79:5121 )


#3 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 155 posts

Posteado 16 February 2017 - 09:56 AM

Yo estaba usando unos que colgó txibi en el foro que deja drop para todos los pjs que lo abran 1 vez, es básico pero salva, lo malo que no regenera (aunque en algunos casos eso es bueno).

 

Unas preguntas Lava:

 

- Al generar tesoro a un pj, ¿le genera el propio a otro que venga despues?
- ¿Se puede usar el mismo script si cambio el tag del cofre para ser usado nuevamente en otro cofre?

- La función GenerateMediumTreasure ¿desde que lugar elige los items?, ¿se puede hacer que los saque al azar desde el contenido de algún contenedor escondido por ej?


Union Sudamericana NWN: Heroes de Faerun

Nombre servidor: ES) Heroes de Faerun
Tipo de servidor: rol/acción
Jugadores: 1-15
Niveles: 1-40
Base literaria: Reinos Olvidados.
Sector: Norte de Faerun/Costa de la Espada/Maztica/Infraoscuridad/oceano/otros planos.
Otros: Hench personalizados, subrazas, tramas gobales.
IP (conectar directamente): heroesdefaerun.no-ip.org
Foro: http://usn-rol.foroes.net

#4 Khan51

Khan51

    Neonato

  • Miembro
  • PipPip
  • 103 posts

Posteado 16 February 2017 - 11:57 AM

Justo lo que pide Zoraga es lo que necesito yo. Realmente necesito el sistema completo, si quiero contenido de un solo uso en un cofre ya lo pongo yo a mano o con un script que genere contenido aleatorio desde la biblioteca base del NWN que es lo que tengo ahora. 

 

Pero para un servidor persistente es esencial que regeneren los cofres y que se pueda personalizar el contenido aleatorio de los mismos.


"La ignoracia convencida, no tiene remedio. . ."

firma10.jpg


#5 Setaka

Setaka

    Ancillae

  • Miembro
  • PipPipPip
  • 356 posts

Posteado 16 February 2017 - 05:53 PM

Pueees.... he empezado como lava haciendo un script simple, y me he ido liando liando y... acabo de terminar un sistema muy completo xD Me pilló el mono después de tanto tiempo sin scriptear jajaja

 

Voy a ver si puedo poner un módulo con algunos cofres configurados para que se sepa trastear y lo comparto. Es el sistema de tener unos cofres en la área DM y por probabilidades lo copia al cofre abierto. Pero también se puede configurar que dé oro, o objeto y oro, o varios objetos... todo por probabilidades muy customizables :)


Tutorial NWN Scripting: Click aquí


#6 lavafuego

lavafuego

    Ancillae

  • Miembro
  • PipPipPip
  • 366 posts

Posteado 16 February 2017 - 07:23 PM

jajaja te ha pasado como a mi xD, haber para que lo entendáis (hasta que setaka ponga su sistema) , que es muy importante entender lo que se ve y poco a poco ir cogiendo destreza (como aprendimos todos y omito lo de a base de hostias xD)
 
el script va en onopen del recipiente.
 
esta linea:
 if( GetLocalInt(OBJECT_SELF, "activo")==FALSE)
 
dice si la int almacenada en el objeto abierto con nombre "activo" es de valor "0" o "FALSE" continuamos con el script., luego si tiene valor cero o false generamos un tesoro.....
 
más adelante justo cuando generamos el tesoro hacemos esto:
 
 SetLocalInt(OBJECT_SELF, "activo", TRUE);
 
ahora damos el valor TRUE o 1 a la variable con el nombre "activo" que chequeamos al principio del script. luego cuando se vuelva a abrir el cofre o lo que sea, iniciará el script y al ver que su valor es TRUE no genera tesoro.
 
pero como queremos que vuelva a generar tesoro el cofre porque sino para eso meto los objetos a manos añadimos esto:
 
    DelayCommand(800.0, SetLocalInt(OBJECT_SELF, "activo", FALSE));
 
decimos que pasados 800 segundos esa variable int con nombre "activo" del recipiente que hemos abierto va a volver a tener un valor "FALSE" para que así cuando vuelva a abrirse pasado ese tiempo vuelva a generar un tesoro.
 
 
a la segunda pregunta : "- ¿Se puede usar el mismo script si cambio el tag del cofre para ser usado nuevamente en otro cofre?"

 

en el script el objeto al que cambiamos las variables, generamos tesoro etc es: OBJECT_SELF eso quiere decir que lo hace todo en el objeto mismo. luego con este script en el onopen de 100 objetos funciona en los 100 de manera independiente 

 

 

y a la tercera pregunta: "- La función GenerateMediumTreasure ", como ves al inicio del script hay un include:  #include "NW_O2_CONINCLUDE"

 

en el script generico NW_O2_CONINCLUDE si lo abres en el aurora verás el sistema entero, básicamente hace unas tablas con los tipos de obejetos y el nivel de los pjs y mediante tiradas decide cual aparece.


http://tierrasdenemar.mi-foro.es/  (abierto para test 79.109.30.79:5121 )


#7 Txibi

Txibi

    Antediluvian

  • Miembro DLAN
  • PipPipPipPipPip
  • 4489 posts

Posteado 16 February 2017 - 07:48 PM

Edición: Mientras tochoposteaba, a escrito Lavafuego :D

 

Saludos.

 

Yo para tesoros simples usaba este script. En lugar de hacer bases de datos, creé una variable simple. Removí el tesoro por defecto y metía este.

 

Se limita a crear una variable local (activa hasta que se resetee el servidor) con un nombre de variable fija (en mi caso iMarcamosGorron) y otra variable para no repetirse. La etiqueta (tag) del contenedor + El nombre del personaje que usa el Jugador. De tal forma que basta con poner etiqueta personalizada al contenedor para que sea reutilizable.

 

Esto da variables únicas cuya vida útil dura sólo la sesión, cuando se reinicia el servidor desaparecen (deberían, vamos)

 

Si no abrió el personaje del jugador no existe y vale 0, le da el botín y lo marca a 1. La próxima vez que venga, vale 1 la variable y no le da nada a ese personaje, a los demás, les da.

 

La cree en su día, porque hay un tipo de jugador que se dedicaba a hacer "tours" por los contenedores, lo cual no es grave y puede seguir haciendolo, pero con este script ya no deja sin tesoro a los que viene detrás. Más grave es el jugador que se dedica a, mientras los jugadores pelean con los bichos, ir corriendo, quitarles el tesoro y largarse. Con este método, no puede dejar sin tesoro a los de la quest por mucho que corra.

 

Si quieres personalizarlo, en lugar de la línea:

 

GenerateLowTreasure(OBJECT_SELF);

 

Que crea el típico tesoro de bajo nivel, pues usas la función CreateItem y das el tesoro que tu quieras. Si quieres cierta aletoriedad, creas una lista de objetos y generas un número aleatorio. Según el número creas uno u otro objeto. En plan If numero=1, crea esto, numero=2, crea esto otro, etc.

 

Para crear objetos personalizados, ya sabes, en plan:

 

CreateItemOnObject("tx_curamucho",OBJECT_SELF,d4());  //Crea entre 1 y 4 objetos del objeto tx_curamucho, una poción, en este caso.

 

 

/*

Txibi.

Sabado 31 de Agosto del 2005.

Script: tes_tx_vamp_01
Intento de crear un script de regeneración de tesoros uno por jugador.
Una vez por reinicio.
1 tesoro por cada jugador.
Sin limite de jugadores

A niveles superiores a 10 da solo de oro, no el tesoro.

*/

#include "NW_O2_CONINCLUDE"

void main()
{
    object oUltimoQueAbrio = GetLastOpener();
    int iCantidad = 1;
    int iNivel = 1;
    string sContenedor = GetTag(OBJECT_SELF);

    if (GetLocalInt(GetModule(),"iMarcamosGorron" + sContenedor + GetName(oUltimoQueAbrio)) == 0 )
    {
        // Damos oro según nivel.
        iNivel = GetHitDice(oUltimoQueAbrio);
        iCantidad = 50 + d20() + d6(iNivel);
        CreateItemOnObject("nw_it_gold001",OBJECT_SELF,iCantidad);
        CreateItemOnObject("tx_curamucho",OBJECT_SELF,d4());
        // Tesoro bajo aleatorio, solo para niveles inferiores a 10.
        if (iNivel<11)
        {
            GenerateLowTreasure(OBJECT_SELF);
        }
        SetLocalInt(GetModule(),"iMarcamosGorron" + sContenedor + GetName(oUltimoQueAbrio), 1);

    }
}//fin void main()

 

Txibi.


Editado por Txibi, 16 February 2017 - 07:50 PM.


#8 Setaka

Setaka

    Ancillae

  • Miembro
  • PipPipPip
  • 356 posts

Posteado 16 February 2017 - 09:25 PM

Aquí lo he dejado: http://www.clandlan....ema-de-tesoros/

 

Madre mía, creo que me he estado más tiempo dejándolo todo bien masticadito que scripteando jajaja


Tutorial NWN Scripting: Click aquí


#9 lavafuego

lavafuego

    Ancillae

  • Miembro
  • PipPipPip
  • 366 posts

Posteado 17 February 2017 - 08:38 AM

ole que dos cracks¡¡¡¡, sois unos monstruos muchachos...bueno setaka un monstruo y txibi es el maestro y juega con ventaja ¬¬ jajaja


http://tierrasdenemar.mi-foro.es/  (abierto para test 79.109.30.79:5121 )


#10 Txibi

Txibi

    Antediluvian

  • Miembro DLAN
  • PipPipPipPipPip
  • 4489 posts

Posteado 17 February 2017 - 05:11 PM

Muchas gracias, Setaka. Lava, yo ya ando oxidado, me adelantan los que scriptean ahora por todos los lados :D



#11 Zoraga

Zoraga

    Neonato

  • Miembro
  • PipPip
  • 155 posts

Posteado 17 February 2017 - 11:50 PM

Que buena, sistemas para diferentes circunstancias, creo que ire probando todos. :ohno:


Union Sudamericana NWN: Heroes de Faerun

Nombre servidor: ES) Heroes de Faerun
Tipo de servidor: rol/acción
Jugadores: 1-15
Niveles: 1-40
Base literaria: Reinos Olvidados.
Sector: Norte de Faerun/Costa de la Espada/Maztica/Infraoscuridad/oceano/otros planos.
Otros: Hench personalizados, subrazas, tramas gobales.
IP (conectar directamente): heroesdefaerun.no-ip.org
Foro: http://usn-rol.foroes.net



Responder



  


A Bragol. Tus amigos te echan de menos.