CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 17 Dic 2017 22:36

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 25 mensajes ]  Ir a página Anterior  1, 2
Autor Mensaje
NotaPublicado: 23 Jul 2015 15:27 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
saimazoom escribió:
Una pregunta sobre atributos, ¿en algún momento tienes pensado poder meter atributos que no sean bits?. Por ejemplo valores o cadenas de texto.


No como base, pero una extensión puede hacerlo si tiene un objetivo. Por ejemplo si una aventura tuviera que tener "puntos de vida" para cada NPC, sería relativamente fácil hacer una extensión que creara un sistema para asignarlos, decrementarlos, incrementarlos a base de condactos.

En plan:

Código:
ASSIGNHP objno max current
DECHP objno value
INCHP objno value
RESTOREHP objno


Espero que si alguien lo hace lo publique para que otros puedan usarla, como las de Inform o TADS :-)

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 23 Jul 2015 21:08 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 887
¿Pero cómo relacionas el objeto con los atributos?. ¿Sería algo que tendría que llevar aparte la extensión?, o ¿tienes definidos objetos a los que se pueden añadir nuevos atributos?. Quiero añadir algunos atributos para facilitar por ejemplo el tema de los gráficos, y juntar todo el código en un proceso que mire el atributo correspondiente.

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com


Arriba
 Perfil  
 
NotaPublicado: 24 Jul 2015 01:26 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
saimazoom escribió:
¿Pero cómo relacionas el objeto con los atributos?. ¿Sería algo que tendría que llevar aparte la extensión?, o ¿tienes definidos objetos a los que se pueden añadir nuevos atributos?. Quiero añadir algunos atributos para facilitar por ejemplo el tema de los gráficos, y juntar todo el código en un proceso que mire el atributo correspondiente.


No, no hay objectos (de POO) representando a los objetos (de PAW), es todo muy PAW, es decir, los objetos no son un objeto-POO, sino varios arrays (uno de localidades donde están, otro del peso que tienen, etc.). La ventaja es que sabes cuantos hay, por lo que si quieres hacer un atributo "puntos de vida", simplemente haces un array de 0 a 255 de enteros, y luego los condactos se refieren a ese array.

Lo que si es importante si añades datos que varian durante la partida es que se graben y carguen al grabar partidas, para lo cual tienes que usar el gancho h_saveGame y h_restoregame.

El mejor ejemplo de como ampliar ngPAWS con atributos lo tienes en la libreria de atributos de localidades, con fusilar esa podrías añadir lo que quieras.

Lo que no se es que quieres decir con "el tema de los gráficos" la verdad.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 24 Jul 2015 20:00 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 887
Quiero tener un atributo en la localidad que indique el gráfico actual en función del momento del día y del estado de la pantalla. Lo puedo hacer llevando flags dedicados a cada localidad pero es un poco rollo.

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com


Arriba
 Perfil  
 
NotaPublicado: 25 Jul 2015 01:11 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
saimazoom escribió:
Quiero tener un atributo en la localidad que indique el gráfico actual en función del momento del día y del estado de la pantalla. Lo puedo hacer llevando flags dedicados a cada localidad pero es un poco rollo.


Pues practicamente te vale con "fusilar" el de atributos de localidad, solo que te vale con un array:

Código:
//LIB loc_graphics.jsp

// This library implements attributes for locations, just like the object attributes


locsGraphic = [];


var old_locgrf_h_saveGame = h_saveGame;

h_saveGame = function(savegame_object)
{
   savegame_object.locsGraphic = locsGraphic.slice();
   old_locgrf_h_saveGame(savegame_object);
   return savegame_object;
}

var old_locgrf_h_restoreGame = h_restoreGame;

h_restoreGame = function(savegame_object)
{
   locsGraphic = savegame_object.locsGraphic.slice();
   old_locgrf_h_restoreGame(savegame_object);
}



