Multiplayer ship battles

正在查看此主题的用户

Airith

Sergeant at Arms
Following this thread http://forums.taleworlds.com/index.php/topic,52793.0.html
I got the ships to work in sp. Now to get it to work in mp, that's a lot more work.

I followed Arch3r's guide on adding the invasion battle type, but instead made "sea battle" type.

Here are the added scripts:
("cf_close_and_board",
      [(assign,":boardedd",0),
      (prop_instance_get_position,1,"$ship"),
      (prop_instance_get_position,2,"$eship"),
      (get_distance_between_positions,":dist",1,2),
      (assign,":firstship","$ship"),
      (assign,":secship","$eship"),
      (copy_position,3,1),
      (copy_position,4,2),
      (position_move_y,3,-1600),
      (position_move_y,4,-1600),
                      (try_for_range,reg5,0,16),
                        (try_for_range,reg10,0,16),
                          (get_distance_between_positions,":distance",3,4),
                              (try_begin),
                                (lt,":distance",400),
                                (prop_instance_get_position,5,":firstship"),
                                (prop_instance_animate_to_position,":firstship",5,1),
                                (prop_instance_get_position,6,":secship"),
                                (prop_instance_animate_to_position,":secship",6,1),
                                (party_set_slot,"p_ship_colisions",":firstship",1),
                                (party_set_slot,"p_ship_colisions",":secship",1),
                                (assign,":boardedd",1),
                              (end_try),
                            (position_move_y,4,200),
                          (end_try),
                        (position_move_y,3,200),
                        (copy_position,4,2),
                        (position_move_y,4,-1600),
                      (end_try),
      (eq,":boardedd",0),
      (try_begin),
          (position_is_behind_position,2,1),
            (try_begin),
                (position_move_x,1,100),
                (get_distance_between_positions,":distance",1,2),
                (position_move_x,1,-100),
                (lt,":distance",":dist"),
                (assign,":angle",10),
            (else_try),
                (assign,":angle",-10),
            (end_try),
          (position_rotate_z,1,":angle"),
          (prop_instance_animate_to_position,"$ship",1,400),
      (else_try),
          (position_is_behind_position,1,2),
            (try_begin),
                (position_move_x,1,100),
                (get_distance_between_positions,":distance",1,2),
                (position_move_x,1,-100),
                (lt,":distance",":dist"),
                (position_move_x,2,-250),
            (else_try),
                (position_move_x,2,250),
            (end_try),
          (prop_instance_animate_to_position,"$ship",2,":dist"),
      (else_try),
          (try_begin),
            (position_move_x,1,100),
            (get_distance_between_positions,":distance",1,2),
            (position_move_x,1,-100),
            (lt,":distance",":dist"),
            (position_move_x,2,250),
          (else_try),
            (position_move_x,2,-250),
          (end_try),
          (position_rotate_z,2,180),
          (prop_instance_animate_to_position,"$ship",2,":dist"),
      (end_try),]),

("skirmish",
      [(prop_instance_get_position,1,"$ship"),
      (prop_instance_get_position,2,"$eship"),
      (get_distance_between_positions,":dist",1,2),
      (try_begin),
          (gt,":dist",7500),
          (try_begin),
            (position_is_behind_position,2,1),
            (position_move_y,1,400),
            (try_begin),
                (position_move_x,1,100),
                (get_distance_between_positions,":distance",1,2),
                (position_move_x,1,-100),
                (lt,":distance",":dist"),
                (assign,":angle",-10),
            (else_try),
                (assign,":angle",10),
            (end_try),
            (position_rotate_z,1,":angle"),
            (prop_instance_animate_to_position,"$ship",1,400),
          (else_try),
            (position_move_y,1,400),
            (prop_instance_animate_to_position,"$ship",1,400),
          (end_try),
      (else_try),
          (try_begin),
            (position_is_behind_position,2,1),
            (position_move_y,1,400),
            (prop_instance_animate_to_position,"$ship",1,400),
          (else_try),
            (position_move_y,1,400),
            (try_begin),
                (position_move_x,1,100),
                (get_distance_between_positions,":distance",1,2),
                (position_move_x,1,-100),
                (lt,":distance",":dist"),
                (assign,":angle",10),
            (else_try),
                (assign,":angle",-10),
            (end_try),
            (position_rotate_z,1,":angle"),
            (prop_instance_animate_to_position,"$ship",1,400),
          (end_try),
      (end_try),]),

