Remove Max Updates per Tick, add Update Rate

This commit is contained in:
GreenComfyTea
2022-07-11 10:03:46 +03:00
parent 7c04f79a74
commit 2d84b4bb65
11 changed files with 26 additions and 52 deletions

View File

@@ -185,9 +185,9 @@ function damage_hook.update_damage(enemy, enemy_calc_damage_info)
--" Condition Type: (" .. tostring(attacker_type) .. --" Condition Type: (" .. tostring(attacker_type) ..
--") " .. tostring(condition_type); --") " .. tostring(condition_type);
if string.len(xy) > 2300 then --if string.len(xy) > 2300 then
xy = ""; -- xy = "";
end --end
local damage_source_type = damage_hook.get_damage_source_type(attacker_type, is_marionette_attack); local damage_source_type = damage_hook.get_damage_source_type(attacker_type, is_marionette_attack);

View File

@@ -173,7 +173,7 @@ function player.update_damage(_player, damage_source_type, is_large_monster, dam
end end
if _player.first_hit_time == -1 then if _player.first_hit_time == -1 then
_player.first_hit_time = time.total_elapsed_seconds; _player.first_hit_time = time.total_elapsed_script_seconds;
end end
local player_monster_type = _player.small_monsters; local player_monster_type = _player.small_monsters;

View File

@@ -3,7 +3,6 @@ local singletons;
local customization_menu; local customization_menu;
local player; local player;
local config; local config;
local small_monster;
local quest_manager_type_def = sdk.find_type_definition("snow.QuestManager"); local quest_manager_type_def = sdk.find_type_definition("snow.QuestManager");
local get_quest_elapsed_time_min_method = quest_manager_type_def:get_method("getQuestElapsedTimeMin"); local get_quest_elapsed_time_min_method = quest_manager_type_def:get_method("getQuestElapsedTimeMin");
@@ -13,16 +12,9 @@ time.total_elapsed_seconds = 0;
time.elapsed_minutes = 0; time.elapsed_minutes = 0;
time.elapsed_seconds = 0; time.elapsed_seconds = 0;
time.total_elapsed_script_seconds = 0; time.last_elapsed_seconds = 0;
time.last_whole_script_seconds = 0;
function time.update_script_time()
time.total_elapsed_script_seconds = os.clock();
end
function time.tick() function time.tick()
time.update_script_time();
if singletons.quest_manager == nil then if singletons.quest_manager == nil then
return; return;
end end
@@ -44,10 +36,9 @@ function time.tick()
time.total_elapsed_seconds = quest_time_total_elapsed_seconds; time.total_elapsed_seconds = quest_time_total_elapsed_seconds;
time.elapsed_seconds = quest_time_total_elapsed_seconds - quest_time_elapsed_minutes * 60; time.elapsed_seconds = quest_time_total_elapsed_seconds - quest_time_elapsed_minutes * 60;
if time.total_elapsed_script_seconds - time.last_whole_script_seconds > 1 then if time.total_elapsed_seconds - time.last_elapsed_seconds > 60 / config.current_config.global_settings.performance.updates_rate then
time.last_whole_script_seconds = time.total_elapsed_script_seconds; time.last_elapsed_seconds = time.total_elapsed_seconds;
time.update_players_dps(); time.update_players_dps();
time.update_small_monsters();
end end
end end
@@ -57,20 +48,20 @@ function time.update_players_dps()
local new_total_dps = 0; local new_total_dps = 0;
for _, _player in pairs(player.list) do for _, _player in pairs(player.list) do
if _player.join_time == -1 then if _player.join_time == -1 then
_player.join_time = time.total_elapsed_script_seconds; _player.join_time = time.total_elapsed_seconds;
end end
if cached_config.dps_mode == "Quest Time" then if cached_config.dps_mode == "Quest Time" then
if time.total_elapsed_script_seconds > 0 then if time.total_elapsed_seconds > 0 then
_player.dps = _player.display.total_damage / time.total_elapsed_script_seconds; _player.dps = _player.display.total_damage / time.total_elapsed_seconds;
end end
elseif cached_config.dps_mode == "Join Time" then elseif cached_config.dps_mode == "Join Time" then
if time.total_elapsed_script_seconds - _player.join_time > 0 then if time.total_elapsed_seconds - _player.join_time > 0 then
_player.dps = _player.display.total_damage / (time.total_elapsed_script_seconds - _player.join_time); _player.dps = _player.display.total_damage / (time.total_elapsed_seconds - _player.join_time);
end end
elseif cached_config.dps_mode == "First Hit" then elseif cached_config.dps_mode == "First Hit" then
if time.total_elapsed_script_seconds - _player.first_hit_time > 0 then if time.total_elapsed_seconds - _player.first_hit_time > 0 then
_player.dps = _player.display.total_damage / (time.total_elapsed_script_seconds - _player.first_hit_time); _player.dps = _player.display.total_damage / (time.total_elapsed_seconds - _player.first_hit_time);
end end
else else
end end
@@ -81,20 +72,12 @@ function time.update_players_dps()
player.total.dps = new_total_dps; player.total.dps = new_total_dps;
end end
function time.update_small_monsters()
for enemy, monster in pairs(small_monster.list) do
small_monster.update(enemy, monster);
end
end
function time.init_module() function time.init_module()
player = require("MHR_Overlay.Damage_Meter.player"); player = require("MHR_Overlay.Damage_Meter.player");
singletons = require("MHR_Overlay.Game_Handler.singletons"); singletons = require("MHR_Overlay.Game_Handler.singletons");
customization_menu = require("MHR_Overlay.UI.customization_menu"); customization_menu = require("MHR_Overlay.UI.customization_menu");
time = require("MHR_Overlay.Game_Handler.time"); time = require("MHR_Overlay.Game_Handler.time");
config = require("MHR_Overlay.Misc.config"); config = require("MHR_Overlay.Misc.config");
small_monster = require("MHR_Overlay.Monsters.small_monster");
end end
return time; return time;

View File

@@ -29,8 +29,7 @@ function config.init()
}, },
performance = { performance = {
max_monster_updates_per_tick = 2, update_rate = 60
prioritize_large_monsters = false,
}, },
module_visibility = { module_visibility = {

View File

@@ -376,7 +376,9 @@ language.default_language = {
hide_other_players = "Hide Other Players", hide_other_players = "Hide Other Players",
hide_total_damage = "Hide Total Damage", hide_total_damage = "Hide Total Damage",
player_name_size_limit = "Player Name Size Limit" player_name_size_limit = "Player Name Size Limit",
update_rate = "Update Rate"
} }
}; };

