DNL291

Moderators
  • Content Count

    3,482
  • Joined

  • Last visited

  • Days Won

    43

Everything posted by DNL291

  1. Leia os argumentos de setElementData: theElement, key, value, synchronize (opcional) setElementData(source, "oneshot", true) Assim deve funcionar ^
  2. onPlayerJoin ou onPlayerLogin -- se tiver painel de login spawnPlayer setCameraTarget fadeCamera onPlayerWasted setTimer E as mesma funções acima pra respawn.
  3. Você vai precisar disso para o seu script, não tem saída. E mesmo que seja complexo pra você, você não fará nada além de utilizar as funções já feitas. Editando por cima do código do Lord Henry e adicionando o meu ficaria assim: local limite_de_objetos = 20 local globalObjects = {} function createObjectG (thePlayer, commandName) if globalObjects[thePlayer] and #globalObjects[thePlayer] >= limite_de_objetos then -- verifica se a quantidade de objects do jogador atingiu o limite return outputChatBox ("Quantidade de objetos atingiu o limite", thePlayer) end local x, y, z = getElementPosition (thePlayer) local object = createPlayerObject (thePlayer, 1237, x , y , z -1) if object then -- checa se o objeto foi criado com sucesso. outputChatBox ("Objeto criado com sucesso!", thePlayer) else outputChatBox ("Falha ao criar o objeto!", thePlayer) end end addCommandHandler ("cb", createObjectG) -- deletar um objeto específico da tabela function deletObjeto (thePlayer, commandName, id) if globalObjects[thePlayer] and tonumber(id) then id = tonumber(id) if globalObjects[thePlayer][id] then destroyElement (globalObjects[thePlayer][id]) table.remove(globalObjects[thePlayer], id) outputChatBox ("Objeto ID: "..id.." foi destruído com sucesso!", thePlayer) else outputChatBox ("Objeto com este id não foi encontrado!", thePlayer) end end end addCommandHandler ("dob", deletObjeto) -- deletar todos objetos addCommandHandler("dall", function (player) if destroyPlayerObjects( player ) then outputChatBox ("Todos objects foram destruídos!!", thePlayer) end end) function createPlayerObject( player, ... ) if isElement(player) then local object = createObject( ... ) if not object then return false end if not globalObjects[player] then globalObjects[player] = {} end table.insert( globalObjects[player], object ) return object end end function destroyPlayerObjects( player ) if globalObjects[player] then for i=1, #globalObjects[player] do if isElement(globalObjects[player][i]) then destroyElement(globalObjects[player][i]) end end globalObjects[player] = nil return true end return false end addEventHandler("onPlayerQuit", root, function() destroyPlayerObjects( source ) end) (não foi testado)
  4. Aqui as funções para isso: local globalObjects = {} function createPlayerObject( player, ... ) if isElement(player) then local object = createObject( ... ) if not object then return false end if not globalObjects[player] then globalObjects[player] = {} end table.insert( globalObjects[player], object ) end end function destroyPlayerObjects( player ) if globalObjects[player] then for i=1, #globalObjects[player] do if isElement(globalObjects[player][i]) then destroyElement(globalObjects[player][i]) end end globalObjects[player] = nil end end addEventHandler("onPlayerQuit", root, function() destroyPlayerObjects( source ) end) Você vai poder verificar a quantidade atual de objects com uma verificação tipo assim: local limite = 20 if globalObjects[player] and #globalObjects[player] >= limite then return outputChatBox("Limite de objects criados!", player) end
  5. Adicione o comando: addCommandHandler com o comando desejado ( 'oneshot' ); Quando o jogador digitar o comando, utilize a função setElementData; Quando sair, remova essa elementData, que pode ser passando false no valor. Obs: no seu código está verificando se bodypart é 3 que é o torso, troque para 9 se quiser que seja a cabeça.
  6. Se você tiver falando do efeito preto e branco tem este shader: https://community.multitheftauto.com/index.php?p=resources&s=details&id=8466 Senão, acredito que conseguirá com dxDrawRectangle.
  7. Deixe as função do dx separada: function drawDX() dxDrawRectangle(382, 346, 264, 1, tocolor(254, 254, 254, 255), false) dxDrawText("NENHUM ITEM", 380, 304, 646, 340, tocolor(255, 255, 255, 255), 3.00, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("ATUALMENTE NÃO HÁ\n NENHUM OBJETO\n SELECIONADO !", 377, 360, 646, 565, tocolor(0, 95, 253, 255), 1.50, "default-bold", "center", "top", false, false, false, false, false) dxDrawRectangle(382, 570, 264, 1, tocolor(254, 254, 254, 255), false) dxDrawRectangle(570, 578, 76, 34, tocolor(0, 28, 243, 255), false) dxDrawText("agua", 380, 574, 568, 614, tocolor(255, 255, 255, 255), 1.00, "default-bold", "center", "center", false, false, false, false, false) dxDrawText("USAR", 569, 577, 646, 612, tocolor(255, 255, 255, 255), 2.00, "default-bold", "center", "center", false, false, false, false, false) end Lembre-se que funções dx precisam ser renderizadas para sempre aparecer na tela; utilize com o evento onClientRender. No onClientClick você só fará verificações: Se o clique foi em certa área da tela if isCursorOnElement(X, Y, width, height) then Se o dx está visível E isMainMenuActive + isConsoleActive Verificar se o botão do cloque foi o botão esquerdo do mouse "left" (a menos que você queria outro, como botão direito "right") Feitas essas verificações no evento, o seu clique em 'botões DX' está feito. Se o seu clique for em um elemento do GTA, você pode obter o elemento clicado no parâmetro do evento onClientClick: string button, string state, int absoluteX, int absoluteY, float worldX, float worldY, float worldZ, element clickedWorld clickedWorld
  8. Tenta isto: addCommandHandler( "dc", -- add a command handler for the command function( ) local success = setClipboard( "https://discord.gg/y5uZFhw" ) -- set the clipboard and find out if it worked if success then outputChatBox( "O link do discord foi copiado para o clipboard", 0, 255, 0 ) -- if it did, tell the player end end )
  9. Mude o script para client no meta.xml.
  10. Sim, os argumentos da função são nesta ordem: ID, radius, X, Y, Z, interior (opcional) Certifique-se que estejam corretamente definidos. Também, Veja o debug quando testar o código.
  11. Evento: onClientClick Utilize o último parâmetro 'clickedWorld'.
  12. Está na categoria errada, a categoria portuguesa é aqui: https://forum.mtasa.com/forum/97-portuguese-português/ #Topico: Ative o resource interiors - ele já vem por padrão na sua pasta de resources quando instala o MTA. @Pedro Ferreira
  13. Vai depender da estrutura da tabela; data[1] vai retornar a tabela da query, pra tirar suas dúvidas teste o código com iprint, tente manipular essa tabela, etc. A melhor forma de tirar as dúvidas é com você mesmo.
  14. Faltou especificar o valor de BancoSF na query. data2 irá retornar uma tabela com os valores da query, você pode obtê-los com um loop ou indexando; use a função iprint para visualizar a estrutura e entender como você pode puxar o valor. Você também precisa definir o tipo de valor para BancoSF em "CREATE TABLE'. Para atualizar você usará a sintaxe UPDATE, leia: https://www.w3schools.com/sql/sql_update.asp
  15. Pra fazer uma verificação do veículo armazenado na tabela: if veh[getPedOccupiedVehicle(player)] then print("é um veículo da tabela") end Se o intuito dele não for fazer nada disso, então ele está usando uma estrutura errada para a tabela.
  16. Remova warpPedIntoVehicle e adicione uma offset nas coordenadas x e y do veículo. @FlavioDFG
  17. DNL291

    help

    guiSetEnabled(image, false)
  18. Tem certeza que o crash tem relação direta com esse código? A classe não está completa, provavelmente tem outro arquivo separado fora esse código postado. Se tiver algum problema com esse script, é mais provável que seja por mal uso.
  19. Arguments passed in addCommandHandler will be returned as string, you'll need to convert it number. Put this at the beginning of the function: R,G,B = tonumber(R),tonumber(G),tonumber(B)
  20. Coloque false no último argumento de onClientGUIClick. addEventHandler("onClientGUIClick", botao1, fecharConversa, false)
  21. Não existe nenhuma conversão automática, você vai precisar recriar utilizando Lua.
  22. onClientVehicleDamage getElementModel cancelEvent
  23. Sim, tem o evento onElementModelChange, verifique se source é um player e a nova skin você obtém com o parâmetro newModel.