JuangaCovas.info

La página personal de Juan Gabriel Covas

Herramientas de usuario

Herramientas del sitio


laprision:devdocs:gamedata

La Prisión: GameData


LA PRISION

Formato de un fichero *.gamedata generado por una compilación de mapa del Editor.

-------------------------------------------------------------------------------------
Notas:
tipo string: un byte indicando el nº de caracteres (incluyendo el 0) + los_caracteres
-------------------------------------------------------------------------------------

Descripción del formato:

////////////////////////////////////////////////////////////////////////
// HABITACIONES

WORD	Número de habitaciones en total
WORD	Número de departamentos en total (un departamento == n rooms)

---- n departamentos
  BYTE habitaciones en este departamento
  ----- n habitaciones
		DWORD	(*) ID de la habitación
		string	(*) Nombre de juego de la habitación
		string  Nombre interno de la zona para su carga
		BYTE	safezone (1==safezone, 0==normal)
	
		///////////////////////////////////////////////////////////////////////
		// TIENDAS
		
		WORD	nº de tiendas en esta habitación
		------- n tiendas
			string	Nombre de la tienda
			WORD	BotID (referencia para el aspecto de la tienda)
			BYTE	Estado de animación
			WORD    ShopID (referencia para los objetos que vende)
			float	x
			float	y
			float	z
			float	angulo
	
			///////////////////////////////////////////////////////////////////////
			// PUERTAS
		
			BYTE	(*) número de puertas en la habitación
			------- n puertas:
				string	nombre de la puerta
				[struct EDATA_DOOR]
				BYTE	(*) acceso restringido (0 == libre acceso)
				DWORD	(*) ID de la habitación destino (0 == no link)
				BYTE	(*) ID de la puerta destino
				if (acceso_restringido==9)
					BYTE	acceso especial
					if (acceso_especial==2)
						WORD	tipollave
					if (acceso_especial==4)
						DWORD	varID
		
			//////////////////////////////////////////////////////////////////////
			// CAMARAS
			DWORD boxes info size
		
			BYTE	número de cámaras en la habitación
			------- n cámaras:
		
				/////////////////////////////////////////////////////////////////
				// BOXES
		
					WORD	número de boxes en esta cámara
					if (n>0)
					------- n boxes:
		
						BYTE	tipo de box (0==compleja, 1==mirar, 2==gotolink)
						BYTE	z-order
		
						// polígono
						BYTE	nº de vértices del polígono de selección
						------- n vértices
							float	x	coordenadas 2D del vértice
							float	y
		
						bool defined
							// caja 2D
							int		x
							int		y
							int		ancho
							int		alto
		
						BYTE	boxtype (0==hay mas datos; 1==mirar, 2==gotolink)
						if (boxtype==2)
							BYTE			Direccion de la flecha
							float x,y,z		Primer Punto
							float x,y,z		Segundo Punto
							<EndOfBox>
		
						if (boxtype!=2)
							DWORD	ID de la frase para MIRAR
							<EndOfBox>
		
					++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					++ LA BOX SE EJECUTA...
		
					bool	¿ejecutar box siempre?
							(if NOT)
							--------- 3 veces:
								[struct EDDATA_BOX_EXEVARS]
								DWORD	ID de la variable
								int		valor a comparar
								BYTE	and/or con la siguiente
		
					++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					++ AL TERMINAR LA BOX...
		
					BYTE	acción a realizar al terminar la ejecución de la box
					DWORD	sampleid
					BYTE	nº de variables a activar al terminar la ejecución de la box
					------- n variables
						[struct EDDATA_BOX_TERMVARS]
						DWORD	ID de la variable
						int		valor que debe tomar la variable
					
		
					++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					++ USAR <objlink> CON BOX...
		
					bool	usarinfo
		
					BYTE	defaultaction para el objectlink[0] <sin objeto>
					BYTE	nº de object links para "usares" (siempre hay como mínimo uno)
					------- n objectlinks
						BYTE	nº de variables a activar cuando el "preso actúa" con este objectlink
						------- n variables
							DWORD	ID de la variable
							int		valor que debe tomar la variable
		
						WORD	ID del tipo de objeto al que corresponde el link
						DWORD	sampleid
						DWORD	ID de la frase
						bool	¿Hay datos de animación?
								(IF true)
								[struct EDDATA_BOX_3DANIM]
								WORD	ID de la animación a lanzar
								float	orientación del personaje
								float	x	pos x del personaje
								float	y	pos y
								float	z	pos z
		
						[struct EDDATA_BOX_3DHOTPOINT]
						float	x	Hotpoint x
						float	y	Hotpoint y
						float	z	Hotpoint z
		
					+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
					++ ANIMACION 2D DE LA BOX
		
					string	fichero de animación a utilizar
							(IF string)
		
								DWORD sampleid
								BYTE  sampletype
		
								[struct EDDATA_BOX_2DANIMDESC]
								BYTE	fps
								BYTE	spf
								BYTE	tipo de reproducción
								int		x	coordx donde debe reproducirse
								int		y	coordy donde debe reproducirse
								BYTE	nº de frames
								------- n frames:
									[struct EDDATA_BOX_2DANIMFRAME]
									int x
									int y
									int ancho
									int alto
								BYTE	nº de frames en la secuencia
								------- n frames en secuencia
									BYTE	frameindex
						