View File

@@ -820,14 +820,9 @@ function customization_menu.draw()
end end
if imgui.tree_node(language.current_language.customization_menu.performance) then if imgui.tree_node(language.current_language.customization_menu.performance) then
changed, config.current_config.global_settings.performance.max_monster_updates_per_tick = imgui.slider_int(language.current_language changed, config.current_config.global_settings.performance.update_rate = imgui.slider_int(language.current_language
.customization_menu.max_monster_updates_per_tick, .customization_menu.update_rate,
config.current_config.global_settings.performance.max_monster_updates_per_tick, 1, 150); config.current_config.global_settings.performance.update_rate, 1, 400);
config_changed = config_changed or changed;
changed, config.current_config.global_settings.performance.prioritize_large_monsters = imgui.checkbox(
language.current_language.customization_menu.prioritize_large_monsters,
config.current_config.global_settings.performance.prioritize_large_monsters);
config_changed = config_changed or changed; config_changed = config_changed or changed;
imgui.tree_pop(); imgui.tree_pop();

View File

@@ -140,7 +140,6 @@
"loss_health_percentage": "Sever Health Percentage", "loss_health_percentage": "Sever Health Percentage",
"master_rank": "Master Rank", "master_rank": "Master Rank",
"max_distance": "Max Distance", "max_distance": "Max Distance",
"max_monster_updates_per_tick": "Max Monster Updates per Tick",
"me": "Me", "me": "Me",
"menu_font": "Menu Font", "menu_font": "Menu Font",
"menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!", "menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!",
@@ -177,7 +176,6 @@
"poison_damage": "Poison Damage", "poison_damage": "Poison Damage",
"position": "Position", "position": "Position",
"press_any_key": "Press any key...", "press_any_key": "Press any key...",
"prioritize_large_monsters": "Large Monsters on High Priority",
"quest_result_screen": "Quest Result Screen", "quest_result_screen": "Quest Result Screen",
"quest_time": "Quest Time", "quest_time": "Quest Time",
"rage": "Rage", "rage": "Rage",
@@ -222,6 +220,7 @@
"tracked_monster_types": "Tracked Monster Types", "tracked_monster_types": "Tracked Monster Types",
"training_area": "Training Area", "training_area": "Training Area",
"type": "Type", "type": "Type",
"update_rate": "Update Rate",
"value_label": "Value Label", "value_label": "Value Label",
"vertical": "Vertical", "vertical": "Vertical",
"viewport_offset": "Viewport Offset", "viewport_offset": "Viewport Offset",

