From de4f92e346c5ae1c90423a5679d1eac95a139828 Mon Sep 17 00:00:00 2001 From: Krepy Date: Mon, 24 Jan 2022 17:06:14 +0300 Subject: [PATCH] added hunter_rank --- MHR_Overlay.lua | 47 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/MHR_Overlay.lua b/MHR_Overlay.lua index 5bc4894..da9b3e9 100644 --- a/MHR_Overlay.lua +++ b/MHR_Overlay.lua @@ -145,6 +145,7 @@ local damage_meter_UI = { visibility = { id = true, name = true, + hunter_rank = true, damage_bar = true, player_damage = true, player_damage_percentage = true, @@ -153,6 +154,7 @@ local damage_meter_UI = { shadows = { name = true, + hunter_rank = true, player_damage = true, player_damage_percentage = true, total_damage = true @@ -171,6 +173,11 @@ local damage_meter_UI = { y = 0 }, + hunter_rank = { + x = -50, + y = 0 + }, + damage_bar = { x = 0, y = 17 @@ -203,6 +210,11 @@ local damage_meter_UI = { y = 1 }, + hunter_rank = { + x = 1, + y = 1 + }, + player_damage = { x = 1, y = 1 @@ -225,6 +237,11 @@ local damage_meter_UI = { shadow = 0xFF000000 }, + hunter_rank = { + text = 0xFFE1F4CC, + shadow = 0xFF000000 + }, + damage_bar = { player_damage = 0xA7F4A3CC, others_damage = 0xA7000000 @@ -609,7 +626,7 @@ myself_player_id = 0; local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase"); local enemy_character_base_after_calc_damage_damage_side = enemy_character_base_type_def:get_method("afterCalcDamage_DamageSide"); -sdk.hook(enemy_character_base_after_calc_damage_damage_side, function(args) +sdk.hook(enemy_character_base_after_calc_damage_damage_side, function(args) local enemy = sdk.to_managed_object(args[2]); if enemy == nil then return; @@ -675,10 +692,11 @@ sdk.hook(enemy_character_base_after_calc_damage_damage_side, function(args) update_player(player, damage_source_type, damage_object); end, function(retval) return retval; end); -function init_player(player_id, player_name) +function init_player(player_id, player_name, player_hunter_rank) player = {}; player.id = player_id; player.name = player_name; + player.hunter_rank = hunter_rank; player.total_damage = 0; player.physical_damage = 0; @@ -860,7 +878,7 @@ function damage_meter() end if players[myself_player_id] == nil then - players[myself_player_id] = init_player(myself_player_id, myself_player_name); + players[myself_player_id] = init_player(myself_player_id, myself_player_name, 0); end local quest_players = {}; @@ -887,7 +905,13 @@ function damage_meter() goto continue; end + local player_hunter_rank = player_info:get_field("_hunterRank"); + if player_hunter_rank == nil then + goto continue; + end + if player_id == myself_player_id and damage_meter_UI.myself_bar_place_in_order ~= "normal" then + players[myself_player_id].hunter_rank = player_hunter_rank; goto continue; end @@ -897,9 +921,9 @@ function damage_meter() end if players[player_id] == nil then - players[player_id] = init_player(player_id, player_name); + players[player_id] = init_player(player_id, player_name, player_hunter_rank); elseif players[player_id].name ~= player_name then - players[player_id] = init_player(player_id, player_name); + players[player_id] = init_player(player_id, player_name, player_hunter_rank); end table.insert(quest_players, players[player_id]); @@ -1009,6 +1033,17 @@ function damage_meter() draw.text(id_name_text, screen_position.x + damage_meter_UI.offsets.name.x, screen_position.y + damage_meter_UI.offsets.name.y, damage_meter_UI.colors.name.text); end + if damage_meter_UI.visibility.hunter_rank then + local hunter_rank_text = "HR" .. player.hunter_rank; + + if damage_meter_UI.shadows.hunter_rank then + --hunter rank shadow + draw.text(hunter_rank_text, screen_position.x + damage_meter_UI.offsets.hunter_rank.x + damage_meter_UI.shadow_offsets.hunter_rank.x, screen_position.y + damage_meter_UI.offsets.hunter_rank.y + damage_meter_UI.shadow_offsets.hunter_rank.y, damage_meter_UI.colors.hunter_rank.shadow); + end + --hunter rank + draw.text(hunter_rank_text, screen_position.x + damage_meter_UI.offsets.hunter_rank.x, screen_position.y + damage_meter_UI.offsets.hunter_rank.y, damage_meter_UI.colors.hunter_rank.text); + end + if damage_meter_UI.visibility.player_damage then local player_damage = string.format("%d", player.display.total_damage); @@ -1059,4 +1094,4 @@ function damage_meter() draw.text(total_damage_text, screen_position.x + damage_meter_UI.offsets.total_damage.x, screen_position.y + damage_meter_UI.offsets.total_damage.y, damage_meter_UI.colors.total_damage.text); end end ------------------------DAMAGE METER UI----------------------- \ No newline at end of file +-----------------------DAMAGE METER UI-----------------------