Steam Celtíberos

Sala Pública Celtíberos

Vitrina

a_6.gif

Acceso al Castillo

Menú personal

Mensajes recibidos

Debe loguear para ver sus mensajes.
Enviar mensaje.

En línea...

Tenemos 264 invitados conectado

Estadísticas

  • Total Usuarios: 5617
  • Últ. Miembro: ujewulym
  • Total Mensajes: 74.5k
  • Total Temas: 5629
  • Total Secciones: 192
  • Total Categorías: 8
  • Abiertos hoy: 0
  • Abiertos Ayer: 0
  • Respuestas Hoy: 0
  • Respuestas Ayer: 0

+ Últimos Mensajes +

Últimas descargas

Bienvenido, Invitado
Nombre de Usuario Contraseña: Recordarme

Tutoriales: modding RTW y M2TW
(1 viendo) (1) Invitado
  • Página:
  • 1
  • 2

TEMA: Tutoriales: modding RTW y M2TW

Tutoriales: modding RTW y M2TW 06 Mar 2008 00:58 #1742

AÑADIR NUEVAS UNIDADES A RTW

Paso 1: export_descr_unit.txt

Lo más sencillo es tomar la entrada completa de una unidad del mismo tipo (infantería o caballería, melée o misiles, tipo de arma).
Supongamos que queremos hacer una unidad de hostigadores a pie. Tomamos la entrada de los vélites, y la copiamos entera al final del fichero.

Esta es la original (hay que copiar todas las líneas completas para evitar problemas):
type roman velite
dictionary roman_velite ; Velites
category infantry
class missile
voice_type Light_1
soldier roman_velite, 40, 0, 0.8
mount_effect elephant +6, chariot +6
attributes sea_faring, hide_improved_forest, hide_long_grass, can_sap
formation 1.6, 2, 3.2, 4, 3, square
stat_health 1, 0
stat_pri 7, 2, javelin, 50, 6, thrown, archery, piercing, spear, 25 ,1
stat_pri_attr thrown
stat_sec 5, 2, no, 0, 0, melee, simple, piercing, sword, 25 ,1
stat_sec_attr no
stat_pri_armour 2, 3, 2, flesh
stat_sec_armour 0, 0, flesh
stat_heat 1
stat_ground 2, 0, 3, 0
stat_mental 4, normal, untrained
stat_charge_dist 30
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 270, 170, 30, 40, 270
ownership roman


Ahora le cambiamos los siguientes parámetros: "type" y "dictionary", con el nuevo nombre de la unidad, ownership, con la nueva facción que puede reclutarla, por ejemplo macedon.
Esta sería la nueva entrada:
type hostigador macedonio
dictionary hostigador_macedonio ; Velites
category infantry
class missile
voice_type Light_1
soldier roman_velite, 40, 0, 0.8
mount_effect elephant +6, chariot +6
attributes sea_faring, hide_improved_forest, hide_long_grass, can_sap
formation 1.6, 2, 3.2, 4, 3, square
stat_health 1, 0
stat_pri 7, 2, javelin, 50, 6, thrown, archery, piercing, spear, 25 ,1
stat_pri_attr thrown
stat_sec 5, 2, no, 0, 0, melee, simple, piercing, sword, 25 ,1
stat_sec_attr no
stat_pri_armour 2, 3, 2, flesh
stat_sec_armour 0, 0, flesh
stat_heat 1
stat_ground 2, 0, 3, 0
stat_mental 4, normal, untrained
stat_charge_dist 30
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 270, 170, 30, 40, 270
ownership macedon


Le podemos cambiar las stats de ataque y defensa, los atributos, la moral, etc.
Un ejemplo: será más poderoso en ataque que el romano, con más munición (8 venablos), pero menor alcance (40 metros).
En defensa lo haremos más fuerte en habilidad, dejando iguales armadura y escudo. Tendrá más moral y estará entrenado.
Su coste aumentará a 420 denarios, consecuencia de su mayor eficacia.
La entrada quedará así:
type hostigador macedonio
dictionary hostigador_macedonio ; Velites
category infantry
class missile
voice_type Light_1
soldier roman_velite, 40, 0, 0.8
mount_effect elephant +6, chariot +6
attributes sea_faring, hide_improved_forest, hide_long_grass, can_sap
formation 1.6, 2, 3.2, 4, 3, square
stat_health 1, 0
stat_pri 9, 2, javelin, 40, 8, thrown, archery, piercing, spear, 25 ,1
stat_pri_attr thrown
stat_sec 6, 2, no, 0, 0, melee, simple, piercing, sword, 25 ,1
stat_sec_attr no
stat_pri_armour 2, 5, 2, flesh
stat_sec_armour 0, 0, flesh
stat_heat 1
stat_ground 2, 0, 3, 0
stat_mental 8, normal, trained
stat_charge_dist 30
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 420, 170, 30, 40, 420
ownership macedon


Esta unidad usa el modelo de los vélites romanos, codificado en la línea "soldier".
Esto deberá cambiarse según tengamos nuevas texturas y/o modelos.

Paso 2: descr_model_battle.txt (modelos y texturas)

Esta es la entrada del modelo roman_velite en dicho fichero:
type roman_velite
skeleton fs_semi_fast_javelinman, fs_semi_fast_dagger ; throwing spear/javelin & short sword
indiv_range 40
texture romans_julii, data/models_unit/textures/unit_roman_peasant_julii.tga
texture romans_brutii, data/models_unit/textures/unit_roman_peasant_brutii.tga
texture romans_scipii, data/models_unit/textures/unit_roman_peasant_scipii.tga
texture romans_senate, data/models_unit/textures/unit_roman_peasant_senate.tga
texture slave, data/models_unit/textures/unit_roman_peasant_slave.tga
model_flexi data/models_unit/unit_roman_velite_high.cas, 8
model_flexi data/models_unit/unit_roman_velite_med.cas, 15
model_flexi data/models_unit/unit_roman_velite_low.cas, 30
model_flexi data/models_unit/unit_roman_velite_lowest.cas, max
model_sprite slave, 60.0, data/sprites/slave_roman_velite_sprite.spr
model_sprite romans_senate, 60.0, data/sprites/romans_senate_roman_velite_sprite.spr
model_sprite romans_scipii, 60.0, data/sprites/romans_scipii_roman_velite_sprite.spr
model_sprite romans_brutii, 60.0, data/sprites/romans_brutii_roman_velite_sprite.spr
model_sprite romans_julii, 60.0, data/sprites/romans_julii_roman_velite_sprite.spr
model_tri 400, 0.5f, 0.5f, 0.5f


Si no tenemos nuevos modelos ni texturas, lo más sencillo es duplicar una textura ya existente, por ejemplo la de los rebeldes:
type roman_velite
skeleton fs_semi_fast_javelinman, fs_semi_fast_dagger ; throwing spear/javelin & short sword
indiv_range 40
texture romans_julii, data/models_unit/textures/unit_roman_peasant_julii.tga
texture romans_brutii, data/models_unit/textures/unit_roman_peasant_brutii.tga
texture romans_scipii, data/models_unit/textures/unit_roman_peasant_scipii.tga
texture romans_senate, data/models_unit/textures/unit_roman_peasant_senate.tga
texture macedon, data/models_unit/textures/unit_roman_peasant_slave.tga
texture slave, data/models_unit/textures/unit_roman_peasant_slave.tga
model_flexi data/models_unit/unit_roman_velite_high.cas, 8
model_flexi data/models_unit/unit_roman_velite_med.cas, 15
model_flexi data/models_unit/unit_roman_velite_low.cas, 30
model_flexi data/models_unit/unit_roman_velite_lowest.cas, max
model_sprite slave, 60.0, data/sprites/slave_roman_velite_sprite.spr
model_sprite macedon, 60.0, data/sprites/slave_roman_velite_sprite.spr
model_sprite romans_senate, 60.0, data/sprites/romans_senate_roman_velite_sprite.spr
model_sprite romans_scipii, 60.0, data/sprites/romans_scipii_roman_velite_sprite.spr
model_sprite romans_brutii, 60.0, data/sprites/romans_brutii_roman_velite_sprite.spr
model_sprite romans_julii, 60.0, data/sprites/romans_julii_roman_velite_sprite.spr
model_tri 400, 0.5f, 0.5f, 0.5f


Se ha copiado íntegramente la línea de la textura "slave" y se ha asignado a la facción "macedon". Lo mismo para el sprite.

Imaginemos que hemos hecho u obtenido (por medios legales espero) un modelo llamado macedon_skirmisher.cas y una textura llamada macedon_skirmisher.tga.dds.
Habrá que colocar el modelo (.cas) en la carpeta Data\models_unit y la textura (tga.dds) en una carpeta Data\models_unit\textures que deberemos crear si no existe en nuestra instalación.
Entonces tenemos que duplicar la entrada del modelo de velite, por ejemplo así:
type macedon_skirmisher
skeleton fs_semi_fast_javelinman, fs_semi_fast_dagger ; throwing spear/javelin & short sword
indiv_range 40
texture macedon, data/models_unit/textures/macedon_skirmisher.tga
model_flexi data/models_unit/macedon_skirmisher.cas, 8
model_flexi data/models_unit/macedon_skirmisher.cas, 15
model_flexi data/models_unit/macedon_skirmisher.cas, 30
model_flexi data/models_unit/macedon_skirmisher.cas, max
model_sprite macedon, 60.0, data/sprites/slave_roman_velite_sprite.spr
model_tri 400, 0.5f, 0.5f, 0.5f


En este caso debemos retocar otra vez nuestra nueva entrada de export_descr_unit, quedando así:
type hostigador macedonio
dictionary hostigador_macedonio ; Velites
category infantry
class missile
voice_type Light_1
soldier macedon_skirmisher, 40, 0, 0.8
mount_effect elephant +6, chariot +6
attributes sea_faring, hide_improved_forest, hide_long_grass, can_sap
formation 1.6, 2, 3.2, 4, 3, square
stat_health 1, 0
stat_pri 9, 2, javelin, 40, 8, thrown, archery, piercing, spear, 25 ,1
stat_pri_attr thrown
stat_sec 6, 2, no, 0, 0, melee, simple, piercing, sword, 25 ,1
stat_sec_attr no
stat_pri_armour 2, 5, 2, flesh
stat_sec_armour 0, 0, flesh
stat_heat 1
stat_ground 2, 0, 3, 0
stat_mental 8, normal, trained
stat_charge_dist 30
stat_fire_delay 0
stat_food 60, 300
stat_cost 1, 420, 170, 30, 40, 420
ownership macedon


Paso 3: export_units.txt (en la carpeta Data\text)

Ahora nuestra nueva unidad ya tiene aspecto (modelo y textura) y stats, pero no tiene nombre ni descripción.
Eso es lo que haremos ahora. Tomamos la entrada completa (triple) del vélite:
{roman_velite} Vélites

{roman_velite_descr}
Expertos en ocultarse en los bosques\nPueden esconderse entre la maleza\nZapadores\n\nLos vélites son hostigadores ligeros que vigilan la línea principal de combate de una legión mientras avanza.\n\nEstán armados con jabalinas, una espada corta y sin más protección que un pequeño escudo redondo. Su tarea es atosigar al enemigo antes de que comience el combate principal.\n\nSe les recluta de entre los ciudadanos más jóvenes, que carecen de experiencia (o de dinero para el equipo) para ser astero u otro tipo de infantería pesada.\n\nLos vélites romanos quedaron obsoletos tras la reforma de Mario. Históricamente, con Mario llegó el profesionalismo al ejército, que abandonó todos los requisitos de edad y propiedad. Los ciudadanos romanos ya no irían a la guerra como y cuando fuera su deber, sino que lucharían como ciudadanos-mercenarios a tiempo completo en las legiones.

{roman_velite_descr_short}
Los vélites son hostigadores ligeros que vigilan la línea principal de combate de una legión mientras avanza.


la copiamos al final del fichero y la cambiamos a algo así:
{hostigador_macedonio} Hostigadores macedónicos

{hostigador_macedonio_descr}
Son la leche. Hay que tener narices para ponerse delante y bla, bla, bla...

{hostigador_macedonio_descr_short}
Son la leche.


Nótese que hemos puesto el nombre que viene en la línea "dictionary" de export_descr_unit.
La unidad ya sería jugable en batallas personalizadas.


Paso 4: ficha e imagen informativa.

Para ello tenemos que hacer dos ficheros .tga:
#hostigador_macedonio.tga, que irá en la carpeta Data\ui\units\macedon
hostigador_macedonio_info.tga que irá en la carpeta Data\ui\unit_info\macedon

Si no existen estas carpetas en nuestra instalación debemos crearlas.
Hay varias maneras de hacer estos ficheros:

- Tomar unos ya existentes de una unidad parecida (velites, u otro hostigador) y modificarlas con un programa adecuado.
Para poder hacerlo hay que desempaquetar los packs ui_0.pak y ui_1.pak.

- Jugar una batalla con esa unidad, guardar la batalla y repetirla, tomando imágenes. Luego esas imágenes se recortan y re-escalan al tamaño apropiado.

- Usar 3ds max y hacer una renderización de la unidad, tomando una animación adecuada. Esto es más complicado y requiere tener el programa y algunos conocimientos básicos que se salen de los límites de este tutorial.

Paso 5: export_descr_buildings.txt

Esto sirve para hacer esta unidad reclutable en campaña.

