Dudas archivos config.cpp

Todo lo relacionado con el modelado de addons e islas en Arma III

Autor del hilo
Bisharrako
Miembro
Miembro
Mensajes: 76
Registrado: 20 Abr 2015 19:32
Clan: Grupo Operacional 9

#15766

28 Abr 2015 19:32

Saludos.

He realizado mis primeras pruebas de exportación hasta llegar al programa "Object Builder"... hasta aquí todo bien. De momento he creado un objeto simple tipo muro de cemento pero ahora me llegan varias dudas que paso a deciros.

El caso es que mi modelo se ve correctamente una vez convertido desde 3D Max (*p3d) al "Obj...B..." hago una visual sin problemas del objeto.

Pero ahora he podido leer por ahí que es necesario antes de empaquetar (*ppo) asignarle un archivo denominado "config.cpp". Bien, he visto muchos ejemplos de este archivo pero no consigo entender que "Class..." tengo que agregarle para que este nuevo objeto sea tratado como lo que es, un objeto no movible... Me explico con un ejemplo mejor:

Si a un animal por ejemplo el típico conejo del juego se le agrega en su archivo "config.cpp" la "class CfgVehicles"... que clase deberia de asignarle yo a mi nuevo objeto para que sea visualizado en el juego sin problemas?

Espero me haya explicado correctamente :dance2:

Gracias gente!


Imagen

Reality Team Mod - Mod Iron Front

Avatar de Usuario

Mickyleitor
Desarrollador FFAA MOD
Desarrollador FFAA MOD
Mensajes: 321
Registrado: 01 Ene 1970 01:00

#15767

28 Abr 2015 20:01

Hola,
Te comento, si sabes un poco de programación te sonarán algunos conceptos como las clases. Pues bien, cuando el juego se ejecuta, en tiempo de ejecución (o mejor dicho, cuando se ejecuta el Arma 3), este empieza a checkear todos los addons y todas las clases existentes en todos los archivos .cpp (y .hpp ya que recordemos .hpp son cabeceras de los .cpp) y por lo tanto estas clases al ser de tipo struct se van "almacenando" y "creando" una base de datos en el cual una de esas clases es tu objeto. Resumiendo, si en esta base de datos no se encuentra nada relacionado con tu objeto .p3d, pues evidentemente es como si ni siquiera se hubiera compilado, esto es para que veas un poco como funcionan los archivos de configuración de A3.

Ahora vamos al tajo a lo que preguntas, en realidad te iba a poner directamente el config.cpp pero quiero que "te rompas" la cabeza antes tu mismo y así aprendes sobre la marcha je-je-je (Si finalmente no lográs dar con la tecla vuelves a preguntar y te lo pongo ;))
Lo único en lo que te puedes fijar es en alguna "pared" ya existente en el Arma 3 (y la hay) y copiarla en un config.cpp. ¿Como se ve eso? Muy fácil, existen unas herramientas (que a partir de ahora será uno de tus mejores aliados) llamadas Mikero's Tools. Este es un pack de herramientas en el cual una de ellas (Arma3P) es que te descomprime absolutamente todo el contenido de Arma 3 en la dirección P:/ (P es una unidad de disco virtual creada por las herramientas de BI).
En esa larga lista hay una herramienta llamada "MikeroUpdate.X.XX.X.XX.Installer.exe" que basicamente es un "updater" y te instalará todas las demás.

Cuando tengas la herramienta "Arma3P", ejecutala y verás que empezará a trabajar (si no faltan herramientas y P: está puesto correctamente).
Bien, si has llegado hasta aquí sepas que has dado un buen paso. En la dirección "P:\a3\structures_f" tienes el config de la clase "Wall_F"... y ya solo te voy a dar una pista más para tu config, debería de tener esta estructura:

Código: Seleccionar todo

#define _ARMA_