("select_enemy_ship",
      [(prop_instance_get_position,1,"$ship"),
        (assign,":dist",999999999),
          (scene_prop_get_num_instances,reg50,"spr_enemy_ship"),
          (val_add,reg50,1),
          (try_for_range,":instance",0,reg50),
              (scene_prop_get_instance,":thechosenship", "spr_enemy_ship", ":instance"),
              (prop_instance_get_position,2,":thechosenship"),
              (get_distance_between_positions,":distance",1,2),
              (lt,":distance",":dist"),
              (assign,":dist",":distance"),
              (assign,"$eship",":thechosenship"),
            (end_try),]),

("select_friendly_ship",
      [(prop_instance_get_position,1,"$ship"),
        (assign,":dist",999999999),
          (scene_prop_get_num_instances,reg50,"spr_ship"),
          (val_add,reg50,1),
          (try_for_range,":instance",0,reg50),
              (scene_prop_get_instance,":thechosenship", "spr_ship", ":instance"),             
              (prop_instance_get_position,2,":thechosenship"),
              (get_distance_between_positions,":distance",1,2),
              (lt,":distance",":dist"),
              (assign,":dist",":distance"),
              (assign,"$eship",":thechosenship"),
            (end_try),]),

("check_for_collisions",
      [(try_for_range,":shiptype","spr_ship","spr_enemy_ships_end"),
          (scene_prop_get_num_instances,":number",":shiptype"),
          (try_for_range,":firstshipno",0,":number"),
              (scene_prop_get_instance,":firstship", ":shiptype", ":firstshipno"),
              (prop_instance_get_position,1,":firstship"),
              (try_for_range,":shiptypetwo","spr_ship","spr_enemy_ships_end"),
                    (scene_prop_get_num_instances,":numbertwo",":shiptypetwo"),
                    (try_for_range,":secshipno",-1,":numbertwo"),
                      (scene_prop_get_instance,":secship", ":shiptypetwo", ":secshipno"),
                      (neq,":firstship",":secship"),
                      (prop_instance_get_position,2,":secship"),
                      (copy_position,3,1),
                      (copy_position,4,2),
                      (position_move_y,3,-1600),
                      (position_move_y,4,-1600),
                      (try_for_range,reg5,0,16),
                        (try_for_range,reg10,0,16),
                          (get_distance_between_positions,":distance",3,4),
                              (try_begin),
                                (lt,":distance",325),
                                (prop_instance_get_position,5,":firstship"),
                                (prop_instance_animate_to_position,":firstship",5,1),
                                (prop_instance_get_position,6,":secship"),
                                (prop_instance_animate_to_position,":secship",6,1),
                                (party_set_slot,"p_ship_colisions",":firstship",1),
                                (party_set_slot,"p_ship_colisions",":secship",1),
                              (end_try),
                            (position_move_y,4,200),
                          (end_try),
                        (position_move_y,3,200),
                        (copy_position,4,2),
                        (position_move_y,4,-1600),
                      (end_try),
                    (end_try),
                (end_try),
            (end_try),
            (end_try),]),

("kill_overboard",
      [(try_for_agents,":agent"),
          (agent_get_position,pos1,":agent"),
          (agent_get_position,pos2,":agent"),
          (position_set_z_to_ground_level, pos2),
          (get_distance_between_positions,":dist",pos1,pos2),
          (gt,":dist",500),
          (agent_set_hit_points,":agent",0,0),
          (agent_deliver_damage_to_agent,":agent",":agent"),   
      (end_try),]),

