Okay, so, there is a problem - some addons (i.e. crapngray, necrosis) crashing session and kick me out to the login screen when I'm trying to delete multiple items at the same time.
I'm aware about that thing that warmane have protection that prevents deleting items automatically. I even found similar topics on this forum like this one .
As Islingr mentioned:
But! What I found is that DeleteCursorItem() method not actually disabled, because when I'm using crapngray I can press addon button multiple times using LMB (which delete 1 gray item at a time), but when I press RMB (which should delete all gray items in the bags) it crashes. Same thing with necrosis's auto deleting soul shards. If it deleting one shard it's fine, but sometimes it bugs out and trying to delete 2 and more shards at the same time and you guess it - it crashes the game and not even letting me enter the game anymore because every time I load my character necrosis automatically trying to delete items again and it just enters disconnect-loop until I disable the addon before entering world.Warmane, about 2 years ago, disabled the DeleteCursorItem() method and made it log the player out instead.
this might have been an over-the-top response to people getting ****ed over by malicious "friends" giving "helpful macros" which end up with all of the player's gear being basically "deleted"
Here is a video that depict the problem. As you can see I deleted 2 items with LMB with no problem, but when I pressed RMB and it tried to delete multiple items session crashed.
So my first thought was "Okay whatever I need to just add a delay between destroying items". I found a piece of code inside necrosis that delete soul shards, but I stumbled upon a big problem. LUA don't have sleep() method. It has C_Timer.After but unfortunately it was implemented only in wow 6.0.2. I found multiple examples of manual implementation of sleep method on stackoverflow, but I'm not a programmer and it was beyond my abilities to adapt it to my needs.
What I'm asking right now is if someone aware how to do it? Or maybe there is another solution for this?
Here is the part of a code that deleting items in necrosis:
Here is a link to necrosis version that I'm using, the file with the code above is a Necrosis.luaCode:-- Destroy extra shards (if enabled) || Si il y a un nombre maximum de fragments à conserver, on enlève les supplémentaires if NecrosisConfig.DestroyShard and NecrosisConfig.DestroyCount and NecrosisConfig.DestroyCount > 0 then for container = 0, 4, 1 do if Local.BagIsSoulPouch[container + 1] then break end for slot=1, GetContainerNumSlots(container), 1 do local itemLink = GetContainerItemLink(container, slot) if (itemLink) then local _, itemID = strsplit(":", itemLink) itemID = tonumber(itemID) if (itemID == 6265) then if (NecrosisConfig.DestroyCount < Local.Soulshard.Count) then PickupContainerItem(container, slot) if (CursorHasItem()) then DeleteCursorItem() Local.Soulshard.Count = GetItemCount(6265) end end break end end end if NecrosisConfig.DestroyCount >= Local.Soulshard.Count then break end end end
Quote