Doongogar Posted March 27, 2023 Share Posted March 27, 2023 então eu não queria verificar se o elemento possui tal element data, eu gostaria de saber se ele possui algum element data verificar caso o elemento abrigue algum element data, independente do nome do element data Link to comment
FelipeX Posted March 27, 2023 Share Posted March 27, 2023 (edited) 12 hours ago, SciptNovato said: então eu não queria verificar se o elemento possui tal element data, eu gostaria de saber se ele possui algum element data verificar caso o elemento abrigue algum element data, independente do nome do element data Não entendi muito bem sua pergunta, mas para saber se um elemento possui o element data use getElementData. --Exemplo 1 local Sede = getElementData(localPlayer, "Sede") or 0 if Sede then -- Verifica se tem o elemento "Sede" nele, então: end --Exemplo 2 local Sede = getElementData(localPlayer, "Sede") or 0 if Sede >= 10 then -- Verifica se a sede é maior ou igual a 10, se for então: end --Exemplo 3 local Teste = createElement("SaldoGeral") -- Cria um elemento setElementData(Teste, "Sd_Geral", 1000) -- Seta um element Data no elemento. local SaldoBank = getElementData(Teste, "Sd_Geral") or 0 -- Retorna o saldo. se não for isso, explica melhor um pouquinho pra ver se posso ajudar... Edited March 27, 2023 by FelipeX Link to comment
Doongogar Posted March 27, 2023 Author Share Posted March 27, 2023 (edited) eu vou dar um exemplo que nao sei se ta certo: fazer um loop com getAllElementData, getando todos os element datas do elemento entao usar o simbolo ~= para verificar se os element datas do elemento e diferente de nil tipo assim: function checkData(elemento) for i, objeto in ipairs(getAllElementData(elemento)) do if objeto ~= nil then --entao faz algo end end end algo assim. Verificar se o elemento possui algum element data sabe? Detalhe: eu tenho que fazer essa verificacao no client e o getAllElementData funciona no server Edited March 27, 2023 by SciptNovato Link to comment
Other Languages Moderators Lord Henry Posted March 28, 2023 Other Languages Moderators Share Posted March 28, 2023 (edited) Normalmente no client espera-se que você já saiba quais elementDatas um elemento pode ter. Nesse caso você cria primeiro uma tabela com os nomes de todas as datas que o elemento possa ter e verifica com um loop quais datas o elemento possui, ou se não possui tal data específica. local datas = { "dataName1", "dataName2", "dataName3", } function checkData(elemento) for _, data in pairs(datas) do -- Para cada nome de data que está na tabela datas, faça: local value = getElementData(elemento, data) -- Obtém o valor dessa elementData no elemento, se não existir retorna false. if not value then -- Se o elemento NÃO TEM essa data, então: -- faz algo -- OBS: Se a data existir mas estiver definida com valor false, vai ser o mesmo que não existir. end end end Edited March 28, 2023 by Lord Henry Link to comment
Doongogar Posted March 28, 2023 Author Share Posted March 28, 2023 nao existe uma maneira de verificar sem ter a tabela de nomes? eu queria verificar se o elemento possui pelo menos 1 element data Link to comment
Other Languages Moderators Lord Henry Posted March 28, 2023 Other Languages Moderators Share Posted March 28, 2023 Só server-side pra conseguir obter as datas sem saber os nomes. Link to comment
Doongogar Posted March 28, 2023 Author Share Posted March 28, 2023 (edited) entao teria como eu pegar as datas sem saber os nomes no server-side, e passar isso pro client-side? Edited March 28, 2023 by SciptNovato Link to comment
Other Languages Moderators Lord Henry Posted March 28, 2023 Other Languages Moderators Share Posted March 28, 2023 Tem, só usar triggers. Link to comment
Doongogar Posted March 28, 2023 Author Share Posted March 28, 2023 mas a forma do exemplo que dei funcionaria no servidor? function checkData(elemento) for i, objeto in ipairs(getAllElementData(elemento)) do if objeto ~= nil then --entao faz algo end end end ai eu modificaria no caso para usar o trigger, eu poderia usar isso de base e então passar pro client? Link to comment
Other Languages Moderators Lord Henry Posted March 29, 2023 Other Languages Moderators Share Posted March 29, 2023 Não funcionaria, pois você está usando ipairs que só serve para tabelas indexadas com inteiros sequenciais. Perceba que no exemplo da wiki do getAllElementData ele usa pairs. Link to comment
Doongogar Posted March 29, 2023 Author Share Posted March 29, 2023 so isso que ta errado, a questao de eu usar "objeto diferente de nil" seria certo para verificar caso o element data do objeto seja diferente de nil? Link to comment
Other Languages Moderators Lord Henry Posted March 29, 2023 Other Languages Moderators Share Posted March 29, 2023 ElementDatas só serão nil se você setar esse valor nele. ElementDatas que não existem, não vão aparecer ali no getAllElementData. Se você quer que tal elementData exista mas não esteja sendo usada, normalmente definimos valor false nela. Se for o caso de setar false na data, você faria a condição ali assim: if objeto then -- É o mesmo que if objeto ~= false then 1 Link to comment
Other Languages Moderators Lord Henry Posted April 11, 2023 Other Languages Moderators Share Posted April 11, 2023 @SciptNovato na nova atualização 1.6 do MTA, a função getAllElementData passa a funcionar também client-side. 1 Link to comment
Doongogar Posted April 11, 2023 Author Share Posted April 11, 2023 muito bom, porém eu arrumei outra solução para meu problema eu que fui bem leigo. Se quiser ja pode fechar este tópico Link to comment
Recommended Posts