//////////////////////////////////////////////////////////////////
// INFO DE OBJETOS

// *****************************************************************************************************
WORD	nº de nombres diferentes de pcx
------- n nombres de pcx
	string	nombre del pcx (sin el .pcx)
// *****************************************************************************************************

DWORD	nº de tipos de objeto
------- n objetos
	WORD	id del objeto
	string	Nombre del objeto
*die-->	string	Nombre del pcx
*nuevo	WORD	index de la lista de nombres de pcx
	BYTE	type
	BYTE	level
	BYTE	handling
	BYTE	effect
	int	modif
	DWORD	price
*die-->	BYTE	wholeness
*die-->	DWORD	charges
	BYTE	weight
	WORD	contain       <--- balas o carga que utiliza
	
	// *********************************************************************************************
	WORD	posibilidad de rotura
	WORD	tipo de objeto resultante de una rotura

	BYTE	OBJ_LORE | OBJ_NODROP | OBJ_STACKABLE | OBJ_SOLDVOLATILE
	
		#define	OBJ_LORE		1
		#define OBJ_NODROP		2
		#define OBJ_STACKABLE		4
		#define OBJ_SOLDVOLATILE	8
	
	
	WORD	delitos que pueden usar este objeto (cada bit activo indica que ese delito puede usarlo)
	BYTE	soundtype
	BYTE	weaponskill
	BYTE	nº de modificadores extra
	------- n modificadores
		BYTE	stat o skill que modifica (si es <100 es un statID - 1, si >=100 es un skillID - 100)
		int	modificador
	// *********************************************************************************************

//////////////////////////////////////////////////////////////////
// INFO DE TIENDAS (supplies)

// *****************************************************************************************************
WORD	ignorar (ID que toca para una nueva supply en el editor)
DWORD	nº de supplies
------- n supplies

	WORD	ID del supply
	string	nombre del supply (se utilizará en varias movidas para el cliente)
	BYTE	ID de un gfx para el cliente
	BYTE	stat o skill que requiere el supply (si es <100 es un statID - 1, si >=100 es un skillID - 100)
		(por ejemplo el kit de costura pedirá skill COSTURA, o una box-supply pedirá CERRAJERIA)
	BYTE	puntos de stat/skill que requiere el supply
	BYTE	tipo de supply
	WORD	ID del texto de vendor
	BYTE	hora de disponibilidad del supply (de hora x)
	BYTE	hora de disponibilidad del supply (a hora x)
	
	WORD	ignorar (ID que toca para una nueva combinación en el editor)
	WORD	nº de combinaciones o quests
	------- n combinaciones o quests
		WORD	ID del quest (se podría ignorar)
		bool	hidden? (el quest no presenta texto ni se puede seleccionar pero sí tiene un resultado, etc)
		BYTE	ID del NPC cuyo aspecto hay que adquirir al completar el quest
		BYTE	Nivel base del quest
		bool	Bind? Al completar el quest nos bindeamos a esa room, al xyz donde este el jugador en ese momento
		BYTE	% del nivel base a ganar como experiencia al completar el quest
		BYTE	skilID - 1 que hay que activar (de 0 a 1) al completar el quest
		string	nombre del quest (que presentará el cliente en la lista del interface)
		WORD	tipo de objeto que entrega el personaje al presentar el quest (0==no da objeto)
		WORD	delitos que tienen acceso a este quest (cada bit activo indica que ese delito tiene acceso)
		WORD	ID del texto del quest
		WORD	ID del texto a presentar a completar el quest
		
		WORD	nº de objetos que combinan / hay que dar para el quest
		------- n objetos
			WORD	tipo de objeto
			DWORD	cantidad de ese objeto (podría ser una cantidad de dinero, por eso un DWORD)
			
		WORD	nº de objetos resultado de la combinación o del quest
		------- n objetos resultado
			WORD	tipo de objeto
