Modding: Crear una nueva unidad 30ky9g11
Bienvenido a la Web de SpetsNaz Clan,
un Clan dedicado al Age Of Empires III y Age of Mythology
para poder ver, descargar e ingresar a informacion mas exclusiva debes Conectarte o Registrarte aqui.
-------------------------------------------------------------------------------------------

Welcome to the Web Spetsnaz Clan
devoted to a Clan Age Of Empires III and Age of Mythology
to view, download and access information you need exclusive
Sign in here.


Atte. Staff SpetsNaz



Modding: Crear una nueva unidad 30ky9g11
Bienvenido a la Web de SpetsNaz Clan,
un Clan dedicado al Age Of Empires III y Age of Mythology
para poder ver, descargar e ingresar a informacion mas exclusiva debes Conectarte o Registrarte aqui.
-------------------------------------------------------------------------------------------

Welcome to the Web Spetsnaz Clan
devoted to a Clan Age Of Empires III and Age of Mythology
to view, download and access information you need exclusive
Sign in here.


Atte. Staff SpetsNaz


¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Conectarse

Modding: Crear una nueva unidad

power_settings_newConéctate para responder
+8
SpNz - XelaZero
RUROKEN
Fenrir
SpNz - McMackiller
krauser3ful
Sgt.Pepper
†LyNx† •-»Napoleón«-•
Hoop Thrower
12 participantes

descriptionModding: Crear una nueva unidad EmptyModding: Crear una nueva unidad

more_horiz
Tras un breve lapso, aquí vengo con otro tutorial, ahora comenzaré con los tutoriales de nivel avanzado por cierto, por ejemplo este ya es bastante más largo que los anteriores:

Items que necesitarás al moddear:
• Un programa editor de texto, como block de notas.
• El maestro de los programas de moddeo, Aoe3ED.
• Algo de conocimiento de Aoe3ED.
• Un programa para editar imágenes .tga, que soporten canales alfa, como Photoshop y GIMP.

1) Primer paso: Planear tu unidad. Ten en cuenta que para agregar cosas que no estén en juego tendrás que aprender a hacer modelos también, cosa que hay que dejar para otro tutorial.
2) Segundo Paso: Abrir Aoe3ED y crear el archivo .XML. Digamos que quieres crear un fusilero. Decidiste que tendrá el cuerpo del guerrillero y el sombrero del mosquetero imperial. Entonces, ve a C:\Program files\Microsoft Games\Age of Empires III\art y crea una carpeta llamada "Mis Mods". Crea un archivo .txt llamado "fusilero.txt", renómbralo a "fusilero.xml" y haz que sea abierto por default por el block de notas.
Hay cinco archivos dentro de la carpeta "art". Ellos son art1.bar, art2.bar, art3.bar art4.bar y art 5.bar. Art4.bar sólo aparece con The Warchiefs y art 5 sólo con The Asian Dynasties. El primer archivo incluye la mayoría de los archivos .xml. Un archivo .xml contiene la información sobre los modelos. Art2.bar es donde encontrarás la mayoría de las texturas. Art3 contiene la información sobre la ambientación (arboles, arbustos, etc) las otras dos contienen toda la información de su respectiva expansión.
Abre Aoe3ED, haz click en "view", después "preview". Esto hará las cosas más fáciles. Abre art1.bar. Escribe en la barra de búsqueda "guerrillero", y muchos ítems aparecerán, pero sólo uno es importante: El archivo .XML del guerrillero . Esta es: art\units\infantry_ranged\skirmisher\skirmisher.xml.xmb. "XMB" es la forma comprimida de .xml, y no es importante ahora. Haz click en ella, luego selecciona el texto que aparecerá en la ventana de prevista, cópialo y pégalo en el archivo .txt que creaste, ahora siendo del fusilero.xml. Guarda.

descriptionModding: Crear una nueva unidad EmptyRe: Modding: Crear una nueva unidad