View File

@@ -140,7 +140,6 @@
"loss_health_percentage": "절단 수치 비율", "loss_health_percentage": "절단 수치 비율",
"master_rank": "마스터 랭크", "master_rank": "마스터 랭크",
"max_distance": "최대 거리", "max_distance": "최대 거리",
"max_monster_updates_per_tick": "틱당 갱신할 최대 몬스터",
"me": "나", "me": "나",
"menu_font": "메뉴 글꼴", "menu_font": "메뉴 글꼴",
"menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 뻗을 수 있습니다!", "menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 뻗을 수 있습니다!",
@@ -177,7 +176,6 @@
"poison_damage": "독 대미지", "poison_damage": "독 대미지",
"position": "위치", "position": "위치",
"press_any_key": "설정할 키를 누르세요...", "press_any_key": "설정할 키를 누르세요...",
"prioritize_large_monsters": "대형 몬스터를 우선적으로",
"quest_result_screen": "퀘스트 결과 화면", "quest_result_screen": "퀘스트 결과 화면",
"quest_time": "퀘스트 시간", "quest_time": "퀘스트 시간",
"rage": "분노", "rage": "분노",
@@ -222,6 +220,7 @@
"tracked_monster_types": "추적할 몬스터 타입", "tracked_monster_types": "추적할 몬스터 타입",
"training_area": "훈련장", "training_area": "훈련장",
"type": "순으로", "type": "순으로",
"update_rate": "Update Rate",
"value_label": "값 라벨", "value_label": "값 라벨",
"vertical": "세로", "vertical": "세로",
"viewport_offset": "뷰포트 간격", "viewport_offset": "뷰포트 간격",

View File

