OSP Code Combat Warlord script (regenerate health multiplayer compatible)

Users who are viewing this thread

Sir_Pink

Veteran
Here is a little tweak to the "add_kill_counts" script in module_scripts.py. I made it when you get a kill it displays how many you have x of 30 until you unlock warlord. when you reach 30, it displays you have unlocked it. Every kill afterwards gives you full HP.

Snippet:
e9141008c28d752a880975bef682ccc7.png

Full Script:
Code:
  #script_add_kill_death_counts
  # INPUT: arg1 = killer_agent_no, arg2 = dead_agent_no
  # OUTPUT: none
  ("add_kill_death_counts",
   [
      (store_script_param, ":killer_agent_no", 1),
      (store_script_param, ":dead_agent_no", 2),
      
      (try_begin),
        (ge, ":killer_agent_no", 0),
        (agent_get_team, ":killer_agent_team", ":killer_agent_no"),
      (else_try),
        (assign, ":killer_agent_team", -1),
      (try_end),

      (try_begin),
        (ge, ":dead_agent_no", 0),
        (agent_get_team, ":dead_agent_team", ":dead_agent_no"),
      (else_try),
        (assign, ":dead_agent_team", -1),
      (try_end),
      
      #adjusting kill counts of players/bots
      (try_begin), 
        (try_begin), 
          (ge, ":killer_agent_no", 0),
          (ge, ":dead_agent_no", 0),
          (agent_is_human, ":killer_agent_no"),
          (agent_is_human, ":dead_agent_no"),
          (neq, ":killer_agent_no", ":dead_agent_no"),
          
          (this_or_next|neq, ":killer_agent_team", ":dead_agent_team"),
          (this_or_next|eq, "$g_multiplayer_game_type", multiplayer_game_type_deathmatch),
          (eq, "$g_multiplayer_game_type", multiplayer_game_type_duel),
          
          (agent_get_player_id, ":killer_agent_player", ":killer_agent_no"),
          (try_begin),
            (agent_is_non_player, ":killer_agent_no"), #if killer agent is bot then increase bot kill counts of killer agent's team by one.
            (agent_get_team, ":killer_agent_team", ":killer_agent_no"),
            (team_get_bot_kill_count, ":killer_agent_team_bot_kill_count", ":killer_agent_team"),
            (val_add, ":killer_agent_team_bot_kill_count", 1),
            (team_set_bot_kill_count, ":killer_agent_team", ":killer_agent_team_bot_kill_count"),            
          (else_try), #if killer agent is not bot then increase kill counts of killer agent's player by one.
            (player_is_active, ":killer_agent_player"),
			
			# Sir_Pink - warlord mod
			####################################################################################### 
			## ----------------------------------------------------------------------- New START
			 (try_begin), # Test to see if the admin panel checkbox is checked or not to execute script.
			 
				(eq, "$g_multiplayer_deathmatch_duel_regen", 1), # Checks if my custom checkbox in admin panel is checked or not. (1 = Yes, 0 = No)
				(str_store_player_username, s55, ":killer_agent_player"),
				#(multiplayer_send_string_to_player, ":killer_agent_player", multiplayer_event_show_server_message, "@{s55} it works yo!"),

				(try_begin), # Get the players kill count and store it into a variable, then display how many more kills required to unlock warlord.
					(player_get_kill_count, ":killer_agent_player_kill_count", ":killer_agent_player"),
					(val_add, ":killer_agent_player_kill_count", 1),
					(assign, reg0, ":killer_agent_player_kill_count"),
					(player_set_kill_count, ":killer_agent_player", ":killer_agent_player_kill_count"),
						(try_begin), # If the players kill count is less than or equal to 2, then display msg with how many more kills to go.
							# script here...
							(le, ":killer_agent_player_kill_count", 29),
							(multiplayer_send_string_to_player, ":killer_agent_player", multiplayer_event_show_server_message, "@{reg0} of 30 kills to unlock Warlord!"),
						(try_end),
						
						(try_begin), # If the players kill count is qual to 3, then display msg the player has unlocked warlord.
							# script here...
							(eq, ":killer_agent_player_kill_count", 30),
							(multiplayer_send_string_to_player, ":killer_agent_player", multiplayer_event_show_server_message, "@You are now a Warlord - Health regenerates with every kill!"),
						(try_end),
						
						(try_begin), # If the players kill count is greater than or equal to 4, then give player full HP.
							# script here...
							(ge, ":killer_agent_player_kill_count", 30),
							(agent_set_hit_points,":killer_agent_no",59,1),
						(try_end),
				(try_end),
			
			
			(else_try),

			
				(player_get_kill_count, ":killer_agent_player_kill_count", ":killer_agent_player"),
				(val_add, ":killer_agent_player_kill_count", 1),
				(player_set_kill_count, ":killer_agent_player", ":killer_agent_player_kill_count"),
			
			(try_end),
			## ----------------------------------------------------------------------- New END
			####################################################################################### 
			# Original
            #(player_get_kill_count, ":killer_agent_player_kill_count", ":killer_agent_player"),
            #(val_add, ":killer_agent_player_kill_count", 1),
            #(player_set_kill_count, ":killer_agent_player", ":killer_agent_player_kill_count"),
          (try_end),
        (try_end),           

        (try_begin), 
          (ge, ":dead_agent_no", 0),
          (agent_is_human, ":dead_agent_no"),
          (try_begin),
            (agent_is_non_player, ":dead_agent_no"), #if dead agent is bot then increase bot kill counts of dead agent's team by one.
            (agent_get_team, ":dead_agent_team", ":dead_agent_no"),
            (team_get_bot_death_count, ":dead_agent_team_bot_death_count", ":dead_agent_team"),
            (val_add, ":dead_agent_team_bot_death_count", 1),
            (team_set_bot_death_count, ":dead_agent_team", ":dead_agent_team_bot_death_count"),
          (else_try), #if dead agent is not bot then increase death counts of dead agent's player by one.
            (agent_get_player_id, ":dead_agent_player", ":dead_agent_no"),
            (player_is_active, ":dead_agent_player"),
            (player_get_death_count, ":dead_agent_player_death_count", ":dead_agent_player"),
            (val_add, ":dead_agent_player_death_count", 1),
            (player_set_death_count, ":dead_agent_player", ":dead_agent_player_death_count"),
          (try_end),

          (try_begin),
            (assign, ":continue", 0),
      
            (try_begin),
              (this_or_next|lt, ":killer_agent_no", 0), #if he killed himself (1a(team change) or 1b(self kill)) then decrease kill counts of killer player by one.
              (eq, ":killer_agent_no", ":dead_agent_no"),
              (assign, ":continue", 1),
            (try_end),

            (try_begin),
              (eq, ":killer_agent_team", ":dead_agent_team"), #if he killed a teammate and game mod is not deathmatch then decrease kill counts of killer player by one.
              (neq, "$g_multiplayer_game_type", multiplayer_game_type_deathmatch),
              (neq, "$g_multiplayer_game_type", multiplayer_game_type_duel),
              (assign, ":continue", 1),
            (try_end),

            (eq, ":continue", 1),
                    
            (try_begin),
              (ge, ":killer_agent_no", 0),
              (assign, ":responsible_agent", ":killer_agent_no"),                
            (else_try),
              (assign, ":responsible_agent", ":dead_agent_no"),
            (try_end),

            (try_begin),
              (ge, ":responsible_agent", 0),
              (neg|agent_is_non_player, ":responsible_agent"),
              (agent_get_player_id, ":responsible_player", ":responsible_agent"),
              (ge, ":responsible_player", 0),
              (player_get_kill_count, ":dead_agent_player_kill_count", ":responsible_player"),
              (val_add, ":dead_agent_player_kill_count", -1),
              (player_set_kill_count, ":responsible_player", ":dead_agent_player_kill_count"),
            (try_end),
          (try_end),               
        (try_end),
      (try_end),
    ]),

