Tutorial: Agregar nuevas Localizaciones

    Comparte

    Lope de Rojas
    Usuario VIP
    Usuario VIP

    Mensajes : 39
    Facción : Istiniar

    Tutorial: Agregar nuevas Localizaciones

    Mensaje por Lope de Rojas el Mar Feb 12, 2013 1:34 pm

    Por todos es sabido que las localizaciones son una de las partes más importantes en la saga M&B, esos lugares míticos que se nos quedan grabados en la mente, plazas que hemos defendido bajo una lluvia de flechas Vaegires durante toda una noche, asaltos a las recias murallas swadianas o razzias en las calurosas villas del Sultanato Sarraní... Y entonces hacemos nuestro mod... y nos quedamos cortos de castillos y aldeas... ¿Y qué sería de nuestro gargantuesco plan de un mod mundial si no podemos introducir nuevos lugares en el mapa?

    En este tutorial aprenderemos a añadir ciudades, castillos y aldeas a nuestro mod de forma relativamente sencilla.


    1.- Empezando

    Ante todo, planificación. No podemos pretender añadir lugares a lo loco sin una organización previa. Nunca viene mal tener un bloc de notas o algo donde escribir cerca para saber qué tenemos que hacer y qué es lo que ya hemos hecho. Dispondremos del Module System, del Python instalado (para compilar sin problemas) y un editor de textos adecuado (por mi parte uso el Notepad++, resulta realmente cómodo y es bastante intuitivo). Y no menos importante, nos armaremos de paciencia.

    2.- Añadiendo la localización (module_parties.py)

    Comenzamos con lo más básico: introducir los datos básicos de la ciudad/castillo/villa en nuestro primer archivo del MS. Abrimos module_parties.py y nos encontramos los archivos referentes a todas las localizaciones físicas permanentes del juego (party_templates.py contiene los datos de las patrullas, bandidos... no los confundamos). Si hemos consultado antes el segundo capítulo de mis inacabados tutoriales sabremos perfectamente que significan las partes de todas esas líneas. Por si acaso, condensaré la información necesaria en este hilo:


    Código:
    ("town_1","Sargoth",icon_town|pf_town,no_menu,pt_none,fac_neutral,0, ai_bhvr_hold,0,(-1.55,66.45),[],170)

    1) Id de la party. “town_1”
    2) Nombre de la party. “Sargoth”
    3) Flags. icon_town|pf_town
    4) Menú. no_menu
    5) Party-template. pt_none
    6) Facción. fac_neutral
    7) Personalidad. 0
    Cool Comportamiento de la IA. ai_bhvr_hold
    9) IA-target party. 0
    10) Coordenadas Iniciales. (-1.55,66.45)
    11) Lista de tropas acantonadas. [] (none)
    12) Orientación de la “party”. 170

    Si echamos un rápido vistazo al archivo, veremos que todas las líneas tienen la misma forma y organización. Proseguimos:

    Si queremos añadir una localización Y, ya sea ciudad, castillo o aldea, deberemos proceder SIEMPRE de la misma forma: copiaremos una línea de código del mismo tipo que la localización que queramos añadir (ciudad - ciudad, castillo - castillo, aldea - aldea) y la pegaremos a continuación de la última localización de ese tipo y antes del siguiente bloque de localizaciones, nunca al final del archivo. Así, además de tener el código ordenado y que nos permita encontrar mejor las cosas, evitaremos esos detalles sin importancia que son los errores por haber colocado lo que no debemos donde no debemos.

    Así pues, si copiamos una ciudad, colocaremos la línea nueva de la siguiente forma:

    Código:

      ("town_22","Bariyye", icon_town_desert|pf_town, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(165, -106.7),[], 225),

    #  Aztaq_Castle     
    #  Malabadi_Castle
      ("castle_1","Culmarr_Castle",icon_castle_a|pf_castle, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-101.3, -21),[],50),

    Código:

      ("town_22","Bariyye", icon_town_desert|pf_town, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(165, -106.7),[], 225),
      ("town_1","Sargoth",  icon_town|pf_town, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-1.55, 66.45),[], 170),

    #  Aztaq_Castle     
    #  Malabadi_Castle
      ("castle_1","Culmarr_Castle",icon_castle_a|pf_castle, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-101.3, -21),[],50),

    Después de eso podremos renombrar, cambiar los iconos y todo lo que queramos... podemos copiar de 5 en 5, de 10 en 10... siempre y cuando después sigamos correctamente los pasos y no nos olvidemos ninguna scene. Para encontrar mejor las referencias, yo suelo continuar la sucesión de números de las IDs, así pues, las nuevas localizaciones serán town_23, town_24... castle_49, castle_50... eso queda a gusto de cada uno. El caso es que después no tratemos de referenciarlas con otro nombre. Guardamos, compilamos y cruzamos los dedos. Si no hay ningún error, continuaremos.

    3.- Copiando las Scenes (Carpeta SceneObj)

    Vamos a otra de las partes importantes. Por un lado tenemos los códigos que hacen que todo funcione, pero sin el escenario en sí, da igual cuanto tiempo hayamos pasado con la programación. Abrimos la carpeta SceneObj de nuestro mod y contemplamos la larga lista de archivos. Un rápido vistazo nos dejará ver como se organizan:

    Ciudades

    Código:
    scn_town_21_alley.sco
    scn_town_21_arena.sco
    scn_town_21_castle.sco
    scn_town_21_center.sco
    scn_town_21_prison.sco
    scn_town_21_store.sco
    scn_town_21_tavern.sco
    scn_town_21_walls.sco

    Castillos

    Código:
    scn_castle_1_interior.sco
    scn_castle_1_exterior.sco
    scn_castle_1_prison.sco

    Aldeas

    Código:
    scn_village_34.sco

    Cada una de las localizaciones lleva asignados un número determinado de escenarios. Copiaremos los que hagan falta para que nuestras recién creadas localizaciones tengan sus respectivas scenes. Cambiaremos el número de cada una al de la localización añadida, por ejemplo:

    Código:
    scn_town_23_alley.sco
    scn_town_23_arena.sco
    scn_town_23_castle.sco
    scn_town_23_center.sco
    scn_town_23_prison.sco
    scn_town_23_store.sco
    scn_town_23_tavern.sco
    scn_town_23_walls.sco

    4.- Referenciar los cambios (module_scenes.py)

    Cuando ya tenemos las scenes copiadas, es hora de referenciarlas desde el MS, así que vamos a module_scenes.py y empezamos a copiar y pegar como locos. Es un paso sencillo, pues sólo debemos tener en mente que cada tipo de localizacion de las ciudades tiene su grupo, y que añadiremos las nuevas al final de cada grupo y antes del siguiente (town_XX_alley con town_alley, town_XX_castle con town_castle...), quedando de la siguiente forma (sólo pongo un ejemplo, los demás son iguales):

    Código:
      ("town_21_arena",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000002200005000005f57b00005885000046bd00006d9c",
        [],[],"outer_terrain_desert"),
      ("town_22_arena",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000002200005000005f57b00005885000046bd00006d9c",
        [],[],"outer_terrain_desert"),

    ("town_23_arena",sf_generate,"none", "none", (0,0),(100,100),-100,"0x00000002200005000005f57b00005885000046bd00006d9c",
        [],[],"outer_terrain_desert"),

    En el caso de las aldeas y castillos lo tendremos más sencillo, pues sólo hemos de añadir una localización en el caso de las aldeas (como siempre al final de la lista de aldeas) o en bloque al final de la lista en el caso de los castillos:

    Código:
    ("castle_45_exterior",sf_generate,"none", "none", (0,0),(100,100),-100,"0x0000000254c2ec0000042509000016da0000017200000ed3",
        [],[],"outer_terrain_desert"),
      ("castle_45_interior",sf_indoors, "arabian_interior_keep_b", "bo_arabian_interior_keep_b", (-100,-100),(100,100),-100,"0",
        ["exit"],["castle_35_seneschal"]),
      ("castle_45_prison",sf_indoors,"interior_prison_n", "bo_interior_prison_n", (-100,-100),(100,100),-100,"0",
        [],[]),

    Si nos fijamos, hay una parte del código en todos los escenarios al aire libre que tiene la siguiente forma: outer_terrain_xxxxxxxx. Esa parte hace referencia al tipo de *.brf que se colocará alrededor del mapa (si, esos bordes de dudoso acabado gráfico). Tenemos los siguientes tipos:

    outer_terrain_plain planicies
    outer_terrain_desert desiertos
    outer_terrain_steppe estepas
    outer_terrain_town_thir_1 para Thir (porque tiene puerto, es especial para esa ciudad)
    outer_terrain_snow nieve

    Así, deberemos ajustarlo para que no nos aparezca un perfecto desierto de ardiente arena alrededor de nuestra aldea nevada. Guardamos, compilamos y cuando no haya errores, continuamos.

    5.- Añadiendo el factor NPC (module_troops.py)

    Una vez hemos llegado a este punto, ya tenemos casi a punto nuestras localizaciones, sólo que sufren un preocupante vacío de poder. Nadie las gestiona, y si las dejamos a su suerte, sus muros se derrumbarán, sus vigas de madera se pudrirán y las ratas devorarán a los incautos que crucen sus puertas... Es el momento de añadir cuanta chusma burocrática haga falta para que las ciudades, castillos y aldeas funcionen de acuerdo a las leyes del senescal o anciano del lugar.

    Para eso nos dirigimos al archivo module_troops.py y buscamos entre sus incontables líneas a los siguientes NPCs:

    Ciudades
    "town_1_seneschal"
    "town_1_arena_master"
    "town_1_armorer"
    "town_1_weaponsmith"
    "town_1_tavernkeeper"
    "town_1_merchant"
    "town_1_horse_merchant"
    "town_1_mayor"
    "town_1_master_craftsman"

    Castillos
    "castle_1_seneschal"

    Aldeas
    "village_1_elder"

    En cada bloque iremos añadiendo tantos como ciudades/castillos/aldeas hayamos añadido, siempre siguiendo las pautas que he repetido a lo largo del tutorial (al final del bloque de los de su tipo y antes del siguiente). El "town_X_master_craftsman" se localiza de los últimos, pero sigue las mismas directrices que los demás. Cambiamos los números al número de referencia de nuestras nuevas localizaciones y listo. Podemos cambiarles la ropa, las caras... esas cosas tan divertidas que se eternizan hasta la extenuación y parecen nunca acabar (Hágalo bajo su cuenta y riesgo, la casa de Rojas no se responsabiliza de posibles daños cerebrales posteriores a la realización de los cambios).

    Guardamos, compilamos y seguimos con los cambios si no hemos obtenido errores.

    6.- Añadiendo el factor Facción (module_scripts.py)

    Genial, ahora tenemos un lugar perfectamente gestionado por sus gentes, pero lejos de cualquier jurisdicción de los reinos... y nosotros, como buenos señores feudales que respetamos el derecho del pueblo a ser esclavizado y aplastado a impuestos, no debemos dejar que continúe así sin tomar cartas en el asunto. ¿Quién sabe que terribles ideas podrían ocurrírseles si se les deja solos?

    Abrimos el archivo module_scripts.py y buscamos la siguiente línea:

    Código:
    (call_script, "script_give_center_to_faction_aux", "p_town_1", "fac_kingdom_4"),

    Veremos una larga lista de estos códigos. Estos en particular asignan la localización a un reino concreto (en el ejemplo p_town_1 -p_ es el prefijo que hace referencia al archivo module_parties.py- pertenecería a la facción 4 -fac_ es el prefijo que hace referencia al archivo module_factions.py-).

    Añadimos al final cuantas líneas sean necesarias (al final del bloque de ciudades y al final del bloque de castillos) y asignamos nuestras nuevas localizaciones a sus correspondientes facciones.

    Casi inmediatamente después encontraremos las asignaciones de ciudades a los nobles:

    Código:
    (call_script, "script_give_center_to_lord", "p_town_1",  "trp_kingdom_4_lord", 0),

    Siguiendo la misma forma, añadiremos las líneas correspondientes y asignaremos las ciudades a los nobles y reyes (las referencias a los lords las podemos encontrar en el archivo module_troops.py)

    Vemos que los castillos no se asignan de forma predeterminada, únicamente hay unos pocos que pertenecen a ciertos nobles, Si queremos que Lord Panocha posea el castillo de la Colina Panochil usaremos el siguiente código:

    Código:
    (call_script, "script_give_center_to_lord", "p_castle_35", "trp_knight_1_3", 0)

    cambiando castle_35 por el correspondiente al castillo de la Colina Panochil y knight_1_3 a la ID de Lord Panocha.

    Nota: esos añadidos deberán ir inmediatamente antes de la línea

    Código:
    (call_script, "script_assign_lords_to_empty_centers"),

    que asigna las localizaciones sin dueño a los nobles de sus respectivos reinos.

    7.- Comerciando, que es gerundio (continuamos en module_scripts.py)

    Ahora ya tenemos un noble feliz al mando, unos senescales felizmente asignados a sus tareas, unos aldeanos felizmente abusados y unos comerciantes... no tan felices. Antes de que la gente comience a morir por causas naturales, pues es natural morirse de hambre si no comes nada, añadiremos las rutas comerciales.

    Buscamos en module_scripts.py las líneas:

    Código:
    #AHMERRAD - 6 Routes
          #Tulga, Halmar, Narra, Shariz, Durquba
          (call_script, "script_set_trade_route_between_centers", "p_town_21", "p_town_22"), #Bariyye

         #BARIYYE - 6 Routes
          #Tulga, Halmar, Narra, Shariz, Durquba, Ahmerrad

    y antes de ese precioso ]),

    añadimos, de acuerdo a la siguiente forma, las rutas comerciales que deseemos:

    Código:
         (call_script, "script_set_trade_route_between_centers", "p_town_23", "p_town_1"),      #sargoth

    La primera referencia responde al lugar de salida, la segunda al destino. Se pueden añadir tantas como necesitemos.

    Guardamos, compilamos... y si no da errores, podremos visitar ingame nuestras nuevas localizaciones.

    Llegados a este punto, se da por concluido este tutorial. Si todo ha salido correctamente tendremos nuestras flamantes ciudades listas para ser visitadas, asediadas o defendidas. Si queda alguna duda, preguntad sin miedo, de la misma forma que si detectáis algún error avisadme sin demora para que lo pueda cambiar y no haya algún pobre desgraciado dándose de golpes contra el teclado porque falla el tutorial.


    _________________

    You could be my date...

    Mikeboix
    Emperador
    Emperador

    : : wyrd bi∂ ful ārǣd
    Mensajes : 11289
    Facción : Imperio de Calradia

    Re: Tutorial: Agregar nuevas Localizaciones

    Mensaje por Mikeboix el Mar Feb 12, 2013 4:13 pm

    Grandísimo trabajo, como de costumbre. Sin duda le daré gran utilidad en el mod que estoy planeando con Sowort. Ya te contaré qué tal cuando lo probemos.
    Un saludazo y +rep del tirón!


    _________________
    ~No olvides leer las normas. No resuelvo dudas de los juegos por mensaje privado.~




    Last Breath of Calradian Empire: Mod sobre el glorioso pasado de Calradia. ¡Apoya el desarrollo!

    Prodigy
    Caballero de la Orden
    Caballero de la Orden

    : : Just in case they come creepy
    Mensajes : 2519
    Edad : 18
    Facción : AFK Army

    Re: Tutorial: Agregar nuevas Localizaciones

    Mensaje por Prodigy el Jue Jul 25, 2013 11:51 pm

    Gracias,eres una aplanadora,comenzare de imediato Wink


    _________________
    ''Un hombre bueno puede ser idiota, pero un hombre malo tiene que ser inteligente''-Leonardo Davinci

    "Intuyo que el placer que da gobernar es muy grande, puesto que todos quieren lograrlo".- Voltaire


    Never gonna give up

    kaisermzn
    Miliciano
    Miliciano

    Mensajes : 86

    Re: Tutorial: Agregar nuevas Localizaciones

    Mensaje por kaisermzn el Vie Jul 26, 2013 12:58 am

    Muchas gracias!! A ver si puedo añadir mi pueblo al mod que suelo usar XD


    _________________
    MEDIEVO RETURNS en tu canal de Mount&Blade: Warband


    Contenido patrocinado

    Re: Tutorial: Agregar nuevas Localizaciones

    Mensaje por Contenido patrocinado Hoy a las 8:56 am


      Fecha y hora actual: Dom Dic 11, 2016 8:56 am