Traducción del tutorial de winter
http://forums.taleworlds.com/index.php/topic,12620.0.html
Espero haberlo hecho todo bien ya que soy nuevo en el foro, si he incumplido algo lo siento, informarme y lo corregire, cualquier sugerencia en la traduccion se agradecera.
Gracias por estos tutoriales que me estan ayudando mucho.
En los ratos que tenga libre seguire traduciendo el resto de tutoriales.
En esta parte del tutorial, examinaremos los archivos “module” mas pequeños del sistema, archivos con menor impacto general. Sin embargo, estos archivos son muy útiles en muchos aspectos. Al final de este capítulo sabrás como sacar el máximo partido de cada uno de ellos.
6.1 -- Module_Constants
Module_constants.py es un archivo muy simple. Este archivo esta constituido de constantes – ya deberías saber como funcionan de la lectura de la parte 3 de este tutorial. Las constantes en module_constants son exactamente iguales que las de cualquier otro archivo, pero las constantes que son usadas con varios archivos “module” deberían ser definidas en module_constants para que de esta manera el “module system” sepa siempre donde encontrarlas.
Module_constants también sirve como un organizador, una lista de fácil acceso donde puedes cambiar el valor de una constante siempre que lo necesites. Cualquier cambio afectara inmediatamente a todas las operaciones que utilizan la constante, por lo tanto no necesitas buscar/reemplazar manualmente.
Por ejemplo, cambiando marnid_inn_entry = 2 a marnid_inn_entry = 4 cambiaria inmediatamente cualquier operación que utilice marnid_inn_entry, tratando la constante como el valor 4 en lugar del valor 2.
6.2 -- Module_Factions
module_factions.py contiene todas las facciones usadas por el “module system” y por la inteligencia artificial de M&B. Un pequeño archivo gobierna varios ajustes importantes que abordaremos aquí.
El archivo inmediatamente comienza con una lista Python: factions =[ como la mayoría de los archivos “module”, los primeros “tuples” están enraizados en el juego y no deberían ser editados.
Ejemplo de una facción:
("innocents","Innocents", 0, 0.5,[("outlaws",-0.05)]),
Esto es un “tuple” corto y sencillo. Esto gobierna la facción “innocents”, de los que su mayor enemigo es la facción “outlaws”. Si la relación de una facción con “innocents” no esta definida en module_constants, esta automáticamente tomara el valor 0, por lo que las dos facciones serán absolutamente neutrales entre si.
Desglose de los campos del “tuple”:
1 ) ID de la facción. Usada para referenciar facciones en otros archivos.
2 ) Nombre de la facción.
3 ) Flags de la facción.
4 ) Coherencia(relación) de la facción. La relación entre diferentes miembros de esta facción.
5 ) Relaciones entre facciones.
5.1 ) Facción. La otra facción a la que esta referida esta relación
5.2 ) Relación. El estado de las relaciones entre las dos facciones. Valores entre -1 y 1.
Análisis del “tuple” “innocents”:
1 ) ID de la facción = “innocents”
2 ) Nombre de la facción = “innocents”
3 ) Flags de la facción = 0
4 ) Coherencia de la facción = 0.5
5 ) Relaciones entre facciones:
5.1 ) Facción = “outlaws”
5.2 ) Relación = -0.05
Esta facción no tiene flags, una coherencia de facción neutral y no mas enemigos que “outlaws” definidos en este “tuple”. Sin embargo, si miramos en otro sitio, podemos encontrar que(por ejemplo) “dark_knights” tienen una relación de -0.9 con “innocents”, como se define en el “tuple” de “dark_knights”. Esto es porque una relación funciona de dos maneras – solo debe establecerse una vez y el valor contara para ambas facciones.
Ahora, creamos una nueva facción copiando el “tuple” “innocents” y pegándolo al final de la lista, antes del ultimo corchete “]” como es habitual. Cambia el nombre y la ID de la facción a “Geoffrey” y entonces sustituye “outlaws” in la lista de relaciones por “player_faction”.
Guarda lo que has hecho hasta ahora. Una vez hecho esto, abre el module_party_templates.py y module_troops.py y cambia la facción del template “new_template” y la facción del troop “Geoffrey” a “fac_geoffrey”. Guarda y cierra los archivos. Ejecuta build_module.bat. Si todo ha ido bien las parties de “new_template” mostraran “Geoffrey” como su facción y serán hostiles hacia el player(jugador).
6.3 -- Module_Strings
module_strings.py es sin duda el archivo mas sencillo en el “module system”. Contiene strings – cadenas de texto que pueden ser mostradas de varias maneras. Los strings son usadas a lo largo de todo el “module system”, desde module_dialogs hasta module_quests; siempre que una cadena de texto necesita ser mostrada por pantalla.
Module_strings, sin embargo, es un repositorio(almacén) para strings independientes, las cuales no están vinculadas a un único archivo. Por lo tanto pueden ser llamadas por operaciones desde cualquier archivo del “module system”.
Puedes ver estas strings usadas en varios lugares del juego, como mensajes desplazándose en la parte inferior izquierda de la pantalla, o en un recuadro del tutorial, o incluso insertada en el menú del juego o una secuencia de dialogo.
Al igual que module_factions, este archivo comienza inmediatamente con una lista Python: strings = [color=darkred] primeros “tuples” están enraizados en el juego y no deben ser editados.
Ejemplo de un string:
("door_locked","The door is locked."),
Desglose del ”tuple”:
1 ) Id de la string. Usada para referenciar las strings en otros archivos.
2 ) texto de la string.
Una característica notable de las strings es la capacidad de poner un valor de registro o incluso otra string dentro de ella. Puedes hacer esto añadiendo por ejemplo, {reg0}en la string. Esto mostrara el valor actual de reg(0). {reg10}mostrara el valor actual de reg(10), etc.
Para strings adicionales, debes usar un registro de string en lugar de una registro normal; esto es porque las strings están almacenadas separadas de los registros. Por ejemplo, {s2} mostrara el contenido de string register 2 – no el contenido de reg(2). Tu eres libre de usar string register 2 y reg(2) al mismo tiempo para cosas diferentes, ellas no se solaparan o interferirán una con otra.
En un dialogo, es posible también mostrar partes(o todo) del contenido de una string de forma diferente dependiendo del genero de la persona a la que va dirigida. Por ejemplo, insertando {sir/madam} en una string hara que la palabra “sir” sea mostrada cuando este dirigida a un hombre y “madam” si la persona es una mujer.
Todas estas opciones(exceptuando la alternación de genero) funcionaran perfectamente en cualquier tipo de campo de string. La alternación de genero solo funcionara en un dialogo.
Para el propósito de la operación “display_message”, es posible mostrar una string en varios colores, añadiendo un código de color hexadecimal en la operación. Por ejemplo, (display_message,<string_id>,[hex_colour_code]),
Aquí teneis una lista de los códigos hexadecimales
utilizables para display_message:
azul = 0xFFAAAAFF
azul claro = 0xFFAAD8FF
rojo = 0xFFFFAAAA
amarillo = 0xFFFFFFAA
rosa = 0xFFFFAAFF
morado = 0xFF6AAA89
negro = 0xFFAAAAAA
blanco = 0xFFFFFFFF
verde = 0xFFAAFFAA
marrón = 0xFF7A4800
6.4 -- Module_Quests
module_quests.py es el ultimo de nuestro pequeños y sencillos archivos. Este contiene las quests(misiones) incluyendo todo el texto relacionado con estas quests. Poniendo nuevas quests aquí nos permite activarlas a través del module system, por lo tanto operaciones que pueden leer el estado actual de la quest y usar ese estado como una condición de operación.
Ejemplo de una quest:
("hunt_down_river_pirates", "hunt down river pirates", qf_show_progression,
"Constable Hareck asked you to hunt down the river pirates that plague the country around Zendar.\
He promised to pay you 5 denars for each river pirate party you eliminate."
),
Esta quest no necesita introducción. Tenemos que dar caza a todos los piratas del rio en un momento u otro. Estos interesantes puntos son el flag qf_show_progression, y usa la barra invertida --\-- para permitir un salto de línea en esta string(un intro). Observa, sin embargo, que usando una barra invertida no se pone un salto de línea en el texto de juego. Esto es usado aquí solo por elegancia.
Desglose del “tuple”:
1 ) ID de la quest. Usada para referenciar quest en otros archivos.
2 ) Nombre de quest. El nombre de la quest como es mostrado en la lista de quest a la derecha de la pantalla.
3 ) Flags de quest
4 ) Descripción de la quest. La descripción larga de la quest, como es mostrada en el gran recuadro de texto en la parte superior izquierda de la pantalla de quests.
Analisis del “tuple” de los piratas:
1 ) ID de la quest = “hunt_down_river_pirates”
2 ) Nombre de quest = “hunt down river pirates”
3 ) Flags de quest = “qf_show_progression”
4 ) Descripción de la quest = "Constable Hareck asked you to hunt down the river pirates that plague the country around Zendar.\
He promised to pay you 5 denars for each river pirate party you eliminate."
qf_show_progression es lo que da a esta quests el porcentaje que has completado, mirando a la derecha de la lista de quests. La lista de quest puede ser encontrada en la derecha de tu pantalla de quests. Este porcentaje no incrementa automáticamente; tu tendras que establecer mediante operaciones si quieres hacer uso de ella.
Si deseas hacer una quest sin ningún flags, simplemente pon 0 en el campo de flags.
En este punto, haremos el primer paso en la creación de nuestra propia quest. Copia el siguiente “tuple” de quest y pegalo al final de la lista Python:
("speak_with_troublemakers", "Parley with the troublemakers", 0,
"Constable Hareck asked you to deal with a bunch of young nobles making trouble around town. How you want to tackle the problem is up to you; Hareck has promised a purse of silver if you succeed."
),
Observa la construcción de este “tuple”. Como puedes ver la solo son necesarios unos poco cambios para hacer una nueva quest, pero incorporarla al juego requiere bastante mas trabajo. Por esta razón nuestro próximo objetivo será module_dialogs.py – donde colocaremos nuestra nueva quest, tropas y party templates.
Guarda tu progreso, cierra el archivo y ejecuta build_module.bat. Si todo ha ido bien estaras preparado para ir a la parte 7 de este tutorial.
http://forums.taleworlds.com/index.php/topic,12620.0.html
Espero haberlo hecho todo bien ya que soy nuevo en el foro, si he incumplido algo lo siento, informarme y lo corregire, cualquier sugerencia en la traduccion se agradecera.
Gracias por estos tutoriales que me estan ayudando mucho.
En los ratos que tenga libre seguire traduciendo el resto de tutoriales.
En esta parte del tutorial, examinaremos los archivos “module” mas pequeños del sistema, archivos con menor impacto general. Sin embargo, estos archivos son muy útiles en muchos aspectos. Al final de este capítulo sabrás como sacar el máximo partido de cada uno de ellos.
6.1 -- Module_Constants
Module_constants.py es un archivo muy simple. Este archivo esta constituido de constantes – ya deberías saber como funcionan de la lectura de la parte 3 de este tutorial. Las constantes en module_constants son exactamente iguales que las de cualquier otro archivo, pero las constantes que son usadas con varios archivos “module” deberían ser definidas en module_constants para que de esta manera el “module system” sepa siempre donde encontrarlas.
Module_constants también sirve como un organizador, una lista de fácil acceso donde puedes cambiar el valor de una constante siempre que lo necesites. Cualquier cambio afectara inmediatamente a todas las operaciones que utilizan la constante, por lo tanto no necesitas buscar/reemplazar manualmente.
Por ejemplo, cambiando marnid_inn_entry = 2 a marnid_inn_entry = 4 cambiaria inmediatamente cualquier operación que utilice marnid_inn_entry, tratando la constante como el valor 4 en lugar del valor 2.
6.2 -- Module_Factions
module_factions.py contiene todas las facciones usadas por el “module system” y por la inteligencia artificial de M&B. Un pequeño archivo gobierna varios ajustes importantes que abordaremos aquí.
El archivo inmediatamente comienza con una lista Python: factions =[ como la mayoría de los archivos “module”, los primeros “tuples” están enraizados en el juego y no deberían ser editados.
Ejemplo de una facción:
("innocents","Innocents", 0, 0.5,[("outlaws",-0.05)]),
Esto es un “tuple” corto y sencillo. Esto gobierna la facción “innocents”, de los que su mayor enemigo es la facción “outlaws”. Si la relación de una facción con “innocents” no esta definida en module_constants, esta automáticamente tomara el valor 0, por lo que las dos facciones serán absolutamente neutrales entre si.
Desglose de los campos del “tuple”:
1 ) ID de la facción. Usada para referenciar facciones en otros archivos.
2 ) Nombre de la facción.
3 ) Flags de la facción.
4 ) Coherencia(relación) de la facción. La relación entre diferentes miembros de esta facción.
5 ) Relaciones entre facciones.
5.1 ) Facción. La otra facción a la que esta referida esta relación
5.2 ) Relación. El estado de las relaciones entre las dos facciones. Valores entre -1 y 1.
Análisis del “tuple” “innocents”:
1 ) ID de la facción = “innocents”
2 ) Nombre de la facción = “innocents”
3 ) Flags de la facción = 0
4 ) Coherencia de la facción = 0.5
5 ) Relaciones entre facciones:
5.1 ) Facción = “outlaws”
5.2 ) Relación = -0.05
Esta facción no tiene flags, una coherencia de facción neutral y no mas enemigos que “outlaws” definidos en este “tuple”. Sin embargo, si miramos en otro sitio, podemos encontrar que(por ejemplo) “dark_knights” tienen una relación de -0.9 con “innocents”, como se define en el “tuple” de “dark_knights”. Esto es porque una relación funciona de dos maneras – solo debe establecerse una vez y el valor contara para ambas facciones.
Ahora, creamos una nueva facción copiando el “tuple” “innocents” y pegándolo al final de la lista, antes del ultimo corchete “]” como es habitual. Cambia el nombre y la ID de la facción a “Geoffrey” y entonces sustituye “outlaws” in la lista de relaciones por “player_faction”.
Guarda lo que has hecho hasta ahora. Una vez hecho esto, abre el module_party_templates.py y module_troops.py y cambia la facción del template “new_template” y la facción del troop “Geoffrey” a “fac_geoffrey”. Guarda y cierra los archivos. Ejecuta build_module.bat. Si todo ha ido bien las parties de “new_template” mostraran “Geoffrey” como su facción y serán hostiles hacia el player(jugador).
6.3 -- Module_Strings
module_strings.py es sin duda el archivo mas sencillo en el “module system”. Contiene strings – cadenas de texto que pueden ser mostradas de varias maneras. Los strings son usadas a lo largo de todo el “module system”, desde module_dialogs hasta module_quests; siempre que una cadena de texto necesita ser mostrada por pantalla.
Module_strings, sin embargo, es un repositorio(almacén) para strings independientes, las cuales no están vinculadas a un único archivo. Por lo tanto pueden ser llamadas por operaciones desde cualquier archivo del “module system”.
Puedes ver estas strings usadas en varios lugares del juego, como mensajes desplazándose en la parte inferior izquierda de la pantalla, o en un recuadro del tutorial, o incluso insertada en el menú del juego o una secuencia de dialogo.
Al igual que module_factions, este archivo comienza inmediatamente con una lista Python: strings = [color=darkred] primeros “tuples” están enraizados en el juego y no deben ser editados.
Ejemplo de un string:
("door_locked","The door is locked."),
Desglose del ”tuple”:
1 ) Id de la string. Usada para referenciar las strings en otros archivos.
2 ) texto de la string.
Una característica notable de las strings es la capacidad de poner un valor de registro o incluso otra string dentro de ella. Puedes hacer esto añadiendo por ejemplo, {reg0}en la string. Esto mostrara el valor actual de reg(0). {reg10}mostrara el valor actual de reg(10), etc.
Para strings adicionales, debes usar un registro de string en lugar de una registro normal; esto es porque las strings están almacenadas separadas de los registros. Por ejemplo, {s2} mostrara el contenido de string register 2 – no el contenido de reg(2). Tu eres libre de usar string register 2 y reg(2) al mismo tiempo para cosas diferentes, ellas no se solaparan o interferirán una con otra.
En un dialogo, es posible también mostrar partes(o todo) del contenido de una string de forma diferente dependiendo del genero de la persona a la que va dirigida. Por ejemplo, insertando {sir/madam} en una string hara que la palabra “sir” sea mostrada cuando este dirigida a un hombre y “madam” si la persona es una mujer.
Todas estas opciones(exceptuando la alternación de genero) funcionaran perfectamente en cualquier tipo de campo de string. La alternación de genero solo funcionara en un dialogo.
Para el propósito de la operación “display_message”, es posible mostrar una string en varios colores, añadiendo un código de color hexadecimal en la operación. Por ejemplo, (display_message,<string_id>,[hex_colour_code]),
Aquí teneis una lista de los códigos hexadecimales
utilizables para display_message:
azul = 0xFFAAAAFF
azul claro = 0xFFAAD8FF
rojo = 0xFFFFAAAA
amarillo = 0xFFFFFFAA
rosa = 0xFFFFAAFF
morado = 0xFF6AAA89
negro = 0xFFAAAAAA
blanco = 0xFFFFFFFF
verde = 0xFFAAFFAA
marrón = 0xFF7A4800
6.4 -- Module_Quests
module_quests.py es el ultimo de nuestro pequeños y sencillos archivos. Este contiene las quests(misiones) incluyendo todo el texto relacionado con estas quests. Poniendo nuevas quests aquí nos permite activarlas a través del module system, por lo tanto operaciones que pueden leer el estado actual de la quest y usar ese estado como una condición de operación.
Ejemplo de una quest:
("hunt_down_river_pirates", "hunt down river pirates", qf_show_progression,
"Constable Hareck asked you to hunt down the river pirates that plague the country around Zendar.\
He promised to pay you 5 denars for each river pirate party you eliminate."
),
Esta quest no necesita introducción. Tenemos que dar caza a todos los piratas del rio en un momento u otro. Estos interesantes puntos son el flag qf_show_progression, y usa la barra invertida --\-- para permitir un salto de línea en esta string(un intro). Observa, sin embargo, que usando una barra invertida no se pone un salto de línea en el texto de juego. Esto es usado aquí solo por elegancia.
Desglose del “tuple”:
1 ) ID de la quest. Usada para referenciar quest en otros archivos.
2 ) Nombre de quest. El nombre de la quest como es mostrado en la lista de quest a la derecha de la pantalla.
3 ) Flags de quest
4 ) Descripción de la quest. La descripción larga de la quest, como es mostrada en el gran recuadro de texto en la parte superior izquierda de la pantalla de quests.
Analisis del “tuple” de los piratas:
1 ) ID de la quest = “hunt_down_river_pirates”
2 ) Nombre de quest = “hunt down river pirates”
3 ) Flags de quest = “qf_show_progression”
4 ) Descripción de la quest = "Constable Hareck asked you to hunt down the river pirates that plague the country around Zendar.\
He promised to pay you 5 denars for each river pirate party you eliminate."
qf_show_progression es lo que da a esta quests el porcentaje que has completado, mirando a la derecha de la lista de quests. La lista de quest puede ser encontrada en la derecha de tu pantalla de quests. Este porcentaje no incrementa automáticamente; tu tendras que establecer mediante operaciones si quieres hacer uso de ella.
Si deseas hacer una quest sin ningún flags, simplemente pon 0 en el campo de flags.
En este punto, haremos el primer paso en la creación de nuestra propia quest. Copia el siguiente “tuple” de quest y pegalo al final de la lista Python:
("speak_with_troublemakers", "Parley with the troublemakers", 0,
"Constable Hareck asked you to deal with a bunch of young nobles making trouble around town. How you want to tackle the problem is up to you; Hareck has promised a purse of silver if you succeed."
),
Observa la construcción de este “tuple”. Como puedes ver la solo son necesarios unos poco cambios para hacer una nueva quest, pero incorporarla al juego requiere bastante mas trabajo. Por esta razón nuestro próximo objetivo será module_dialogs.py – donde colocaremos nuestra nueva quest, tropas y party templates.
Guarda tu progreso, cierra el archivo y ejecuta build_module.bat. Si todo ha ido bien estaras preparado para ir a la parte 7 de este tutorial.