enum {
	destructengine = 2,
	destructdefault = 6,
	destructwreck = 7,
	destructtree = 3,
	destructtent = 4,
	stabilizedinaxisx = 1,
	stabilizedinaxesxyz = 4,
	stabilizedinaxisy = 2,
	stabilizedinaxesboth = 3,
	destructno = 0,
	stabilizedinaxesnone = 0,
	destructman = 5,
	destructbuilding = 1
};
class CfgPatches
{
	class EL_NOMBRE_DE_TU_ADDON
	{
		units[] = {"CLASE_DE_TU_OBJETO"};
		weapons[] = {};
		requiredVersion = 0.1;
		requiredAddons[] = {"A3_Data_F"};
	};
};
class CfgVehicles
{
/// class CLASE_BASE_EJEMPLO;
/// class CLASE_DE_TU_OBJETO : CLASE_BASE_EJEMPLO
/// {
/// blablablabla
/// };
};




Autor del hilo
Bisharrako
Miembro
Miembro
Mensajes: 76
Registrado: 20 Abr 2015 19:32
Clan: Grupo Operacional 9

#15769

29 Abr 2015 00:34

Saludos Mickyleitor

Muchas gracias por la respuesta!... Que haya gente dispuesta a ayudar a otros que intentamos aportar nuestro granito de arena a todo este mundo es todo un placer... sin dudas se hace todo quizás algo mas sencillo.

Me ha parecido muy bien que hayas decidido que sea yo el localice y sepa como entender los archivos internos del juego... sin duda es la forma de saber uno mismo si el que solicita ayuda es por un verdadero interés :happy2: o de lo contrario "morirá en el intento". Yo hace tiempo modelo para otros juegos y por lo tanto es un mundo que me gusta bastante...soy cabezón y si existen las herramientas necesarias tard o temprano terminare por conseguirlo jajajaja... o eso espero.

Bueno... vamos al lio.
He realizado todas las cosas como me has indicado... he descargado e instalado correctamente esa herramienta de descompresión y las demás...todo ha funcionado perfectamente e instalado en P:/ (ya lo tenia todo preparado de antes)... Localizado la carpeta estructuras y localizado el "config.cpp" que aloja la clase "Wall_f".... Hasta aquí mas o menos bien... Una vez he terminado de editar el "config.cpp" he cargado un mod nuevo donde tengo guardado este nuevo modelo... El juego ha localizado el mod y lo ha cargado... He abierto el editor Zeus para localizar el objeto creado tras crear una mision de prueba con un unico jugador...Y hasta aquí hemos llegado!... ni rastro del elemento! :wall: jajajaja.

De todas formas voy a seguir probando con mas calma... asi que de momento seguiré averiguando...cuando ya no pueda mas y este apunto del suicidio... me pasare otra vez por aquí !

Muchas gracias de nuevo...un placer!


Imagen

Reality Team Mod - Mod Iron Front


Brigada_Spanish
Veterano
Veterano
Mensajes: 627
Registrado: 01 Ene 1970 01:00
Clan: proyecto-alfa.net

#15773

29 Abr 2015 12:16

Quizás te falte esto:
scopeCurator = 2; // 2 = clase está disponible en Zeus; 0 = clase no está disponible en Zeus.


Comunidad Multijuegos: http://www.proyecto-alfa.net


Autor del hilo
Bisharrako
Miembro
Miembro
Mensajes: 76
Registrado: 20 Abr 2015 19:32
Clan: Grupo Operacional 9

#15774

29 Abr 2015 22:02

Saludos.

Me temo que el problema viene de antes... He creado una misión simple y agregado un objeto vació... a este objeto abriendo el "mission.sqm" le he agregado la classe perteneciente al objeto creado... Al arrancar la misión directamente me hace referencia el juego a que no existe ningún elemento con el nombre asignado a mi objeto.

No he conseguido escribir correctamente el archivo "config..." del objeto en cuestión. :sleepy:


Imagen

Reality Team Mod - Mod Iron Front


Brigada_Spanish
Veterano
Veterano
Mensajes: 627
Registrado: 01 Ene 1970 01:00
Clan: proyecto-alfa.net

#15775

29 Abr 2015 23:26

Pon por aquí cómo lo has puesto en el config.cpp para que te podamos ayudar.
Saludos.-


Comunidad Multijuegos: http://www.proyecto-alfa.net