Si lo tomamos como unidad de hostigadores pesados, podemos incluirla en este nivel:
archery_range requires factions { spain, scythia, germans, gauls, dacia, carthaginian, eastern, parthia, egyptian, greek, roman, }
{
capability
{
recruit "carthaginian slinger" 0 requires factions { spain, }
recruit "carthaginian peltast" 0 requires factions { spain, }
recruit "barb peltast gaul" 0 requires factions { gauls, }
recruit "barb peltast german" 0 requires factions { germans, }
recruit "barb slinger briton" 0 requires factions { britons, }
recruit "barb archer dacian" 0 requires factions { dacia, }
recruit "barb archer scythian" 0 requires factions { scythia, }
recruit "warband archer german" 0 requires factions { germans, }
recruit "warband archer dacian" 0 requires factions { dacia, }
recruit "warband archer scythian" 0 requires factions { scythia, }
recruit "warband huntsman gaul" 0 requires factions { gauls, }
recruit "barb ballista dacian" 0 requires factions { dacia, }
recruit "barb onager dacian" 0 requires factions { dacia, }
recruit "barb onager scythian" 0 requires factions { scythia, }
recruit "carthaginian peltast" 0 requires factions { carthage, }
recruit "carthaginian archer" 0 requires factions { numidia, }
recruit "carthaginian slinger" 0 requires factions { carthaginian, }
recruit "east peltast" 0 requires factions { armenia, pontus, }
recruit "east slinger" 0 requires factions { parthia, }
recruit "east archer" 0 requires factions { eastern, }
recruit "egyptian peltast" 0 requires factions { egyptian, }
recruit "egyptian slingers" 0 requires factions { egyptian, }
recruit "egyptian archer" 0 requires factions { egyptian, }
recruit "greek peltast" 0 requires factions { greek, }
recruit "greek archer" 0 requires factions { greek, }
recruit "greek ballista" 0 requires factions { macedon, greek_cities, }
recruit "roman velite" 0 requires factions { roman, } and not marian_reforms
recruit "roman light infantry auxillia" 0 requires factions { roman, } and marian_reforms
recruit "roman archer" 0 requires factions { roman, } and not marian_reforms
recruit "roman archer auxillia" 0 requires factions { roman, } and marian_reforms
recruit "roman ballista" 0 requires factions { roman, }
}


Simplemente tomamos la línea de greek peltast, la duplicamos y cambiamos el nombre de la unidad y la facción:
archery_range requires factions { spain, scythia, germans, gauls, dacia, carthaginian, eastern, parthia, egyptian, greek, roman, }
{
capability
{
recruit "carthaginian slinger" 0 requires factions { spain, }
recruit "carthaginian peltast" 0 requires factions { spain, }
recruit "barb peltast gaul" 0 requires factions { gauls, }
recruit "barb peltast german" 0 requires factions { germans, }
recruit "barb slinger briton" 0 requires factions { britons, }
recruit "barb archer dacian" 0 requires factions { dacia, }
recruit "barb archer scythian" 0 requires factions { scythia, }
recruit "warband archer german" 0 requires factions { germans, }
recruit "warband archer dacian" 0 requires factions { dacia, }
recruit "warband archer scythian" 0 requires factions { scythia, }
recruit "warband huntsman gaul" 0 requires factions { gauls, }
recruit "barb ballista dacian" 0 requires factions { dacia, }
recruit "barb onager dacian" 0 requires factions { dacia, }
recruit "barb onager scythian" 0 requires factions { scythia, }
recruit "carthaginian peltast" 0 requires factions { carthage, }
recruit "carthaginian archer" 0 requires factions { numidia, }
recruit "carthaginian slinger" 0 requires factions { carthaginian, }
recruit "east peltast" 0 requires factions { armenia, pontus, }
recruit "east slinger" 0 requires factions { parthia, }
recruit "east archer" 0 requires factions { eastern, }
recruit "egyptian peltast" 0 requires factions { egyptian, }
recruit "egyptian slingers" 0 requires factions { egyptian, }
recruit "egyptian archer" 0 requires factions { egyptian, }
recruit "hostigador macedonio" 0 requires factions { macedon, }
recruit "greek peltast" 0 requires factions { greek, }
recruit "greek archer" 0 requires factions { greek, }
recruit "greek ballista" 0 requires factions { macedon, greek_cities, }
recruit "roman velite" 0 requires factions { roman, } and not marian_reforms
recruit "roman light infantry auxillia" 0 requires factions { roman, } and marian_reforms
recruit "roman archer" 0 requires factions { roman, } and not marian_reforms
recruit "roman archer auxillia" 0 requires factions { roman, } and marian_reforms
recruit "roman ballista" 0 requires factions { roman, }
}


Esta operación habrá que repetirla con los niveles de edificio superiores, copiando esta nueva línea. Si no lo hacemos, al construir el siguiente la unidad ya no será reclutable.

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 06 Mar 2008 01:18 #1745

CAMBIOS DE ESTANDARTES Y SÍMBOLOS DE FACCIONES

En este tutorial vamos a intentar cambiar todos los símbolos de una facción, para que aparezcan transformados en todos los aspectos del juego.
Usaremos como guía la facción de los britanos.
Será una guía para encontrar los ficheros y saber en qué parte del juego afectan, no será un tutorial paso a paso de photoshop (porque no soy el más indicado para ello).
Un tutorial interesante para principiantes se puede encontrar (en inglés) aquí:
http://www.twcenter.net/forums/showthread.php?t=44952

1. MENUS

Primero vamos a localizar los botones que aparecen en los menús y en las pantallas de carga. Este último está en la carpeta Data\loading_screen\symbols y se llama symbol128_britons.tga.
Está codificado en el fichero descr_sm_faction.txt, en la línea loading_logo. Así pues podemos sustituir el fichero antiguo, o colocar uno nuevo con otro nombre y codificarlo aquí.
Este es el resultado de sustituir este fichero.


Para seleccionar facciones, tanto en menús de campaña como en batallas, tenemos un botón que contiene el mismo símbolo de antes, pero a menor tamaño.
Se encuentra en la carpeta Data\menu\symbols\FE_buttons_48 y se llama symbol48_britons.tga. Así pues, se puede aprovechar el trabajo hecho en symbol128 y simplemente reducirlo.
Para representar el estado de selección de la facción se necesitan otros tres símbolos del mismo tamaño (_grey, _roll, _select). Los dos primeros se pueden hacer bajando la saturación y bajando o subiendo la luminosidad.
El último se hace con el original pero colocando en amarillo la superficie externa del símbolo (ver un ejemplo original y copiarlo encima).
Aquí se ve el efecto de cambiar este fichero.


Finalmente hay botoncitos aún más pequeños que aparecen al lado de las facciones en los menús de batalla. Tienen la misma estructura que los symbol48, pero reducidos a symbol24.
Evidentemente están en la carpeta Data\menu\symbols\FE_buttons_24. Tomando los anteriores es suficiente con reescalarlos. En la imagen el efecto de sustitución de estos símbolos.


2- ESTANDARTES EN BATALLA

Los más importantes son los que lleva la unidad del general y los del resto de unidades. Ambos están incluidos en un sólo fichero standard_britons.tga.dds en la carpeta Data\models\textures.
También están codificados en el fichero descr_banners.txt, así que de nuevo se puede incluir un fichero con nombre diferente si se indica en la línea correspondiente.

El aspecto del fichero final es éste. Se ha incluido el mismo símbolo para las unidades normales (izquierda) y para la unidad del general (derecha).


Este es el efecto en el juego:


Existen varias formas de hacer esto, dependiendo de la habilidad de cada uno.
Hay estandartes vacíos de los tres tipos (greco-romano, oriental y bárbaro), llamados standard_routing.tga, standard_routing_eastern.tga y standard_routing_barbarian.tga.
Se pueden aprovechar para colorearlos e incluir luego el símbolo.

Es conveniente duplicar el nuevo fichero con el mismo nombre acabado en _ally.tga, que se usará si un ejército aliado aparece en el mapa de batalla. Por diferenciarlo se le puede cambiar un poco el color, la saturación o la luminosidad.

Finalmente, si se ha usado una forma distinta de la original (el acabado no es el mismo), es conveniente cambiar la asignación en descr_banners.
Por ejemplo, si hemos usado para Partia un estandarte de estilo bárbaro, deberemos cambiar:
faction parthia
standard_texture models/textures/standard_parthia.tga
rebels_texture models/textures/standard_eastern_rebels.tga
routing_texture models/textures/standard_routing_eastern.tga
ally_texture models/textures/standard_parthia_ally.tga


por:
faction parthia
standard_texture models/textures/standard_parthia.tga
rebels_texture models/textures/standard_eastern_rebels.tga
routing_texture models/textures/standard_routing_barbarian.tga
ally_texture models/textures/standard_parthia_ally.tga


Si no se hace, al huir la unidad, el estandarte se "transformará" milagrosamente entre las dos formas, con un efecto "raaaaro raaaaro".

En la imagen, resaltado en rojo, se ve otro estandarte más difícil de encontrar, ya que está incluido en uno de los packs.
Una vez "desempaquetados" se encuentra en la carpeta Data\ui\CAPTAIN_BANNERS, con el nombre CAPTAIN_CARD_BRITONS.TGA.
Se puede modificar a partir del lado derecho del estandarte anterior. Como en todos los elementos incluidos en packs, tendremos que usar una versión desempaquetada para poderlo ver en el juego, o bien tendremos que re-empaquetarlo en un fichero mod_0.pak (esto será otro tutorial si es necesario).

Edit 1: Si el capitán muere en la batalla, ese estandarte que se ve en la zona inferior derecha será sustituido por otro ensombrecido/difuminado. Ese estandarte está en la carpeta Dataui\CAPTAIN_BANNERS\DEAD y se llama igual que el otro. Con un ligero retoque del anterior podremos obtener este nuevo fichero.

Edit 2: Los edificios en campaña (murallas, plaza...) tienen también banderas de la facción que los posee. Esas banderas están en la carpeta Data\models_building\textures y se llaman ##standard_britons.tga.dds.
De nuevo un ligero retoque del estandarte inicial nos permite obtener este.


3- SÍMBOLOS EN CAMPAÑAS


En estas imágenes trato de mostrar la mayor parte de las ocasiones en que los símbolos y estandartes aparecen en el mapa estratégico.



El fichero CAPTAIN_CARD_BRITONS.TGA en la carpeta Data\ui\CAPTAIN_BANNERS aparece también aquí. Se muestra en verde en la primera pantalla, que es la pre-batalla cuando el ejército está comandado por un capitán en lugar de un general.

En azul se ve cuándo aparece el símbolo grande, como el botón de facción (abajo a la derecha), en diplomacia o cuando se muestran los movimientos de la IA.
Este símbolo está en el fichero STRATPAGE_02.TGA en la carpeta Data\ui\ROMAN\INTERFACE (también dentro de uno de los packs). El aspecto es este:

Hay que pegar el nuevo símbolo justamente encima del antiguo. Se puede usar symbol48, recortándolo un poco y re-escalando.

El símbolo pequeño también aparece en muchas ocasiones (marcado en rojo en las pantallas), como en la prebatalla, resultados de batalla, pantallas de diplomacia, etc. Está codificado en el fichero SHAREDPAGE_01.TGA en la carpeta Data\ui\ROMAN\INTERFACE . Su aspecto es este:

De nuevo el símbolo se debe pegar sobre el original, y lo más cómodo es usar symbol24 con pequeños retoques.

Ahora los estandartes que aparecen sobre enclaves y ejércitos en campaña (marcados en blanco en las pantallas). El color se codifica en descr_sm_factions.txt
primary_colour red 140, green 20, blue 20
secondary_colour red 100, green 0, blue 0

El color primario se usa para rellenar (también en el mapa estratégico) y el secundario para subrayados, límites provinciales, etc.

El símbolo está codificado en uno de los ficheros symbols1.tga.dds a symbols8.tga.dds de la carpeta Data\banners. Hay que buscar el correspondiente a la facción que estamos modificando, con cuidado porque hay algunos que sólo pueden verse en el canal alpha.
El de los britanos está en symbols4.tga.dds como se muestra en la figura.

Ahora tenemos que modificar tanto los canales RGB como el alpha, para que el símbolo sea visible en campaña. El resultado final tendrá que ajustarse según se vea en juego, ya que los colores se modifican ligeramente, y dado el pequeño tamaño de estos estandartes, el dibujo puede quedar poco claro.
Este es el resultado final.

Cualquier tiempo pasado fue anterior.

Como crear nuevas regiones. 06 Mar 2008 20:10 #1811

  • Gale
Tutorial – Solón de Atenas

Como crear una región:
Antes de crear una región hay que tener en cuenta que en RTW existe una limitación, solamente es posible contar con 199 regiones en un mapa sean cuales sean sus dimensiones. Por lo tanto, el juego fallara si se incluyen más, aunque es común que los mapas ya tengan todas las provincias asignadas y halla que modificar una, no añadir más. Además, todas las regiones costeras deben tener un puerto, sino se creara un puerto artificial y esto producirá incoherencias en el transcurso del juego.
Importante: hay que borrar map.rwm cuando se indique para que todos los cambios tengan efecto. Es necesario disponer del Photoshop y del Microsoft Excel para efectuar estos cambios correctamente.
Archivos implicados:
En data/world/maps/base/…
map_regions.tga
Este el archivo más importante y es necesario trabajar con el Photoshop para que los cambios sean eficientes.
descr_regions.txt
Este archivo de texto contiene toda la información de la provincia, más adelante será analizado en profundidad.
En data/world/maps/campaign/imperial_campaign/…
descr_mercenaries.txt
Hay que añadir el nombre de la nueva provincia para poder reclutar mercenarios en ella.
descr_regions_and_settlement_name_lookup.txt
Aquí es necesario incluir el nombre interno del enclave y el de la provincia que se desea crear.
Descr_strat.txt
Aquí se expone la provincia junto a otros datos asociados.
En data/text/…
imperial_campaign_regions_and_settlement_names.txt
Este archivo también contiene los nombres internos de la región y la provincia, pero aquí se especifican los nombres que estas poseerán en el mapa de campaña.
Tratamiento de map_regions.tga:
Este es el mapa de las regiones abierto en el Photoshop.
Imagen 1


Ahora vamos a añadir nuestra provincia en Africa.
Imagen 2

Para crear la provincia hay que obtener un código (RGB value), es decir, la proporción de color que vamos a usar para colorear en el mapa. Este código es necesario para descr_regions.txt (es un identificador). En la Imagen Nº 3, señalado con un círculo se encuentra el código indicado. Esta proporción de color no puede coincidir con ninguna existente en el mapa. Yo he escogido como RGB value 150 150 150 y he coloreado mi provincia en Africa (Imagen Nº 2).
Para colorear el mapa es necesario usar el lápiz (Imagen Nº 4), no el pincel, y es necesario trabajar al 100% de opacidad. Una vez coloreada la provincia ha de colocarse el enclave con un pixel de negro puro, es decir RGB value 0 0 0, y si es necesario un puerto con un pixel de blanco puro, es decir, RGB value 255 255 255.
Imagen 3


Imagen 4

Tratamiento de descr_region.txt:
Esto es el ejemplo de una entrada para una provincia. Es conveniente trabajar este archivo con Microsoft Excel.
ProvinciaSolondeAtenas (Nombre interno de la provincia)
CiudadSolondeAtenas (Nombre interno del enclave)
Romans_julii (Facción creadora del enclave)
Helots (Rebeldes asociados a este enclave)
150 150 150 (RGB value)
gold, silver, slaves (Recursos asignados a la provincia)
5 (Valor de triunfo)
5 (Nivel agrícola)
Una vez escogido el nombre de la provincia y el enclave se introduce una nueva entrada en descr_regions.txt. Se asigna una facción creadora y se asocian unos rebeldes, estos han de estar presentes en el archivo descr_rebel_factions.txt. Seguidamente se introduce el código anteriormente mencionado (RGB value) y los recursos que se encuentren en la provincia (posteriormente han de colocarse en descr_strat.txt).
En cuanto al valor de triunfo es conveniente asignarle un cinco, y el nivel agrícola según desee el creador, la proporción puede evaluarse entre uno y quince puntos.
Tratamiento de descr_mercenaries.txt:
En cuanto a este archivo, el proceder es sencillo, solamente hay que añadir el nombre interno de tu provincia al grupo de provincias con los mercenarios deseados. No considero necesario extenderme más en este punto, de todas formas, en caso de duda, remitidme vuestras dudas.
descr_regions_and_settlement_name_lookup.txt:
Este archivo es una lista de todas las provincias y enclaves, debes añadir el nombre interno de ambos a ella.
ProvinciaSolondeAtenas
CiudadSolondeAtenas

imperial_campaign_regions_and_settlement_names.txt:
Ya he comentado que es conveniente utilizar Microsoft Excel para los archivos de texto, pero para este, lo considero imprescindible. Aquí se coloca el nombre interno de la provincia y el enclave entre llaves, seguido del nombre que deseamos ver en el mapa de campaña del juego.
{ProvinciaSolondeAtenas} ProvinciaSolondeAtenas
{CiudadSolondeAtenas} CiudadSolondeAtenas

Tratamiento descr_strat:
En el descr_strat debe crearse una nueva entrada, como en el ejemplo:
settlement
{
level town
(Nivel del enclave)
region ProvinciaSolondeAtenas (Nombre interno de la provincia)
year_founded 0 (No se usa actualmente)
population 500 (Cantidad de población)
settlement_tax 51 (Ingresos por impuestos)
plan_set default_set (Es conveniente dejarlo así)
faction_creator romans_julii (Faccion creadora)
building (Edificios)
[color=red]{
type core_building governors_villa
}
}
Otras consultas:
Como ya he comentado antes, es frecuente que el límite de provincias haya sido alcanzado y se deba de sustituir una existente por la que se desea añadir. En ese caso no es necesario cambiar el nombre interno de la provincia o el enclave. Sencillamente, se ha de poner el nombre que se desea ver en el mapa de campaña en el archivo: imperial_campaign_regions_and_settlement_names.txt, delante del los nombres internos de la región que se desea sustituir. En cuanto al tratamiento del archivo map_regions.tga, es necesario utilizar el Eyedropper tool del Photoshop (el cuentagotas que clona los colores) y usar el color de la provincia que se desea quitar coloreando en el espacio donde va a ser emplazada la nueva provincia. Luego rellena la provincia antigua con el color de otra adyacente. Para aclarar este complicado proceso voy a poner unas imágenes explicativas.
Este es el mapa sin modificar, me dispongo a quitar la gran provincia verde de Africa y anexionarla a la roja de Tripolitania, mientras creo una nueva en el desierto de Arabia.

El cambio se ha efectuado, como he dicho, desplazando el color verde de la antigua provincia africana para localizarla en Arabia y fusionando la Tripolitania a la antigua región ahora desplazada.

Merece la pena mencionar otro importante punto: es imprescindible colocar los pixeles de la ciudad o el puerto en un lugar apropiado, de no ser así el juego producirá fallos. Lo que quiero decir es que se ha de ser cuidadoso de no colocar un enclave en una montaña o en un rio, etc. Para ayudarme en este proceso, personalmente siempre he utilizado The campaign map editor, que aunque es un programa que deja mucho que desear y no sirve para modificar los mapas, si se puede utilizar para encontrar las coordenadas o encontrar la mejor posición para las provincias y enclaves. Si no, hay que hacerlo “a ojo”.

Re: Tutoriales: modding RTW y M2TW 06 Mar 2008 23:09 #1828

MODIFICAR UNA FACCIÓN

Vamos a ver en este tutorial las posibilidades que tenemos de modificar diferentes parámetros de una facción.
Nos vamos a olvidar de ficheros gráficos (eso se trata en otros tutoriales) y trataremos sólo de ficheros de texto.
Dividiremos este tutorial según el fichero a modificar.

1- descr_sm_factions.txt

Aquí tenemos información general de la facción. Algunas de sus líneas tienen un significado oscuro para mí, pero otras son realmente útiles.

culture                  eastern

Esto es muy importante, ya que nos condiciona el tipo de edificios que puede construir, el tipo de retratos que saldrán en pantalla, etc.
Si no hemos cambiado nuestra instalación, el RTW original nos permite escoger entre las culturas: roman, greek, carthaginian, egyptian, eastern y barbarian.
Pasar de una cultura "inferior" (más limitada) a otra "superior" no suele plantear problemas. El cambio inverso tiene que verse con precaución, ya que la facción puede tener acceso a edificios en export_descr_buildings que estén prohibidos para esa cultura.
Además hay que tener en cuenta que un cambio de cultura hará que rasgos de personajes y miembros de séquito sean ahora accesibles o innaccesibles.
Otra posible fuente de problemas es la asignación de unidades por cultura en lugar de facción. Al incluir esta nueva facción, esa unidad no tendrá textura asignada en descr_model_battle, con lo que podremos tener efectos extraños o caidas al escritorio.

primary_colour            red 230, green 191, blue 62
secondary_colour         red 100, green 40, blue 30

Estos dos colores codifican la apariencia de la facción en el mapa de campaña. El significado de los tres números se puede ver con photoshop u otro programa similar. Si se quiere eliminar la línea de división de regiones en el mapa estratégico, basta con poner el secundario idéntico al primario.

loading_logo            loading_screen/symbols/symbol128_ilergete.tga

Aquí se codifica el fichero que contiene el logo de la facción. Este ya está cambiado para ITW.

standard_index            19
logo_index               249
small_logo_index         262

Estos tres valores codifican la posición de estandartes y logos en ficheros. Lo mejor es no tocarlos, sino modificar esos ficheros como se ha mostrado en el tutorial de símbolos y estandartes.

custom_battle_availability   yes

Permite evitar que aparezca alguna facción en las batallas personalizadas. Esto viene bien en caso de que el mod no contenga alguna facción (es nuevo en RTW 1.5)

can_sap                  no

Establece si la facción podrá zapar en campaña o no. En caso afirmativo, las unidades que pueden hacerlo tendrán que tener ese atributo en export_descr_unit.

prefers_naval_invasions      no

Se supone que este parámetro afecta a la capacidad o tendencia de la facción a usar las invasiones navales. Aún poniendo "yes" esta habilidad está muy condicionada por la situación del mapa.


2- descr_names.txt y names.txt (este en la carpeta Data\text)

Aquí aparecen los nombres de los personajes de cada facción. Algunas tienen apellidos y otras no, y lo que todavía no sé es si se puede convertir una facción de un tipo en otro o no.

Para cambiarlos, se pueden cambiar en este fichero o sólo en su traducción. Yo prefiero la primera opción, porque hay muchos nombres compartidos entre facciones, y si se cambia la traducción cambiará en todas ellas.

Hay que se muy cuidadoso al cambiar un nombre, ya que parece ser que los espacios en blanco son importantes. Yo usé el Block de notas de windows, haciendo doble click en un nombre y escribiendo el nuevo encima. De este modo no tuve ningún problema.
Este es el comienzo del fichero de nombres para la facción britana modificada:

faction: britons

   characters
      Aius
      Ausa
      Cauecas
      Indortes
      Istolacio

Luego, la traducción al juego ha de hacerse en names.txt. Como en todos los ficheros de "traducción", el nombre interno del juego va entre {} y luego viene la traducción, que es lo que ve el jugador. Este es el aspecto de los mismos nombres neo-britanos:
{Aius}      Aius
{Ausa}      Ausa
{Cauecas}   Cauecas
{Indortes}   Indortes
{Istolacio}   Istolacio


3- Nombre y descripción de la nueva facción (ficheros en la carpeta Data\text)

campaign_descriptions.txt

Aquí aparece el nombre de la facción en el menú de campaña y su descripción. Como siempre, tenemos que cambiar el texto, sin tocar lo que viene entre {}.

Ejemplo del ITW:
{IMPERIAL_CAMPAIGN_BRITANNIA_TITLE}Los celtas
{IMPERIAL_CAMPAIGN_BRITANNIA_DESCR}Allá por dónde Boreas cruza primero la  península, etc...

Si se tienen también campañas provinciales, hay que añadir un título y una descripción para cada campaña en la que la facción sea jugable. Ejemplo:
{HISPANIA_CELTIC_BRITANNIA_TITLE}Los celtas
{HISPANIA_CELTIC_BRITANNIA_DESCR}Allá por dónde Boreas cruza primero la  península, etc...


expanded_bi.txt

Con la versión RTW 1.5 ya no se usa el fichero expanded.txt que está obsoleto.
Aquí aparecen muchos elementos de facción que aparecen a lo largo de las campañas (agentes, barcos, edificios...). Lo mejor es usar la opción Buscar (o directamente Reemplazar).
Este es un ejemplo de cómo quedan algunos elementos en ITW:
{BRITONS}               Los Celtas
.....
{EMT_BRITONS_SPY}               Espía celta
{EMT_BRITONS_ASSASSIN}               Asesino celta
{EMT_BRITONS_DIPLOMAT}               Diplomático celta
{EMT_BRITONS_ADMIRAL}               Armada celta
{EMT_BRITONS_GENERAL}               Ejército celta
{EMT_BRITONS_NAMED_CHARACTER}               Miembro de familia celta
.....
{EMT_BRITONS_VILLAGE}               Aldea celta
{EMT_BRITONS_TOWN}               Pueblo celta
{EMT_BRITONS_LARGE_TOWN}               Pueblo grande celta
{EMT_BRITONS_CITY}               Ciudad celta
{EMT_BRITONS_LARGE_CITY}               Urbe celta
{EMT_BRITONS_HUGE_CITY}               Metrópolis celta
....


menu_english.txt

Aquí sólo hay alguna mención a las facciones, pero hay que modificarlo también para evitar que aparezca el nombre antiguo. Ejemplo:
{UI_FACTION_BRITONS}               LOS CELTAS


shared.txt
Lo mismo que en el fichero anterior. Ejemplo:
{ST_BRITONS}               Los celtas


strat.txt

Idem. Ejemplo:
{SMT_DEFEATED_BY_BRITONS}      Los celtas nos han robado la victoria. ¡Esta vez has de saborear las cenizas de la derrota, en lugar del dulce vino del éxito!


4- La nueva facción en campaña (descr_strat.txt)

Casi todas la circunstancias iniciales de una campaña para la nueva facción se codifican en el fichero descr_strat (carpeta Data\world\maps\campaign\imperial_campaign).
Vamos a ver qué cosas podemos cambiar.

a) Jugabilidad.

Al principio del fichero determinamos si la facción es jugable o no.
playable
   carthage
   gauls
   greek_cities
   spain
   germans
   dacia
   romans_scipii
   britons
   pontus
   armenia
   thrace
   numidia
   romans_julii
end
unlockable
   
end
nonplayable
   romans_senate
   slave
end

Si la colocamos debajo de nonplayable (donde están romans_senate y slave) será no jugable.

b) Carácter de facción y tesoro inicial
Al comenzar la sección dedicada a nuestra facción nos encontramos lo siguiente:
faction   britons, fortified mao
denari   5000