("cf_keep_troops_on_ships",
      [(try_for_agents,":agent"),
          (agent_is_alive,":agent"),
          (agent_is_human,":agent"),
          (agent_get_position,pos1,":agent"),
          (try_begin),
          (agent_is_ally,":agent"),
          (assign,":dist",999999999),
          (scene_prop_get_num_instances,reg50,"spr_ship"),
          (val_add,reg50,1),
          (try_for_range,":instance",0,reg50),
              (scene_prop_get_instance,":thechosenship", "spr_ship", ":instance"),             
              (prop_instance_get_position,2,":thechosenship"),
              (get_distance_between_positions,":distance",1,2),
              (lt,":distance",":dist"),
              (assign,":dist",":distance"),
              (prop_instance_get_position,pos3,":thechosenship"),
              (assign,":checked_ship",":thechosenship"),
          (end_try),
          (try_begin),
            (party_slot_eq,"p_ship_colisions",":checked_ship",1),
            (agent_clear_scripted_mode,":agent"),
          (else_try),
            (agent_set_scripted_destination,":agent",pos3,0),
          (end_try),
          (else_try),
          (assign,":dist",999999999),
          (scene_prop_get_num_instances,reg50,"spr_ship"),
          (val_add,reg50,1),
          (try_for_range,":instance",0,reg50),
              (scene_prop_get_instance,":thechosenship", "spr_enemy_ship", ":instance"),             
              (prop_instance_get_position,2,":thechosenship"),
              (get_distance_between_positions,":distance",1,2),
              (lt,":distance",":dist"),
              (assign,":dist",":distance"),
              (prop_instance_get_position,pos3,":thechosenship"),
              (assign,":checked_ship",":thechosenship"),
          (end_try),
          (try_begin),
            (party_slot_eq,"p_ship_colisions",":checked_ship",1),
            (agent_clear_scripted_mode,":agent"),
          (else_try),
            (agent_set_scripted_destination,":agent",pos3,0),
          (end_try),
          (end_try),
          (end_try),]),
