From 111fd0d153b3a73c21986a46dbc6d027eeb66178 Mon Sep 17 00:00:00 2001 From: telkar-rg Date: Mon, 21 Jul 2025 17:28:34 +0200 Subject: [PATCH] added "Func Call Spam Protection" for "UNIT_INVENTORY_CHANGED" Event in "DataStore_Stats" file --- .../DataStore_Stats/DataStore_Stats.lua | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Altoholic-Addon/DataStore_Stats/DataStore_Stats.lua b/Altoholic-Addon/DataStore_Stats/DataStore_Stats.lua index 9de6a23..a230828 100644 --- a/Altoholic-Addon/DataStore_Stats/DataStore_Stats.lua +++ b/Altoholic-Addon/DataStore_Stats/DataStore_Stats.lua @@ -6,12 +6,15 @@ if not DataStore then return end local addonName = "DataStore_Stats" -_G[addonName] = LibStub("AceAddon-3.0"):NewAddon(addonName, "AceConsole-3.0", "AceEvent-3.0") +_G[addonName] = LibStub("AceAddon-3.0"):NewAddon(addonName, "AceConsole-3.0", "AceEvent-3.0", "AceTimer-3.0") local addon = _G[addonName] local THIS_ACCOUNT = "Default" +-- Func Call Spam Protection +local FCSP_timer_UNIT_INVENTORY_CHANGED + local AddonDB_Defaults = { global = { Characters = { @@ -48,6 +51,9 @@ end -- *** Scanning functions *** local function ScanStats() + FCSP_timer_UNIT_INVENTORY_CHANGED = nil -- manual reset (safety redundancy) + -- print("DataStore_Stats.lua -- ScanStats", format("%.3f",GetTime()%100)) -- DEBUG 2025 07 21 - 3 + local stats = addon.ThisCharacter.Stats wipe(stats) @@ -135,9 +141,11 @@ local function ScanStats() addon.ThisCharacter.lastUpdate = time() end + function addon:OnEnable() addon:RegisterEvent("PLAYER_ALIVE") - addon:RegisterEvent("UNIT_INVENTORY_CHANGED", ScanStats) + -- addon:RegisterEvent("UNIT_INVENTORY_CHANGED", ScanStats) + addon:RegisterEvent("UNIT_INVENTORY_CHANGED") end function addon:OnDisable() @@ -152,3 +160,12 @@ function addon:PLAYER_ALIVE() ScanStats() end + +function addon:UNIT_INVENTORY_CHANGED() + -- this function limits calls to "ScanStats" to max 1 every second + + -- print("DataStore_Stats.lua -- UNIT_INVENTORY_CHANGED", DEBUG_CNT, format("%.3f",GetTime()%100)) -- DEBUG 2025 07 21 - 3 + + if FCSP_timer_UNIT_INVENTORY_CHANGED then return end + FCSP_timer_UNIT_INVENTORY_CHANGED = addon:ScheduleTimer(ScanStats, 1) +end