more_horiz
3) Tercer paso: Entendiendo el código .XML. Ahora viene una gran parte del tutorial.. Prepárate. Muestra el .xml del mosquetero, levemente editada por mi para mostrat tanta información como posible. Mis comentarios personales se encuentran en español.





*animfile/

Así es como debería empezar, deberías cerrar todos con */animfile/ o la unidad no funcionará

*definebone/bone_hat*/definebone/
*definebone/Bip01_AttachRt*/definebone/
*definebone/Bip01_AttachLt*/definebone/
*definebone/bone_sword*/definebone/
*definebone/bone_gun*/definebone/
*definebone/Bip01 Prop1*/definebone/
*definebone/Bip01 Prop2*/definebone/

Estos son todos los puntos de anexión que usará la unidad, tienes que ponerlas aquí o las cosas no se anexarán bien, como un sombrero en la oreja en vez de encima de la cabeza. Bip01 Prop1 y Bip01 Prop2 son puntos de anexión que cambian de acuerdo a la animación.

*attachment/
gun
*include/units\infantry_ranged\musketeer\musketeer_guns.xml*/include/
*/attachment/

Aquí debes poner todas las cosas que quieras anexar a la unidad (armas, sombreros), en este caso, el arma)

*attachment/
hats
*include/units\infantry_ranged\musketeer\musketeer_hats.xml*/include/
*/attachment/

*attachment/
sword
*include/units\attachments\sword.xml*/include/
*/attachment/

*attachment/
torch
*include/effects\projectiles\torch.xml*/include/
*/attachment/

*component/
ModelComp

Empezemos a hablar del esqueleto, llamado ModelComp aquí. Todas las animaciones deben ser puestas en el modelo ModelComp.

*logic type="Tech"/
*none/

Estos indica que el modelo cambiará a medida que desarrolles tecnologías, por ejemplo, si desarrollas mosquetero veterano, el modelo cambiará, ve abajo:

*logic type="LowPoly"/
*normal/

Un modelo cambiará si tienes a tus modelos en la opción de “LowPoly models” en juego.

*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\musketeer_2age*/file/
*/assetreference/
*attach a="hats" frombone="bone_hat" tobone="HEAD" syncanims="0"//
*attach a="gun" frombone="bone_gun" tobone="Bip01 Prop1" syncanims="1"//

Estas son anexiones que aparecerán en todas las animaciones. Significa que un sombrero será tomado del bone_hat (invisible, pero necesita punto de anexión) y anexado a la cabeza (visible).
Bip01 Prop1 es donde normalmente estan anexados el sombrero y el arma, Bip01 Prop2 es donde está el arma secundaria. Durante animación de melee, se intercambian, se mueven de acuerdo a la animación.

*/normal/
*lowpoly/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\lp_musketeer_2age*/file/
*/assetreference/
*/lowpoly/
*/logic/
*/none/
*veteranmusketeers/
*logic type="LowPoly"/
*normal/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\musketeer_3age*/file/
*/assetreference/
*attach a="hats" frombone="bone_hat" tobone="HEAD" syncanims="0"//
*attach a="gun" frombone="bone_gun" tobone="Bip01 Prop1" syncanims="1"//
*/normal/
*lowpoly/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\lp_musketeer_3age*/file/
*/assetreference/
*/lowpoly/
*/logic/
*/veteranmusketeers/
*guardmusketeers/
*logic type="LowPoly"/
*normal/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\musketeer_4age*/file/
*/assetreference/
*attach a="hats" frombone="bone_hat" tobone="HEAD" syncanims="0"//
*attach a="gun" frombone="bone_gun" tobone="Bip01 Prop1" syncanims="1"//
*/normal/
*lowpoly/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\lp_musketeer_4age*/file/
*/assetreference/
*/lowpoly/
*/logic/
*/guardmusketeers/
*imperialmusketeers/
*logic type="LowPoly"/
*normal/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\musketeer_4age*/file/
*replacetexture/
*from/units\infantry_ranged\musketeer\musketeer_4age*/from/
*to/units\infantry_ranged\musketeer\musketeer_imperial*/to/
*/replacetexture/
*/assetreference/