// *****************************************************************************************************

//////////////////////////////////////////////////////////////////
// INFO DE NPCs

// *****************************************************************************************************
WORD	nº de modelos diferentes de NPCs
------- n modelos
	string	nombre del modelo R3D (sin el "_x[012]" del LOD y sin el ".R3D")

WORD 	nº de nombres diferentes de NPCs
------- n nombres
	string  gamename de un NPC

DWORD	nº de definiciones de mobs/vendors
------- n bots
	WORD	id del NPC
*die-->	string	nombre del modelo
*die-->	string	nombre del bot
*nuevo	WORD	index de la lista de nombres de modelos
*nuevo	WORD	index de la lista de nombres de bots

	BYTE	ID del delito del bot
	int	dinero que porta el bot
	int	salud extra
	int	fuerza extra
	int	destreza extra
	int	nivel
	int	pelea extra
	int	ID de los textos del bot en combate
	BYTE	comportamiento del bot (agresividad)
	
	WORD	nº de objetos de loot
	------- n objetos de loot
		WORD	tipo de objeto
		BYTE	unidades (para calcular % de probabilidad de loot)
		BOOL	no-loot (este objeto lo tiene el bot pero no puede tocar nunca como loot)
		
	WORD	tipo de objeto que SIEMPRE debe dar el bot como loot (0==no suelta nada "siempre")
	WORD	el bot no ataca (cuando sea agresivo) si el jugador lleva el objeto del tipo indicado
	WORD	sólo le hace daño el objeto arma especificado (es un ID de objeto)
	BYTE	tipo de arma que le hace daño (slash, blunt, etc).
	WORD	ID del supply asociado al bot
	
// *****************************************************************************************************

//////////////////////////////////////////////////////////////////
// INFO DE RUTAS

DWORD	nº de rutas en toda la puta prisión
------- n rutas
	BYTE	al llegar al ultimo punto de ruta (0==ciclo, 1==ping-pong)
	DWORD	índice de la key que se debe usar como link para el ciclo o el ping-pong
	
	WORD	nº de NPCs con spawn en esta ruta
	------- n NPCs
		WORD	ID del NPC
	BYTE	spawn inicial (0==siempre, 1=no spawnea, condicional)
	BYTE	orden de spawn (0==secuencial, 1==aleatorio)
	WORD	pausa (en MINUTOS)
	DWORD	ID de la variable a chequear para que se produzca un respawn
		(si el ID no es 0)
		int	valor que debe tener la variable para que se produzca el respawn
	DWORD   ID de la variable que hay que cambiar cuando el NPC MUERA
		(si el ID no es 0)
		int	valor que debe tomar la variable cuando el NPC muera
	DWORD   ID de la variable que hay que cambiar cuando el NPC SEA ATACADO
		(si el ID no es 0)
		int	valor que debe tomar la variable cuando el NPC sea atacado
			
	BYTE	nº de rooms que atraviesa la ruta (si es 1 no hay 'puerta de salida', 0 es inválido)
	------- n rooms
		DWORD	id de la room
		BYTE	ID de la puerta de entrada
		BYTE    ID de la puerta de salida (será 0 siempre en la última zona)
		WORD	nº de keys en esta room (como mínimo siempre 2)
		------- n keys
			float	x
			float	y
			float	z
			DWORD	tiempo de pausa (en milisegundos) (0xffffffff == pausa infinita de la muerte)
			float	ángulo de orientación (sólo tenerlo en cuenta si la key tiene pausa)
			
			(si no es la primera key)
			DWORD	ETA para llegar a esta key (en milisegundos)
		

//////////////////////////////////////////////////////////////////
// VARIABLES

WORD	(*) nº de variables globales
------- n variables
	DWORD	ID de la variable
	string	nombre que utiliza la variable
	WORD	nº de Rooms donde las boxes comprueban el estado de esta variable
	------- n rooms
		DWORD	ID de la room a la que informar de un cambio en esta variable
	WORD	nº de Rooms donde las boxes modifican el estado de esta variable
	------- n rooms
		DWORD	ID de la room donde se puede modificar esta variable

DWORD	ID de la variable "dinero" (que resta dinero al jugador)
DWORD	ID de la variable "getobj" (por la que el jugador obtiene un objeto)


<EOF>

laprision/devdocs/gamedata.txt · Última modificación: 12/07/2020 13:00 por Juanga Covas