Evidentemente 5000 es el tesoro inicial de la facción que tendremos cuando juguemos con ella. Creo que no hay límites para él, por lo que podemos poner cualquier cantidad.
Los parámetros "fortified" y "mao" controlan las preferencias de construcción y reclutamiento de la facción respectivamente, al menos en teoría.
Según CA las explicaciones para cada uno son:
balanced: crecimiento, ingresos imponibles, bonus de comercio (vías, p. ej.), murallas y edificios con bonus de experiencia
religious: crecimiento, lealtad, ingresos imponibles, agricultura, murallas y leyes
trader: crecimiento, nivel de comercio, mejoras de armamento, juegos, carreras y edificios con bonus de experiencia
comfortable: crecimiento, agricultura, juegos, carreras, bonus de experiencia y felicidad
bureaucrat: ingresos imponibles, crecimiento, salud de población, comercio, murallas, mejora de generales y leyes
craftsman: murallas, carreras, ingresos imponibles, mejora de armas, bonus de experiencia, minas, salud y crecimiento
sailor: comercio marítimo, ingresos imponibles, murallas, crecimiento y comercio
fortified: murallas,ingresos imponibles, crecimiento, lealtad, defensas, generales y leyes

Estas preferencias son según las bonificaciones, no el edificio en sí. Si un mod cambia los bonus de los edificios, el juego debería reaccionar de acuerdo con eso.

smith: reclutamiento equilibrado
mao: tropas en masa (infantería ligera)
genghis: caballería de misiles y ligera
stalin: infantería pesada, tropas en masa y artillería
napoleon: mezcla de infantería ligera y pesada, caballería ligera
henry: caballería pesada y ligera, infantería de misiles
caesar: infantería pesada, caballería ligera y artillería de asedio

Yo no acabo de convencerme de que esto funcione así de nítido con juegos modificados. Lo mejor es experimentar con estos parámetros hasta encontrar la combinación más adecuada.

c) Regiones y capital
Después vienen las regiones en propiedad de la facción. La primera es la que el juego considera como capital. Si movemos una región "secundaria" al primer puesto, automáticamente cambiaremos la capital inicial.
El ejemplo de la capital de los celtas:
settlement
{
   level large_town
   region Gallaecia

   year_founded 0
   population 4100
   plan_set default_set
   faction_creator spain
   building
   {
      type core_building governors_villa
   }
   building
   {
      type defenses wooden_pallisade
   }
   building
   {
      type equestrian_celtic stables
   }
   building
   {
      type barracks_celtic muster_field
   }
}

Si se van a cambiar enclaves de sitio (propietario), es aconsejable tomar las líneas completas desde la palabra "settlement" hasta la } que está en el extremo izquierdo de la línea.
Si nos dejamos algo, el juego te tirará al escritorio o no cargará la campaña.
Los detalles que se indican son:
Nivel de enclave: village, town, large_town, city, large_city, huge_city. Este nivel tiene que estar de acuerdo con el edificio de gobierno presente, respectivamente: ninguno, governors_house, governors_villa, governors_palace, proconsuls_palace, imperial_palace.
Nombre de la región: en este caso Gallaecia. Este nombre tiene que tener una entrada en descr_regions.txt (carpeta Data\world\maps\base, para la campaña imperial). Sobre regiones hablaremos otro día.
Año de fundación: irrelevante. Dejar como está.
Población: también debe estar de acuerdo con el nivel del enclave, aunque no es imprescindible (creo recordar).
Plan_set: dejar como está. Sólo se debe modificar si se dispone de planos de ciudades hechos a medida y se quiere relacionar cada ciudad con su plano.
Faction_creator: se puede poner la misma facción u otra. Cambiará el estilo de los edificios iniciales. Puede haber ciertas incompatibilidades, no muy bien conocidas, en cuanto a pares propietario/creador. La más conocida es el "pontus bug" que da salto al escritorio si una provincia es rebelde y el creador es la facción pontus.
Según mi experiencia personal, además no se puede poner como creadora una facción que no esté presente en la campaña. Por ejemplo, si hemos eliminado parthia del mod, ésta no puede aparecer en ningún aspecto de la campaña.
Edificios: deben estar codificados en el estilo presentado. Se recomienda también copiar líneas enteras, desde building hasta la } al mismo nivel. Deben estar de acuerdo con el edificio de gobierno (nivel de enclave), según se describe en el fichero export_descr_buildings.

d) Ejércitos:
es aconsejable que todos los enclaves tengan un ejército de inicio para evitar rebeliones.
Cada ejército lleva al frente a un miembro de la familia (named character) o a un capitán (en este fichero se los denomina general).
Ejemplo:
character   Bodo, named character, leader, age 50, , x 32, y 120
traits GoodCommander 1, Intelligent 2, Austere 2, PublicFaith 2
ancillaries druid

De nuevo se recomienda copiar líneas enteras y sustituir datos uno a uno. Estos datos son:
Nombre del general: debe estar recogido en el fichero descr_names.txt para esa facción.
Tipo: named character o general.
Rango (si lo tiene): leader (líder de facción) o heir (heredero).
Edad: es importante para codificar luego los datos de la familia.
Posición del personaje y su ejército: coordenadas x e y según el mapa map_regions.tga.
Rasgos: es un aspecto complicado. Mi consejo es, de momento, copiar otros que ya existan en el fichero.
Séquito: lo mismo.

Luego en el ejército, si el general es un miembro de la familia, tenemos que colocar como primera unidad unos guardaespaldas.
Los nombres de las unidades tienen que ser los que figuran en la primera línea (type) de export_descr_unit.txt.

Los mismos datos tienen que aparecer para agentes (spy, diplomat, assassin) o para flotas (admiral). Es imprescindible que el nombre dado a todos los personajes esté incluido en la lista para esa facción de descr_names.txt.

e) El árbol genealógico.
Este aspecto ha dado muchos quebraderos de cabeza, ya que tiene muchos datos que tienen que cuadrar entre sí. Ejemplo:
character_record      Durato,    male, command 0, influence 0, management 0, subterfuge 0, age 14, alive, never_a_leader
character_record      Elguismio,    male, command 0, influence 0, management 0, subterfuge 0, age 11, alive, never_a_leader
character_record      Turaeio,    male, command 0, influence 0, management 0, subterfuge 0, age 7, alive, never_a_leader
character_record      Cesaro,    male, command 0, influence 0, management 0, subterfuge 0, age 2, alive, never_a_leader
character_record      Nunn,    female, command 0, influence 0, management 0, subterfuge 0, age 49, alive, never_a_leader
character_record      Stena,    female, command 0, influence 0, management 0, subterfuge 0, age 31, alive, never_a_leader
character_record      Ama,    female, command 0, influence 0, management 0, subterfuge 0, age 30, alive, never_a_leader
character_record      Aunia,    female, command 0, influence 0, management 0, subterfuge 0, age 24, alive, never_a_leader
character_record      Kara,    female, command 0, influence 0, management 0, subterfuge 0, age 7, alive, never_a_leader
character_record      Amia,    female, command 0, influence 0, management 0, subterfuge 0, age 5, alive, never_a_leader

relative    Bodo,    Nunn,      Elaeso,   Hilerno,   Cado,   end
relative    Hilerno,    Stena,      Elguismio,   end
relative    Cado,    Ama,      Kara,   Amia,   Cesaro,   end
relative    Elaeso,    Aunia,      Durato,   Turaeio,   end

Abajo del todo hay una serie de líneas (relative) que indican el núcleo familiar más cercano. Así por ejemplo, Bodo (líder de facción) está casado con Nunn (segundo lugar) y tienen tres hijos/hijas, Elaeso, Hilerno y Cado.
Los hijos/hijas, indistintamente, están por orden de edad: 31, 30 y 24. Es importante que la edad de los padres (50 y 49) sea aceptable para tener hijos de esas edades.
Vemos que como los tres hijos (todos varones) son suficientemente mayores, también están casados y tienen a su vez uno o más hijos. A su vez sus edades deben ser aceptables: el nieto mayor (14) es hijo del hijo mayor (31).
Todos los varones mayores de 16 años deben aparecer como generales de sus propios ejércitos.
El resto de personajes del árbol genealógico deben aparecer en su propia línea de character_record. Vemos como aparecen todos los niños varones menores de 16 años (14, 11, 7 y 2) y todas las mujeres (esposas e hijas).

f) Relaciones con otras facciones
Este aspecto viene codificado al final del fichero.
; >>>> start of diplomacy section <<<<
;DS_ALLIED         = 0   
;DS_SUSPICIOUS      = 100
;DS_NEUTRAL         = 200
;DS_HOSTILE         = 400
;DS_AT_WAR         = 600

...
core_attitudes   britons,      600      slave
....
core_attitudes   slave,      600      romans_julii, romans_senate, romans_scipii, carthage, pontus, gauls, germans, britons, armenia, dacia, greek_cities, numidia, spain, thrace

....
faction_relationships   britons,         600      slave
....
faction_relationships   slave,         600      romans_julii, romans_senate, romans_scipii, carthage, pontus, gauls, germans, britons, armenia, dacia, greek_cities, numidia, spain, thrace

El primero es la actitud con que una facción "mira" a las demás. Arriba está la explicación de los números: 0 para aliados, 100 para actitud de sospecha, 200 para neutral, 400 para hostil y 600 para guerra.
Se pueden usar números intermedios, de manera que se puede graduar esa actitud.

Los mismos valores se usan para el siguiente apartado, las relaciones con las que empiezan las facciones el juego. Es decir, podemos poner una actitud de aliados (0) y una situación inicial de enemigos (600). Si todo funcionase bien, esas dos facciones deberían firmar la paz en seguida, pasando a ser aliados a la menor oportunidad.

Estos valores hay que tomarlos con precaución, ya que la IA tiene algunas "ideas preconcebidas", como atacar al humano antes que a otra facción de la IA (si es posible), independientemente de la actitud que pongamos aquí.
También ocurre que si una facción no tiene otra vía de expansión, arrollará a otra vecina aliada, por mucho valor 0 que le pongamos.

g) Condiciones de victoria
Esto viene codificado en el fichero descr_win_conditions.txt. Ejemplo:
britons
hold_regions Gallaecia Kynetia Cantabria
take_regions 25
short_campaign outlive_factions
spain germans

Las condiciones del Rome original vienen codificadas así:
Campaña larga: dominar un número dado de regiones (take_regions) que podemos cambiar (en este caso 25), indicando algunas (hold_regions) que debemos poseer ineludiblemente. En este ejemplo Gallaecia, Kynetia y Cantabria.
Campaña corta: eliminar o sobrevivir (outlive_factions) a una o varias facciones. En este caso spain (lusitanos) y germans (celtíberos).

No he probado a invertir las condiciones, por ejemplo poner en la campaña larga facciones a las que hay que sobrevivir o viceversa, regiones que conquistar en la campaña corta.
Creo que en parte se puede, pero con ciertas limitaciones que tendría que buscar por esos foros del mundo.


Y por mi parte esto es todo, al menos de momento.
Si alguien echa en falta algún aspecto de las facciones que se podría modificar, por favor que lo indique en el hilo de solicitud de tutoriales.

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 06 Mar 2008 23:15 #1829

UNIDADES PROPIAS DE UNA REGIÓN

La solución es incluir un nuevo recurso escondido.

Para ello tienes que modificar el fichero export_descr_buildings.txt.
Al principio hay una línea que pone:
hidden_resources sparta rome italy

Ahí puedes incluir un nuevo recurso que se llame por ejemplo grecorromanos:
hidden_resources sparta rome italy grecorromanos


Luego tienes que ir al edificio donde quieras que se reclute la unidad, llamémosle "legionario griego", y tendríamos una línea así:
recruit "legionario griego" 0 requires factions { roman, } and hidden_resource grecorromanos

Así cualquier facción romana podrá reclutar esa unidad si el edificio está presente en una región con ese recurso.

Ahora por supuesto tenemos que incluir ese recurso en una región. Esta parte es "delicada" y requiere extremo cuidado.
En la carpeta Data\world\maps\base tenemos el fichero descr_regions.txt que describe las características de las regiones de la campaña imperial.
Ejemplo:
Laconia
Sparta
macedon
Helots
244 13 24
slaves, dogs, pigs, sparta
5
7

Si queremos que en Laconia se pueda reclutar la nueva unidad debemos incluir en la línea de recursos el nuevo recurso escondido. Así:
Laconia
Sparta
macedon
Helots
244 13 24
slaves, dogs, pigs, sparta, grecorromanos
5
7

Pero para que este cambio sea operativo, tenemos que borrar en esa misma carpeta el fichero map.rwm (mejor guardarlo en otra parte por si acaso, lo mismo que todos los demás ficheros que hemos modificado).

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 06 Mar 2008 23:34 #1831

TUTORIALES SOBRE MAPAS DE CAMPAÑA

Iniciamos aquí la serie de tutoriales sobre mapas de campaña.
Vamos a trabajar ficheros de RTW pero, afortunadamente, los de M2TW son muy similares y la mayoría de nuestro trabajo debería servir también para este juego.

CAPÍTULO 1: CONOCIENDO LOS ARCHIVOS

Lo primero es conocer los ficheros que componen una campaña, y son de dos tipos: ficheros gráficos de tipo TGA (24 bits) y ficheros de texto. Vamos a analizar cada uno de ellos.

FICHEROS TGA IMPRESCINDIBLES


Son todos aquellos que tienen información que realmente sirve de algo a la hora de crear el mapa de campaña. Hay de dos tamaños. Aquí están los ejemplos de ITW.


Tamaño pequeño (x,y):

- map_regions: salen los límites de cada región, la posición de los enclaves y la de los puertos.
Colores asignados por defecto: agua (mares y lagos) de color azul (41 140 233), enclaves de color negro (0 0 0) (un solo pixel rodeado totalmente del color de su región) y puertos de color blanco (255 255 255) (un solo pixel con un lado al menos en contacto con agua).
Cada región tiene un color diferente, y evidentemente distinto de esos otros tres.

- map_features: codifica ríos, acantilados (zonas de costa donde no se puede desembarcar)y volcanes.
Colores: el fondo debe ser negro (0 0 0).El curso de los ríos es una línea de color azul (0 0 255) sin discontinuidades, el nacimiento es blanco (255 255 255) (un solo pixel), y los vados azul celeste (0 255 255) donde las unidades pueden pasar y donde aparecerán los puentes al construir las carreteras. Los acantilados están en amarillo (255 255 0) y los volcanes en rojo (255 0 0).

Tamaño grande (2x+1, 2y+1):

- map_ground_types: indica tipo de terreno-vegetación.
Código de colores:
Poco fértil: gris azulado (0 128 128)
Fertilidad media: verde claro (96 160 64)
Muy fértil: verde oliva (101 124 0)
Zona salvaje: negro (0 0 0)
Alta montaña: marrón claro (196 128 128)
Montañas bajas: marrón (98 65 65)
Colinas: marrón oliváceo (128 128 64)
Bosque denso: verde oscuro (0 64 0)
Bosque ralo: verde (0 128 0)
Pantano: verde intenso (0 255 128)
Océano: marrón oscuro (64 0 0)
Mar profundo: rojo oscuro (128 0 0)
Mar poco profundo: rojo (196 0 0)
Playa: blanco (0 0 0)

- map_climates: indica tipo de clima/vegetación. Código de colores:
Sub-ártico: verde oscuro (0 166 81)
Alpino: verde (57 181 74)
Páramos: verde claro (141 198 63)
Pantano: amarillo (255 242 0)
Bosque profundo templado: naranja claro (247 148 29)
Bosque ralo templado: naranja (242 101 34)
Pradera templada yerma: rojo (237 28 36)
Pradera templada fértil: rosa oscuro (237 20 91)
Mediterráneo: rosa (236 0 140)
Semi-árido: azul (0 114 ##)
Desierto arenoso: púrpura oscuro (102 45 145)
Desierto rocoso: malva (146 39 143)

- map_heights: indica la altura del terreno, el relieve u orografía. El mar aparece en un color azul intenso (0 0 253) y el terreno en tonos de gris, desde negro (1 1 1) para altura de nivel del mar hasta casi blanco para las zonas más altas. Todos los colores (excepto el mar) tienen que ser tonos de gris, es decir los tres valores de RGB deben ser iguales.

FICHEROS TGA CON POCA O NINGUNA INFORMACIÓN




Tamaño pequeño (x,y):

- map_trade_routes:
fondo negro (0 0 0) y no necesita nada más. Nadie sabe para qué sirven las líneas blancas, pero se puede prescindir de ellas sin efecto aparente.

- disasters: mismo estilo que map_heights, con tonos de gris y el mar en color azul con otro tono (0 0 124). Lleva pixels de otros colores, se supone que indicando zonas de mayor probabilidad de algunos desastres.
En el mar: azul claro (128 128 255) y azul (0 0 255)(¿tormentas?)
En tierra: rojo (255 0 0) en valles fluviales (¿inundaciones?), morado (128 0 128) en alta montaña (?) y tonos de azul diferentes.
No es seguro que sirva de algo.

Tamaño fijo (256,256):

- water_surface: se puede utilizar directamente el fichero de RTW. Tampoco se ha encontrado su utilidad.

Tamaño casi grande (2x, 2y):

- map_roughness: debería indicar la rugosidad del terreno, pero no se sabe si sirve de algo o no. Similar a map_heights, pero ahora el mar está en negro (0 0 0).

Además existen otros ficheros tga de tipo ornamental: los líderes de las facciones, los mapas de inicio (cuando sale la información de la facción) y los de radar si se quiere que salgan diferentes.

FICHEROS DE TEXTO


- descr_disasters: indica probabilidades de cada tipo de desastres, incluyendo zonas y periodos del año.
- descr_events: acontecimientos históricos o desastres con posición (ej. volcanes o terremotos).
- descr_mercenaries: conjunto de mercenarios alquilables en cada zona, número inicial, máximo y velocidad de rellenado del conjunto.
- descr_regions: nombre de región, nombre de enclave, cultura asignada, rebeldes asignados, colores RGB en map_regions, recursos, nivel agrícola
- descr_regions_and_settlement_name_lookup: listado de todas las regiones y todos los enclaves.
- descr_strat: situación inicial con asignación de regiones a facciones, edificios iniciales, ejércitos iniciales, familias, etc.
- descr_terrain: dimensiones de map_regions.
- descr_win_conditions: condiciones de victoria de cada facción, en campaña larga y corta.

Todos estos ficheros deben ir en una carpeta: Data\world\maps\campaign\nombre_de_la_campaña

Además tenemos que incluir un fichero nombre_de_la_campaña_regions_and_settlement_names con la traducción de todas las regiones y enclaves en la carpeta Data\text.
Además hay que modificar campaign_descriptions en la misma carpeta para que nos aparezcan descripciones de las facciones.

Bueno, creo que esto es todo.

Cualquier tiempo pasado fue anterior.

Tutorial para desempaquetar la interfaz del Rome Total War 07 Mar 2008 13:13 #1862

  • Hereje
Tutorial para aprender a desempaquetar la interfaz del Rome Total War

Autor: Hereje

Origen del tutorial: Caballeros de Europa

*************************************************************

PASOS:

1º Nos descargamos este archivo: AQUÍ

2º Creamos una carpeta nueva en Mis documentos (por ejemplo) con el nombre que queramos y el archivo que nos acabamos de bajar lo pegamos dentro de dicha carpeta:



Yo por ejemplo me he creado la carpeta "Estetica Hereje" y dentro le he pegado el archivo que me acabo de bajar.

3º Dentro de la carpeta "Estetica Hereje", descomprimimos el archivo que nos hemos descargado.
Se hace asi: boton derecho sobre el archivo y "extraer aqui"



Si os fijáis al descomprimir tendremos esto dentro de la carpeta "Estetica Hereje":



4º Ahora hacemos los siguiente: nos vamos a: "C:\Archivos de programa\The Creative Assembly\Rome - Total War\data\packs" y copiamos los dos archivos marcados en rojo ui_1.pak y ui_0.pak



y los pegamos dentro de la carpeta "Estetica Hereje". Cuando los tengamos pegados ejecutaremos el archivo marcado en rojo, el xpak.bat.



5º Una vez hayamos ejecutado el xpak.bat, veremos que se nos habra creado una carpeta llamado DATA y dentro de la DATA, 3 carpetas más: FONTS, SHADERS y UI.



6º Lo siguiente que tenemos que hacer es copiar estas 3 carpetas y pegarlas en la dirección: "C:\Archivos de programa\The Creative Assembly\Rome - Total War\data". Tardara unos minutos en completarse.

7º Para finalizar debemos ir a la dirección: "C:\Archivos de programa\The Creative Assembly\Rome - Total War\data\packs" y borrar los archivos: ui_1.pak y ui_0.pak

*************************************************************

Con esto finaliza el tutorial. Si os vais a la carpeta UI de vuestro juego Rome: Total War veréis que hay muchas carpetas, pues bien muchas cosas de ahi son la interfaz del juego como las unit cards el menu de abajo de una campaña, etc etc. Ahora es question de familiarizarse con esos archivos y saber que son cada uno de ellos.

Re: Tutoriales: modding RTW y M2TW 08 Mar 2008 02:50 #1922

MAPAS DE CAMPAÑA A PARTIR DE PORCIONES DE UNO MÁS GRANDE

Como parece que hay interés en los mapas de campaña, he rescatado este tutorial que hice hace tiempo para la org. Se trata de utilizar un mapa ya existente, recortarlo a la zona que nos interese y agrandarlo para darle más detalles. Veamos cómo se hace (nota: este tutorial se refiere a RTW, pero el sistema de mapas de M2TW es muy similar y se debería poder adaptar fácilmente).

CUESTIONES GENERALES

Preparar la nueva carpeta:
Data\world\maps\campaign\small_map

Debe contener:
- ficheros de texto: descr_disasters, descr_events, descr_mercenaries, descr_regions, descr_regions_and_settlement_name_lookup, descr_strat, descr_terrain, description, unlocked,
- ficheros gráficos tga: disasters (255x156), leader_pic_factionname (as many as factions), map_factionname (as many as factions), map_climates (511x313), map_FE, map_features (255x156), map_ground_types (511x313), map_heights (511x313), map_regions (255x156), map_roughness (510x312), map_trade_routes (255x156), radar_map1 (255x156), radar_map2 (510x312), water_surface (256x256)

Copiar estos ficheros en la nueva carpeta desde Data\world\maps\campaign\imperial_campaign o desde Data\world\maps\base
Los ficheros sin indicación de tamaño no necesitan ser cortados para que la campaña funcione, sólo para un mejor aspecto estético.
Los ficheros map_factionname son sólo para el menú de selección de facción. En caso de que falte para una facción, el juego usa map_FE

Herramientas: Adobe Photoshop e ImageReady (esto lo hice con la versión 7, pero debería funcionar con posteriores y con programas análogos)
Consejos generales:
- Cortar sólo en una dirección cada vez.
- Guardar el corte exitoso en otra carpeta (tantas versiones como se hagan)
- Cortar todos los mapas al mismo tiempo.
- Cambiar los ficheros de texto al mismo tiempo.

Como ejemplo para el tutorial vamos a hacer un mapa de la península griega, con la mayor parte de Asia Menor y Chipre, a partir del mapa de RTW original.

CORTAR LOS MAPAS

CAPÍTULO 1. CORTE AL ESTE

Proceso 1. Abrir map_regions a la vez con Photoshop e ImageReady.
Coger la herramienta slice en el menú de herramientas de Photoshop (Figura 1).

Hacer un corte (mouse click y arrastrar desde la esquina superior izquierda) de la altura total (156 pixels) hasta el límite este del mapa.
Doble click en el icono al lado del número 1 de la porción y vemos la información de la porción: anchura 210 pixels (Figura 2), punto de partida (0,0).

En ImageReady tenemos la misma división en dos porciones. Tomar la herramienta de selección de slice, click sobre el símbolo de slice (Figura 3).

En el menú Select, opción Create Selection from Slice.
En el menú Image, crop. La porción no seleccionada (número 2 en el ejemplo) se borra y el mapa tiene ahora un tamaño 210x156.
En Photoshop guardar el nuevo map_regions como tga, 24 bits/pixel.

Proceso 2. Repetir los pasos del proceso 1 con los ficheros disasters, map_features, map_trade_routes y radar_map1.

Proceso 3. Repetir los pasos del proceso 1 con map_roughness y radar_map2, pero dando a la porción una altura total (312 pixels) y 420 pixels de ancho.

Proceso 4. Repetir los pasos del proceso 1 con map_climates, map_heights y map_ground_types, dando a la porción una altura total (313 pixels) y 421 pixels de ancho.

Proceso 5. Repetir los pasos del proceso 1 con water_surface.
El tamaño de la porción debe ser proporcional al corte en map_regions: ancho 256*210/255 = 210.
Una vez que el nuevo mapa tiene un tamaño 210x256, es necesario reescalarlo a 256x256.
Para ello en el menú Image de Photoshop, Image size (Figura 4).

Quitar la opción constrain proportions. Colocar la nueva anchura (256) en pixels. En las resample image options seleccionar nearest neighbor (Figura 5). OK.

Este es el método para reescalar cualquier mapa tga. La opción nearest neighbor option es necesaria para mantener la paleta de colores.
Guardar como water_surface.tga.

(nota: tiempo después de haber hecho el tutorial, se descubrió que se puede usar el fichero original, ya que no parece servir para nada útil)

Proceso 6. Es aconsejable cortar también un map_factionname al mismo tiempo.
Estos mapas tienen un tamaño 384x237. Mi consejo es cortar uno con la zona a agrandar completamente vacía. Por eso escogí map_britons.
Repetir los pasos del proceso 1, con la anchura de la porción proporcional: 384*210/255 = 316.
Con todas estas operaciones tenemos un conjunto completo de ficheros de mapas funcionales.

CORTAR LOS MAPAS (2)

CAPÍTULO 2. CORTE AL NORTE

Lo primero, hacer una copia de seguridad de la primera carpeta small_map.

Proceso 1. Abrir map_regions con Photoshop e ImageReady.
Con la herramienta slice hacer una porción (mouse click y arrastrar desde la esquina inferior izquierda) de la anchura total (210 pixels) hasta el límite norte del nuevo mapa.
Doble click sobre el icono al lado del número 1 de la porción y tenemos su información: altura 90 pixels, punto de partida (0,66).
En ImageReady seleccionar la porción y Create Selection from Slice.
En el menú Image, crop. El mapa tiene ahora un tamaño 210x90.
En Photoshop guardar el nuevo map_regions como tga.

Proceso 2. Repetir los pasos del proceso 1 con los ficheros disasters, map_features, map_trade_routes y radar_map1.

Proceso 3. Repetir los pasos del proceso 1 con map_roughness y radar_map2, pero dando a la porción la anchura total (420 pixels) y 180 pixels de altura, punto de partida (0,132).

Proceso 4. Repetir los pasos del proceso 1 con map_climates, map_heights y map_ground_types, dando a la porción la anchura total (421 pixels) y 181 pixels de altura, punto de partida (0,132).

Proceso 5. Repetir los pasos del proceso 1 con water_surface.
El tamaño de la porción debe ser proporcional al corte en map_regions: altura 256*90/156 = 148. posición de partida (0,108), anchura 256, altura 148.
Una vez que el mapa tiene tamaño 256x148, hay que reescalarlo a 256x256, con la opción nearest neighbor.
Guardar como water_surface.tga.

Proceso 6. map_britons tiene un tamaño 316x237.
Repetir los pasos del proceso 1, con la altura proportional: 237*90/156 = 137. Posición de partida (0,100), ancho 316, altura 137.


CAPÍTULO 3. CORTE AL SUR

Como siempre, copia de seguridad de la carpeta small_map.
Las operaciones son exactamente las mismas que en el capítulo 2, pero el corte debe comenzar en la esquina superior izquierda de los mapas. Esto significa que el punto de partida será (0,0).
Las dimensiones de las porciones para los diferentes mapas son las siguientes:

Ficheros: map_regions, disasters, map_features, map_trade_routes y radar_map1.
Dimensiones: 210x59.

Ficheros: map_roughness y radar_map2.
Dimensiones: 420x118.

Ficheros: map_climates, map_heights y map_ground_types.
Dimensiones: 421x119.

Fichero: water_surface.
Dimensiones de la porción: 256x170.
Reescalar a 256x256.

Fichero: map_britons.
Dimensiones: 316x90.

CAPÍTULO 4. CORTE AL OESTE

De nuevo, copia de seguridad de la carpeta small_map.
Ahora las operaciones son exactamente las mismas que en el capítulo 1, pero seleccionaremos siempre la porción número 2.
Las dimensiones y puntos de partida de las porciones número 2 para los diferentes mapas son las siguientes:

Ficheros: map_regions, disasters, map_features, map_trade_routes y radar_map1.
Punto de partida: (110,0)
Dimensiones: 100x59.
Los resultados pueden verse en la Figura 6.

map_regions tiene algunos trozos de regiones eliminadas (ver Figura 6) que hay que eliminar para evitar la existencia de zonas no codificadas.
La manera más sencilla: herramienta eyedropper (Figura 7), click sobre el color de la región vecina, herramienta lápiz (Figura 7) y pintar esas partes como si correspondieran a esa región.

Los resultados se muestran en la Figura 7. Queda también una región sin enclave (esquina superior izquierda). Ponemos un sólo pixel, indicado con un punto rojo en la Figura 7.

Ficheros: map_roughness y radar_map2.
Punto de partida: (220,0)
Dimensiones: 200x118.

Ficheros: map_climates, map_heights y map_ground_types.
Punto de partida: (220,0)
Dimensiones: 201x119.

Fichero: water_surface.
Punto de partida: (134,0)
Dimensionesde la porción: 122x256.
Reescalar a 256x256.

Fichero: map_britons.
Punto de partida: (166,0)
Dimensiones: 150x90.

En este punto deberíamos tener un conjunto de mapas completamente funcional. El único problema es que este mapa tiene el mismo tamaño que la pequeña parte de mapa global original. Podemos agrandarlo para tener sitio para más provincias y facciones.

AGRANDAR LOS MAPAS

Es lógico que un mapa provincial esté diseñado para que presente más detalles que el original. Será importante entonces agrandarlo.
Mi consejo es agrandarlo hasta el tamaño original como máximo, sea en anchura o altura.

Proceso 1. Abrir map_regions con Photoshop.
En el menú Image, elegir Image Size. Click opción Constrain Proportions (vease Figura 4) y nearest neighbor.
Poner anchura 255 y la altura cambiará automáticamente a 150. Estas dimensiones son iguales o menores que las del mapa original.
Los pixels que representan enclaves y puertos son ahora rectángulos de varios pixels. Es necesario reducirlos a un solo pixel.
Usar las herramientas eyedropper y pencil para pintar los pixels en exceso del color de la región.

Proceso 2. Reescalar map_features y map_trade_routes de la misma forma. Los mapas finales presentan ríos y rutas como líneas de 2-3 pixels de ancho. Con eyedropper seleccionar el color negro del fondo y con la herramienta pencil (lápiz) pintar (eliminar) el grosor de esas líneas, teniendo en cuenta la conectividad entre pixels.

Proceso 3. Reescalar disasters y radar_map1 de la misma forma.
El resultado final será este:

nota: no sé que pasa con esta imagen, pero no aparece al clickar. ¡maldito imageshack!!!!!!

Proceso 4. Reescalar map_roughness y radar_map2. En este caso la opción constrain image produce un tamaño de mapa 510x301. Entonces deseleccionar la opción constrain image y cambiarlo al tamaño correcto 510x300.

Proceso 5. Reescalar map_heights, map_ground_types y map_climates a 511x301 (sin la opción constrain image).

Proceso 6. Reescalar map_britons a 372 pixels de ancho. Copiar, pegar y renombrarlo tantas veces como facciones jugables se vayan a incluir en el mod. En este caso, como ejemplo, he puesto map_seleucid, map_illyria (esto era en RTW 1.0, en RTW 1.5 es map_greek_cities), map_macedon y map_thrace.

Continuará

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 09 Mar 2008 10:54 #2001

MAPAS DE CAMPAÑA A PARTIR DE PORCIONES DE UNO MÁS GRANDE (y 2)

MODIFICACIÓN DE LOS FICHEROS DE TEXTO

Es tiempo de decidir el nombre de nuestra nueva campaña. Por el tipo de mapa le llamaremos Grecia.

Editaremos los siguientes ficheros en la carpeta de la nueva campaña (Data\world\maps\campaign\Grecia):
- descr_disasters
- descr_events
- descr_mercenaries
- descr_regions
- descr_regions_and_settlement_names_lookup
- descr_strat
- descr_terrain
- description

Editaremos o crearemos otros ficheros en diferentes carpetas:
- lookup_campaign_descriptions (en Data)
- campaign_descriptions (en Data\text)
- Grecia_regions_and_settlement_names (hay que crearlo en Data\text)

PASOS A SEGUIR

1) descr_terrain: es fácil pero muy importante. Es necesario poner las dimensiones correctas de map_regions al principio del fichero:
dimensions
{
	width  255
	height  150
}


2) descr_regions: si no me equivoco, el mapa tiene 28 regiones con los colores originales. Debemos entonces buscar los nombres correctos de las regiones y borrar las demás del archivo.

3) descr_regions_and_settlement_names_lookup: lo mismo con este archivo, teniendo en cuenta que aquí deben aparecer tanto las regiones como los enclaves. Este es el resultado:
Illyria
Thrace
Dalmatia
Pontus
Paionia
Macedonia
Propontis
Bithynia
Galatia
Cappadocia
Epirus
Apulia
Phrygia
Cilicia
Thessalia
Ionia
Syria
Aetolia
Attica
Peloponnesus
Lycia
Cyprus
Phoenicia
Laconia
Coele_Syria
Rhodos
Crete
Judaea
Segestica
Tylis
Salona
Sinope
Bylazora
Thessalonica
Byzantium
Nicomedia
Ancyra
Mazaka
Apollonia
Tarentum
Pergamum
Tarsus
Larissa
Sardis
Antioch
Thermon
Athens
Corinth
Halicarnasus
Salamis
Sidon
Sparta
Damascus
Rhodes
Kydonia
Jerusalem

(Tras escribir esto he visto que este fichero no es imprescindible, aunque nos puede servir como guía rápida para localizar nombres de regiones y enclaves)

4) Grecia_regions_and_settlement_names: debemos crear este fichero en Data\text copiando el análogo imperial_campaign_regions_and_settlement_names. En este fichero deben aparecer los mismos nombres que en descr_regions_and_settlement_names_lookup.

5) descr_events: Para simplificar simplemente borramos todos los eventos asociados a posiciones en el mapa. Podemos añadirlos después si es necesario.

6) descr_mercenaries: de nuevo tenemos que borrar todas las regiones que no están presentes en nuestro mapa. Este es el resultado:
pool Armenia
	regions Pontus Cappadocia			
	unit merc sarmatian cavalry,			exp 0 cost 1200 replenish 0.08 - 0.15 max 1 initial 0
	unit merc horse archers,			exp 0 cost 800 replenish 0.1 - 0.18 max ` initial 0
	unit merc eastern infantry,			exp 0 cost 650 replenish 0.15 - 0.25 max 3 initial 1

pool Illyria
	regions Illyria Dalmatia			
	unit merc illyrian,			exp 1 cost 650 replenish 0.125 - 0.37 max 3 initial 1

pool Thrace
	regions Thrace Propontis Bithynia			
	unit merc peltast,			exp 1 cost 550 replenish 0.125 - 0.25 max 1 initial 0
	unit merc thracian,			exp 1 cost 800 replenish 0.125 - 0.25 max 3 initial 1
	unit merc bastarnae,			exp 0 cost 1700 replenish 0.05 - 0.08 max 1 initial 0
	unit merc greek hoplites,			exp 0 cost 850 replenish 0.03 - 0.07 max 1 initial 0

pool Northern_Greece
	regions Paionia Macedonia Thessalia			
	unit merc peltast,			exp 0 cost 600 replenish 0.05 - 0.08 max 1 initial 0
	unit merc illyrian,			exp 0 cost 650 replenish 0.05 - 0.08 max 1 initial 0
	unit merc thracian,			exp 0 cost 800 replenish 0.05 - 0.08 max 1 initial 1
	unit merc greek hoplites,			exp 0 cost 850 replenish 0.05 - 0.08 max 1 initial 0

pool Galatia
	regions Galatia			
	unit merc barbarian infantry,			exp 2 cost 800 replenish 0.1 - 0.15 max 2 initial 1
	unit merc barbarian cavalry,			exp 0 cost 800 replenish 0.05 - 0.08 max 1 initial 0

pool Greece
	regions Epirus Aetolia Attica Peloponnesus		
	unit merc peltast,			exp 1 cost 600 replenish 0.1 - 0.15 max 2 initial 1
	unit merc cretan archers,			exp 0 cost 750 replenish 0.05 - 0.08 max 1 initial 0
	unit merc greek hoplites,			exp 1 cost 850 replenish 0.1 - 0.15 max 2 initial 1

pool Southern_Italy
	regions Apulia		
	unit merc samnite,			exp 1 cost 750 replenish 0.1 - 0.15 max 2 initial 1
	unit merc greek hoplites,			exp 0 cost 850 replenish 0.05 - 0.08 max 1 initial 0

pool Syria
	regions Syria Coele_Syria Phoenicia Judaea							
	unit merc peltast,			exp 0 cost 600 replenish 0.05 - 0.08 max 1 initial 0
	unit merc eastern infantry,			exp 0 cost 650 replenish 0.125 - 0.25 max 3 initial 1
	unit merc arab cavalry,			exp 0 cost 750 replenish 0.05 - 0.08 max 1 initial 0
	unit merc bedouin,			exp 0 cost 700 replenish 0.05 - 0.08 max 1 initial 1
	unit merc bedouin archers,			exp 0 cost 750 replenish 0.05 - 0.08 max 1 initial 0
	unit merc elephants,				exp 0 cost 4000 replenish 0.005 - 0.015 max 1 initial 0

pool Cilicia
	regions Cilicia Cyprus			
	unit merc cilician pirate,			exp 0 cost 620 replenish 0.05 - 0.08 max 1 initial 1

pool Sparta
	regions Laconia		
	unit merc peltast,			exp 0 cost 600 replenish 0.1 - 0.15 max 1 initial 0
	unit merc greek hoplites,			exp 3 cost 950 replenish 0.02 - 0.03 max 1 initial 0

pool Aegean
	regions Rhodos Crete Lycia Phrygia Ionia			
	unit merc peltast,			exp 0 cost 600 replenish 0.06 - 0.125 max 2 initial 1
	unit merc thracian,			exp 0 cost 800 replenish 0.05 - 0.1 max 1 initial 0
	unit merc rhodian slingers,			exp 1 cost 750 replenish 0.06 - 0.125 max 2 initial 1
	unit merc cretan archers,			exp 1 cost 750 replenish 0.07 - 0.15 max 2 initial 1
	unit merc greek hoplites,			exp 0 cost 850 replenish 0.08 - 0.15 max 2 initial 1



7) lookup_campaign_descriptions: este fichero está en el directorio Data y sólo indica las campañas que aparecerán en el menú (creo que no es necesario, pero por si acaso...). Se ponen estas dos líneas al final:
GRECIA_TITLE
GRECIA_DESCR


8) campaign_descriptions: ahora debemos traducir la campaña para hacerla aparecer en el menú. Al final del fichero debemos escribir algo así:
{GRECIA_TITLE}Campaña en Grecia
{GRECIA_DESCR}La descripción no aparece en el menú. 

{GRECIA_MACEDON_TITLE}Macedonia
{GRECIA_MACEDON_DESCR}Insertar aquí la descripción de la facción.

Hay que repetir las dos últimas líneas para todas las facciones jugables en la campaña. He seleccionado seis:
Macedon, Egypt, Pontus, Seleucid, Greek cities and Thrace.
Así aparece este fichero en la interfaz del usuario:

Se puede ver el título y la posición donde la descripción de la facción aparecerá.
He copiado y renombrado el corte de map_britons tantas veces como facciones tenemos:
map_illyria (map_greek_cities en RTW 1.5), map_macedon, map_seleucid, map_thrace, map_egypt y map_pontus.
Las flechas muestran cómo estos mapas tienen que ser modificados para mostrar la posición de partida de cada facción.

LA MODIFICACIÓN DE descr_strat

Este es probablemente el fichero más difícil, ya que contiene una gran cantidad de información. Vamos a modificarlo para mantener toda la información acerca de familias, pero simplificando al máximo todo el resto.

a) Selección de facciones: al comienzo del fichero debemos seleccionar las facciones jugables, justo debajo del nombre de la campaña. Este es el resultado:
campaign		Grecia
playable
	egypt
	seleucid
	greek_cities
	macedon
	pontus
	thrace
end
unlockable
end
nonplayable
	romans_senate
	slave
end


start_date	-270 summer
end_date	14 summer


b) landmarks y recursos: en una paso inicial los eliminamos todos para mantener el fichero lo más simple posible.

c) Facciones desaparecidas:
Después es necesario eliminar completamente toda la información acerca de las facciones desaparecidas: spain, gauls, germans, britons, scythia, dacia, armenia, parthia, numidia, carthage, romans_julii, romans_scipii y romans_brutii. La única excepción son los brutos, ya que la región de Apulia permanece en el mapa. Mantendremos por tanto la información sobre esta región.

d) romans_senate: esta facción está en el mapa sólo para hacer funcionar la campaña (no necesario en RTW 1.5). La reducimos al máximo y desaparecerá al comienzo de la campaña. Es necesario eliminar su región y toda la familia del líder, que tendrá sólo su unidad de guardaespaldas.
Es resultado es:
 faction	romans_senate, comfortable napoleon
denari	5000

character	Decius Maxentius, named character, leader, command 0, influence 0, management 0, subterfuge 0, age 60, , x 95, y 71 
traits GoodCommander 1, PoliticsSkill 2, GoodAdministrator 2, Austere 1
ancillaries doctor
army
unit		roman generals guard cavalry early				exp 0 armour 0 weapon_lvl 0
 


e) Regiones desaparecidas: en las facciones que quedan (incluida los rebeldes) es necesario dejar sólo las regiones presentes en el mapa. El resultado final debe ser:
Macedon: Macedonia, Paionia, Thessalia y Peloponnesus
Egypt: Cyprus, Judaea y Phoenicia
Seleucid: Syria, Coele_Syria, Cilicia y Ionia
Pontus: Pontus y Cappadocia
Greek cities: Laconia, Rhodos, Prhygia y Aetolia
Thrace: Thrace
Slave: Illyria, Propontis, Attica, Lycia, Epirus, Crete, Bithynia, Dalmatia, Galatia y Apulia. Para Apulia movemos la entrada completa del enclave debajo del epígrafe de la facción rebelde. Como no es una región importante podemos incluso reducir su población y el número de edificios, de esta manera:
 faction	slave, balanced smith
denari	10000
settlement
{
	level town
	region Apulia

	year_founded 0
	population 1500
	settlement_tax 51
	plan_set default_set
	faction_creator romans_julii
	building
	{
		type core_building governors_house
	}

}
 


f) Corrección de map_regions: este es el momento de general el fichero map_regions.tga final por corrección de nuestro mapa inicial. Intentaremos jugar nuestra campaña, llegaremos a la pantalla de selección de facción y cuando intentemos comenzar, el juego nos devolverá al menú de selección de campaña. Si se está usando la opción –show_err, al salir se recibirá un mensaje acerca de la posición incorrecta del líder de romans_senate, ya que es la primera posición indicada en descr_strat. (nota: en el nuevo ordenador y con RTW 1.5 he tenido problemas para recibir este tipo de mensajes)
Lo más importante es que se ha creado un fichero llamado corrected_regions.tga en el directorio raíz de Rome – Total War. Abrimos a la vez este fichero y nuestro map_regions.tga en Photoshop y los comparamos:
La costa está mucho mejor en corrected_regions, más detallada y, probablemente, se corresponde mejor con los otros mapas. Pero se puede ver (marcado en rojo) que algunos puertos (pixels blancos) han desaparecido y otros están lejos de la costa. Debemos pintarlos pues en la posición correcta, teniendo cuidado de pintar los incorrectos del color de la región. Renombramos este fichero como map_regions y lo movemos a la carpeta de la campaña, sustituyendo al mapa original.

g) Colocando la posición de los personajes:
Con este fichero map_regions final, debemos anotar las posiciones de todos los enclaves, para poner los ejércitos en ellos. ¿Cómo? Se abre map_regions en Photoshop y se abreWindow>Info (marcado en rojo en el menú de la figura siguiente).

Si pasamos cualquier herramienta (prefiero el eyedropper para prevenir cualquier accidente) por el mapa, la posición se indicará en la ventana de información. Estamos buscando la posición de Esparta, enclave de Laconia (flecha roja). En Info vemos que la posición es x 72, y 110. Sin embargo, Photoshop considera altura cero la parte superior de la imagen, mientras que el juego considera la parte inferior. Como nuestro mapa tiene 150 pixels de alto, y el primer pixel es y 0, debemos calcular la posición correcta como 149-y. Para Esparta esta posición será x 72, y 39 (149-110=39). Hay que hacer esto con todos los enclaves del mapa.
Como queremos que el senado desaparezca, ponemos su ejército fuera de cualquier enclave, en un punto de Apulia. Usamoe el punto x 12, y 62 de Photoshop, que será x 12, y 87 en el juego. Comparamos la nueva entrada con la original de antes.
 faction	romans_senate, comfortable napoleon
denari	5000

character	Decius Maxentius, named character, leader, command 0, influence 0, management 0, subterfuge 0, age 60, , x 12, y 87 
traits GoodCommander 1, PoliticsSkill 2, GoodAdministrator 2, Austere 1
ancillaries doctor
army
unit		roman generals guard cavalry early				exp 0 armour 0 weapon_lvl 0

 

Ahora, si intentamos de nuevo la campaña, tenemos el mismo retorno al menú de selección de campaña, pero el mensaje de error se refiere a un personaje macedonio, lo que significa que la posición de Decius Maxentius es correcta.

Dejamos en descr_strat sólo los nombres de personajes (eliminamos todos los generales que no son de familia), espías, diplomáticos y almirantes. Ponemos las coordenadas de los enclaves como posiciones para los ejércitos y puntos adicionales en las regiones correctas para el resto de personajes.
En teoría este descr_strat modificado debería funcionar, pero si intentamos la campaña de nuevo tendremos el consabido regreso al menú con el mensaje de una posición no válida, en mi caso la de Kiya (egypt) x 231, y 32, que quiere decir x 231, y 117 en Photoshop.

h) Corrección de errores: este tipo de errores proviene del tipo de terreno donde el personaje está colocado. Miremos la siguiente figura:

La posición correspondiente en map_ground_types será aproximadamente el doble, x 462, y 234. Si miramos esa posición veremos que hay montañas. Debemos buscar un punto verde cercano, marcado con una X roja en la figura. Las coordenadas son x 456, y 234, correspondientes a x 228, y 117 en map_regions y a x 228, y 32 en descr_strat. Si ponemos estos valores para la posición de Kiya obtenemos un nuevo error, pero ahora sabemos que la posición es válida.
Es necesario resolver estos problemas uno a uno.

Tuve que resolver 5 errores más:
- Posiciones de 2 ejércitos tracios (en descr_strat)
- Posiciones de 2 enclaves (Crete e Illyria, en map_regions) y los correspondientes ejércitos rebeldes (en descr_strat)
- El puerto ilirio illyran (en map_regions) porque olvidé pintar un pixel del color de la región.

Después de corregir estos errores, la campaña comienza, como puede verse en estas imágenes.

Este es el primer evento, la eliminación del senado como facción.
El radio de movimiento de un ejército de macedonia.

El extraño effecto en “Tierra Santa”

Una imagen de Rodas.
La nieve en las montañas de Epiro tras el primer turno.
Los egipcios atacan el imperio seleúcida.
Algunos turnos más tarde la campaña funciona todavía.

A partir de este conjunto de mapas funcionales, es posible mejorar la campaña:

- Añadiendo nuevas regiones (ya hay un tutorial al respecto)
- Añadiendo maravillas y recursos en in descr_strat. Recomiendo copiar esa parte del descr_strat original y modificar las coordenadas.
- Añadiendo nuevas facciones (modificadas o no). En ese caso es aconsejable usar también el fichero descr_strat original para copias y pegar árboles genealógicos de las nuevas facciones, para estar seguros de que los nombres y las unidades en los ejércitos son correctos.

Estoestó, estoestó, esto es tooooodo amigos.

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 14 Mar 2008 00:56 #2348

UNA GUÍA DE SCRIPTING PARA PRINCIPIANTES

Adaptado de un tutorial de Epistolary Richard: http://forums.totalwar.org/vb/showthread.php?t=46738

Los scripts permiten cambiar algunos aspectos de la mecánica del juego, imposible de hacer por otros medios. Dicho así queda muy interesante, así que veamos...

¿Qué es un script?

Es un fichero de texto simple que contiene una serie de comandos. Los podemos dividir en dos tipos de script&#058; scripts de campaña y scripts de “muéstramelo”.

Los de campaña son aquellos que se lanzan desde el principio de la campaña, como ocurre con la campaña prólogo de RTW. En RTW estos scripts tenían el inconveniente de que no podían volver a lanzarse a partir de una partida guardada, por lo que no se han usado prácticamente para nada. Esto sin embargo se ha arreglado en M2TW y se puede trabajar con ellos muy fácilmente.

Los de “muéstramelo” son aquellos que activa el jugador a través del botón “muéstramelo” de la interfaz del consejero. Se pensaron para usarse en demostraciones de cómo funcionan algunos aspectos del juego, pero los modders lograron encontrar el modo de usarlos para otros fines.

Dentro de ellos podemos distinguir dos tipos: los instantáneos y los continuos (llamados de tipo background). Los primeros producen una acción o efecto como respuesta a una circunstancia del juego, por ejemplo nos dan una recompensa por haber conquistado una ciudad. Los continuos son los más usados en campañas donde se quiere introducir un mayor grado de complejidad y de control sobre las acciones del jugador humano, con reacciones de la IA. La mayor limitación es que el jugador debe activarlo de alguna forma. Se han encontrado trucos para hacerlos lo más automatizados posible, pero aún así sigue siendo un problema evitar que pueda haber fisuras en el sistema de lanzamiento.

Un punto importante para el uso de estos scripts es evitar interferencias del consejero original del RTW. Para ello lo mejor es cambiar la “verbosidad” del consejero en el fichero export_descr_advice.txt a 3 para todos los consejos del RTW original. De esta forma sólo en modo “novato total” se lanzarán los consejos, y no creo que nadie que juegue un mod tenga el consejero a ese nivel (porque nos volvería locos).
Este es un ejemplo:
;------------------------------------------
AdviceThread Character_Details_Be_A_General_Thread
    GameArea Campaign

    Item Character_Details_Be_A_General_Text_01
        Suppressible y 
        Uninhibitable
        Verbosity  3 
        Threshold  1 
        MaxRepeats  0 
        RepeatInterval  3 
        Attitude Normal
        Presentation Default
        Parameter CharacterName
        Title Character_Details_Be_A_General_Text_01_Title
        Text Character_Details_Be_A_General_Text_01_Text1
        Text Character_Details_Be_A_General_Text_01_Text2
        Text Character_Details_Be_A_General_Text_01_Text3


Componenentes de un script de tipo “muéstramelo”

Para que funcione un script de este tipo se necesitan varios componentes:
- un lanzador (Trigger), contenido en export_descr_advice.txt
- un hilo de consejo (AdviceThread), también contenido en export_descr_advice.txt
- el script, un fichero de texto simple contenido en la carpeta data\scripts\show_me\
- normalmente un script suele contener también información para el jugador, que irá insertada en el fichero export_advice.txt dentro de la carpeta data\text

El “lanzador” dice al juego qué acciones o eventos debe buscar para evaluar si el consejero debe aparecer.

El hilo de consejo controla varios parámetros, como el número de veces que puede activarse, etc.

Es script es una serie de comandos que funcionan cuando el jugador hace click sobre el botón “muéstramelo”.

Lo mejor para comprender esto es hacer un script sencillo. Vamos a insertar un sistema “clientelar” en ITW (estaba, pero se eliminó en versiones posteriores) adaptando una idea del propio Epistolary Richard.

Paso 1 – El “lanzador”

Los lanzadores están contenidos en la sección inferior de export_descr_advice.txt. El que vamos a incluir es un lanzador complejo, para que se vea las enormes posibilidades de esta herramienta. Esta es la estructura:
;------------------------------------------ Client Kingdom trigger
Trigger 2151_Governor_Recruits_Armenia_Chieftain_Trigger
    WhenToTest SettlementTurnStart

    Condition SettlementIsLocal 
          and SettlementName Corduba               
          and Treasury > 7000
          and GovernorInResidence
          and SettlementLoyaltyLevel = loyalty_happy
          and not I_SettlementOwner Corduba = armenia
          and RandomPercent < 11

    AdviceThread Governor_Recruits_Armenia_Chieftain_Thread  0


No vamos a explicar con detalle ahora cada línea, pero hay tres partes principales:
- Cuándo (WhenToTest): nos dice el momento en que el juego comprobará si se cumplen las condiciones. En este caso al principio del turno de un enclave.
- Condiciones: pueden ser muchas y muy variadas. En este caso hay nada menos que 7 condiciones, y se tienen que cumplir todas a la vez para que se lance el script. Resumiendo, el enclave debe ser Corduba (capital turdetana), debe pertenecer al jugador que no debe jugar con turdetanos (es por tanto un enclave conquistado), su tesoro debe tener más de 7000 denarios, debe haber un gobernador en el enclave, la población debe ser feliz y se introduce un cierto carácter aleatorio.
- Hilo de consejero al que hay que acudir si se dan todas esas condiciones en el momento oportuno.

Paso 2 – El hilo de consejo

Están en la parte superior de export_descr_advice.txt. Es lo que conecta el lanzador con el script que queremos hacer funcionar. Este es el contenido del hilo nuevo:
;------------------------------------------ Client Kingdom advice below		
AdviceThread Governor_Recruits_Armenia_Chieftain_Thread		
	GameArea Campaign	

	Item Aumento_Devotio_Text_01	
		Uninhibitable
		Verbosity  0 
		Threshold  1  
		Attitude Normal
		Presentation Default
		Title Aumento_Devotio_Text_01_Title
     	Script scripts\show_me\armenia2.txt	
		Text Aumento_Devotio_Text_01_Text1 


El nombre debe ser el mismo que tenemos en el lanzador y tenemos información variada. A destacar ahora: que es un consejo para la campaña (los hay para batalla), que no se puede evitar, que tiene el nivel más bajo de verbosidad (saldrá siempre), tiene un título y un texto, y en medio el enlace al fichero del script propiamente dicho: armenia2.txt.

Paso 3 – El script

Ahora es cuestión de crear un fichero de texto que se llame armenia2.txt y colocarlo en la carpeta data\scripts\show_me\
¿Cuál es el objetivo? Queremos que cuando se den las condiciones antes reseñadas, se ofrezca al jugador humano la posibilidad de reclutar un guerrero devotio de la facción que ha conquistado, en este caso de los turdetanos. Este es el contenido del script&#058;
script
declare_show_me

console_command create_unit Corduba "merc devotio turdetano" 1

end_script

Si el jugador hace click en el botón “muéstramelo” se creará en Corduba una unidad de mercenarios devotos turdetanos (esta unidad tiene que estar definida en export_descr_units, evidentemente). Pero ¿tenía otra opción? Para eso está el texto informativo:

Paso 4 – El texto informativo

El humano tiene que decidir si quiere la unidad o no. Para ello le tenemos que decir que tiene esa opción, y eso se hace en el archivo export_advice.txt en la carpeta data\text.

{Aumento_Devotio_Text_01_Title}	Aumenta la devoción hacia ti

{Aumento_Devotio_Text_01_Text1}	La lealtad de la población hacia tí aumenta la devotio. Una unidad se ha unido a tus fuerzas. Para aceptarla pulsa el botón 'Muéstralo'.


Es decir, estos son el título y el texto a los que hace referencia el hilo de consejo. Aquí informamos al jugador de lo que está pasando, pero para que pase debe lanzar el script con el botón. Si no lo hace, la unidad no se creará porque el script no está lanzado.

Continuará.

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 14 Mar 2008 19:23 #2396

HERRAMIENTAS PARA HACER SCRIPTS

Más de uno pensará: "Sí, muy bonito lo que nos ha contado en la anterior entrega, pero ¿cómo sé yo qué órdenes tengo que dar en el script?"
Pues a eso vamos.

Para tener las listas completas (demasiado completas) de todo lo que se puede hacer con scripts, lo mejor es bajarse esta documentación.
http://www.totalwar.org/Downloads/Rtw_U ... I_docs.zip
Digo demasiado completas porque luego la investigación de los modders ha demostrado que algunos de esos elementos no funcionan. Para ver cuáles se puede consultar este hilo:
http://forums.totalwar.org/vb/showthread.php?t=46877

Contiene la información relativa a cuatro aspectos imprescindibles: eventos, condiciones, y dos tipos de comandos, los de script y los de consola.
Los comandos son órdenes que le damos al juego para que ejecute acciones de cualquier tipo. El momento y las circunstancias en las que tiene que ejecutarlas vienen dadas por eventos y condiciones.

Eventos

Son momentos dados del juego o situaciones del mismo que se producen por azar o por acciones del jugador. Veamos ejemplos tomados del fichero docudemon_events.txt:

Un momento del juego: comienzo del turno de una facción. Lo que nos interesan son las tres primeras líneas que nos dan, respectivamente, la sintaxis del evento (muy importante para no cometer errores), la explicación del mismo y los datos adicionales que debemos aportar, en este caso la facción de la que se trata.
---------------------------------------------------
Identifier:         FactionTurnStart
Event:              A Faction has started its turn
Exports:            faction
Class:              ET_FACTION_TURN_START
Author:             Guy
---------------------------------------------------


Un evento del juego: un general captura un enclave. Podemos acotarlo dando el nombre del general, la región o el enclave, la facción a la que pertenece, etc.
---------------------------------------------------
Identifier:         GeneralCaptureSettlement
Event:              A General has captured a settlement
Exports:            nc_character_record, character_record, faction, region_id, character_type, target_settlement, settlement, rsam
Class:              ET_GENERAL_CAPTURE_SETTLEMENT
Author:             Guy
---------------------------------------------------


Para que el script compruebe que se produce ese evento debemos darle la orden monitor_event. Después de especificar el evento y las posibles condiciones adicionales, debemos darle los comandos pertinentes y finalizar la comprobación. Este es un ejemplo:
	monitor_event SettlementTurnStart SettlementName Aquincum

		set_counter switch 101

	end_monitor

Existen dos modos de terminar la comprobación: end_monitor y terminate_monitor. La primera da opción a volverla a hacer. Es decir, cuando en el siguiente turno vuelva corresponderle al mismo enclave, volverá a suceder el poner el contador a 101 (luego veremos qué es eso). Con terminate_monitor, una vez que el evento ha sucedido y se ha ejecutado el comando, no se vuelve a comprobar.

Condiciones

Igual que en el caso de los eventos, el script puede comprobar si se cumplen una serie de condiciones. Las hay de todo tipo, según se recoge en docudemon_conditions.txt. Este es un ejemplo de condición:
 ---------------------------------------------------
Identifier:              I_TurnNumber
Trigger requirements:    
Parameters:              logic token, turn number
Sample use:              I_TurnNumber > 50
Description:             The current turn number (starts at 0)
Battle or Strat:         Either
Class:                   TURN_NUMBER
Implemented:             Yes
Author:                  Guy
--------------------------------------------------- 

Ahí tenemos la sintaxis correcta junto a los datos adicionales que se requieren, en este caso un signo lógico (> < =) y un número que se refiere al turno en el que se está.

Estas condiciones pueden complementar a un evento. Este es un ejemplo de ITW:
 	monitor_event FactionTurnStart FactionType carthage
		and I_TurnNumber = 1

		console_command create_unit Saguntum "mastieno sm" 1

		terminate_monitor
	end_monitor 

En este trozo de script se pide que se compruebe el evento de que sea el principio de turno de la facción cartaginesa y a la vez la condición de que sea en el turno 1. Cuando se cumple esa condición, entonces el script crea una unidad de mastienos en Saguntum. Aquí se establece que la comprobación no se repita más (terminate_monitor) para evitar que el script pierda el tiempo en algo inútil.

Las condiciones se pueden también comprobar por sí solas, sin la indicación de un evento. Para eso tenemos el comando monitor_conditions:
 	monitor_conditions I_CharacterTypeNearTile romans_julii named_character 10 137,124
		and I_TurnNumber < 13

 		console_command diplomatic_stance dacia romans_julii war

	end_monitor 

Le decimos que compruebe si en cualquier momento (no asociado a ningún evento en particular) un miembro de la familia de los julios está a menos de 10 (pixels?) de la posición (137,124) siempre que además se esté en un turno anterior al 13. Si esto ocurre hay que forzar el estado de guerra de los padanos con los julios. Como se pretende que estas condiciones se comprueben más de una vez, se termina la orden con un simple end_monitor.

Comandos

Son las órdenes que se dan en el script. Hemos visto ya los de monitorizar eventos y condiciones, teminar esas monitorizaciones, pero hay muchos más recogidos en docudemon_commands.txt. Como en un principio estaban pensados para el tutorial, muchos de estos comandos son simplemente informativos o de ayuda para el jugador novato. Algunos ejemplos:
 simulate_mouse_click 
select_settlement 
settlement_flash_start 

Otros son de funcionamiento, para que establezcamos contadores, temporizadores, etc. Luego quedan los más interesantes, que permiten “hacer cosas”, como aparecer ejércitos o moverlos.
 ---------------------------------------------------
Identifier:         move
Parameters:         character name, x, y
Description:        Move the named character to the location specified
Sample use:         move Gaius Julius, 20, 44
Class:              MOVE
Implemented:        Yes
Author:             Guy
---------------------------------------------------

Así se mueve, no sólo el personaje, sino todo el ejército que lleve bajo su mando.
Sin embargo hay otro tipo de comandos, mucho más interesantes en general, que son los de consola, que se listan en console_commands.txt. ¿Por qué se llaman así? Porque en principio se podrían usar abriendo la consola del juego (Rome shell), que se hace apretando la tecla º del teclado (la que está justo debajo de Esc). Digo en principio porque luego la mayoría no funcionan en la consola y son sólo útiles en scripts.

Para usarlos en el script tenemos que hacerlo detrás del comando console_command y entre los más interesantes tenemos:
 add_money 
capture_settlement 
create_building 
create_unit 

Hay ejemplos de uso más arriba.

Parece fácil ¿no? Pues hay dificultades escondidas que han dado más de un quebradero de cabeza al que escribe. Los motivos:

- Todos los “monitors” se comprueban instantáneamente cuando se lanza el script. Si no se hace nada para evitarlo acabará en pocos segundos. Para eso hay que establecer bucles (loops).
- El juego no recuerda nada del script al recargar una campaña. Aunque un monitor sea de una sola vez, el script lo ejecutará cada vez que se recargue. Para eso hay que establecer contadores (counters) y si es necesario “mojones” que indiquen si ya se ha pasado por un periodo de la campaña (no dependiente del turno).
- Las comprobaciones son problemáticas, y no hay avisos de que un trozo de script no funciona. Si se plantea una acción para una situación avanzada de la campaña, los tests serán largos y tediosos.

Contadores (counters)

Son simples marcadores que sirven para indicar al script en qué momento se encuentra. Para usarlos se declaran al comienzo del script y se les da un valor inicial.
 declare_counter switch
set_counter switch 0


¿Para qué sirve luego? Cuando se produce un evento, hay ocasiones en que no se pueden ejecutar todos los comandos que se quieren. El contador sirve para hacer saltar un interruptor tras otro, hasta que todas las acciones estén ejecutadas. Por ejemplo:
monitor_conditions I_CharacterTypeNearTile romans_julii named_character 6 113,92
	and I_TurnNumber < 12

	settlement_flash_stop Emporiton
	advance_advice_thread Exito_Mision1_Roma_Thread no_dismiss
	settlement_flash_start Abariltur
	set_counter switch 1

	terminate_monitor
end_monitor


En la primera misión de la campaña provincial romana, hay que llevar un ejército a las cercanías de Emporión. Con este monitor comprobamos si un general (de la familia) romano está a una distancia de 6 de la posición de Emporión (113,92) y si además lo ha hecho en el momento exigido (antes del turno 12). En ese momento Emporión deja de estar intermitente, se envía al jugador un mensaje con la siguiente misión, se pone intermitente el siguiente objetivo (Kesse) y el contador se pone a 1. Si el contador se mantuviese así al recargar (es posible que en M2TW sea así, pero no lo he comprobado) sería suficiente, pero para que haya un efecto “memoria” en el script debemos introducir un marcador permanente en la campaña. Para eso creé unos edificios ficticios y aproveché un enclave inaccesible de la campaña, aquel que tenía al senado en la versión anterior del mod. Para ello se usa ese valor nuevo del contador así:
monitor_event SettlementTurnStart SettlementName Aquincum
	and I_CompareCounter switch = 1
	and not SettlementBuildingExists = milestone1

	console_command create_building Aquincum milestone1
	set_counter switch 11

	terminate_monitor
end_monitor

Así el contador está a 1 sólo desde que el jugador consigue llegar hasta el turno rebelde de ese mismo turno global. Luego el contador pasa a 11 y al iniciar el turno humano se le da la recompensa y se vuelve el contador a 0.

Realmente el sistema es algo más complicado, pero de momento lo dejamos así.

Bucles (loops)

Esto no es invento mío, ni mucho menos, sino que fue descrito por Myrdraal, uno de los mejores scripters, moderador de totalwar.org. Consiste en usar el comando while (mientras). Yo no le he encontrado otra utilidad más que esta, aunque en el prólogo se usaba para desactivar la campaña hasta que el jugador hiciese lo que se le pedía (apretar un botón, normalmente).

El método consiste en declarar un contador llamado loop que no sirve para nada más.
declare_counter loop


Si no decimos nada el contador se pone automáticamente a 0. Si justo al final del script ponemos:
while I_CompareCounter loop = 0
end_while 

Le estamos diciendo que mientras el contador esté a 0 vuelva a retomar el script desde el principio.

En caso de usar un script para varios turnos por año (4 por ejemplo) se puede usar también este otro sistema: se coloca al principio del script este “while”:
while I_TurnNumber < 956 

donde 956 es el número de turnos. Y al final del script&#058;
end_while 

Eso quiere decir que debe monitorizar todo el script mientras estemos en un turno anterior al turno final, y por tanto será un script continuo.

Continuará

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 11 May 2008 21:06 #5107

CAMBIO DE NOMBRE DE ENCLAVES DURANTE LA CAMPAÑA

¿Cansado de esos nombres absurdos de los enclaves?

¿Quieres que tus legiones tengan potestad para renombrar los enclaves?

¿Deseoso de poner "Castra Dora" a alguna ciudad?

¡Tranquilo! Vuestro amigo Ramiro os trae la solución.

Si abrimos el fichero preferences.txt en la carpeta Rome-TotalWar\preferences (no en Data), vemos que la última línea dice:

EDIT_SETTLEMENT_NAMES:FALSE



Ahora bien, si lo cambiamos por:

EDIT_SETTLEMENT_NAMES:TRUE



esto es lo que ocurre.

Tomemos la campaña edetana que estoy jugando ahora, y me digo... ¡Voy a hacerme un homenaje! Tomemos la ciudad de Saguntum, como se ve aquí:


Si en el panel informativo damos doble click sobre el nombre aparece ese cursor:



Ahora borramos ese nombre con la tecla "retroceso" y escribimos lo que queremos. Mi homenaje: Ramiroville


Ahora simplemente damos a la flechita de seleccionar el siguiente enclave y... voilà:


el nombre aparece debajo del enclave.

Todavía no he testado esto, pero creo que no es permanente. Imagino que se guarda en la campaña guardada, pero no al iniciar otra igual.

Ahora ya puedes renombrar tus conquistas como quieras. ;)

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 30 May 2008 00:04 #6554

TUTORIAL DE MAPAS

CAPÍTULO 2: MAP_HEIGHTS

La mejor manera de comenzar un mapa desde cero es hacer en primer lugar map_heights.
Si lo que queremos es realismo, entonces lo mejor es ir a vistas de satélite. Nos tenemos que descargar 3DEM y también el paquete de mapas del servicio geográfico USA.

Una vez hecho eso, abrimos 3DEM y en el menú File le decimos "Load Terrain Model". Nos pide el tipo (USGS DEM que habremos descargado) y al clickar sobre el fichero correspondiente nos sale este mapa para que escojamos la ubicación:


Según sugerencia de Alba he tomado Sicilia, y después de varios intentos lo mejor era tomar 37 de latitud, 14 de longitud y 4 grados de amplitud. La proyección queda mejor en coseno, porque en lat/long quedaba una isla muy deformada.
Esto es lo que queda:



Ahora intentamos ajustar los colores a lo que nos pide el RTW. Para eso vamos al menú "Color Scale" y seleccionamos "Modify Scale".
En esta imagen vemos el proceso.



En el primer menú están los colores originales. Seleccionamos el nivel más bajo de altura y le asignamos un color casi negro (1 1 1).
Luego seleccionamos el nivel más alto y le ponemos un color casi blanco (230 230 230, por ejemplo).
Clickeamos en "Spread To", luego en el nivel más bajo y se nos transforma todo en escala de grises.

Finalmente la guinda (no es necesario porque se puede hacer luego), ponemos el océano del color azul (0 0 253). Nos queda algo así:



Le quitamos la cuadrícula en el menú y finalmente tenemos esto:



Guardamos como jpg y ya tenemos una imagen con la que trabajar. Cuando abrimos el jpg en photoshop vemos su tamaño y sus propiedades.



Después, lo que yo he hecho ha sido lo siguiente:
- Selección del océano con la varita mágica.
- Inversión de la selección y copia a un fichero nuevo.
- Giro hasta colocar Sicilia en horizontal para aprovechar a tope el espacio.
- Nueva capa del color del mar (0 0 253).
- Recorte del "canvas" hasta dejar sólo Sicilia.
- Reescalado al tamaño adecuado. He pasado la anchura hasta 955 pixels. Este es un tamaño enorme para lo normal en RTW.



Aquí el problema aparece al adoptar un método para asignar color a los pixeles interpolados. Para que salgan contornos suaves que luego den lugar a relieves naturales, es preferible hacer un interpolado "bicubic".
En ese caso conseguimos unos bordes difusos, cuando la separación entre mar y tierra debería ser nítida, y a ser posible con una línea de píxels de color (1 1 1).



Yo no tengo otro método que pintar a mano esos píxeles, pero es un trabajo tedioso, sobre todo con un mapa tan grande.
Vease la diferencia entre los bordes de la zona pintada a mano (circulo rojo) con la zona original difusa. Es importante también desaturar (Menú Image>Adjustments>Desaturate) la capa del terreno, para que realmente todo esté en escala de grises.



¿A alguien se le ocurre un método mejor y más rápido? icon_confused.gif Le estaría tremendamente agradecido.

Cuando se termina esta labor, hay que unir las capas y guardar el fichero como tga 24 bits y ya tenemos map_heights. (es conveniente guardar también el psd con las capas separadas, porque lo trabajaremos para generar el resto de mapas)

Desgraciadamente, no podremos saber si nuestro trabajo tiene errores hasta mucho después, cuando probemos la campaña completa.

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 17 Oct 2008 20:39 #13928

AÑADIR NUEVAS UNIDADES A M2TW

A petición popular, voy a explicar cómo añadir nuevas unidades en M2TW.

PARTE 1. LO IMPRESCINDIBLE

Una vez creado el sistema de carpetas del mod, vamos a crear una nueva unidad, los almogávares sicilianos.
Van a ser iguales que los españoles, pero van a llevar modelos y texturas renombrados, para asegurarnos que funcionan en la nueva ubicación.

Los nuevos ficheros que van en la carpeta data\unit_models son el battle_models.modeldb fomateado (para que sea más fácil de entender http://www.twcenter.net/forums/download ... le&id=1180 ) y una carpeta _units con otras dos dentro:
en_peasant_padded y ln_lmail_hmail. En la primera van los ficheros almughavars_lod0.mesh hasta el almughavars_lod3.mesh y lo mismo con los almughavars_ug1_lod0.mesh, todos renombrados como almughavarsb_ y almughavars_ug1b_
En la segunda están los correspondientes ficheros almughavars_ug2b_lod0.mesh etc. En ambas hay una carpeta más llamada textures con los ficheros en_peasant_padded_spainb.texture y ln_lmail_hmail_spainb.texture respectivamente.
Todos estos ficheros son idénticos a los originales, simplemente renombrados.

Luego necesitamos export_descr_unit.txt en data y export_units.txt.strings.bin en data\text (para empezar).

Abrimos export_descr_unit.txt y buscamos los almogávares. Duplicamos la unidad, la llamamos con otro nombre y la asignamos a sicily. Vamos también a duplicar el modelo, para que se vea cómo se hace, así que le ponemos otro nombre. Muy importante no olvidarse de cambiarlo en armour_ug_models, ya que el juego lo lee ahí.

type             Almughavars Sicilianos
dictionary       Almughavars_Sicilianos      ; Almughavars
category         infantry
class            missile
voice_type       Light
banner faction   main_missile
banner holy      crusade
soldier          Almughavarsb, 48, 0, 1
mount_effect     elephant +6
attributes       sea_faring, hide_forest, very_hardy, can_withdraw
formation        1.2, 1.2, 2.4, 2.4, 4, square
stat_health      1, 0
stat_pri         13, 3, javelin, 55, 8, thrown, missile_mechanical, piercing, spear, 25, 1
;stat_pri_ex      0, 0, 0
stat_pri_attr    ap, thrown
stat_sec         12, 4, no, 0, 0, melee, melee_blade, piercing, spear, 25, 0.6
;stat_sec_ex      0, 0, 0
stat_sec_attr    light_spear, spear_bonus_4
stat_pri_armour  0, 5, 3, flesh
;stat_armour_ex   0, 4, 5, 0, 5, 3, 3, flesh
stat_sec_armour  0, 0, flesh
stat_heat        0
stat_ground      1, 0, 2, 0
stat_mental      11, normal, trained
stat_charge_dist 30
stat_fire_delay  0
stat_food        60, 300
stat_cost        1, 640, 150, 100, 75, 640, 4, 160
armour_ug_levels 0, 1, 2
armour_ug_models Almughavarsb, Almughavars_ug1b, Almughavars_ug2b
ownership        sicily
era 1            sicily
era 2            sicily
;unit_info        12, 13, 8


Vamos ahora a battle_models.modeldb y buscamos la entrada para los almogávares. Es bastante larga porque tiene dos mejoras (upgrades, ug). Es esto:
11 almughavars 
1 4 
58 unit_models/_Units/EN_Peasant_Padded/almughavars_lod0.mesh 121 
58 unit_models/_Units/EN_Peasant_Padded/almughavars_lod1.mesh 900 
58 unit_models/_Units/EN_Peasant_Padded/almughavars_lod2.mesh 2500 
58 unit_models/_Units/EN_Peasant_Padded/almughavars_lod3.mesh 6400 
2 
5 spain 
77 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_spain.texture 
78 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_normal.texture 
41 unit_sprites/spain_Almughavars_sprite.spr 
8 portugal 
80 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_portugal.texture 
78 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_normal.texture 
44 unit_sprites/portugal_Almughavars_sprite.spr 
2 
5 spain 
59 unit_models/AttachmentSets/Final Iberian_spain_diff.texture 
59 unit_models/AttachmentSets/Final Iberian_spain_norm.texture 0  
8 portugal 
62 unit_models/AttachmentSets/Final Iberian_portugal_diff.texture 
62 unit_models/AttachmentSets/Final Iberian_portugal_norm.texture 0  
1 
4 None 
17 MTW2_Fast_Javelin 
15 MTW2_Fast_Spear 2 
20 MTW2_Javelin_primary 
14 fs_test_shield 2 
18 MTW2_Spear_primary 
14 fs_test_shield 
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002 
15 almughavars_ug1 
1 4 
62 unit_models/_Units/EN_Peasant_Padded/almughavars_ug1_lod0.mesh 121 
62 unit_models/_Units/EN_Peasant_Padded/almughavars_ug1_lod1.mesh 900 
62 unit_models/_Units/EN_Peasant_Padded/almughavars_ug1_lod2.mesh 2500 
62 unit_models/_Units/EN_Peasant_Padded/almughavars_ug1_lod3.mesh 6400 
2 
5 spain 
77 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_spain.texture 
78 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_normal.texture 
45 unit_sprites/spain_Almughavars_ug1_sprite.spr 
8 portugal 
80 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_portugal.texture 
78 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_normal.texture 
48 unit_sprites/portugal_Almughavars_ug1_sprite.spr 
2 
5 spain 
59 unit_models/AttachmentSets/Final Iberian_spain_diff.texture 
59 unit_models/AttachmentSets/Final Iberian_spain_norm.texture 0  
8 portugal 
62 unit_models/AttachmentSets/Final Iberian_portugal_diff.texture 
62 unit_models/AttachmentSets/Final Iberian_portugal_norm.texture 0  
1 
4 None 
17 MTW2_Fast_Javelin 
15 MTW2_Fast_Spear 2 
20 MTW2_Javelin_primary 
14 fs_test_shield 2 
18 MTW2_Spear_primary 
14 fs_test_shield 
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002 
15 almughavars_ug2 
1 4 
59 unit_models/_Units/LN_Lmail_Hmail/almughavars_ug2_lod0.mesh 121 
59 unit_models/_Units/LN_Lmail_Hmail/almughavars_ug2_lod1.mesh 900 
59 unit_models/_Units/LN_Lmail_Hmail/almughavars_ug2_lod2.mesh 2500 
59 unit_models/_Units/LN_Lmail_Hmail/almughavars_ug2_lod3.mesh 6400 
2 
5 spain 
71 unit_models/_Units/LN_Lmail_Hmail/textures/LN_Lmail_Hmail_spain.texture 
72 unit_models/_Units/LN_Lmail_Hmail/textures/LN_Lmail_Hmail_normal.texture 
45 unit_sprites/spain_Almughavars_ug2_sprite.spr 
8 portugal 
74 unit_models/_Units/LN_Lmail_Hmail/textures/LN_Lmail_Hmail_portugal.texture 
72 unit_models/_Units/LN_Lmail_Hmail/textures/LN_Lmail_Hmail_normal.texture 
48 unit_sprites/portugal_Almughavars_ug2_sprite.spr 
2 
5 spain 
59 unit_models/AttachmentSets/Final Iberian_spain_diff.texture 
59 unit_models/AttachmentSets/Final Iberian_spain_norm.texture 0  
8 portugal 
62 unit_models/AttachmentSets/Final Iberian_portugal_diff.texture 
62 unit_models/AttachmentSets/Final Iberian_portugal_norm.texture 0  
1 
4 None 
17 MTW2_Fast_Javelin 
15 MTW2_Fast_Spear 2 
20 MTW2_Javelin_primary 
14 fs_test_shield 2 
18 MTW2_Spear_primary 
14 fs_test_shield 
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002 


Parece un galimatías... y lo es. Vamos a ir paso a paso, con la indicación general de que el número al principio de la línea indica el número de caracteres del texto que va detrás.
Copiamos todo esto y hacemos los cambios para dejarlo así:
12 almughavarsb 
1 4 
59 unit_models/_Units/EN_Peasant_Padded/almughavarsb_lod0.mesh 121 
59 unit_models/_Units/EN_Peasant_Padded/almughavarsb_lod1.mesh 900 
59 unit_models/_Units/EN_Peasant_Padded/almughavarsb_lod2.mesh 2500 
59 unit_models/_Units/EN_Peasant_Padded/almughavarsb_lod3.mesh 6400 
1 
6 sicily 
78 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_spainb.texture 
78 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_normal.texture 
41 unit_sprites/spain_Almughavars_sprite.spr 
1 
6 sicily 
59 unit_models/AttachmentSets/Final Iberian_spain_diff.texture 
59 unit_models/AttachmentSets/Final Iberian_spain_norm.texture 0  
1 
4 None 
17 MTW2_Fast_Javelin 
15 MTW2_Fast_Spear 2 
20 MTW2_Javelin_primary 
14 fs_test_shield 2 
18 MTW2_Spear_primary 
14 fs_test_shield 
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002 
16 almughavars_ug1b 
1 4 
63 unit_models/_Units/EN_Peasant_Padded/almughavars_ug1b_lod0.mesh 121 
63 unit_models/_Units/EN_Peasant_Padded/almughavars_ug1b_lod1.mesh 900 
63 unit_models/_Units/EN_Peasant_Padded/almughavars_ug1b_lod2.mesh 2500 
63 unit_models/_Units/EN_Peasant_Padded/almughavars_ug1b_lod3.mesh 6400 
1 
6 sicily 
78 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_spainb.texture 
78 unit_models/_Units/EN_Peasant_Padded/textures/EN_Peasant_Padded_normal.texture 
45 unit_sprites/spain_Almughavars_ug1_sprite.spr 
1 
6 sicily 
59 unit_models/AttachmentSets/Final Iberian_spain_diff.texture 
59 unit_models/AttachmentSets/Final Iberian_spain_norm.texture 0  
1 
4 None 
17 MTW2_Fast_Javelin 
15 MTW2_Fast_Spear 2 
20 MTW2_Javelin_primary 
14 fs_test_shield 2 
18 MTW2_Spear_primary 
14 fs_test_shield 
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002 
16 almughavars_ug2b 
1 4 
60 unit_models/_Units/LN_Lmail_Hmail/almughavars_ug2b_lod0.mesh 121 
60 unit_models/_Units/LN_Lmail_Hmail/almughavars_ug2b_lod1.mesh 900 
60 unit_models/_Units/LN_Lmail_Hmail/almughavars_ug2b_lod2.mesh 2500 
60 unit_models/_Units/LN_Lmail_Hmail/almughavars_ug2b_lod3.mesh 6400 
1 
6 sicily 
72 unit_models/_Units/LN_Lmail_Hmail/textures/LN_Lmail_Hmail_spainb.texture 
72 unit_models/_Units/LN_Lmail_Hmail/textures/LN_Lmail_Hmail_normal.texture 
45 unit_sprites/spain_Almughavars_ug2_sprite.spr 
1 
6 sicily 
59 unit_models/AttachmentSets/Final Iberian_spain_diff.texture 
59 unit_models/AttachmentSets/Final Iberian_spain_norm.texture 0  
1 
4 None 
17 MTW2_Fast_Javelin 
15 MTW2_Fast_Spear 2 
20 MTW2_Javelin_primary 
14 fs_test_shield 2 
18 MTW2_Spear_primary 
14 fs_test_shield 
16 -0.090000004 0 0 -0.34999999 0.80000001 0.60000002 

Resumen de cambios: ponemos nombre nuevo al modelo y a los dos upgrades con una b al final, luego cada uno lleva un caracter más y se ha cambiado la cifra anterior.
En cada uno de ellos lo primero es el modelo con cuatro niveles de detalle (lod), de ahí las cifras 1 4.
Hemos cambiado el nombre de todos ellos añadiéndole una b, con lo que también hay que aumentar la cifra de caracteres al principio de cada línea.
Luego viene un 2, que es el número de facciones asignadas. Como ahora va a ser sólo una (sicily), cambiamos esta cifra en los tres casos y en las dos ocasiones que aparece, para la textura del soldado y la de los instrumentos (armas y escudos).
Hay que borrar las líneas asignadas a portugal. En las asignadas a spain, cambiamos los nombres de las texturas que hemos renombrado y la cifra. También hay que cambiar "5 spain" por "6 sicily" en todos los casos.
Y de momento no vamos a cambiar nada más.

Una última cosa. Al principio de todo del fichero pone:
22 serialization::archive 3 0 0 0 0 701 0 0 

El número 701 es el número de modelos del fichero. Como hemos incluido 3 nuevos (el básico y dos mejoras) tenemos que poner 704.
En la descarga del fichero formateado viene un checker para comprobar si el nuevo modeldb tiene errores al contar modelos o caracteres (hay que tener python 2.5 instalado para que funcione).
Usandolo comprobamos que no hay errores.

Finalmente, abrimos export_units.txt. Para ello hay que convertir el fichero strings.bin usando esto: http://forums.totalwar.org/vb/showthread.php?t=75229 (también necesita python).
Buscamos los almogávares y clonamos sus datos cambiando el nombre al nuevo:
{Almughavars_Sicilianos}Almogávares Sicilianos
{Almughavars_Sicilianos_descr}El nombre almogávar procede del árabe "al mughavir" que significa bandido. Naturales de Aragón, tienen orígenes cristianos y musulmanes. Estos guerreros profesionales con infantes ligeros de élite, van armados con jabalinas y lanzas, y a veces llevan armaduras. Pese a su equipo ligero, su reputación es temible.
{Almughavars_Sicilianos_descr_short}Hostigadores ligeros de élite armados con jabalinas y lanzas, que a veces llevan armaduras.


Vamos a ver qué pasa en juego. Si vamos a la batalla personalizada y seleccionamos Sicilia:

Tenemos una nueva unidad, los almogávares sicilianos, que no tienen (todavía) ficha propia.


Al cargar la batalla tenemos el mismo modelo y textura de los almogávares españoles asignada a los sicilianos, pero lo más importante, usando un modelo distinto que podremos modificar a nuestro gusto. Pero eso será en otra entrega...

Cualquier tiempo pasado fue anterior.

Re: Tutoriales: modding RTW y M2TW 20 Oct 2008 22:57 #14102

COMO UNIR DOS FACCIONES EN UNA SOLA

Este tutorial está tomado de aquí: http://forums.totalwar.org/vb/showthread.php?t=91080
Por razones de rapidez no he hecho los tests pertinentes, pero me fio de Epistolary Richard, y para ver imágenes explicativas habrá que ir a ese tutorial en inglés.

El kingdoms nos ofrece a posibilidad de fusionar dos facciones en una sola, asignando todas las posesiones y sus generales a la nueva facción. No sé lo que ocurre con las tropas. Supongo que si están definidas para la nueva facción propietaria pasarán a ella, pero si no lo están, probablemente se pierdan (imagino).

Para hacer esto tener que acudir al script campaign_script.txt y tenemos que incluir un trozo de código similar a este:

	monitor_event FactionTurnStart FactionType spain
		and I_TurnNumber = 2
		
		give_everything_to_faction france spain false
		
		terminate_monitor
	
	end_monitor


Según este código, al empezar el turno español en el turno 2 (será el tercero que veamos, porque empieza la campaña en el 0) todas las posesiones francesas irán a parar a manos españolas, desapareciendo la facción francesa.

Evidentemente ambas facciones deben existir en la campaña y se pueden poner condiciones mucho más complejas para que se produzca la unión, pero eso requerirá conocerlas y establecer los condicionales particulares que se necesiten en cada caso.

Cualquier tiempo pasado fue anterior.
  • Página:
  • 1
  • 2
Página generada en: 2.02 segundos