Esto significa que reemplazarás una nueva textura desde desde (from) a otra (to). Importante, dbe estar entre pestañas *assetreference/ o no funcionará!

*attach a="hats" frombone="bone_hat" tobone="HEAD" syncanims="0"//
*attach a="gun" frombone="bone_gun" tobone="Bip01 Prop1" syncanims="1"//
*/normal/
*lowpoly/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\lp_musketeer_4age*/file/
*replacetexture/
*from/units\infantry_ranged\musketeer\musketeer_4age*/from/
*to/units\infantry_ranged\musketeer\musketeer_imperial*/to/
*/replacetexture/
*/assetreference/
*/lowpoly/
*/logic/
*/imperialmusketeers/
*imperialredcoat/
*logic type="LowPoly"/
*normal/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\musketeer_4age*/file/
*replacetexture/
*from/units\infantry_ranged\musketeer\musketeer_4age*/from/
*to/units\infantry_ranged\musketeer\musketeer_imperial*/to/
*/replacetexture/
*/assetreference/
*attach a="hats" frombone="bone_hat" tobone="HEAD" syncanims="0"//
*attach a="gun" frombone="bone_gun" tobone="Bip01 Prop1" syncanims="1"//
*/normal/
*lowpoly/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\lp_musketeer_4age*/file/
*replacetexture/
*from/units\infantry_ranged\musketeer\musketeer_4age*/from/
*to/units\infantry_ranged\musketeer\musketeer_imperial*/to/
*/replacetexture/
*/assetreference/
*/lowpoly/
*/logic/
*/imperialredcoat/
*imperialguerreiros/
*logic type="LowPoly"/
*normal/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\musketeer_4age*/file/
*replacetexture/
*from/units\infantry_ranged\musketeer\musketeer_4age*/from/
*to/units\infantry_ranged\musketeer\musketeer_imperial*/to/
*/replacetexture/
*/assetreference/
*attach a="hats" frombone="bone_hat" tobone="HEAD" syncanims="0"//
*attach a="gun" frombone="bone_gun" tobone="Bip01 Prop1" syncanims="1"//
*/normal/
*lowpoly/
*assetreference type="GrannyModel"/
*file/units\infantry_ranged\musketeer\lp_musketeer_4age*/file/
*replacetexture/
*from/units\infantry_ranged\musketeer\musketeer_4age*/from/
*to/units\infantry_ranged\musketeer\musketeer_imperial*/to/
*/replacetexture/
*/assetreference/
*/lowpoly/
*/logic/
*/imperialguerreiros/
*/logic/
*decal/
*effecttype/default*/effecttype/
*texture isfakeshadow="1"/shadows_selections\shadow_circle_32x32*/texture/
*selectedtexture/shadows_selections\selection_circle_32x32*/selectedtexture/
*width/1.0*/width/
*height/1.0*/height/
*/decal/
*/component/
*anim/
Death_by_melee
*assetreference type="GrannyAnim"/
*file/animation_library\range\death_standing_rifleman_A*/file/
*tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact"/0.51*/tag/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\death_standing_rifleman_B*/file/
*tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact"/0.18*/tag/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\death_standing_rifleman_C*/file/
*tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact"/0.73*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Death_by_range
*assetreference type="GrannyAnim"/
*file/animation_library\shared\death_by_rangeA*/file/
*tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact"/0.50*/tag/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\death_by_rangeB*/file/
*tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact"/0.55*/tag/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\death_by_rangeC*/file/
*tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact"/0.45*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Death_by_havoc
*assetreference type="GrannyAnim"/
*file/animation_library\range\havoc_death*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\havoc_deathB*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\havoc_deathC*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\havoc_deathD*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Death_havoc_flail
*assetreference type="GrannyAnim"/
*file/animation_library\range\havoc_flail*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Death_havoc_spin
*assetreference type="GrannyAnim"/
*file/animation_library\range\havoc_spin*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Cheer
*assetreference type="GrannyAnim"/
*file/animation_library\shared\cheer_A*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\cheer_B*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\cheer_C*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\cheer_D*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\cheer_E*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Recoil
*assetreference type="GrannyAnim"/
*file/animation_library\shared\recoil_A*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\recoil_C*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\recoil_E*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\recoil_G*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
OpenDoor
*assetreference type="GrannyAnim"/
*file/animation_library\shared\doorOpen*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
CloseDoor
*assetreference type="GrannyAnim"/
*file/animation_library\shared\doorClose*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Raze_Idle
*assetreference type="GrannyAnim"/
*file/animation_library\shared\torch_throw_idle*/file/
*/assetreference/
*component/ModelComp*/component/
*attach a="torch" frombone="ATTACHPOINT" tobone="L HAND" syncanims="0"//
*/anim/
*anim/
Raze_Attack
*assetreference type="GrannyAnim"/
*file/animation_library\shared\torch_throwA*/file/
*tag type="Attack"/0.61*/tag/
*tag type="SpecificSoundSet" checkvisible="1" set="TorchSwing"/0.52*/tag/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\shared\torch_throwB*/file/
*tag type="Attack"/0.56*/tag/
*tag type="SpecificSoundSet" checkvisible="1" set="TorchSwing"/0.44*/tag/
*/assetreference/
*component/ModelComp*/component/
*attach a="torch" frombone="ATTACHPOINT" tobone="L HAND" syncanims="0"//
*/anim/
*anim/
Cover_ranged_idle
*assetreference type="GrannyAnim"/
*file/animation_library\range\cover\cover_idle*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Cover_bored
*assetreference type="GrannyAnim"/
*file/animation_library\range\cover\cover_bored*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Cover_Walk
*assetreference type="GrannyAnim"/
*file/animation_library\range\cover\cover_walk*/file/
*tag type="FootstepLeft" footprinttype="HumanLeft"/0.28*/tag/
*tag type="FootstepRight" footprinttype="HumanRight"/0.80*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Cover_Jog
*assetreference type="GrannyAnim"/
*file/animation_library\range\cover\cover_jog*/file/
*tag type="FootstepLeft" footprinttype="HumanLeft"/0.29*/tag/
*tag type="FootstepRight" footprinttype="HumanRight"/0.76*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Cover_Run
*assetreference type="GrannyAnim"/
*file/animation_library\range\cover\cover_run*/file/
*tag type="FootstepLeft" footprinttype="HumanLeft"/0.68*/tag/
*tag type="FootstepRight" footprinttype="HumanRight"/0.12*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Volley_standing_idle
*assetreference type="GrannyAnim"/
*file/animation_library\range\volley\volley_standing_idle*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Volley_standing_attack
*assetreference type="GrannyAnim"/
*file/animation_library\range\volley\volley_standing_fire*/file/
*tag type="Attack"/0.48*/tag/
*tag type="SpecificSoundSet" checkvisible="1" set="MusketShot"/0.48*/tag/
*tag type="Particles" particlename="musketshot"/0.48*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Volley_standing_reload
*assetreference type="GrannyAnim"/
*file/animation_library\range\volley\volley_standing_reload*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Volley_standing_bored
*assetreference type="GrannyAnim"/
*file/animation_library\range\volley\volley_standing_boredA*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Volley_walk
*assetreference type="GrannyAnim"/
*file/animation_library\range\march_rifleman*/file/
*tag type="FootstepLeft" footprinttype="HumanLeft"/0.62*/tag/
*tag type="FootstepRight" footprinttype="HumanRight"/0.08*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Volley_jog
*assetreference type="GrannyAnim"/
*file/animation_library\range\march_rifleman_run*/file/
*tag type="FootstepLeft" footprinttype="HumanLeft"/0.58*/tag/
*tag type="FootstepRight" footprinttype="HumanRight"/0.11*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Volley_run
*assetreference type="GrannyAnim"/
*file/animation_library\range\march_rifleman_run*/file/
*tag type="FootstepLeft" footprinttype="HumanLeft"/0.58*/tag/
*tag type="FootstepRight" footprinttype="HumanRight"/0.11*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Defend_idle
*assetreference type="GrannyAnim"/
*file/animation_library\range\defend\defend_idle*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Defend_bored
*assetreference type="GrannyAnim"/
*file/animation_library\range\defend\defend_boredA*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Charge_idle
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\charge_idleA*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\charge_idleB*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Charge_bored
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\charge_bored*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Charge_attack
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\cacadore_charge_attackA*/file/
*tag type="Attack"/0.53*/tag/
*tag type="SpecificSoundSet" checkvisible="1" set="Swoosh"/0.42*/tag/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\cacadore_charge_attackB*/file/
*tag type="Attack"/0.52*/tag/
*tag type="SpecificSoundSet" checkvisible="1" set="Swoosh"/0.38*/tag/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\charge_attackA*/file/
*tag type="Attack"/0.53*/tag/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\charge_attackB*/file/
*tag type="Attack"/0.69*/tag/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\charge_attackC*/file/
*tag type="Attack"/0.50*/tag/
*tag type="SpecificSoundSet" checkvisible="1" set="Swoosh"/0.42*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Charge_Walk
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\charge_walk*/file/
*tag type="FootstepLeft" footprinttype="HumanLeft"/0.65*/tag/
*tag type="FootstepRight" footprinttype="HumanRight"/0.06*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Charge_Jog
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\charge_jog*/file/
*tag type="FootstepLeft" footprinttype="HumanLeft"/0.65*/tag/
*tag type="FootstepRight" footprinttype="HumanRight"/0.11*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
Charge_Run
*assetreference type="GrannyAnim"/
*file/animation_library\range\charge\charge_runA*/file/
*tag type="FootstepLeft" footprinttype="HumanLeft"/0.66*/tag/
*tag type="FootstepRight" footprinttype="HumanRight"/0.12*/tag/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
IGC_Pointing
*assetreference type="GrannyAnim"/
*file/animation_library\range\pointing_rifleman_A*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
NuggetPirate1_Idle
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate_diga*/file/
*weight/90*/weight/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate_dig_boreda*/file/
*weight/10*/weight/
*/assetreference/
*component/ModelComp*/component/
*attach a="shovel" frombone="Bip01 Prop2" tobone="bip01 Prop2" syncanims="0"//
*/anim/
*anim/
NuggetPirate2_Idle
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate_idleA*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate_idleB*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate_idleC*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate_idleD*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate_idleE*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate_idleF*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
NuggetPirate3_Idle
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate3_idleA*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate3_idleb*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate3_idlec*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate3_idled*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate3_idleE*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
NuggetPirate1_Exit
*assetreference type="GrannyAnim"/
*file/nuggets\pirates\pirate_draw_gun*/file/
*/assetreference/
*component/ModelComp*/component/
*attach a="shovel" frombone="Bip01 Prop2" tobone="bip01 Prop2" syncanims="0"//
*/anim/
*anim/
NuggetPirate2_Exit
*assetreference type="GrannyAnim"/
*file/nuggets\outlaw_kidnap\kidnap_outlawA_exit*/file/
*/assetreference/
*component/ModelComp*/component/
*/anim/
*anim/
kidnap_outlawA_idle
*assetreference type="GrannyAnim"/
*file/nuggets\outlaw_kidnap\kidnap_outlawA_idleA*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\outlaw_kidnap\kidnap_outlawA_idleB*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\outlaw_kidnap\kidnap_outlawA_idleC*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\outlaw_kidnap\kidnap_outlawA_idleD*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\outlaw_kidnap\kidnap_outlawA_idleE*/file/
*/assetreference/
*assetreference type="GrannyAnim"/
*file/nuggets\outlaw_kidnap\kidnap_outlawA_idleF*/file/
*/assetreference/
*component/ModelComp*/component/
*attach a="gun" frombone="bone_gun" tobone="Bip01 Prop1" syncanims="1"//
*/anim/
*anim/
kidnap_outlawA_exit
*assetreference type="GrannyAnim"/
*file/nuggets\outlaw_kidnap\kidnap_outlawA_exit*/file/
*/assetreference/
*component/ModelComp*/component/
*attach a="gun" frombone="bone_gun" tobone="Bip01 Prop1" syncanims="1"//
*/anim/
*/animfile/

