Your welcome, I'm glad it worked for you.
Yes you can tell them if you like. If your sending it to ZOS it might be easier to just tell them to refer to this post, I'll type up an explanation so they can track it down easier...if they want to, they may not since its not really a finished/enabled feature. Addons just turn it on even though its unfinished, and finish the code ourselves.
The error was caused by addons turning on the
Lua Code:
CHAT_SYSTEM:SetAllowMultipleContainers(true)
IN THE PREVIOUS GAME VERSION, when the addons still worked, they were creating multiple chat containers which are saved on the
server side. But with the code changes in the new update the chat containers are not getting created properly
client side. I tracked the error preventing the containers from being created as far as:
Lua Code:
function SharedChatSystem:InitializeSharedControlManagement(control, newContainerFn)
... other code...
local function CreateContainer(objectPool)
local containerControl = ZO_ObjectPool_CreateControl("ZO_ChatContainerTemplate", objectPool, GuiRoot)
-- Error occurs here:
return newContainerFn(self, containerControl, self.windowPool, self.tabPool)
end
... other code...
end
in the chatSystem/sharedchatsystem.lua code file
At that point I had enough info to fix it and stopped tracking it for now, so that's all I know. That line returns an error so the container did not get created properly client side.
But the chat windows were created before the update & saved on the server side, so they still exist server side. This is why even reinstalling did not help you, because those pesky chat windows are saved on the server!!! So they just keep coming back.
Because the chat containers are not being created client side the old, typical, code for removing/fixing damaged chat containers does not work, things like:
Warning: Spoiler
Lua Code:
-- Used from button in settings menu as a last resort --
-- completely destroy all extra windows --
local function DestroyContainerTabs(_Container)
local iNumTabs = GetNumChatContainerTabs(_Container.id)
-- just in case a container is loaded with no tabs, shouldn't happen --
-- Destroy the container --
if iNumTabs == 0 and _Container ~= nil then
CHAT_SYSTEM:DestroyContainer(_Container)
else
-- Destroy ALL of the tabs (automatically destroys the window) --
for i = 1, GetNumChatContainerTabs(_Container.id), 1 do
_Container:RemoveWindow(1)
end
end
end
function ChatIt.DestroyAllContainers()
-- Only down to 2, 1 is the primary chat container --
for i = GetNumChatContainers(), 2, -1 do
DestroyContainerTabs(CHAT_SYSTEM.containers[i])
end
end
-- Used on player activation / deactivation to destroy phantom tabless windows --
local function DestroyTablessWindow(_Container)
local iNumTabs = GetNumChatContainerTabs(_Container.id)
-- just in case a container is loaded with no tabs, shouldn't happen --
-- Destroy the container --
if iNumTabs == 0 and _Container ~= nil then
CHAT_SYSTEM:DestroyContainer(_Container)
end
end
function ChatIt.DestroyAllTablessWindows()
-- Only down to 2, 1 is the primary chat container --
for i = GetNumChatContainers(), 2, -1 do
DestroyTablessWindow(CHAT_SYSTEM.containers[i])
end
end
Those typical ways of removing damaged containers will not work because the container itself does not exist client side, it never got created, but it exists on the server side.
So the fix was to remove them a different way from the server side by using:
Lua Code:
local function OnPlayerActivated()
local numContainers = GetNumChatContainers()
for i = numContainers, 2, -1 do
RemoveChatContainer(i)
end
end
EVENT_MANAGER:RegisterForEvent(ChatIt.name, EVENT_PLAYER_ACTIVATED, OnPlayerActivated)
which counts down from the total number of chat containers and Removes them. It stops at 1 though and does not remove containerID 1, because that is the primary/main chat container.
OH P.S. If ZOS wants a way to simulate this problem just call this:
and it will reproduce the problem. You don't even need to turn on
Lua Code:
CHAT_SYSTEM:SetAllowMultipleContainers(true)