Flying Squirrel Entertainment

Mount & Blade Warband: Napoleonic Wars => Modifications => Topic started by: pengbuster on April 03, 2017, 09:01:42 pm

Title: Where to put scripts
Post by: pengbuster on April 03, 2017, 09:01:42 pm
I have these 2 scripts, I know which files to put them in, but how do I put them in?

module_mission_templates
Code
automatic_fire_init = (
    ti_before_mission_start, 0, ti_once, [],
   [
       (call_script, "script_autofire_reset_values"),
   ])
   
automatic_fire_test = (
    0.2, 0, 0,
   [
       (key_is_down, key_left_mouse_button),
      (neg|key_is_down, key_right_mouse_button),
      (assign, "$has_item_equipped", 0),
      (get_player_agent_no, ":player"),               
      (call_script, "script_autofire_agent_try_for_items_equipped", ":player", "itm_amer_ar", "itm_union_smg"),
      (eq, "$has_item_equipped", 1),
      (agent_is_alive, ":player"),
      (neg|agent_is_wounded, ":player"),
      (eq, "$autofire_lock", 0),
   ],
   [
        (assign, "$autofire_lock", 1),
       (try_begin),
        (gt, "$ammunition", 0),
        (try_for_agents, ":agent"),
           (get_player_agent_no, ":player"),
          (agent_get_position, pos3, ":player"),
           (position_move_x, pos3, 1),
           (position_move_y, pos3, 96),
           (position_move_z, pos3, 125),
          (particle_system_burst, "psys_muzzle_flash", pos3, 1), #You'll need to make your own muzzle flash particle system, it's rather simple.
               (play_sound, "snd_fullautotest"), #Change the sound to your liking
          (call_script, "script_autofire_get_agent_positions", ":player", ":agent"),
          (try_begin),
              (eq, "$autofire_damage", 1),
             (call_script, "script_autofire_damage_agent", ":player", ":agent", "psys_game_blood", 15, 10, 17), #Particle system not working yet
           (try_end),
                (val_sub, "$ammunition", 1),
       (try_end),
         (else_try),
            (eq, "$ammunition", 0),
            (agent_set_animation, ":player", "anim_reload_crossbow"), #Change the animation to your liking
            (assign, "$ammunition", 180),
         (try_end),       
       (assign, "$autofire_lock", 0),
   ])

autofire_ammo_init = ( #also needed, or you will enter scenes with no ammo.
ti_before_mission_start, 0, ti_once, [],

 [(get_player_agent_no, ":player"),
  (agent_has_item_equipped, "itm_cartridges"),
  (assign, "$ammunition", 180),
   ])