(para que pudiera verse en el foro, modifiqué todos los < con * y todos los > con /)

descriptionModding: Crear una nueva unidad EmptyRe: Modding: Crear una nueva unidad

more_horiz
4) Cuarto Pazo: Crear una textura. Ahora que entuendes, más o menos, el .xml, intentemos una textura. El formato que lee Aoe3 es .ddt, que es básicamente una imagen .tga con un canal alfa. Busca por el archivo .ddt del guerrillero escribiendo "skirmisher" en la barra de búsqueda de Aoe3ED. Las texturas se encuentran dentro de art2.bar, recuerdas? Selecciona la textura y ha click en extraer. Ahora, abre la carpeta donde instalaste Aoe3ED y abre un programa llamado FileConverter. Selecciona la textura que extraiste en alguna parte, and conviertela en una imagen .tga. Ábrela en Photoshop.
Notarás que la textura es una pequeña imagen de 64x64, la mayor parte del tiempo. Puedes hacerla más grande, multiplicando su tamaño por 2, 4 u 8. Si multiplicas por 3 ó 5, la textura podría dejar de funcionar. La única cosa importante es el canal alfa. En la ventana "layers", haz click en "alpha channels" y verás una imagen blanca con algunas partes negras. Esas partes negras son el color de jugador, y cambiarán el color de tu unidad de acuerdo al color de tu nación. Simple, no lo parece? Cuando termines de trabajar en tu textura, debes guardar y poner atención a una regla: el nombre DEBE estar seguido de 4 números, como esto: Mosquetero.(0,0,1,1).tga No pongas números al azar, ve los que aparecieron cuando convertiste de .ddt a .tga. Conviértelos denuevo a .ddt y pon la textura en tu carpeta de mod.

