From 2b8841c95a308e2df257e1d580a72262f21110dc Mon Sep 17 00:00:00 2001 From: Ilias Rbayti <63159154+Kenshiin13@users.noreply.github.com> Date: Wed, 27 Nov 2024 21:38:48 +0100 Subject: [PATCH] fix(esx_skin/client/modules/menu): fix texture variations not updating --- [core]/esx_skin/client/modules/menu.lua | 38 +++++++++++++++---------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/[core]/esx_skin/client/modules/menu.lua b/[core]/esx_skin/client/modules/menu.lua index 0137f40a..f1179151 100644 --- a/[core]/esx_skin/client/modules/menu.lua +++ b/[core]/esx_skin/client/modules/menu.lua @@ -47,7 +47,7 @@ function Menu:InsertElements() value = GetPedPropIndex(playerPed, self.components[i].componentId) end - local data = self.components[i] + local data = table.clone(self.components[i]) data.value = value data.type = "slider" data.max = self.maxValues[self.components[i].name] @@ -78,27 +78,35 @@ function Menu:Change(data, menu) Skin.zoomOffset = data.current.zoomOffset Skin.camOffset = data.current.camOffset - if skin[data.current.name] ~= data.current.value then - -- Change skin element - exports["skinchanger"]:Change(data.current.name, data.current.value) - skin[data.current.name] = data.current.value + if skin[data.current.name] == data.current.value then + return + end - local newData = {} + -- Change skin element + exports["skinchanger"]:Change(data.current.name, data.current.value) + skin[data.current.name] = data.current.value - for i = 1, #self.elements, 1 do + -- Texture variation changed. We don't have to update anything. + if data.current.textureof then + return + end + + -- Texture changed. Update variation max value. + for i = 1, #self.elements, 1 do + local element = self.elements[i] + + if element.textureof == data.current.name then local component = self.components[i] - newData.max = type(component.max) == "function" and component.max(PlayerPedId(), skin) or component.max - - if self.elements[i].textureof ~= nil and data.current.name == self.elements[i].textureof then - newData.value = 0 + if (ESX.IsFunctionReference(component.max)) then + self.elements[i].max = component.max(PlayerPedId(), skin) end + self.elements[i].value = 0 - menu.update({ name = self.elements[i].name }, newData) + menu.update({ name = self.elements[i].name }, self.elements[i]) + menu.refresh() + break end - - self.elements = newData - menu.refresh() end end