Autor del hilo
Bisharrako
Miembro
Miembro
Mensajes: 76
Registrado: 20 Abr 2015 19:32
Clan: Grupo Operacional 9

#15776

30 Abr 2015 00:28

OK.

Bueno he creado una primera carpeta llamada "prueba_piedra" y dentro de esta otra mas llamada "data" que alberga la textura del objeto con extensión "paa". En la carpeta inicial el archivo 3d con extensión "p3d" y el archivo "config.cpp" con este código:

Código: Seleccionar todo

#define _ARMA_

enum {
   destructengine = 2,
   destructdefault = 6,
   destructwreck = 7,
   destructtree = 3,
   destructtent = 4,
   stabilizedinaxisx = 1,
   stabilizedinaxesxyz = 4,
   stabilizedinaxisy = 2,
   stabilizedinaxesboth = 3,
   destructno = 0,
   stabilizedinaxesnone = 0,
   destructman = 5,
   destructbuilding = 1
};
class CfgPatches
{
   class prueba_piedra
   {
      units[] = {"A3_Structures_F"};
      weapons[] = {};
      requiredVersion = 0.1;
      requiredAddons[] = {"A3_Data_F"};
   };
};
class CfgVehicles
{
	class House_Small_F;
	class NonStrategic;
	class ThingX;
	class Wall_F;
	class Land_Ancient_Wall_4m_F: Wall_F
	{
		mapSize = 4.59;
		author = "Bisharrako";
		_generalMacro = "Land_prueba_piedra_F";
		scope = 1;
		scopeCurator = 2;
		displayName = "$STR_A3_cfgVehicles_Land_prueba_piedra0";
		model = "\A3\Structures_F\Walls\prueba_piedra_F.p3d";
		cost = 1000;
	};
};
Me d que hay errores por todas partes :surrender:

Gracias por el tiempo gente!
Última edición por Bisharrako el 30 Abr 2015 02:15, editado 1 vez en total.


Imagen

Reality Team Mod - Mod Iron Front

Avatar de Usuario

Mickyleitor
Desarrollador FFAA MOD
Desarrollador FFAA MOD
Mensajes: 321
Registrado: 01 Ene 1970 01:00

#15777

30 Abr 2015 01:28

