Doongogar Posted October 23, 2021 Share Posted October 23, 2021 Bem, eu achei um codigo que exibe um "shout" na tela de todos os players a principio o script funcionava com setTimer para a mensagem sumir depois de determinado tempo, mais eu gostaria que o anuncio sumisse utilizando o mesmo comando codigo abaixo: function announceScript(player, cmd, ...) for id, players in ipairs(getElementsByType("player")) do local message = table.concat({...}," ") local textChat = textCreateDisplay() local textItem = textCreateTextItem("Teste", 0.5, 0.5, 1.5, 0, 0, 0, 255, 2, "center", "center") textDisplayAddText(textChat, textItem) textDisplayAddObserver(textChat, players) end end addCommandHandler("anuncio", announceScript) Link to comment
Other Languages Moderators androksi Posted October 25, 2021 Other Languages Moderators Share Posted October 25, 2021 Olá, @SciptNovato! Use a função textDestroyDisplay em conjunto à função setTimer. Lembrando que essa não é a melhor forma de fazer, estou apenas respondendo sua dúvida. Link to comment
Doongogar Posted October 25, 2021 Author Share Posted October 25, 2021 Just now, androksi said: Olá, @SciptNovato! Use a função textDestroyDisplay em conjunto à função setTimer. Lembrando que essa não é a melhor forma de fazer, estou apenas respondendo sua dúvida. do textDestroyDisplay eu ja estava ciente, e o setTimer a principio ja estava sendo usado no codigo o que eu quero e retirar o anuncio com o mesmo comando, e não que o anuncio suma depois de certo tempo. Link to comment
Other Languages Moderators androksi Posted October 25, 2021 Other Languages Moderators Share Posted October 25, 2021 Ah, sim!!! Desculpe-me o engano. Bom, do jeito mais simples possível, você pode criar uma variável de estado e alterná-la para verdadeiro ou falso. Dependendo do estado atual, você executa um trecho de código. Mas de qualquer forma, você precisa usar uma tabela para armazenar quem está vendo o anúncio. Exemplo: local announce = { active = false, players = {} } addCommandHandler("anuncio", function(player, command, ...) local args = { ... } if #args > 0 then announce.active = not announce.active -- Alterna o estado do anúncio para true/false. if announce.active then -- Caso seja true. local message = table.concat(args, " ") local allPlayers = getElementsByType("player") -- Obtém a tabela que contém todos os jogadores do servidor. for i = 1, #allPlayers do -- Usamos um laço de repetição BEM MAIS RÁPIDO para pegar cada jogador. local p = allPlayers[i] -- Jogador. local display = textCreateDisplay() local text = textCreateTextItem(message, 0.5, 0.5, 1.5, 0, 0, 0, 255, 2, "center", "center") textDisplayAddText(display, text) textDisplayAddObserver(display, p) announce.players[p] = display -- Armazena o jogador na indíce da tabela, como o display sendo o seu valor. end else -- Se for false. for p, display in pairs(announce.players) do -- Faz um laço de repetição em todos os displays, que foram salvos em cada jogador. -- p = nossa índice (jogador), display (o display) if isElement(p) then textDisplayRemoveObserver(display, p) -- Remove o display do jogador. textDestroyDisplay(display) -- Destrói o display. end end announce.players = {} -- Limpa a tabela. end end end) 1 Link to comment
Doongogar Posted October 26, 2021 Author Share Posted October 26, 2021 22 hours ago, androksi said: Ah, sim!!! Desculpe-me o engano. Bom, do jeito mais simples possível, você pode criar uma variável de estado e alterná-la para verdadeiro ou falso. Dependendo do estado atual, você executa um trecho de código. Mas de qualquer forma, você precisa usar uma tabela para armazenar quem está vendo o anúncio. Exemplo: local announce = { active = false, players = {} } addCommandHandler("anuncio", function(player, command, ...) local args = { ... } if #args > 0 then announce.active = not announce.active -- Alterna o estado do anúncio para true/false. if announce.active then -- Caso seja true. local message = table.concat(args, " ") local allPlayers = getElementsByType("player") -- Obtém a tabela que contém todos os jogadores do servidor. for i = 1, #allPlayers do -- Usamos um laço de repetição BEM MAIS RÁPIDO para pegar cada jogador. local p = allPlayers[i] -- Jogador. local display = textCreateDisplay() local text = textCreateTextItem(message, 0.5, 0.5, 1.5, 0, 0, 0, 255, 2, "center", "center") textDisplayAddText(display, text) textDisplayAddObserver(display, p) announce.players[p] = display -- Armazena o jogador na indíce da tabela, como o display sendo o seu valor. end else -- Se for false. for p, display in pairs(announce.players) do -- Faz um laço de repetição em todos os displays, que foram salvos em cada jogador. -- p = nossa índice (jogador), display (o display) if isElement(p) then textDisplayRemoveObserver(display, p) -- Remove o display do jogador. textDestroyDisplay(display) -- Destrói o display. end end announce.players = {} -- Limpa a tabela. end end end) Valeu Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now