Con eso ya tendrías una variable entera para cada localidad que puedes cambiar, ahora solo te falta, como en la librería de atributos, añadir unos condactos que la asignen o la lean. Por ejemplo
un GETLOCGR locno flagno (mete en el flag flagno en la localidad locno, que básicamente sería un setFlag(flagno, locsGraphic[locno]) y un SETLOCGR locno value que sería un locsGraphic[locno]=value.

Así puedes hacer:

Código:
GETLOCGR @38 fAux
PICTURE @fAux


O si quieres estar mas cómodo, te haces directamente un condacto "PICTUREGR locno" que te haga esos dos pasos de un tirón.

También puede que quieras hacer que por defecto el gráfico de una localidad sea el de igual número para lo cual en la librería original te basta con poner detrás del locsGraphic = []; esto

Código:
for(var i=0;i<256;i++) locsGraphic[i] = i+256;


El 256 es porque txtpaws le suma 256 al valor interno de los gráficos creados con "#define grf", que supongo que sería lo que usas porque "#define pic" hace que el gráfico salga directamente al estar ligado a localidad.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 25 Jul 2015 09:35 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 22 May 2004 10:50
Mensajes: 887
Uto, eres increíble. Muchas gracias :)

_________________
---
# S a i m a z o o m # http://www.aliensuavito.com


Arriba
 Perfil  
 
NotaPublicado: 25 Jul 2015 14:13 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
saimazoom escribió:
Uto, eres increíble. Muchas gracias :)


Jaja, de nada.

Por otro lado, lo mismo no te hace falta todo eso, sino simplemente hacerte un condacto "SUPERPICTURE locno" que se encargue internamente (a nivel javascript) de decidir que imagen hay que pintar (mirando la hora, el estado de la pantalla, flags, etc.)

Todo depende si quieres hacerlo a un nivel más pawsero o más javascriptero.

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 26 Jul 2015 15:13 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
En un momento de tiempo libre he creado una extensión que permite añadir infinitos atributos de valor entero a los objetos de ngPAWS:

viewtopic.php?f=6&t=5858

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 17 May 2016 06:52 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
No están incluidos en la versión 9 ¿no?. Me los he tenido que descargar de git y copiarlas en la carpeta jsl, ya que me daba error una aventura que tenía ya empezada y que usaba el condato "lnotzero".

Yo había supuesto que iban a estar por defecto incluidos, o bien yo estaba equivocado, que este tipo de extensiones hay que bajarlas de git y copiarlos si queremos usarlos.

_________________
Te quiero... lo siento Yoda sólo tenemos café.


Arriba
 Perfil  
 
NotaPublicado: 17 May 2016 17:32 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4614
edlobez escribió:
No están incluidos en la versión 9 ¿no?. Me los he tenido que descargar de git y copiarlas en la carpeta jsl, ya que me daba error una aventura que tenía ya empezada y que usaba el condato "lnotzero".

Yo había supuesto que iban a estar por defecto incluidos, o bien yo estaba equivocado, que este tipo de extensiones hay que bajarlas de git y copiarlos si queremos usarlos.


Pues no, es cierto que he añadido muchos condactos a ngPAWS como plugins, pero cuando la cosa ya es "un taco de condactos para una labor específica" prefiero dejarlo como librería separada (al estilo Inform). Esto es fundamentalmente porque:

1) Si lo meto en el "core" de ngPAWS lo tengo que documentar junto con el resto, si es una librería aparte pues lleva su documentación en un "readme" y andando.
2) ngPAWs añade al fichero destino todos los plugins que haya en la carpeta plugins, se usen o no se usen. Aunque en la práctica todas las librerías externas juntas no llegan a 1K, me parece mala práctica añadir código que no se va a usar porque sí. Lo ideal sería que el compilador se diera cuenta y añadiera condactos y librería según se usen o no, pero aparte del tiempo que no tengo que requeriría hacer eso, impediría hacer cosas como las que se hace en condact_sequence_lib, donde los condactos son llamados de manera indirecta, y el compilador no se podría dar cuenta, por lo que podría no añadir algún plugin que al final sí hace falta.

Supongo que si alguien quiere un código javascript optimizado en tamaño siempre le puede pasar al .js resultante un optimizador y un "minimizador", así que a ese respecto mi lado vago opta por no reinventar la rueda :-D

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 25 mensajes ]  Ir a página Anterior  1, 2

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM