CLICK EN EL ENLACE PARA IR AL INDICE
https://www.caballerosdecalradia.net/t371-lista-de-tutoriales-en-el-foro
PARTE 4: Party_Templates
En el capítulo 2 aprendimos a crear nuevas parties, localizaciones únicas en el mapa. No debemos confundirlas con “party templates” que es sobre lo que trata este capítulo.
En términos simples, un “party template” es un conjunto de instrucciones que determinan cómo aparecerán los ejércitos en el mapa y cuáles serán sus efectivos. Esta es la principal diferencia entre las parties y las “party templates”: las primeras son localizaciones en el mapa de campaña, mientras que las segundas no existen físicamente. Además, ciertas operaciones que sí funcionan cuando las referencias a una ID de una party, no funcionaran cuando la referencia sea la ID de una “party template”.
Las parties que se crean mediante una template (traducido como plantilla) no tienen por qué ser únicas. Habrá un número aleatorio de ellas, que está definido por el nivel del jugador y por el mínimo/máximo número de tropas establecido en el template.
4.1.- Análisis del module_party_templates
Este archivo comienza como los demás, encabezando aparece una descripción de los campos de cada tuple y después se inicia la lista Python en sí, con su cabecera party_templates = [. A esta línea le siguen varios templates que no pueden ser modificados (hardwired). Aunque los tuples que vemos sean muy similares a los que encontramos en module_parties, no se pueden intercambiar.
Veamos un ejemplo:Este archivo comienza como los demás, encabezando aparece una descripción de los campos de cada tuple y después se inicia la lista Python en sí, con su cabecera party_templates = [. A esta línea le siguen varios templates que no pueden ser modificados (hardwired). Aunque los tuples que vemos sean muy similares a los que encontramos en module_parties, no se pueden intercambiar.
Veamos un ejemplo:
- Código:
("village_farmers","Village Farmers",icon_peasant,0,fac_innocents,merchant_personality,[(trp_farmer,5,10),(trp_peasant_woman,3,8)]),
Analicemos ahora todos los campos del tuple:
1) ID de la party-template: Se utiliza para referenciarla desde otros archivos (con el prefijo pt_).
2) Nombre de la party-template: El nombre que se muestra en el mapa de campaña.
3) Flags: Podemos encontrar una lista de ellas en header_parties.py.
4) Menu: Desactivado, como en module_parties. Pondremos siempre 0.
5) Faccion del grupo.
6) Personalidad: Este campo contiene las flags que determinan el comportamiento del grupo en el mapa.
7) Lista de tropas: Cada bloque es un tuple que contiene los siguientes aspectos de las tropas:
7.1) ID del tipo de soldado
7.2) Mínimo de tropas de ese tipo en el grupo
7.3) Máximo de tropas de ese tipo en el grupo
7.4) Flags (opcional): deberemos añadir un nuevo espacio para las flags. Por ejemplo: (trp_swadian_crossbowman,5,14,pmf_is_prisoner)
Como máximo habrá 6 grupos de tropas en cada template.
Si analizamos el template de los granjeros veremos los campos antes descritos:
1) ID de la party-template: “village_farmers”.
2) Nombre de la party-template: “Village Farmers”.
3) Flags: icon_peasant.
4) Menu: 0.
5) Facción del grupo: fac_innocents.
6) Personalidad: merchant_personality.
7) Lista de tropas:
7.1) ID del tipo de soldado: trp_farmer, trp_peasant_woman
7.2) Mínimo de tropas de ese tipo en el grupo: 10, 5
7.3) Máximo de tropas de ese tipo en el grupo: 8, 3
7.4) Flags (opcional): ninguna.
Si has seguido todos los tutoriales anteriores, desde el primer capítulo, podrás leer de forma sencilla cualquier tipo de tuple. Si es así, habrá visto que hay uno de los campos en estos últimos tuples que no había aparecido hasta ahora, la personalidad. En el siguiente punto trataremos sobre este tema.
4.2.- Personalidad
Como hemos visto hace un momento, el campo de la personalidad en un party-template determina el comportamiento de ese grupo o ejercito en el mapa. Es ahí donde podremos cambiar su coraje y agresividad o asignar valores preestablecidos de personalidades como merchant_personality.
Estos valores preestablecidos son constantes, y cada uno contiene unos puntos de coraje y agresividad. Estan definidos en header_parties.py, por lo que abriremos dicho archivo y los buscaremos hacia el final del documento. Además veremos todas las posibilidades de coraje y agresividad que podemos asignar.
La constante merchant_personality se utiliza en varios templates a lo largo del archivo. Los ejércitos y grupos con esta personalidad serán pacíficos, y no intentarán atacar a enemigos o ejércitos más débiles. Esto se debe a que esta personalidad tiene su agresividad a 0. Un ejército con esta característica nunca atacará a otro ejército, mientras que los ejércitos con soldier_personality tendrán agresividad 8. Esto les permitirá atacar a otros grupos si la facción de los otros es enemiga y no se ven ampliamente superados en número.
El coraje es el valor que determina cuando un ejército huye de otro más grande. Un coraje alto significa que afrontaran el peligro con valor y no huirán ni cuando se vean superados en número. Los ejércitos con merchant_personality tienen coraje 8, mientras que los ejércitos con soldier_personality tienen coraje 11. El coraje varía entre 0 y 15, lo que permite establecer el comportamiento preciso para tus ejércitos. De todas formas, es recomendable para los modders novatos que mantengan los valores originales, pues las personalidades existentes son suficientes para llevar a cabo nuestros mods.
Finalmente, para los grupos de bandidos y ladrones, existe el flag banditness. Esta hace que el grupo de bandidos vea los grupos cercanos como presas potenciales. Si estas presas llevan consigo grandes cantidades de dinero o bienes, estos atacarán. Normalmente estas bandas tienen agresividad baja o un número pequeño de efectivos para evitar que ataquen a los ejércitos de los lords. Aunqune no veas el flag banditness por ningun lado, este está incluido dentro de bandit_personality en header_parties.py.
4.3.- Creando nuevos templates
Ahora vamos a crear un nuevo grupo para nuestro mod. Copiamos el tuple de los granjeros (“farmers”) y lo pegamos al final del archivo, antes del corchete final.
- Código:
("new_template","new_template",icon_peasant,0,fac_innocents,merchant_personality,[(trp_farmer,5,10),(trp_peasant_woman,3,8)]),
- Código:
("new_template","new_template",icon_peasant,0,fac_neutral,soldier_personality,[(trp_farmer,5,10),(trp_peasant_woman,3,8)]),
- Código:
("new_template","new_template",icon_peasant,0,fac_neutral,soldier_personality,[(trp_npc17,1,1),(trp_new_troop,2,9)]),
Por compañeros de armas, le hemos asignado un contingente de trp_new_troop, los soldados que creamos en el capítulo anterior. Nunca habrá menos de 2 “new_troop” en este ejército, pero según vaya adquiriendo experiencia nuestro personaje, el tamaño de este ejército irá aumentando, pero nunca habrá más de 9 “new_troop”.
Guardamos los cambios y ejecutamos build_module.bat. Si hemos realizado correctamente todos los cambios no habrá ningún error al compilar. De todas formas, los ejércitos (parties) de un party-template deben tener algún punto de aparición (spawn points) en el mapa – no aparecen por voluntad propia en un punto aleatorio-. Aunque explorásemos Calradia de Norte a Sur, no encontraríamos a nuestro nuevo ejército por ningún lado. Aprenderemos a crear puntos de aparición para nuestros ejércitos en un capítulo posterior, pero por el momento, dejemos a Eufresino y sus compañeros descansar tranquilos mientras nosotros aprendemos a cómo crear y añadir nuevos objetos al juego.
Última edición por maxtor07 el Miér Nov 28, 2012 6:25 pm, editado 2 veces