Dudas runtime y condacts

ngPAWS (next generation Professional Adventure Writing System) es un sistema para crear aventuras de texto (también conocidas como ficción interactiva) que pueden jugarse en cualquier navegador actual (online u offline).

Moderador: Ejvg

Responder
Avatar de Usuario
tranqui69
Mensajes: 85
Registrado: 15 Abr 2023, 08:33
Contactar:

Dudas runtime y condacts

Mensaje por tranqui69 »

En ngpaws existen estos dos archivos que contienen buena parte del núcleo del párser.
Gracias a mi lamentable forma de programar, para La Aventura Casi Original, he modificado ambos archivos (bastante) para que se adapten a mis necesiades... PERO.
Claro, ¿qué ocurre si tengo que hacer una nueva aventura? Qué todo lo hecho lo tengo que deshacer.

¿Existe algún modo de crear archivos que "machaquen" determinadas funciones y que sean independientes de esos dos archivos del 'core'?

Ahí lo dejo esperando que se me aparezca la virgen y la repuesta sea SI.
Spoiler
No
Uto
Mensajes: 13
Registrado: 16 Dic 2022, 10:36

Re: Dudas runtime y condacts

Mensaje por Uto »

Antes de contestar a esta interesante pregunta, un disclaimer: esto es solo si quieres expandir ngPAWS para hacerlo a tu medida, los autores "normales" no tienen necesidad de hacer esto, ni de usar javascript.

Ahí va la respuesta:

En general en javascript puedes redefinir las funciones. Solo es necesario que esto ocurra en el orden que tu quieres. Para ello podrías hacer un plugin de tipo libreria (no tipo condacto) que lo haga, dado que los plugins se añaden al final, cuando ya está cargado todo lo demás.

Por ejemplo esto reemplaza el código de DONE para que cada vez que ocurra haga log en la consola, y el de getFlag para que la lectura de flags desde el 100 para arriba devuelva un valor aleatorio, y así sembrar el caos (porque para otra cosa no sirve):

Código: Seleccionar todo

//LIB condact_replacements

ACCdone = function ACCdoneExtendida()
{
	done_flag = true;
	console.log('Done');
}

getFlag = function newgetFlag (flagno)
{
	if (flagno<100) return flags[flagno];
	return Math.floor((Math.random()*255));
}
Aparte de esos, hay algunas cosas que lo mismo es más adecuado, al margen de que lo hagas también en una librería, engancharse a uno de los hook de ngPAWS.

Un ejemplo de LIB con hooks:

https://github.com/Utodev/ngPAWS/blob/m ... ce_lib.jsp

Todo sobre los hooks aqui:

https://github.com/Utodev/ngPAWS/wiki/hooks_es
Avatar de Usuario
tranqui69
Mensajes: 85
Registrado: 15 Abr 2023, 08:33
Contactar:

Re: Dudas runtime y condacts

Mensaje por tranqui69 »

Es por estas cosas por las que un foro es necesario.
Tener la oportunidad de escuchar las palabras y consejos del mismísimo creador del parser que usas no tiene precio.
Veamos las enseñanzas que hemos sacado de esta interacción.

* Ciertamente, reconozco para mi vergüenza y escarnio que los hooks no los tengo bien trabajados y que, muy posiblemente, me habrían ahorrado horas de trabajo.
* Sobre el tema de redefinir las funciones y el orden en el que se crean, demuestra, una vez más, que no tengo ni puta idea de JavaScript. (sic)
* Crear condactos que siembren el caos me parece sublime.
* Que te excluyan del grupo de "autores normales" baila sutilmente en la línea que separa el insulto del halago. :cry:

Imagen

PD: Un millardo de gracias por tus consejos que me serán muy útiles.
Responder