Vale, vas por muy buen camino, sinceramente me has sorprendido no pensabas que ibas a aprender tan rápido :w00t: :w00t:
Con respecto a las carpetas y demás, muy simple como tu has dicho, una carpeta llamada "prueba_carpeta" en el disco duro virtual P:/. Dentro de este el .p3d con nombre "prueba_piedra_F.p3d" y una carpeta llamda data con las texturas .paa (asegurate de que en el ObjectBuilder, las rutas a las texturas también están correctas (Object builder->Tools->Mass Texture & Material Renaming).

Te corrijo algunos errores en el config y después te pongo el config corregido:

Código: Seleccionar todo

#define _ARMA_

enum {
   destructengine = 2,
   destructdefault = 6,
   destructwreck = 7,
   destructtree = 3,
   destructtent = 4,
   stabilizedinaxisx = 1,
   stabilizedinaxesxyz = 4,
   stabilizedinaxisy = 2,
   stabilizedinaxesboth = 3,
   destructno = 0,
   stabilizedinaxesnone = 0,
   destructman = 5,
   destructbuilding = 1
};
class CfgPatches
{
   class prueba_piedra // Esto esta bien, pues es el nombre del pbo o del addon (que no el nombre de la clase del objeto)
   {
      units[] = {"A3_Structures_F"}; //// Estas definiendo una unidad que ya existen en Arma 3! De hecho es el addon de Estructuras, aqui debería de ir el nombre de la clase de tu objeto
      weapons[] = {};
      requiredVersion = 0.1;
      requiredAddons[] = {"A3_Data_F"};
   };
};
class CfgVehicles
{
   class House_Small_F; /// Aunque no va a traer errores pero esto es inútil ponerlo, ya que no lo vas a utilizar (no hay nada que vayas a heredar de esta clase)
   class NonStrategic; // Lo mismo que el primero[
   class ThingX; // Lo mismo que el primero
   class Wall_F; // Esto está bien
   class Land_Ancient_Wall_4m_F: Wall_F /// MAL, pues este nombre de clase ya está incluido en el juego, asique lo que estas reproduciendo aquí es que esta clase base se modifique (Por ejemplo, en vez de que en el juego salgan murallas en Altis, saldrá tu objeto). Aquí debería de estar el nombre de clase de tu objeto.
   {
      mapSize = 4.59;
      author = "Bisharrako";
      _generalMacro = "Land_prueba_piedra_F";
      scope = 1; // Este es el parámetro que define si sale disponible en el editor, está protegido con lo cual NO saldrá en el editor. Yo lo cambiaría y lo pondría a 2 para hacer los testeos y que los puedas poner directamente desde el editor.
      scopeCurator = 2; /// Este es el parámetro que hará que salga disponible en el Zeus, está bien.
      displayName = "$STR_A3_cfgVehicles_Land_prueba_piedra0"; // De momento, no vamos a utilizar stringables (los stringables son archivos .xml aparte del config para que puedas definir un nombre con multiples idiomas, ¿Como sabe el juego que esto se deriva a un stringtable? Con el designador $). A si que por el momento solamente le pondremos un nombre genérico "Prueba piedra.
      model = "\A3\Structures_F\Walls\prueba_piedra_F.p3d"; // Esta ruta no está bien, pues hace referencia a una carpeta del A3, tendrías que poner una ruta con referencia de partida en P:/ por ejemplo, /prueba_carpeta/prueba_piedra_F.p3d
      cost = 1000;
   };
};
Prueba a ver si con este te va:

Código: Seleccionar todo

#define _ARMA_
enum {
	destructengine = 2,
	destructdefault = 6,
	destructwreck = 7,
	destructtree = 3,
	destructtent = 4,
	stabilizedinaxisx = 1,
	stabilizedinaxesxyz = 4,
	stabilizedinaxisy = 2,
	stabilizedinaxesboth = 3,
	destructno = 0,
	stabilizedinaxesnone = 0,
	destructman = 5,
	destructbuilding = 1
};

class CfgPatches
{
	class prueba_piedra
	{
		units[] = {"Prueba_piedra_F"};
		weapons[] = {};
		requiredVersion = 0.1;
		requiredAddons[] = {"A3_Data_F"};
	};
};
class cfgVehicles
{
	class Wall_F;
	class Prueba_piedra_F: Wall_F
	{
		mapSize = 4.59;
		author = "Bisharrako";
		_generalMacro = "Prueba_piedra_F";
		scope = 2;
		scopeCurator = 2;
		displayName = "Prueba piedra";
		model = "\prueba_carpeta\prueba_piedra_F.p3d";
		cost = 1000;
	};
};
Si todo va bien, en el editor debería de aparecer en Vacío->Estructuras(paredes). Verás que la unica pared es la tuya porque las demás del juego están protegidas con scope=1; Pero como estamos realizando pruebas... pues no pasa nada. También debería de aparecer con el Zeus.




Autor del hilo
Bisharrako
Miembro
Miembro
Mensajes: 76
Registrado: 20 Abr 2015 19:32
Clan: Grupo Operacional 9

#15795

02 May 2015 02:01

Saludos!

Gracias gente por la ayuda... ya esta todo conseguido... el objeto aparece en el juego y sin problemas... únicamente es traspasable. Al igual que para otros juegos me imagino que sera necesario creo lo llamado (volume) o zona de impacto... Verificare entre los archivos para comprender como va esto!

Una vez mas gracias por la ayuda así todo es mas sencillo!


Imagen

Reality Team Mod - Mod Iron Front

Responder Tema anteriorTema siguiente
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje
  • Presentación Nebur y primeras dudas!
    por MarioJuárez » 03 Abr 2018 13:51 » en Soldados
    3 Respuestas
    449 Vistas
    Último mensaje por Vindi
    13 Abr 2018 18:13

Volver a “Addons”

  • Información
  • ¿Quién está conectado?

    Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado