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

Variables objetos


15 respuestas al tema

#1 Cayaloq

Cayaloq

    Humano

  • Miembro
  • Pip
  • 48 posts

Posteado 25 August 2018 - 08:27 AM

Hola tengo este script que suelo usar bastante, guardando todas las misiones y su evolución en un objeto
 
 
 
object oVariable = GetObjectByTag("insigniamiliciaf");  

    if(!(GetLocalInt(oVariable, "enfermedad") == 0)) // 1,2,3 lo que se necesite
        return FALSE;

    return TRUE;
}

 

            void main()
{
    // Establecer las variables
   object Ovariables = GetObjectByTag("insigniamiliciaf");
    SetLocalInt(Ovariables, "enfermedad", 1);
      }

 

 


void main()
{
    // Establecer las variables    y sumar 1
   object oVariables = GetObjectByTag("insigniamiliciaf");
   int iN = GetLocalInt(oVariables, "enfermedad");
    SetLocalInt(oVariables,"enfermedad",iN+1);
 }

 

 

 

Jugando solo, tanto en single como en multiplayer funciona perfectamente, jugando varios también funciona el problema viene cuando se sale del juego, al volver a cargar la partida, las variables se reinician a 0.  Sin embargo si coges esa partida guardada en las que se reiniciaron las variables  y juego yo solo tanto en single como en  multiplayer vuelve a funcionar perfectamente.

 

Gracias


Editado por Cayaloq, 27 August 2018 - 10:34 AM.


#2 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1213 posts

Posteado 25 August 2018 - 10:45 AM

cuando jugamos la campaña de NWN en cooperativo con unos chicos del foro nos pasaba lo mismo, es por que no estas cargando un modulo sino una partida guardada, al desconectarse un personaje de una partida guardada empiezan a ocurrir estos problemas.

 

creo que el problema que estas teniendo es ese.


10016077DS1515734551.gif


#3 Cayaloq

Cayaloq

    Humano

  • Miembro
  • Pip
  • 48 posts

Posteado 25 August 2018 - 11:06 AM

Gracias, ¿como lo soluciono? 



#4 MenemDoIt

MenemDoIt

    Antediluvian

  • Miembro
  • PipPipPipPipPip
  • 1213 posts

Posteado 25 August 2018 - 12:12 PM

debes crear un sistema persistente de variables para todo aquello que desees que sea persistente, por ejemplo, si queres que un "boss" no aparezca, primero no lo añadas al Area, haz que spawnee si la variable "X" no es igual a "1".

 

de esa forma podes cargar un modulo en lugar de una partida guardada, y si es la primera vez que jugas al modulo el boss aparecera y, tras derrotarlo ( y aplicar la variable ), la proxima vez que cargues el modulo no aparecera.

 

lo mismo se aplica a NPCs muertos y todo ese asunto.


10016077DS1515734551.gif


#5 Cayaloq

Cayaloq

    Humano

  • Miembro
  • Pip
  • 48 posts

Posteado 25 August 2018 - 08:02 PM

Muchas gracias por la respuesta. El problema es que tengo esas variables en un montón de conversaciones. Lo voy a probar a ver que tal, me da que las conversaciones no las voy a poder arreglar. 



#6 lavafuego

lavafuego

    Ancillae

  • Miembro
  • PipPipPip
  • 395 posts

Posteado 26 August 2018 - 11:00 AM

De todos modos tienes en el foro en la parte de tutoriales, en tutorial de scrpiting nwn una zona de variables permanentes. Esta un poco escondido en la zona "8-variables locales" busca :
Extendido por lavafuego: Uso de base de datos por defecto del juego.
Ahi te explican como se usan.
Un saludo!!

Editado por lavafuego, 26 August 2018 - 11:00 AM.

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


#7 Cayaloq

Cayaloq

    Humano

  • Miembro
  • Pip
  • 48 posts

Posteado 27 August 2018 - 10:34 AM

Gracias, le echaré un vistazo a ver que tal.



#8 Cayaloq

Cayaloq

    Humano

  • Miembro
  • Pip
  • 48 posts

Posteado 03 September 2018 - 11:21 AM

Buenas vuelvo con esto, la solución de Lavafuego no me gusta, porque cambia el módulo entero, porlo que si quieres volver a empezar tienes que reiniciar todas las variables a 0( sería relativamente fácil, cambiar solamente las que te impiden seguir la trama y reiniciarlas cuando se inicia una partida,de todos modos no me convence.

 

La de MenemDolt tampoco, tengo muchas conversaciones que tendría que dividir, crear un pj, destruirlo y crear una copia con la nueva conversación.

 

Vamos que o yo lo he entendido mal o no es lo que busco. 

 

Hace tiempo pregunté, me dijeron que las variables no se guardan en los PJ, así que cree un objeto para guardar las variables ("insigniamiliciaf"), donde teóricamente debería almacenarlas para recordarlas al entrar/salir del módulo. Lo que me fastidia es que a veces funciona, a veces no. Alguna vez cargas una partida y va todo perfecto y otra vez cargas la misma partida y deja de funcionar o viceversa.

 

No se si puede influir temas de liderazgo de grupo, de que los otros jugadores no tengan el módulo. Yo se que la memoria selectiva es muy traicionera pero yo estoy convencido de que antes (hace dos años) funcionaba perfectamente.

 

Además entendería que se reiniciaran pero a veces tenía que estar en 2 y está en 1.

 

Lo único que se me ocurre, es para los momentos en que te puedes quedar sin seguir, crear una varita de bugs para que los pj la usen si pasa. Que ya digo a veces pasa a veces no. Pero me parece una solución muy cutre

 

Pues eso si alguien que haga módulo, me puede chivar como lo hace él para solucionar ese problema.

 

Gracias a todos los que han contestado y  los que lo harán. A ver si hay suerte.


Editado por Cayaloq, 03 September 2018 - 11:28 AM.


#9 AlthorDeMalavir

AlthorDeMalavir

    Neonato

  • Miembro
  • PipPip
  • 115 posts

Posteado 03 September 2018 - 11:17 PM

Sin tener demasiada información supongo que el problema es GetObjectByTag, esa función te toma un objeto que tenga esa tag, pero el problema es que hayan varios objetos con esa tag, entonces pillará el que a el le de la gana, que a saber cual es.

 

La pergunta sería ¿son varios los personajes que tienen ese objeto?

 

Por otra parte me parece que incluso pilla objetos de paleta con ese tag, sino me falla la memoria, GetObjectByTag solo se ha de usar si está seguro de que en todo el modulo solo va a haber un objeto con ese tag en cualquier momento.


YourServerList.com Listado de servidores de Minecraft, Neverwinter Nights 1 y 2 y Terraria.


#10 lavafuego

lavafuego

    Ancillae

  • Miembro
  • PipPipPip
  • 395 posts

Posteado 04 September 2018 - 07:02 AM

Si, yo probaría con hacer un chequeo de si el pj tiene ese objeto con GetItemPossessedBy y si es valido...hacer esa modificación en la variable y ya de paso al crear el objeto en el pj asignar la variable con valor 0, que hay veces que si no la tiene y le dices sumar uno te lo pone a cero y no a uno.

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


#11 Cayaloq

Cayaloq

    Humano

  • Miembro
  • Pip
  • 48 posts

Posteado 04 September 2018 - 08:16 AM

 Efectivamente todos los personajes tienen ese objeto, entonces en grupos debe haber un "lider" que lleve el objeto en cuestión y sea este siempre el que hable con los NPC,s. También debe estar presente cuando muera un boss de una misión etc.

 

Si cambio GetObjectByTag("insigniamiliciaf");  por GetModule() funcionaría sin problema?

 

Muchas gracias a los dos, probaré las dos opciones a ver que tal. 



#12 Txibi

Txibi

    Antediluvian

  • Miembro DLAN
  • PipPipPipPipPip
  • 4665 posts

Posteado 04 September 2018 - 10:15 AM

Saludos.

 

Hace eones que no miro, pero ¿no guardaban los objetos las variables que grababan en ellos de forma permanente? Porque si es un objeto, se le asigna una variable cuyo nombre sea tag del objeto+tag del pj del jugador y un valor y mientras tengan ese objeto, tienen el "historial".

 

Txibi.

 

Edición: Si quieres individualizar más, tag objeto+tag PJ+tag jugador.


Editado por Txibi, 04 September 2018 - 10:20 AM.


#13 AlthorDeMalavir

AlthorDeMalavir

    Neonato

  • Miembro
  • PipPip
  • 115 posts

Posteado 04 September 2018 - 12:08 PM

Si, se guardan permanentemente en los objetos que tenga el jugador.

 

El tema de misiones cuando jugadas en cooperativo o multijugador siempre ha sido bastante peliagudo, en caso de que sea una partida de un grupo de amigos que la vayas guardando, lo suyo sería no usar objetos del inventario para guardar los progresos, usa un ubicado con un tag único puesto en cualquier área y que no esté marcado como estático, usa GetObjectByTag para referirte a ese ubicado y guardar los progresos en el.

 

Si han hablado con no se quén pues guardas la variable en ese ubicado, si ha matado tal boss pues guarda la variable en ese ubicado, al guardar la partida las variables de ese ubicado tambien se van a guardar si está en un área.

 

Para hacerlo más seguro crea un área no accesible pequeña con ese ubicado y a correr.


Editado por AlthorDeMalavir, 04 September 2018 - 12:10 PM.

YourServerList.com Listado de servidores de Minecraft, Neverwinter Nights 1 y 2 y Terraria.


#14 Cayaloq

Cayaloq

    Humano

  • Miembro
  • Pip
  • 48 posts

Posteado 04 September 2018 - 07:28 PM

Gracias a los dos por contestar.

 

Althor si eso funciona, sería una solución perfecta, muchas gracias.



#15 lavafuego

lavafuego

    Ancillae

  • Miembro
  • PipPipPip
  • 395 posts

Posteado 05 September 2018 - 07:38 AM

Mi consejo...si tienen un libro de habilidades...indesprendible en los pjs mete ahi la variable. Luego en el onenter del modulo haces un check y si el libro tiene la variable le pones al pj la mision en el estado debido(sin volver a cobrar xD)

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




Responder



  


A Bragol. Tus amigos te echan de menos.