And here's the mission template, all of the battle mission template was also copied over
(
  "ship_battle",mtf_battle_mode,-1,
  "You enter battle on your longships.",
  [
    (0,mtef_visitor_source|mtef_team_1|mtef_no_auto_reset,af_override_horse,aif_start_alarmed,4,[]),
    (1,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
    (2,mtef_visitor_source|mtef_team_1,af_override_horse,aif_start_alarmed,4,[]),
    (32,mtef_visitor_source|mtef_team_0|mtef_no_auto_reset,af_override_horse,aif_start_alarmed,4,[]),
    (10,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
    (11,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
    (12,mtef_visitor_source|mtef_team_0,af_override_horse,aif_start_alarmed,4,[]),
    ],
  [
   
<<<COPY PASTE ALL OF multiplayer_bt (battle type) HERE>>>
   
    (1, 0, 0, [], [(scene_prop_get_instance,"$ship", "spr_ship", 0),(scene_prop_get_instance,"$eship", "spr_enemy_ship", 0),]),
   
    #(10, 0, ti_once, [], [(try_for_agents,":agent"),(agent_set_speed_limit,":agent",0),(end_try),]),
    #(ti_tab_pressed, 0, 0, [],
    # [
    #    (try_begin),
    #      (eq, "$battle_won", 1),
    #      (finish_mission,0),
    #    (else_try),
    #      (call_script, "script_cf_check_enemies_nearby"),
    #      (question_box,"str_do_you_want_to_retreat"),
    #    (else_try),
    #      (display_message,"str_can_not_retreat"),
    #    (try_end),
    #  ]),
   
    (0, 0, ti_once, [], [(assign,"$pbehavior",1),(assign,"$ebehavior",2),]),
    #(1, 60, ti_once, [(store_mission_timer_a,reg(1)),(ge,reg(1),10),(all_enemies_defeated,2),(neg|main_hero_fallen,0),(set_mission_result,1),(display_message,"str_msg_battle_won"),(assign,"$battle_won",1),(assign, "$g_battle_result", 1)],
    #    [(finish_mission,1)]),
    #(10, 0, 0, [], [(eq,"$battle_won",1),(display_message,"str_msg_battle_won")]),
    #(1, 4, ti_once, [(main_hero_fallen,0)],
    #    [(set_mission_result,-1),(finish_mission,1)]),

#friendly ship ai
    (0.1, 0, 0, [],
    [(call_script,"script_check_for_collisions"),]),

    (0.1, 0, 0, [],
    [(call_script,"script_kill_overboard"),]),

    (0.05, 0, 0, [],
    [(call_script,"script_cf_keep_troops_on_ships"),]),

#    (0.1, 0, 0, [],
#[(try_for_agents,":agent"),
#    (agent_is_human,":agent"),
#    (agnet_is_alive,":agent"),

    (1.0, 0, 0, [(eq,"$pbehavior",1)],                 
      [(scene_prop_get_num_instances,reg12, "spr_ship"),
      (val_add,reg12,1),
      (try_for_range,reg13,0,reg12),
          (scene_prop_get_instance,"$ship", "spr_ship", reg13),
          (call_script,"script_select_enemy_ship"),
          (call_script,"script_cf_close_and_board"),
      (end_try),(call_script,"script_check_for_collisions"),]),
   
    (1.0, 0, 0, [(eq,"$pbehavior",2),],                 
      [(scene_prop_get_num_instances,reg12, "spr_ship"),
      (val_add,reg12,1),
      (try_for_range,reg13,0,reg12),
          (scene_prop_get_instance,"$ship", "spr_ship", reg13),
          (call_script,"script_select_enemy_ship"),
          (call_script,"script_skirmish"),
      (end_try),(call_script,"script_check_for_collisions"),]),
     
#enemy ship ai

    (10.0, 0, 0, [],
      [(assign,":friends",0),
      (assign,":enemies",0),
      (try_for_agents,":agent"),
          (agent_is_alive,":agent"),
          (try_begin),
            (agent_is_ally,":agent"),
            (val_add,":friends",1),
          (else_try),
            (val_add,":enemies",1),
          (end_try),
      (end_try),
      (try_begin),
          (val_mul,":friends",10),
          (val_div,":friends",":enemies"),
          (gt,":friends",:cool:,
          (assign,"$ebehavior",2),
      (else_try),
          (assign,"$ebehavior",1),
      (end_try)]),     

    (1.0, 0, 0, [(eq,"$ebehavior",1)],
      [(scene_prop_get_num_instances,reg12, "spr_enemy_ship"),
      (val_add,reg12,1),
      (try_for_range,reg13,0,reg12),
          (scene_prop_get_instance,"$ship", "spr_enemy_ship", reg13),
          (call_script,"script_select_friendly_ship"),
          (call_script,"script_cf_close_and_board"),
      (end_try),(call_script,"script_check_for_collisions"),]),
     
    (1.0, 0, 0, [(eq,"$ebehavior",2)],
      [(scene_prop_get_num_instances,reg12, "spr_enemy_ship"),
      (val_add,reg12,1),
      (try_for_range,reg13,0,reg12),
          (scene_prop_get_instance,"$ship", "spr_enemy_ship", reg13),
          (call_script,"script_select_friendly_ship"),
          (call_script,"script_skirmish"),
      (end_try),(call_script,"script_check_for_collisions"),]),

      (ti_inventory_key_pressed, 0, 0, [(try_begin),
                                          (eq,"$pbehavior",2),
                                          (assign,"$pbehavior",0),
                                          (display_message,"str_hold"),
                                          (scene_prop_get_instance,"$ship", "spr_ship", 0),
                                          (prop_instance_get_position,1,"$ship"),
                                          (prop_instance_animate_to_position,"$ship",1,1),
                                        (else_try),
                                          (val_add,"$pbehavior",1),
                                          (try_begin),
                                              (eq,"$pbehavior",1),
                                              (display_message,"str_board"),
                                          (else_try),
                                              (display_message,"str_skirmish"),
                                          (end_try),
                                        (end_try)], []),

    #(ti_question_answered, 0, 0, [],
    # [(store_trigger_param_1,":answer"),(eq,":answer",0),(finish_mission,0),]),
  ],
),
here's the errors it spits out when i try to host a game.
L8 Format is  unsupported SCRIPT WARNING : Division by zero; LINE NO: 13:
At Mission Template mst_ship_battle trigger no: 32 consequences. At Mission Template mst_ship_battle trigger no: 32 consequences.

Can anyone help me with these things? I'm afraid it's now outside of my current knowledge.
 
In mission templates, look at this code
插入代码块:
     (10.0, 0, 0, [],
      [(assign,":friends",0),
       (assign,":enemies",0),
       (try_for_agents,":agent"),
          (agent_is_alive,":agent"),
          (try_begin),
             (agent_is_ally,":agent"),
             (val_add,":friends",1),
          (else_try),
             (val_add,":enemies",1),
          (end_try),
       (end_try),
       (try_begin),
          (val_mul,":friends",10),
          (val_div,":friends",":enemies"),
          (gt,":friends",8),
          (assign,"$ebehavior",2),
       (else_try),
          (assign,"$ebehavior",1),
       (end_try)]),   

You assign the enemies 0, and later divide by the number of enemies. If there are no enemies, that means you divide by zero, which is impossible. The code also mentions that.
Add (neq, ":enemies", 0),
Above          (val_div,":friends",":enemies"),
 
I am no coder, but there is one thing I do know about dividing by zero:
633617527281144116-DividebyZero.jpg
 
haha, nice pic stinus.

Thanks for the help arch3r! that fixed it, everythings working now :grin:

Just have to go and fix the spawning... will finish this post when i do.

YES got it working, the bots were a lot harder than human players lol.

Alright, so my only problem now is that... THE SHIPS WON'T MOVE BACK! at the end of the round. after they've moved together and been boarded, everyones been killed, rounds over, the next round starts but the ships are where they were when the last round ended... Any ideas?

Current problem is getting the ships to move away once all the enemies on board are dead. But that's probably something I have to figure out.
 
    (10, 5, 0, [(eq, "$g_round_ended", 0)], [
        (get_max_players, ":num_players"),
         
        (scene_prop_get_num_instances,":ship_sink","spr_ship"),
        (try_for_range,":instance",0,":ship_sink"),
          (scene_prop_get_instance,":thechosenship", "spr_ship", ":instance"),
          (scene_prop_get_slot,":hoboville",":thechosenship",slot_scene_ship),
          (neq,":hoboville",1),
          (try_for_range, ":player_no", 0, ":num_players"),
            (player_is_active, ":player_no"),
            (player_get_agent_id, ":agent_id", ":player_no"),
            (ge, ":agent_id", 0),
            (neg|scene_prop_has_agent_on_it, ":thechosenship", ":agent_id"),
            (display_message, "@Holy bawls batman"),
            (prop_instance_get_position, reg47, ":thechosenship"),
            (position_set_z, reg47, -1650),
            (store_random_in_range, reg0, -45, 45),
            (store_random_in_range, reg1, -45, 45),
            (position_rotate_y, reg47, reg0),
            (position_rotate_x, reg47, reg1),
            (prop_instance_animate_to_position, ":thechosenship", reg47, 3750),
            (display_message, "@Holy bawls batman1"),
            (assign, ":ship_expensive", 1),
            (scene_prop_set_slot,":thechosenship",slot_scene_ship,":ship_expensive"),
          (try_end),
        (try_end),
       
        (scene_prop_get_num_instances,":ship_sink2","spr_enemy_ship"),
        (try_for_range,":instance2",0,":ship_sink2"),
          (scene_prop_get_instance,":thechosenship2", "spr_enemy_ship", ":instance2"),
          (scene_prop_get_slot,":hoboville",":thechosenship2",slot_scene_ship),
          (neq,":hoboville",1),
          (try_for_range, ":player_no2", 0, ":num_players"),
            (player_is_active, ":player_no2"),
            (player_get_agent_id, ":agent_id2", ":player_no2"),
            (ge, ":agent_id2", 0),
            (neg|scene_prop_has_agent_on_it, ":thechosenship2", ":agent_id2"),
            (display_message, "@Holy bawls batman2"),
            (prop_instance_get_position, reg46, ":thechosenship2"),
            (position_set_z, reg46, -1650),
            (store_random_in_range, reg2, -45, 45),
            (store_random_in_range, reg3, -45, 45),
            (position_rotate_y, reg46, reg2),
            (position_rotate_x, reg46, reg3),
            (prop_instance_animate_to_position, ":thechosenship2", reg46, 3750),
            (display_message, "@Holy bawls batman3"),
            (assign, ":ship_expensive2", 1),
            (scene_prop_set_slot,":thechosenship2",slot_scene_ship,":ship_expensive2"),
          (try_end),
        (try_end),
    ]),

Alright, here's my code to sink a ship if no one is aboard it. Current problem is that it ignores the fact that a bot may be on the ship, and sinks it anyways. The bigger problem is that although it waits a while when an actual player is onboard, it still sinks the ship. Any ideas?
 
Instead of
(try_for_range, ":player_no", 0, ":num_players"),
you can try using
(try_for_agents, ":agent_id"),
Than also check if it's not a horse, than it wouldn't sink if there's a bot or player on it.
 
it's getting there. solved the latest error with arch3r's help. Current problem is getting the blasted ships to go back to their original positions so that players can spawn again when the next round starts (next timer).

    (0, 5, 0, [(eq, "$g_round_ended", 1)], [
          (scene_prop_get_num_instances,":num_ship", "spr_ship"),
          (val_add,":num_ship",1),
          (try_for_range, ":ship_no", 0, ":num_ship"),
            (scene_prop_get_instance, ":ship_id", "spr_ship", ":ship_no"),
            (scene_prop_set_slot,":ship_id",slot_scene_ship,0),
            (prop_instance_get_starting_position, reg49, ":ship_id"),
            (prop_instance_set_position, ":ship_id", reg49),
          (try_end),
    ]),
         
    (0, 5, 0, [(eq, "$g_round_ended", 1)], [
          (scene_prop_get_num_instances,":num_ship", "spr_enemy_ship"),
          (val_add,":num_ship",1),
          (try_for_range, ":ship_no", 0, ":num_ship"),
            (scene_prop_get_instance, ":ship_id", "spr_enemy_ship", ":ship_no"),
            (scene_prop_set_slot,":ship_id",slot_scene_ship,0),
            (prop_instance_get_starting_position, reg48, ":ship_id"),
            (prop_instance_set_position, ":ship_id", reg4:cool:,
          (try_end),
    ]),

Also, does anyone know how to remove particle systems? When the ship is sinking the wake particle system likes to stick up in the air when the ship rotates.
 
("kill_overboard",
      [(try_for_agents,":agent"),
  (ge, ":agent", 0),
  (agent_is_alive, ":agent"),
          (agent_get_position,pos1,":agent"),
          (agent_get_position,pos2,":agent"),
          (position_set_z_to_ground_level, pos2),
          (get_distance_between_positions,":dist",pos1,pos2),
          (gt,":dist",450),
          (agent_set_hit_points,":agent",0,0),
          (agent_deliver_damage_to_agent,":agent",":agent"),   
      (end_try),
  ]),

I need a script to kill people who go overboard, since you can't swim in warband. The above should work, but it doesn't kill bots. Any ideas?
 
Airith 说:
it's getting there. solved the latest error with arch3r's help. Current problem is getting the blasted ships to go back to their original positions so that players can spawn again when the next round starts (next timer).

    (0, 5, 0, [(eq, "$g_round_ended", 1)], [
          (scene_prop_get_num_instances,":num_ship", "spr_ship"),
          (val_add,":num_ship",1),
          (try_for_range, ":ship_no", 0, ":num_ship"),
            (scene_prop_get_instance, ":ship_id", "spr_ship", ":ship_no"),
            (scene_prop_set_slot,":ship_id",slot_scene_ship,0),
            (prop_instance_get_starting_position, reg49, ":ship_id"),
            (prop_instance_set_position, ":ship_id", reg49),
          (try_end),
    ]),
         
    (0, 5, 0, [(eq, "$g_round_ended", 1)], [
          (scene_prop_get_num_instances,":num_ship", "spr_enemy_ship"),
          (val_add,":num_ship",1),
          (try_for_range, ":ship_no", 0, ":num_ship"),
            (scene_prop_get_instance, ":ship_id", "spr_enemy_ship", ":ship_no"),
            (scene_prop_set_slot,":ship_id",slot_scene_ship,0),
            (prop_instance_get_starting_position, reg48, ":ship_id"),
            (prop_instance_set_position, ":ship_id", reg4:cool:,
          (try_end),
    ]),

Just a thought, but are you actually setting the value of $g_round_ended to 1 somewhere?
 
Supposedly the battle template that I copy pasted and edited sets it, so I hope so. That part is mostly solved at the moment, although there are some troubles with bots. They seem to spawn outside of the $g_round_ended global variable sometimes, causing half of them to be on the ship, the rest spawning before the ship is returned to it's starting position. I'm going to post all of my code soon, as I think I might be giving up. I recently went and redid all of how the scripts and triggers from the sp version, but I think I may have broken something.
 
Airith 说:
("kill_overboard",
      [(try_for_agents,":agent"),
  (ge, ":agent", 0),
  (agent_is_alive, ":agent"),
          (agent_get_position,pos1,":agent"),
          (agent_get_position,pos2,":agent"),
          (position_set_z_to_ground_level, pos2),
          (get_distance_between_positions,":dist",pos1,pos2),
          (gt,":dist",450),
          (agent_set_hit_points,":agent",0,0),
          (agent_deliver_damage_to_agent,":agent",":agent"),   
      (end_try),
  ]),

I need a script to kill people who go overboard, since you can't swim in warband. The above should work, but it doesn't kill bots. Any ideas?
Hm, that's weird, it should work.
 
后退
顶部 底部