Recopilación de tutoriales Nº4: Como añadir animales al mapa de batalla y poder cazarlos.

    Comparte
    avatar
    Hernanxd16
    Caballero de la Orden
    Caballero de la Orden

    : :

    Mensajes : 1777
    Facción : Imperio Calrádico.

    Recopilación de tutoriales Nº4: Como añadir animales al mapa de batalla y poder cazarlos.

    Mensaje por Hernanxd16 el Mar Sep 20, 2016 1:14 am

    Este era un código de caza que venía en el mod Project Age Of Machinery, creado por Highlander y pasado al Warband por HyperCharge, este tutorial lo creé yo.

    Dificultad: Facíl, no se necesita ser un experto en Module System para hacer esto, aparte que los guiaré durante todo el proceso.

    Antes de comezar les explico algunas cosas:
    Lo que yo escriba con negrita es importante o algo destacado.
    Lo que escriba con letra verde es qué hace el código, para que se den una idea.


    Primero, debemos descargar estos archivos y pegarlos en la carpeta del mod. (Créditos a Highlander, yo solo borré los archivos de armas de asedio y deje los animales)
    https://mega.nz/#!gs9ywTIQ!eMnNzZ8CK1tGXHMZiSKW9G9OEFL3niDP_BE-Jft2nys

    Luego, añadimos estas líneas en module.ini

    Código:
    load_mod_resource = OSP_Caceria_de_Animales

    Imagen:

    Ahora, pasemos al Module System.

    1)En module_factions.py buscamos ("culture_6",  "{!}culture_6", 0, 0.9, [], []), , hacemos un espacio y debajo añadimos esto:

    Código:

    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod begin#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
      ("wild_animals","Animales Salvajes",0, 0.1,[("player_faction",-0.15)], [],0xFFFFFF),
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod end#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#


    Este código, lo que hace es crear una nueva facción llamada ''Animales Salvajes'' a la que pertenecerán todos los animales del OSP y que solo el jugador puede atacar (Así no pueden cazar los demas nobles)

    Imagen:

    2)Abrimos module_game_menus.py, buscamos la línea "siege_attack_meets_sally",mnf_scale_picture, y arriba del (, hacemos un espacio y ponemos esto:


    Código:

    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod begin#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
      ("deer_herd",mnf_scale_picture,
       "You encounter a herd of deers.",
       "none",
       [
       (try_begin),
          (gt, "$num_deers_killed",0),
          (troop_clear_inventory, "trp_temp_troop"),
          (troop_add_items, "trp_temp_troop", "itm_deer_meat", "$num_deers_killed"),

          (party_get_num_companions, ":num_deers", "$g_encountered_party"),
          (try_begin),
            (ge, "$num_deers_killed", ":num_deers"),
            (remove_party, "$g_encountered_party"),
          (else_try),
            (party_remove_members, "$g_encountered_party", "trp_deer", "$num_deers_killed"),
          (try_end),
          (assign,"$num_deers_killed",0),
              (troop_sort_inventory, "trp_temp_troop"),
      (change_screen_loot,"trp_temp_troop"),
        (try_end),
        (set_background_mesh, "mesh_pic_cattle"),
       ],
        [
          ("deer_kill",
          [
          (party_get_num_companions, ":num_deers", "$g_encountered_party"),
          (try_begin),
            (le,":num_deers",0),
     (disable_menu_option),
          (try_end),
          ]
          ,"Hunt some of the animals.",
           [
           (set_jump_mission,"mt_deer_hunting"),
           (jump_to_scene,"scn_random_scene_plain_forest"),
           (change_screen_mission),
            ]
           ),
          ("leave",[],"Leave.",
           [(change_screen_return),
            ]
           ),
          ]
      ),
      ("deer_herd_kill_end",0,
       "You shouldn't be reading this.",
       "none",
       [(change_screen_return)],
        [
          ]
      ),
      ("boar_herd",mnf_scale_picture,
       "You encounter a herd of boars.",
       "none",
       [
       (try_begin),
          (gt, "$num_boars_killed",0),
          (troop_clear_inventory, "trp_temp_troop"),
          (troop_add_items, "trp_temp_troop", "itm_boar_meat", "$num_boars_killed"),

          (party_get_num_companions, ":num_deers", "$g_encountered_party"),
          (try_begin),
            (ge, "$num_boars_killed", ":num_deers"),
            (remove_party, "$g_encountered_party"),
          (else_try),
            (party_remove_members, "$g_encountered_party", "trp_boar", "$num_boars_killed"),
          (try_end),
          (assign,"$num_boars_killed",0),
              (troop_sort_inventory, "trp_temp_troop"),
      (change_screen_loot,"trp_temp_troop"),
        (try_end),
        (set_background_mesh, "mesh_pic_cattle"),
       ],
        [
          ("boar_kill",[
          (party_get_num_companions, ":num_deers", "$g_encountered_party"),
          (try_begin),
            (le,":num_deers",0),
     (disable_menu_option),
          (try_end),      
          ],"Hunt some of the animals.",
           [
           (set_jump_mission,"mt_boar_hunting"),
           (jump_to_scene,"scn_random_scene_plain_forest"),
           (change_screen_mission),
            ]
           ),
          ("leave",[],"Leave.",
           [(change_screen_return),
            ]
           ),
          ]
      ),
      ("boar_herd_kill_end",0,
       "You shouldn't be reading this.",
       "none",
       [(change_screen_return)],
        [
          ]
      ),
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod end#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#


    Lo que hace esto, es crear los menus para cuando encontremos a los ciervos y jabalíes en el mapa, y decidamos atacarlos.

    Imagen:

    3)Ahora abriremos module_items.py, nos vamos hasta el final y antes del ["items_end", "Items End", [("shield_round_a",0)], 0, 0, 1, 0, 0], añadimos esta línea:


    Código:

    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod begin#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
     ["deer","Ciervo", [("deer",0)], itp_unique|itp_type_horse, 0, 1411,abundance(40)|hit_points(40)|body_armor(0)|difficulty(11)|horse_speed(40)|horse_maneuver(32)|horse_charge(20),imodbits_horse_basic],
     ["boar","Jabalí", [("boar",0)], itp_unique|itp_type_horse, 0, 1411,abundance(40)|hit_points(100)|body_armor(0)|difficulty(11)|horse_speed(40)|horse_maneuver(20)|horse_charge(100),imodbits_horse_basic],
     
     ["deer_meat","Carne de ciervo", [("raw_meat",0)], itp_merchandise|itp_type_goods|itp_consumable|itp_food, 0, 10,weight(30)|abundance(100)|food_quality(40)|max_ammo(30),imodbits_none],
     ["boar_meat","Carne de jabalí", [("raw_meat",0)], itp_merchandise|itp_type_goods|itp_consumable|itp_food, 0, 20,weight(30)|abundance(100)|food_quality(80)|max_ammo(50),imodbits_none],
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod end#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#


    Lo que hace esto basicamente es, crear a los ciervos y jabalíes en si, y su carne, para cuando los matemos.

    Imagen:

    4)Ya es el turno de module_mission_templates.py, al final del archivo, antes del último ] ponemos esto:


    Código:

    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod begin#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#

      (
        "deer_hunting",mtf_battle_mode,-1,
        "You lead your deers to battle.",
        [
         (1,mtef_team_0|mtef_leader_only,0,aif_start_alarmed,12,[]),
         (4,mtef_visitor_source,0,aif_start_alarmed,0,[]),
         ],
        [
          (ti_tab_pressed, 0, 0, [
          (set_trigger_result,1)], []), #leaving area
          (0, 0, ti_once, [ #spawing deers
         (party_count_members_of_type,":num_deers","$g_encountered_party","trp_deer"),
         (val_sub,":num_deers",1),
         (ge,":num_deers",0),
                         (assign,"$num_deers_killed",0),
                         (get_scene_boundaries, pos10,pos11),
                         (position_get_x, ":scene_min_x", pos10),
                         (position_get_x, ":scene_max_x", pos11),
                         (position_get_y, ":scene_min_y", pos10),
                         (position_get_y, ":scene_max_y", pos11),
         (store_div,":border_x",":scene_max_x",10),
         (val_add,":scene_min_x",":border_x"),
         (val_sub,":scene_max_x",":border_x"),
         (store_div,":border_y",":scene_max_y",10),
         (val_add,":scene_min_y",":border_y"),
         (val_sub,":scene_max_y",":border_y"),
         (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
         (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                         (init_position, pos1),
         (position_set_x,pos1,":x_pos"),
         (position_set_y,pos1,":y_pos"),
         (position_set_z,pos1,10000),
         (position_set_z_to_ground_level,pos1),
                         (set_spawn_position, pos1),
                         (spawn_horse, "itm_deer"),
         (assign,"$leading_deer",reg0),
         (try_for_range,":unused",0,":num_deers"),
                           (init_position, pos1),
           (store_random_in_range,":x_pos_add",0,1000),
           (store_random_in_range,":y_pos_add",0,1000),
           (val_add,":x_pos_add",":x_pos"),
           (val_add,":y_pos_add",":y_pos"),
           (position_set_x,pos1,":x_pos_add"),
           (position_set_y,pos1,":y_pos_add"),
           (position_set_z,pos1,10000),
           (position_set_z_to_ground_level,pos1),
           (set_spawn_position, pos1),
                           (spawn_horse, "itm_deer"),
         (try_end),
                     ], []),
          (1,0,0,[], #wounded deers move slower
          [(try_for_agents,reg(1)),
           (agent_get_item_id,reg(2),reg(1)),
           (eq,reg(2),"itm_deer"),
           (store_agent_hit_points,reg(2),reg(1)),
           (store_mul,reg(3),20,reg(2)),
           (val_div,reg(3),40),
           (agent_set_speed_limit,reg(1),reg(3)),
           (try_end),
          ]),
          (5,0,0,
          [
          (neg|agent_is_alive,"$leading_deer"),
          ],
          [
          (try_for_agents,reg(1)),
           (agent_get_item_id,reg(2),reg(1)),
     (eq,reg(2),"itm_deer"),
     (assign,"$leading_deer",reg(1)),
          (try_end),
          ]),
          (1,0,0,[],
          [
                  (assign,":num_kills",0),
          (try_for_agents,reg(1)),
            (agent_get_item_id,reg(2),reg(1)),
            (eq,reg(2),"itm_deer"),
                    (store_agent_hit_points,reg(2),reg(1)),
     (eq,reg(2),0),
     (val_add,":num_kills",1),
          (try_end),    
          (gt,":num_kills","$num_deers_killed"),      
                         (get_scene_boundaries, pos10,pos11),
                         (position_get_x, ":scene_min_x", pos10),
                         (position_get_x, ":scene_max_x", pos11),
                         (position_get_y, ":scene_min_y", pos10),
                         (position_get_y, ":scene_max_y", pos11),
         (store_div,":border_x",":scene_max_x",10),
         (val_add,":scene_min_x",":border_x"),
         (val_sub,":scene_max_x",":border_x"),
         (store_div,":border_y",":scene_max_y",10),
         (val_add,":scene_min_y",":border_y"),
         (val_sub,":scene_max_y",":border_y"),
         (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
         (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                         (init_position, pos1),
         (position_set_x,pos1,":x_pos"),
         (position_set_y,pos1,":y_pos"),
         (position_set_z,pos1,10000),
         (position_set_z_to_ground_level,pos1),
                         (agent_set_scripted_destination,"$leading_deer",pos1),
                 (assign,"$num_deers_killed",":num_kills"),
          ]),
          (5,0,0,[],
          [
          (agent_get_position,pos1,"$leading_deer"),
          (position_get_x,":x_pos",pos1),
          (position_get_y,":y_pos",pos1),
          (this_or_next|le,":x_pos",5000),
          (this_or_next|le,":y_pos",5000),
          (this_or_next|ge,":x_pos",38000),
          (ge,":y_pos",38000),
                         (get_scene_boundaries, pos10,pos11),
                         (position_get_x, ":scene_min_x", pos10),
                         (position_get_x, ":scene_max_x", pos11),
                         (position_get_y, ":scene_min_y", pos10),
                         (position_get_y, ":scene_max_y", pos11),
         (store_div,":border_x",":scene_max_x",10),
         (val_add,":scene_min_x",":border_x"),
         (val_sub,":scene_max_x",":border_x"),
         (store_div,":border_y",":scene_max_y",10),
         (val_add,":scene_min_y",":border_y"),
         (val_sub,":scene_max_y",":border_y"),
         (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
         (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                         (init_position, pos1),
         (position_set_x,pos1,":x_pos"),
         (position_set_y,pos1,":y_pos"),
         (position_set_z,pos1,10000),
         (position_set_z_to_ground_level,pos1),
                         (agent_set_scripted_destination,"$leading_deer",pos1),
          ]),
          (1,0,0,[],
          [
          (try_for_agents,reg(1)),
     (agent_get_item_id,reg(2),reg(1)),
     (eq,reg(2),"itm_deer"),
     (store_agent_hit_points,":health",reg(1)),
     (store_sub,":damage",100,":health"),
     (agent_get_slot,":prev_damage",reg(1),1),
     (neq,":prev_damage",":damage"),
     (agent_set_slot,reg(1),1,":damage"),
            (agent_get_position,pos1,reg(1)),
            (position_get_x,":x_pos",pos1),
     (position_get_y,":y_pos",pos1),
            (store_random_in_range,":x_pos_add",0,1000),
            (store_random_in_range,":y_pos_add",0,1000),
     (val_add,":x_pos",":x_pos_add"),
     (val_add,":y_pos",":y_pos_add"),
     (position_set_x,pos1,":x_pos"),
     (position_set_y,pos1,":y_pos"),
            (agent_set_scripted_destination,reg(1),pos1),
          (try_end),
          ]),
          (0.5,0,0, #deer travelling
          [],
          [
          (get_player_agent_no,reg(1)),
          (agent_get_position,pos1,reg(1)),
          (agent_get_position,pos4,"$leading_deer"),
          (position_get_x,":x_pos",pos4),
          (position_get_y,":y_pos",pos4),
          (try_for_agents,reg(1)),
     (agent_get_item_id,reg(2),reg(1)),
     (eq,reg(2),"itm_deer"),
            (agent_get_position,pos2,reg(1)),
     (get_distance_between_positions,reg(3),pos1,pos2),
     (try_begin),
            (position_get_x,":pos_x",pos2),
            (position_get_x,":pos_y",pos2),
         (position_get_x, ":scene_min_x", pos10),
                         (position_get_x, ":scene_max_x", pos11),
                         (position_get_y, ":scene_min_y", pos10),
                         (position_get_y, ":scene_max_y", pos11),
         (store_div,":border_x",":scene_max_x",10),
         (val_add,":scene_min_x",":border_x"),
         (val_sub,":scene_max_x",":border_x"),
         (store_div,":border_y",":scene_max_y",10),
         (val_add,":scene_min_y",":border_y"),
         (val_sub,":scene_max_y",":border_y"),
     (this_or_next|gt,":pos_x",":scene_max_x"),
     (this_or_next|lt,":pos_x",":scene_min_x"),
     (this_or_next|gt,":pos_y",":scene_max_y"),
     (lt,":pos_y",":scene_min_y"),
     (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
     (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                    (init_position, pos1),
     (position_set_x,pos1,":x_pos"),
     (position_set_y,pos1,":y_pos"),
     (position_set_z,pos1,10000),
     (position_set_z_to_ground_level,pos1),
                    (agent_set_scripted_destination,reg(1),pos1),
     (else_try),
     (le,reg(3),2500),
     (position_get_x,reg(4),pos1),
     (position_get_x,reg(5),pos2),
     (store_sub,":x_dist",reg(5),reg(4)),
     (val_mul,":x_dist",10),
     (position_get_y,reg(6),pos1),
     (position_get_y,reg(7),pos2),
     (store_sub,":y_dist",reg(7),reg(6)),
     (val_mul,":y_dist",10),
     (init_position,pos3),
     (val_add,":x_dist",reg(5)),
     (val_add,":y_dist",reg(7)),
     (position_set_x,pos3,":x_dist"),
     (position_set_y,pos3,":y_dist"),
            (position_set_z,pos3,10000),
            (position_set_z_to_ground_level,pos3),
     (agent_set_scripted_destination,reg(1),pos3),
     (else_try),
     (get_distance_between_positions,reg(3),pos4,pos2),
     (ge,reg(3),2000),
                           (init_position, pos6),
           (store_random_in_range,":x_pos_add",0,1000),
           (store_random_in_range,":y_pos_add",0,1000),
           (val_add,":x_pos_add",":x_pos"),
           (val_add,":y_pos_add",":y_pos"),
           (position_set_x,pos6,":x_pos_add"),
           (position_set_y,pos6,":y_pos_add"),
           (position_set_z,pos6,10000),
           (position_set_z_to_ground_level,pos6),
           (agent_set_scripted_destination,reg(1),pos6),
     (try_end),
          (try_end),
          ]),
        ]),

        
      (
        "boar_hunting",mtf_battle_mode,-1,
        "You lead your boars to battle.",
        [
         (1,mtef_team_0|mtef_leader_only,0,aif_start_alarmed,12,[]),
         (4,mtef_visitor_source,0,aif_start_alarmed,0,[]),
         ],
        [
          (ti_tab_pressed, 0, 0, [ (set_trigger_result,1)], []), #leaving area
          (0, 0, ti_once, [ #spawing boars
         (party_count_members_of_type,":num_boars","$g_encountered_party","trp_boar"),
         (val_sub,":num_boars",1),
         (ge,":num_boars",0),
                         (assign,"$num_boars_killed",0),
                         (get_scene_boundaries, pos10,pos11),
                         (position_get_x, ":scene_min_x", pos10),
                         (position_get_x, ":scene_max_x", pos11),
                         (position_get_y, ":scene_min_y", pos10),
                         (position_get_y, ":scene_max_y", pos11),
         (store_div,":border_x",":scene_max_x",10),
         (val_add,":scene_min_x",":border_x"),
         (val_sub,":scene_max_x",":border_x"),
         (store_div,":border_y",":scene_max_y",10),
         (val_add,":scene_min_y",":border_y"),
         (val_sub,":scene_max_y",":border_y"),
         (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
         (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                         (init_position, pos1),
         (position_set_x,pos1,":x_pos"),
         (position_set_y,pos1,":y_pos"),
         (position_set_z,pos1,10000),
         (position_set_z_to_ground_level,pos1),
                         (set_spawn_position, pos1),
                         (spawn_horse, "itm_boar"),
         (assign,"$leading_boar",reg0),
         (try_for_range,":unused",0,":num_boars"),
                           (init_position, pos1),
           (store_random_in_range,":x_pos_add",0,1000),
           (store_random_in_range,":y_pos_add",0,1000),
           (val_add,":x_pos_add",":x_pos"),
           (val_add,":y_pos_add",":y_pos"),
           (position_set_x,pos1,":x_pos_add"),
           (position_set_y,pos1,":y_pos_add"),
           (position_set_z,pos1,10000),
           (position_set_z_to_ground_level,pos1),
           (set_spawn_position, pos1),
                           (spawn_horse, "itm_boar"),
         (try_end),
                     ], []),
          (1,0,0,[], #wounded boars move slower
          [(try_for_agents,reg(1)),
           (agent_get_item_id,reg(2),reg(1)),
           (eq,reg(2),"itm_boar"),
           (store_agent_hit_points,reg(2),reg(1)),
           (store_mul,reg(3),20,reg(2)),
           (val_div,reg(3),100),
           (agent_set_speed_limit,reg(1),reg(3)),
           (try_end),
          ]),
          (5,0,0,
          [
          (neg|agent_is_alive,"$leading_boar"),
          ],
          [
          (try_for_agents,reg(1)),
           (agent_get_item_id,reg(2),reg(1)),
     (eq,reg(2),"itm_boar"),
     (assign,"$leading_boar",reg(1)),
          (try_end),
          ]),
          (1,0,0,[],
          [
                  (assign,":num_kills",0),
          (try_for_agents,reg(1)),
            (agent_get_item_id,reg(2),reg(1)),
            (eq,reg(2),"itm_boar"),
                    (store_agent_hit_points,reg(2),reg(1)),
     (eq,reg(2),0),
     (val_add,":num_kills",1),
          (try_end),    
          (gt,":num_kills","$num_boars_killed"),      
                         (get_scene_boundaries, pos10,pos11),
                         (position_get_x, ":scene_min_x", pos10),
                         (position_get_x, ":scene_max_x", pos11),
                         (position_get_y, ":scene_min_y", pos10),
                         (position_get_y, ":scene_max_y", pos11),
         (store_div,":border_x",":scene_max_x",10),
         (val_add,":scene_min_x",":border_x"),
         (val_sub,":scene_max_x",":border_x"),
         (store_div,":border_y",":scene_max_y",10),
         (val_add,":scene_min_y",":border_y"),
         (val_sub,":scene_max_y",":border_y"),
         (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
         (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                         (init_position, pos1),
         (position_set_x,pos1,":x_pos"),
         (position_set_y,pos1,":y_pos"),
         (position_set_z,pos1,10000),
         (position_set_z_to_ground_level,pos1),
                         (agent_set_scripted_destination,"$leading_boar",pos1),
                 (assign,"$num_boars_killed",":num_kills"),
          ]),
          (5,0,0,[],
          [
          (agent_get_position,pos1,"$leading_boar"),
          (position_get_x,":x_pos",pos1),
          (position_get_y,":y_pos",pos1),
          (this_or_next|le,":x_pos",5000),
          (this_or_next|le,":y_pos",5000),
          (this_or_next|ge,":x_pos",38000),
          (ge,":y_pos",38000),
                         (get_scene_boundaries, pos10,pos11),
                         (position_get_x, ":scene_min_x", pos10),
                         (position_get_x, ":scene_max_x", pos11),
                         (position_get_y, ":scene_min_y", pos10),
                         (position_get_y, ":scene_max_y", pos11),
         (store_div,":border_x",":scene_max_x",10),
         (val_add,":scene_min_x",":border_x"),
         (val_sub,":scene_max_x",":border_x"),
         (store_div,":border_y",":scene_max_y",10),
         (val_add,":scene_min_y",":border_y"),
         (val_sub,":scene_max_y",":border_y"),
         (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
         (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                         (init_position, pos1),
         (position_set_x,pos1,":x_pos"),
         (position_set_y,pos1,":y_pos"),
         (position_set_z,pos1,10000),
         (position_set_z_to_ground_level,pos1),
                         (agent_set_scripted_destination,"$leading_boar",pos1),
          ]),
          (1,0,0,[],
          [
          (try_for_agents,reg(1)),
     (agent_get_item_id,reg(2),reg(1)),
     (eq,reg(2),"itm_boar"),
     (store_agent_hit_points,":health",reg(1)),
     (store_sub,":damage",100,":health"),
     (agent_get_slot,":prev_damage",reg(1),1),
     (neq,":prev_damage",":damage"),
     (agent_set_slot,reg(1),1,":damage"),
            (agent_get_position,pos1,reg(1)),
            (position_get_x,":x_pos",pos1),
     (position_get_y,":y_pos",pos1),
            (store_random_in_range,":x_pos_add",0,1000),
            (store_random_in_range,":y_pos_add",0,1000),
     (val_add,":x_pos",":x_pos_add"),
     (val_add,":y_pos",":y_pos_add"),
     (position_set_x,pos1,":x_pos"),
     (position_set_y,pos1,":y_pos"),
            (agent_set_scripted_destination,reg(1),pos1),
          (try_end),
          ]),
          (0.5,0,0, #boar travelling
          [],
          [
          (get_player_agent_no,reg(1)),
          (agent_get_position,pos1,reg(1)),
          (agent_get_position,pos4,"$leading_boar"),
          (position_get_x,":x_pos",pos4),
          (position_get_y,":y_pos",pos4),
          (try_for_agents,reg(1)),
     (agent_get_item_id,reg(2),reg(1)),
     (eq,reg(2),"itm_boar"),
            (agent_get_position,pos2,reg(1)),
     (get_distance_between_positions,reg(3),pos1,pos2),
     (try_begin),
            (position_get_x,":pos_x",pos2),
            (position_get_x,":pos_y",pos2),
         (position_get_x, ":scene_min_x", pos10),
                         (position_get_x, ":scene_max_x", pos11),
                         (position_get_y, ":scene_min_y", pos10),
                         (position_get_y, ":scene_max_y", pos11),
         (store_div,":border_x",":scene_max_x",10),
         (val_add,":scene_min_x",":border_x"),
         (val_sub,":scene_max_x",":border_x"),
         (store_div,":border_y",":scene_max_y",10),
         (val_add,":scene_min_y",":border_y"),
         (val_sub,":scene_max_y",":border_y"),
     (this_or_next|gt,":pos_x",":scene_max_x"),
     (this_or_next|lt,":pos_x",":scene_min_x"),
     (this_or_next|gt,":pos_y",":scene_max_y"),
     (lt,":pos_y",":scene_min_y"),
     (store_random_in_range,":x_pos",":scene_min_x",":scene_max_x"),
     (store_random_in_range,":y_pos",":scene_min_y",":scene_max_y"),
                    (init_position, pos1),
     (position_set_x,pos1,":x_pos"),
     (position_set_y,pos1,":y_pos"),
     (position_set_z,pos1,10000),
     (position_set_z_to_ground_level,pos1),
                    (agent_set_scripted_destination,reg(1),pos1),
     (else_try),
     (le,reg(3),2500),
     (position_get_x,reg(4),pos1),
     (position_get_x,reg(5),pos2),
     (store_sub,":x_dist",reg(5),reg(4)),
     (val_mul,":x_dist",10),
     (position_get_y,reg(6),pos1),
     (position_get_y,reg(7),pos2),
     (store_sub,":y_dist",reg(7),reg(6)),
     (val_mul,":y_dist",10),
     (init_position,pos3),
     (val_add,":x_dist",reg(5)),
     (val_add,":y_dist",reg(7)),
     (position_set_x,pos3,":x_dist"),
     (position_set_y,pos3,":y_dist"),
            (position_set_z,pos3,10000),
            (position_set_z_to_ground_level,pos3),
     (agent_set_scripted_destination,reg(1),pos3),
     (else_try),
     (get_distance_between_positions,reg(3),pos4,pos2),
     (ge,reg(3),2000),
                           (init_position, pos6),
           (store_random_in_range,":x_pos_add",0,1000),
           (store_random_in_range,":y_pos_add",0,1000),
           (val_add,":x_pos_add",":x_pos"),
           (val_add,":y_pos_add",":y_pos"),
           (position_set_x,pos6,":x_pos_add"),
           (position_set_y,pos6,":y_pos_add"),
           (position_set_z,pos6,10000),
           (position_set_z_to_ground_level,pos6),
           (agent_set_scripted_destination,reg(1),pos6),
     (try_end),
          (try_end),
          ]),
        ]),
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod end#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#

    No hay mucha explicación para esto, es lo que hace que puedas ''pelear'' contra los animales (en realidad no peleas, ellos huyen y debes matarlos)

    Imagen:


    5)Abramos module_party_templates.py buscamos la linea ("default_prisoners","Default Prisoners",0,0,fac_commoners,0,[(trp_bandit,5,10,pmf_is_prisoner)]), y debajo de ella ponemos esto:

    Código:
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod begin#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#

      ("deer_herd","Manada de ciervos",icon_cattle|carries_goods(10),0,fac_wild_animals,merchant_personality,[(trp_deer,8,15)]),
      ("boar_herd","Manada de jabalíes",icon_cattle|carries_goods(10),0,fac_wild_animals,merchant_personality,[(trp_boar,2,4)]),
    #  ("village_hunters","Village Hunters",icon_peasant,0,fac_innocents,soldier_personality,[(trp_hunter,8,16)]),

    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod end#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#

    Esto hace que los animales puedan aparecer en el mapa de batalla.


    Imagen:

    6)Ahora le toca a module_scripts.py, buscamos la línea (party_set_morale, "p_main_party", reg0), y debajo ponemos esto:

    Código:

    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod begin#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
          (item_set_slot, "itm_deer_meat", slot_item_food_bonus, 2),
          (item_set_slot, "itm_deer_meat", slot_item_food_bonus, 5),
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod end#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#

    Esto hace que cuando matemos a los animales, nos dén su carne.

    Imagen:

    Todavía en module_scripts.py buscamos (jump_to_menu, "mnu_cattle_herd"), y debajo ponemos esto:

    Código:

    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod begin#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
             (else_try),
               (party_get_template_id, ":party_template","$g_encountered_party"),
       (eq,":party_template","pt_deer_herd"),
               (jump_to_menu, "mnu_deer_herd"),
             (else_try),
               (party_get_template_id, ":party_template","$g_encountered_party"),
       (eq,":party_template","pt_boar_herd"),
               (jump_to_menu, "mnu_boar_herd"),
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod end#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#

    Esto lo que hace es que cuando los matemos y nos dé la carne, se abra la ventana del inventario

    Imagen:

    Siguiendo en module_scripts.py buscamos (spawn_around_party,":spawn_point","pt_forest_bandits"), y debajo del (try_end), ponemos esto:

    Código:

    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod begin#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
         (try_begin),
           (store_num_parties_of_template, ":num_parties", "pt_deer_herd"),
           (lt,":num_parties",5),
           (store_random,":spawn_point",num_mountain_bandit_spawn_points),
           (val_add,":spawn_point","p_forest_bandit_spawn_point"),
           (spawn_around_party,":spawn_point","pt_deer_herd"),
         (try_end),
         (try_begin),
           (store_num_parties_of_template, ":num_parties", "pt_boar_herd"),
           (lt,":num_parties",2),
           (store_random,":spawn_point",num_mountain_bandit_spawn_points),
           (val_add,":spawn_point","p_forest_bandit_spawn_point"),
           (spawn_around_party,":spawn_point","pt_boar_herd"),
         (try_end),
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod end#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#

    Esto hace que los animales spawneen en el mapa.

    Imagen:


    7) Por último, abrimos module_troops.py , buscamos ["relative_of_merchants_end","relative_of_merchants_end","relative_of_merchants_end",tf_hero, 0,0, fac_commoners,[],def_attrib|level(2),wp(20),knows_inventory_management_10,0], y debajo pegamos esto:

    Código:

    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod begin#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
      ["deer","Ciervo","Ciervo",0,no_scene,reserved,fac_neutral, [], def_attrib|level(0),wp(60),0,swadian_face_younger_1, swadian_face_younger_1],
      ["boar","Jabalí","Jabalí",0,no_scene,reserved,fac_neutral, [], def_attrib|level(0),wp(60),0,swadian_face_younger_1, swadian_face_younger_1],
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    #-#-#-#Hunting Mod end#-#-#-#
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#

    Esto hace que los ciervos y jabalíes, que antes eran objetos, se conviertan en una tropa.

    Imagen:


    Ya esta, hemos terminado, los animales spawnearan alrededor de Dhirim-Uxkhal, así que ¡¡A CAZAR!!.


    _________________
    «Ten una sola mente y una sola fe, entonces podrás conquistar a tus enemigos y vivir una vida larga y feliz» Gengis Khan.
    «En realidad no me preocupa que quieran robar mis ideas, me preocupa que ellos no las tengan» Nikola Tesla.

    ¿Quieres crear un mod pero no sabes cómo? ¿O simplemente tienes una duda al crear tu propio mod? Visita el hilo de preguntas y respuestas: http://www.caballerosdecalradia.net/t6155-preguntas-y-respuestas-sobre-el-modding-de-mb-plantea-aqui-tus-problemas-al-crear-tu-mod


    A New Era For Calradia: Mod sobre una Calradia del siglo XIV, en el que un Imperio la dominó, y le trajo nuevas tecnologías. ¡Apoya el desarrollo!
    avatar
    LordArrozConPollo
    Espadachín
    Espadachín

    Mensajes : 124
    Facción : Ciudad de Zaun

    Re: Recopilación de tutoriales Nº4: Como añadir animales al mapa de batalla y poder cazarlos.

    Mensaje por LordArrozConPollo el Mar Sep 20, 2016 1:50 am

    2 cosas.

    ¿Los
    Código:
    #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    también se tienen que añadir?

    Ademas ¿seria posible que pasaras el pack completo (con las armas de asedio)?

    Muy bueno el tutorial. +rep
    avatar
    Clint Easwood
    Espadachín
    Espadachín

    Mensajes : 155
    Edad : 19
    Facción : Reino del Norte

    Re: Recopilación de tutoriales Nº4: Como añadir animales al mapa de batalla y poder cazarlos.

    Mensaje por Clint Easwood el Mar Sep 20, 2016 1:54 am

    Eh!! muy buena, veré si puedo añadirlo a mi mod.   :good:


    _________________


    "Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz"
    -Benito Juarez-

    Contenido patrocinado

    Re: Recopilación de tutoriales Nº4: Como añadir animales al mapa de batalla y poder cazarlos.

    Mensaje por Contenido patrocinado


      Fecha y hora actual: Lun Jul 24, 2017 10:40 am