Anyone interested in how i added my checkbox to the admin panel to toggle on/off:
• header_common.py
Code:
multiplayer_event_return_deathmatch_duel_health_regen                  = 700
multiplayer_event_admin_set_deathmatch_duel_health_regen               = 600


• module_presentations.py (ctrl + f for $g_presentation_obj_admin_panel_40)
Code:
      (else_try),
        (eq, ":object", "$g_presentation_obj_admin_panel_40"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_force_default_armor, ":value"),
	  # pink
	  (else_try),
        (eq, ":object", "$g_presentation_obj_admin_panel_80"),
        (multiplayer_send_int_to_server, multiplayer_event_admin_set_deathmatch_duel_health_regen, ":value"),
	  ########################################################################################################


- ctrl + f for (assign, ":cur_y", 1280),        (+40 to 1240 for each new checkbox so you can scroll on the admin panel for it.)
Code:
##################################################################################################################################
	  (val_sub, ":cur_y", ":cur_y_adder"),
	  
	  (create_text_overlay, reg0, "str_kill_deathmatch_duel_regen", 0),
      (position_set_x, pos1, 30),
      (position_set_y, pos1, ":cur_y"),
      (overlay_set_position, reg0, pos1),

      (create_check_box_overlay, "$g_presentation_obj_admin_panel_80", "mesh_checkbox_off", "mesh_checkbox_on"),
      (position_set_x, pos1, 7),
      (store_add, ":special_cur_y", ":cur_y", 7),
      (position_set_y, pos1, ":special_cur_y"),
      (overlay_set_position, "$g_presentation_obj_admin_panel_80", pos1),
      (overlay_set_val, "$g_presentation_obj_admin_panel_80", "$g_multiplayer_deathmatch_duel_regen"), 
	##################################################################################################################################