5) Quinto Paso: Mira la textura en .xml. Recuerda que nuestra unidad no era nada más que un guerrillero? Ahora pon las pestañas "replacetexture" (como se muestra en el ítem 3) y reemplaza sus texturas por las tuyas. Recuerda que todas las texturas deben estar en algún lugar dentro de la carpeta arte. Escribe correctamente la dirección para tu textura. Ahora, agregemos el sombrero del mosquetero. Ya que no estamos agragando una anexión de unidad, pero no un modelo que cambiará a través del tiempo, copia la información vista en el ítem 3 ("hats" attachment) y cambia el modelo de granny al del mosquetero (tendrás que encontrar su modelo en Aoe3ED, musketeer hats). Casi hecho.

6) Sexto Paso: Entendiendo el Proto.xml. El archivo proto .xmles donde la información de la unidad esta guardado, sus puntos de resistencia, ataque, velocidad, etc. Está dentro de data.bar, encontrada dentro de la carpeta data. Mira si no ha sido extraida ya, o extráela tu mismo. Mira la información del guerrillero, cópiala, y pégala al final del archivo proto. Ahora, la última parte, entendamos los códigos de la proto.


*Unit id ='252' name ='Skirmisher'/ Todas las unidades deben tener un nomre y nombre ID único
*DBID/42*/DBID/ No sé. Al parecer no afecta en nada.
*DisplayNameID/22956*/DisplayNameID/ debes crear un nuevo nombre para esta unidad en stringtable.xml
*EditorNameID/25032*/EditorNameID/ Nombre que sólo aparecerá en el editor.
*PopulationCount/1*/PopulationCount/ Cuánta población ocupa.
*ObstructionRadiusX/0.4900*/ObstructionRadiusX/
*ObstructionRadiusZ/0.4900*/ObstructionRadiusZ/ Grandes unidades, como los barcos, poseen grandes números.
*FormationCategory/Ranged*/FormationCategory/ Donde la unidad estará en combate
*MaxVelocity/4.0000*/MaxVelocity/velocidad de movimiento
*MaxRunVelocity/6.0000*/MaxRunVelocity/ Velocidad al tratar de alcanzar otras unidades.
*MovementType/land*/MovementType/Aire, tierra o agua? *TurnRate/18.0000*/TurnRate/Vagones guiran lento. Unidades rápido.
*AnimFile/units\infantry_ranged\skirmisher\skirmisher.xml*/AnimFile/Escribe aquí el camino para tu unidad nueva!
*ImpactType/Flesh*/ImpactType/Al ser golpeado, verás madera, metal o sangre?
*PhysicsInfo/dude*/PhysicsInfo/es un barco, o una persona?
*Icon/units\infantry_ranged\skirmisher\skirmisher_icon*/Icon/
*PortraitIcon/units\infantry_ranged\skirmisher\skirmisher_portrait*/PortraitIcon/ Su ícono y retratos.
*RolloverTextID/22955*/RolloverTextID/Descripción grande (unidad buena contra infanería...)
*ShortRolloverTextID/25712*/ShortRolloverTextID/Descripción corta. (infantería ligera)
*InitialHitpoints/120.0000*/InitialHitpoints/
*MaxHitpoints/120.0000*/MaxHitpoints/
*LOS/24.0000*/LOS/Linea de visión.
*ProjectileProtoUnit/InvisibleProjectile*/ProjectileProtoUnit/No se verán proyectiles, ya que van muy rápido.
*AutoAttackRange/16.0000*/AutoAttackRange/La unidad no atacará automáticamente si está más lejos de 16.
*UnitAIType/RangedCombative*/UnitAIType/Esta es la manera de comportarse con la IA.
*TrainPoints/33.0000*/TrainPoints/Toma 33 segundos para entrenarse.
*Bounty/12.0000*/Bounty/Ganas 12 puntos de experiencia cuando esta muere.
*BuildBounty/12.0000*/BuildBounty/Ganas 12 puntos de experiencia por entrenar esta unidad.
*Cost resourcetype ='Food'/50.0000*/Cost/
*Cost resourcetype ='Gold'/65.0000*/Cost/
*AllowedAge/2*/AllowedAge/
*Armor type ='Ranged' value ='0.3000'/*/Armor/Sólo toma 70% del daño a distancia.
*UnitType/LogicalTypeHealed*/UnitType/Puede ser sanado.
*UnitType/LogicalTypeValidSharpshoot*/UnitType/Puede ser muerto de un solo golpe.
*UnitType/LogicalTypeNeededForVictory*/UnitType/
*UnitType/LogicalTypeHandUnitsAutoAttack*/UnitType/
*UnitType/LogicalTypeLandMilitary*/UnitType/
*UnitType/LogicalTypeScout*/UnitType/La IA puede usarla como explorador si no puede usar el explorador.
*UnitType/LogicalTypeValidSPCUnitsDeadCondition*/UnitType/
*UnitType/LogicalTypeGarrisonInShips*/UnitType/
*UnitType/LogicalTypeRangedUnitsAutoAttack*/UnitType/
*UnitType/LogicalTypeVillagersAttack*/UnitType/
*UnitType/LogicalTypeHandUnitsAttack*/UnitType/
*UnitType/LogicalTypeRangedUnitsAttack*/UnitType/
*UnitType/LogicalTypeMinimapFilterMilitary*/UnitType/
*UnitType/ConvertsHerds*/UnitType/
*UnitType/AbstractRangedInfantry*/UnitType/
*UnitType/CountsTowardMilitaryScore*/UnitType/
*UnitType/AbstractCavalryInfantry*/UnitType/
*UnitType/HasBountyValue*/UnitType/
*UnitType/Ranged*/UnitType/
*UnitType/AbstractGunpowderTrooper*/UnitType/
*UnitType/Unit*/UnitType/
*UnitType/Military*/UnitType/
*UnitType/UnitClass*/UnitType/
*UnitType/AbstractInfantry*/UnitType/
*Flag/CollidesWithProjectiles*/Flag/
*Flag/ApplyHandicapTraining*/Flag/
*Flag/CorpseDecays*/Flag/
*Flag/ShowGarrisonButton*/Flag/
*Flag/DontRotateObstruction*/Flag/
*Flag/ObscuredByUnits*/Flag/
*Flag/Tracked*/Flag/
*Command page ='10' column ='2'/Delete*/Command/
*Command page ='10' column ='1'/Stop*/Command/
*Command page ='10' column ='0'/Garrison*/Command/
*Tactics/rifleman.tactics*/Tactics/Su comportamiento en general, no se explicará acá ya que es muy complicado.
*ProtoAction/
*Name/BuildingAttack*/Name/
*Damage/12.000000*/Damage/
*DamageType/Siege*/DamageType/Tiene bono contra barcos y edificios
*ROF/3.000000*/ROF/Atacará cada 3 segundos.
*/ProtoAction/
*ProtoAction/
*Name/DefendHandAttack*/Name/
*Damage/6.000000*/Damage/
*DamageType/Hand*/DamageType/
*ROF/1.500000*/ROF/
*DamageBonus type ='AbstractHeavyInfantry'/2.000000*/DamageBonus/Tiene 2X de bono ante infantería pesada, bonos fraccionarios significa que tiene un decremento de ataque.
*DamageBonus type ='AbstractLightCavalry'/1.500000*/DamageBonus/
*DamageBonus type ='xpEagleKnight'/1.500000*/DamageBonus/
*/ProtoAction/
*/Unit/
7) Último Paso: Probar tu unidad. Tras crear su .xml, y haber instalado la unidad en proto.xml, Pruébala! Veamos los problemas usuales:
Mi unidad tiene un nombre en blanco: No escribiste bien su nombre código en la stringtable o proto.
• Mi unidad tiene textura en negro: No escribiste bien el texto de su textura, o tu textura es negra! Conviértela bien, haz texturas 2, 4 o 8 veces más grande. 3 o 5 no funcionarán!
• Mi unidad tiene animaciones raras: Para caballería, dale tácticas de una unidad de caballería. La unidad se congelará si las tácticas no calzan.
• Mi unidad tiene el sombrero en la oreja!: ¿Pusiste todos los puntos de anexión al principio del archivo .xml como dije en el paso 3?
• Escrito por Tahattus, traducido por Hoop Thrower

descriptionModding: Crear una nueva unidad EmptyRe: Modding: Crear una nueva unidad

more_horiz
carajo voy a echarle y are mi unidad :P

pero eso sera cuando salgamos de vacaciones jeje

pongan este tema en la pagina principal please de facil accesos o creen un lugar que diga designer o diseñador o algo por el estilo please y asi van haciendo sus diseños de cualquier cosa. (aoe3, photoshop, etc).

descriptionModding: Crear una nueva unidad EmptyRe: Modding: Crear una nueva unidad

more_horiz
:O informacion suficientemente buena!
:buenpost:

descriptionModding: Crear una nueva unidad EmptyRe: Modding: Crear una nueva unidad

more_horiz
privacy_tip Permisos de este foro:
No puedes responder a temas en este foro.
power_settings_newConéctate para responder