@@ -140,7 +140,6 @@
"loss_health_percentage": "Отсечение части в процентах", "loss_health_percentage": "Отсечение части в процентах",
"master_rank": "Ранг мастера", "master_rank": "Ранг мастера",
"max_distance": "Макс. расстояние", "max_distance": "Макс. расстояние",
"max_monster_updates_per_tick": "Макс. кол-во обновлений за тик",
"me": "Я", "me": "Я",
"menu_font": "Шрифт меню", "menu_font": "Шрифт меню",
"menu_font_change_disclaimer": "Изменение языка и размера шрифта меню несколько раз приведёт к вылету!", "menu_font_change_disclaimer": "Изменение языка и размера шрифта меню несколько раз приведёт к вылету!",
@@ -177,7 +176,6 @@
"poison_damage": "Урон от отравления", "poison_damage": "Урон от отравления",
"position": "Расположение", "position": "Расположение",
"press_any_key": "Нажмите любую клавишу...", "press_any_key": "Нажмите любую клавишу...",
"prioritize_large_monsters": "Большие монстры в приоритете",
"quest_result_screen": "Экран результатов квеста", "quest_result_screen": "Экран результатов квеста",
"quest_time": "Время квеста", "quest_time": "Время квеста",
"rage": "Ярость", "rage": "Ярость",
@@ -222,6 +220,7 @@
"tracked_monster_types": "Отслеживаемые типы монстров", "tracked_monster_types": "Отслеживаемые типы монстров",
"training_area": "Тренировочная зона", "training_area": "Тренировочная зона",
"type": "Тип", "type": "Тип",
"update_rate": "Update Rate",
"value_label": "Метка значений", "value_label": "Метка значений",
"vertical": "Вертикально", "vertical": "Вертикально",
"viewport_offset": "Сдвиг в экранном пространстве", "viewport_offset": "Сдвиг в экранном пространстве",

View File

@@ -140,7 +140,6 @@
"loss_health_percentage": "Sever Health Percentage", "loss_health_percentage": "Sever Health Percentage",
"master_rank": "Master Rank", "master_rank": "Master Rank",
"max_distance": "最大距离", "max_distance": "最大距离",
"max_monster_updates_per_tick": "每次更新的最大怪物数量",
"me": "我", "me": "我",
"menu_font": "菜单字体", "menu_font": "菜单字体",
"menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!", "menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!",
@@ -177,7 +176,6 @@
"poison_damage": "中毒伤害", "poison_damage": "中毒伤害",
"position": "位置", "position": "位置",
"press_any_key": "按任意键...", "press_any_key": "按任意键...",
"prioritize_large_monsters": "大型怪物优先",
"quest_result_screen": "任务结果页", "quest_result_screen": "任务结果页",
"quest_time": "任务时间", "quest_time": "任务时间",
"rage": "愤怒", "rage": "愤怒",
@@ -222,6 +220,7 @@
"tracked_monster_types": "跟踪的怪物类型", "tracked_monster_types": "跟踪的怪物类型",
"training_area": "训练场", "training_area": "训练场",
"type": "类型", "type": "类型",
"update_rate": "Update Rate",
"value_label": "数字", "value_label": "数字",
"vertical": "垂直", "vertical": "垂直",
"viewport_offset": "窗口偏移", "viewport_offset": "窗口偏移",

View File

@@ -140,7 +140,6 @@
"loss_health_percentage": "Sever Health Percentage", "loss_health_percentage": "Sever Health Percentage",
"master_rank": "Master Rank", "master_rank": "Master Rank",
"max_distance": "最大距離", "max_distance": "最大距離",
"max_monster_updates_per_tick": "每次更新的最大魔物數量",
"me": "我", "me": "我",
"menu_font": "選單字體大小", "menu_font": "選單字體大小",
"menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!", "menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!",
@@ -177,7 +176,6 @@
"poison_damage": "毒傷害", "poison_damage": "毒傷害",
"position": "位置", "position": "位置",
"press_any_key": "輸入任意鍵...", "press_any_key": "輸入任意鍵...",
"prioritize_large_monsters": "大型魔物優先",
"quest_result_screen": "任務結算頁", "quest_result_screen": "任務結算頁",
"quest_time": "任務時間", "quest_time": "任務時間",
"rage": "憤怒度", "rage": "憤怒度",
@@ -222,6 +220,7 @@
"tracked_monster_types": "追蹤的魔物類型", "tracked_monster_types": "追蹤的魔物類型",
"training_area": "訓練場", "training_area": "訓練場",
"type": "類型", "type": "類型",
"update_rate": "Update Rate",
"value_label": "數字", "value_label": "數字",
"vertical": "垂直", "vertical": "垂直",
"viewport_offset": "視窗的位置", "viewport_offset": "視窗的位置",