• module_scripts.py (ctrl + f to find each section)
Code:
        (else_try),
          (eq, ":event_type", multiplayer_event_return_force_default_armor),
          (store_script_param, ":value", 3),
          (assign, "$g_multiplayer_force_default_armor", ":value"),
		  
		 # pink
		(else_try),
          (eq, ":event_type", multiplayer_event_return_deathmatch_duel_health_regen),
          (store_script_param, ":value", 3),
          (assign, "$g_multiplayer_deathmatch_duel_regen", ":value"),
		  
		  ##############################################################################

Code:
     (multiplayer_send_int_to_player, ":player_no", multiplayer_event_return_force_default_armor, "$g_multiplayer_force_default_armor"),
	 # pink
	 (multiplayer_send_int_to_player, ":player_no", multiplayer_event_return_deathmatch_duel_health_regen, "$g_multiplayer_deathmatch_duel_regen"),

Code:
      (assign, "$g_multiplayer_force_default_armor", 0),
	  # pink
      (assign, "$g_multiplayer_deathmatch_duel_regen", 1),
	  #################################################################################

Code:
      (else_try),
        (eq, ":event_type", multiplayer_event_admin_set_force_default_armor),
        (try_begin),
          (store_script_param, ":value", 3),
          #validity check
          (player_is_admin, ":player_no"),
          (is_between, ":value", 0, 2),
          #condition checks are done
          (assign, "$g_multiplayer_force_default_armor", ":value"),
        (try_end),
		# pink
		#########################################################################
		(else_try),
        (eq, ":event_type", multiplayer_event_admin_set_deathmatch_duel_health_regen),
        (try_begin),
          (store_script_param, ":value", 3),
          #validity check
          (player_is_admin, ":player_no"),
          (is_between, ":value", 0, 2),
          #condition checks are done
          (assign, "$g_multiplayer_deathmatch_duel_regen", ":value"),
        (try_end),
		#########################################################################

Code:
     (else_try),
       (eq, ":input", 43),
       (try_begin),
         (eq, "$g_multiplayer_disallow_ranged_weapons", 1),
         (str_store_string, s0, "str_ranged_weapons_are_disallowed"),
       (else_try),
         (str_store_string, s0, "str_ranged_weapons_are_allowed"),
       (try_end),
     (else_try),
       (eq, ":input", 44),
       (try_begin),
         (is_between, ":val1", 0, 2),
         (assign, "$g_multiplayer_disallow_ranged_weapons", ":val1"),
         (try_begin),
           (eq, ":val1", 1),
           (str_store_string, s0, "str_ranged_weapons_are_disallowed"),
         (else_try),
           (str_store_string, s0, "str_ranged_weapons_are_allowed"),
         (try_end),
       (else_try),
         (str_store_string, s0, "str_input_is_not_correct_for_the_command_type_help_for_more_information"),
       (try_end),
# pink
     (else_try),
       (eq, ":input", 31),
       (try_begin),
         (eq, "$g_multiplayer_deathmatch_duel_regen", 1),
         (str_store_string, s0, "str_deathmatch_duel_health_regen_disallowed"),
       (else_try),
         (str_store_string, s0, "str_deathmatch_duel_health_regen_allowed"),
       (try_end),
     (else_try),
       (eq, ":input", 32),
       (try_begin),
         (is_between, ":val1", 0, 2),
         (assign, "$g_multiplayer_deathmatch_duel_regen", ":val1"),
         (try_begin),
           (eq, ":val1", 1),
           (str_store_string, s0, "str_deathmatch_duel_health_regen_disallowed"),
         (else_try),
           (str_store_string, s0, "str_deathmatch_duel_health_regen_allowed"),
         (try_end),
       (else_try),
         (str_store_string, s0, "str_input_is_not_correct_for_the_command_type_help_for_more_information"),
       (try_end),

#########################################################################################################
     (else_try),
       (str_store_string, s0, "@{!}DEBUG : SYSTEM ERROR!"),
     (try_end),
  ]),


• module_strings.py
Code:
  ("force_default_armor", "Force minimum armor"),
  # pink
  ("kill_deathmatch_duel_regen", "Deathmatch and duel health regen"),    
  ("deathmatch_duel_health_regen_disallowed", "Health regen disallowed."),
  ("deathmatch_duel_health_regen_allowed", "Health regen allowed."),
 
Back
Top Bottom