module_scripts
Code
#Autofire script by cdvader and Rize---------------------------------------------------------         
   #script_autofire_damage_agent
   #Input 1: Damager.
   #Input 2: Agent.
   #Input 3: Particle System Burst.
   #Input 4: Particle System Burst Power.
   #Input 5: Random damage value BEGIN.
   #Input 6: Random damage value END.
   #Output: Damage.
   ("autofire_damage_agent",
   [
       (store_script_param, ":player", 1),
      (store_script_param, ":agent", 2),
      (store_script_param, ":psys", 3),
      (store_script_param, ":psys_power", 4),
      (store_script_param, ":l_range", 5),
      (store_script_param, ":h_range", 6),               
      (try_begin),
          (agent_get_position, pos1, ":agent"),
                    (agent_get_position, pos2, ":player"),
                    (neg|position_is_behind_position, pos1, pos2),
         (particle_system_burst, ":psys", pos1, ":psys_power"),
          (store_agent_hit_points, ":hp", ":agent", 1),
         (store_random_in_range, ":rand", ":l_range", ":h_range"),
         (val_sub, ":hp", ":rand"),
         (val_max, ":hp", 0),
         (neq, ":agent", ":player"),
         (agent_is_alive, ":agent"),
         (agent_set_hit_points, ":agent", ":hp", 1),
         (assign, reg1, ":hp"),
         (try_begin),
            (gt, reg1, 0),
            (display_message, "@Delivered {reg1} damage."),
         (try_end),
         (try_begin),
             (lt, ":hp", 1),
            (agent_deliver_damage_to_agent, ":player", ":agent"),
         (try_end),                   
      (try_end),
   ]),

    #script_autofire_agent_has_item_equipped
   #Input 1: Agent.
   #Input 2: Weapon item.
   #Output: $has_item_equipped variable.
   ("autofire_agent_has_item_equipped",
   [
       (store_script_param, ":agent", 1),
      (store_script_param, ":item", 2),
      (try_begin),
          (agent_get_wielded_item, ":w_item", ":agent", 0),
         (eq, ":w_item", ":item"),
         (assign, "$has_item_equipped", 1),
      (else_try),
          (assign, "$has_item_equipped", 0),
      (try_end),
   ]),
   
   #script_autofire_agent_try_for_items_equipped
   #Input 1: Agent.
   #Input 2: Weapon item BEGIN.
   #Input 3: Weapon item END.
   #Output: $has_item_equipped variable.
   ("autofire_agent_try_for_items_equipped",
   [
       (store_script_param, ":agent", 1),
      (store_script_param, ":item_begin", 2),
      (store_script_param, ":item_end", 3),
      (try_for_range, ":all_items", ":item_begin", ":item_end"),
         (agent_get_wielded_item, ":w_item", ":agent", 0),
         (is_between, ":w_item", ":all_items"),
         (assign, "$has_item_equipped", 1),
      (else_try),
          (agent_get_wielded_item, ":w_item", ":agent", 0),
         (eq, ":w_item", ":item_begin"),
         (assign, "$has_item_equipped", 1),
      (else_try),
          (agent_get_wielded_item, ":w_item", ":agent", 0),
         (eq, ":w_item", ":item_end"),
         (assign, "$has_item_equipped", 1),
                (else_try),
                    (troop_get_type, ":walker", ":agent"),
                    (eq, ":walker", tf_walker),
                    (assign, "$has_item_equipped", 1),
      (else_try),
          (assign, "$has_item_equipped", 0),
      (try_end),
   ]),   
   
   #script_autofire_reset_values
   #Input: None.
   #Output: Resetted values.
   ("autofire_reset_values",
   [
      #(assign, "$dist_val", 100),
       (assign, "$autofire_lock", 0),
       (assign, "$autofire_damage", 0),
      (assign, "$has_item_equipped", 0),
   ]),
   
    #script_autofire_get_agent_positions
   #Input 1: Shooter.
   #Input 2: Agent.
   #Output: Positions.
   ("autofire_get_agent_positions",
   [
       (store_script_param, ":player", 1),
      (store_script_param, ":agent", 2),
       (agent_get_look_position, pos1, ":player"),
      (agent_get_position, pos2, ":agent"),
               (agent_get_position, pos3, ":player"),
      (get_distance_between_positions, ":dist", pos1, pos2),
      #(assign, "$dist_val", 100),
               (get_distance_between_positions, ":range", pos2, pos3),
               (lt, ":range", 2000), #Increase range here
      (try_begin),
          (neq, ":agent", ":player"),
          (lt, ":dist", 100),
         (assign, "$autofire_damage", 1),
      (else_try), #TODO: Fix this try_for_range loop to drastically decrease the size of the script.
          #(try_for_range, reg2, 0, 250),
          #    (neq, ":agent", ":player"),
          #    (position_move_y, pos1, 100),
         #    (position_move_z, pos1, -100),
         #    (get_distance_between_positions, ":dist", pos1, pos2),
         #   (val_add, "$dist_val", 100),
         #   (lt, ":dist", "$dist_val"),
         #    (assign, "$autofire_damage", 1),
          #(try_end),
         (neq, ":agent", ":player"),
         (position_move_y, pos1, 100),
         (position_move_z, pos1, -100),
         (get_distance_between_positions, ":dist", pos1, pos2),
                        (neg|position_is_behind_position, pos2, pos1),
         (lt, ":dist", 200),
         (assign, "$autofire_damage", 1),
      (else_try),
         (neq, ":agent", ":player"),
         (position_move_y, pos1, 100),
         (position_move_z, pos1, -100),
         (get_distance_between_positions, ":dist", pos1, pos2),
                        (neg|position_is_behind_position, pos2, pos1),
         (lt, ":dist", 300),
         (assign, "$autofire_damage", 1),
      (else_try),
         (neq, ":agent", ":player"),
         (position_move_y, pos1, 100),
         (position_move_z, pos1, -100),
         (get_distance_between_positions, ":dist", pos1, pos2),
         (neg|position_is_behind_position, pos2, pos1),
                        (lt, ":dist", 400),
         (assign, "$autofire_damage", 1),
                (else_try),
         (neq, ":agent", ":player"),
         (position_move_y, pos1, 100),
         (position_move_z, pos1, -100),
         (get_distance_between_positions, ":dist", pos1, pos2),
         (lt, ":dist", 500),
                        (neg|position_is_behind_position, pos2, pos1),
         (assign, "$autofire_damage", 1),
      (else_try),
         (neq, ":agent", ":player"),
         (position_move_y, pos1, 100),
         (position_move_z, pos1, -100),
         (get_distance_between_positions, ":dist", pos1, pos2),
                        (neg|position_is_behind_position, pos2, pos1),
         (lt, ":dist", 600),
         (assign, "$autofire_damage", 1),
      (else_try),
         (neq, ":agent", ":player"),
         (position_move_y, pos1, 100),
         (position_move_z, pos1, -100),
         (get_distance_between_positions, ":dist", pos1, pos2),
                        (neg|position_is_behind_position, pos2, pos1),
         (lt, ":dist", 700),
         (assign, "$autofire_damage", 1),
      (else_try),
         (neq, ":agent", ":player"),
         (position_move_y, pos1, 100),
         (position_move_z, pos1, -100),
         (get_distance_between_positions, ":dist", pos1, pos2),
                        (neg|position_is_behind_position, pos2, pos1),
         (lt, ":dist", 800),
         (assign, "$autofire_damage", 1),
      (else_try),
         (neq, ":agent", ":player"),
         (position_move_y, pos1, 100),
         (position_move_z, pos1, -100),
         (get_distance_between_positions, ":dist", pos1, pos2),
                        (neg|position_is_behind_position, pos2, pos1),
         (lt, ":dist", 900),
         (assign, "$autofire_damage", 1),
      (else_try),
         (neq, ":agent", ":player"),
         (position_move_y, pos1, 100),
         (position_move_z, pos1, -100),
         (get_distance_between_positions, ":dist", pos1, pos2),
                        (neg|position_is_behind_position, pos2, pos1),
         (lt, ":dist", 1000),
         (assign, "$autofire_damage", 1),
      (else_try),
          (assign, "$autofire_damage", 0),
      (try_end),
   ]),
#---------------------------------------------------------
Title: Re: Where to put scripts
Post by: Thunderstormer on April 03, 2017, 09:24:32 pm
eh, you didn't specify exactly if you knew where to stick them.  As in the text files, or the python files.  So ill say this.   Those go in their  respective python files, where they get compiled into text files. 

Anyways, i am not familiar with those scripts, so i would say ask someone that knows them or the person that made them.