Giovany Mito Posted June 7, 2020 Share Posted June 7, 2020 Estou tentando criar um chat privado para uma organização do servidor. como faço para mandar essas mensagem para os membro que esta na key Helper no script abaixo fiz ele puxar o cargo do player usando o value, agora como faço para mandar apenas para quem ta no 'key' Helper function chathelper(thePlayer, cmd, ...) local conta = getAccountName (getPlayerAccount(thePlayer)) --if (getAccountData (getPlayerAccount (thePlayer), "Helper") == 4) then local dataLevel = getAccountData (getPlayerAccount (thePlayer), "Helper") if (dataLevel) then -- Se o jogador possui essa data na conta, então: if (dataLevel >= 4) then local message = table.concat ( { ... }, " " ) local name = getPlayerName(thePlayer) outputChatBox("#ffffff[ #20d608Chat Helper - Líder #ffffff]#20d608 "..name..": #FFFFFF"..message, getRootElement(), 255, 255, 255, true) elseif (dataLevel >= 3) then local message = table.concat ( { ... }, " " ) local name = getPlayerName(thePlayer) outputChatBox("#ffffff[ #20d608Chat Helper - Sub-Líder #ffffff]#20d608 "..name..": #FFFFFF"..message, getRootElement(), 255, 255, 255, true) elseif (dataLevel >= 2) then local message = table.concat ( { ... }, " " ) local name = getPlayerName(thePlayer) outputChatBox("#ffffff[ #20d608Chat Helper - Fixo #ffffff]#20d608 "..name..": #FFFFFF"..message, getRootElement(), 255, 255, 255, true) elseif (dataLevel == 1) then local message = table.concat ( { ... }, " " ) local name = getPlayerName(thePlayer) outputChatBox("#ffffff[ #20d608Chat Helper - Temporário #ffffff]#20d608 "..name..": #FFFFFF"..message, getRootElement(), 255, 255, 255, true) end end end addCommandHandler("ch", chathelper) Link to comment
Other Languages Moderators Lord Henry Posted June 8, 2020 Other Languages Moderators Share Posted June 8, 2020 Utilize essa função para obter jogadores que possuem determinada accountData. function getPlayersFromAccountData (data) if (not data) then return false end -- Se não tiver data no parâmetro, retorna false. local dataPlayers = {} -- Inicia uma table vazia. for i, player in ipairs (getElementsByType ("player")) do -- Para cada jogador conectado no servidor, faça: if (getAccountData (getPlayerAccount(player), data)) then -- Se o jogador possui a accountData específica, então: table.insert (dataPlayers, player) -- Adiciona esse jogador na table dataPlayers end end return dataPlayers -- Retorna uma lista de jogadores que possuem a accountData específica. Retornará uma lista vazia se ninguém possuir tal accountData. end E depois no seu script, passe um loop por essa tabela, mandando a mensagem pra cada jogador nela. local helpers = getPlayersFromAccountData ("Helper") if (#helpers > 0) then -- Se existe algum jogador com essa accountData, então: for i, player in ipairs (helpers) do -- Para cada jogador na lista, manda isso no chat dele: outputChatBox ("Mensagem exclusiva para helpers.", player) end end 1 Link to comment
Giovany Mito Posted June 8, 2020 Author Share Posted June 8, 2020 9 hours ago, Lord Henry said: Utilize essa função para obter jogadores que possuem determinada accountData. function getPlayersFromAccountData (data) if (not data) then return false end -- Se não tiver data no parâmetro, retorna false. local dataPlayers = {} -- Inicia uma table vazia. for i, player in ipairs (getElementsByType ("player")) do -- Para cada jogador conectado no servidor, faça: if (getAccountData (getPlayerAccount(player), data)) then -- Se o jogador possui a accountData específica, então: table.insert (dataPlayers, player) -- Adiciona esse jogador na table dataPlayers end end return dataPlayers -- Retorna uma lista de jogadores que possuem a accountData específica. Retornará uma lista vazia se ninguém possuir tal accountData. end E depois no seu script, passe um loop por essa tabela, mandando a mensagem pra cada jogador nela. local helpers = getPlayersFromAccountData ("Helper") if (#helpers > 0) then -- Se existe algum jogador com essa accountData, então: for i, player in ipairs (helpers) do -- Para cada jogador na lista, manda isso no chat dele: outputChatBox ("Mensagem exclusiva para helpers.", player) end end Deu certo muito obrigado consegui adaptar ao meu script Link to comment
Giovany Mito Posted June 8, 2020 Author Share Posted June 8, 2020 (edited) Um problema só ainda. Quando envia uma mensagem no chat, quem não é helper consegue ler a mensagem do chat helper. Teria que no caso por para só conseguir ler quem ta setado acima de helper 1, pq todos player nasce helper 0, como consigo fazer isso ?https://prnt.sc/sw3d2g Edited June 8, 2020 by Giovany Mito Link to comment
Giovany Mito Posted June 8, 2020 Author Share Posted June 8, 2020 function chathelper(thePlayer, cmd, ...) local conta = getAccountName (getPlayerAccount(thePlayer)) --if (getAccountData (getPlayerAccount (thePlayer), "Helper") == 4) then local dataLevel = getAccountData (getPlayerAccount (thePlayer), "Helper") local helpers = getPlayersFromAccountData ("Helper") if (dataLevel) then -- Se o jogador possui essa data na conta, então: if (dataLevel >= 4) then if (#helpers > 0) then -- Se existe algum jogador com essa accountData, então: for i, player in ipairs (helpers) do -- Para cada jogador na lista, manda isso no chat dele: local message = table.concat ( { ... }, " " ) local name = getPlayerName(thePlayer) outputChatBox(" #ffffff** #02d1e8Chat Helper - Líder #ffffff➟#02d1e8 "..name..": #FFFFFF"..message, player, 255, 255, 255, true) end end elseif (dataLevel >= 3) then if (#helpers > 0) then -- Se existe algum jogador com essa accountData, então: for i, player in ipairs (helpers) do -- Para cada jogador na lista, manda isso no chat dele: local message = table.concat ( { ... }, " " ) local name = getPlayerName(thePlayer) outputChatBox(" #ffffff** #02d1e8Chat Helper - Sub-Líder #ffffff➟#02d1e8 "..name..": #FFFFFF"..message, player, 255, 255, 255, true) end end elseif (dataLevel >= 2) then if (#helpers > 0) then -- Se existe algum jogador com essa accountData, então: for i, player in ipairs (helpers) do -- Para cada jogador na lista, manda isso no chat dele: local message = table.concat ( { ... }, " " ) local name = getPlayerName(thePlayer) outputChatBox(" #ffffff** #02d1e8Chat Helper - Fixo #ffffff➟#02d1e8 "..name..": #FFFFFF"..message, player, 255, 255, 255, true) end end elseif (dataLevel == 1) then if (#helpers > 0) then -- Se existe algum jogador com essa accountData, então: for i, player in ipairs (helpers) do -- Para cada jogador na lista, manda isso no chat dele: local message = table.concat ( { ... }, " " ) local name = getPlayerName(thePlayer) outputChatBox(" #ffffff** #02d1e8Chat Helper - Temporário #ffffff➟#02d1e8 "..name..": #FFFFFF"..message, player, 255, 255, 255, true) end end end end end addCommandHandler("h", chathelper) 18 hours ago, Lord Henry said: Utilize essa função para obter jogadores que possuem determinada accountData. function getPlayersFromAccountData (data) if (not data) then return false end -- Se não tiver data no parâmetro, retorna false. local dataPlayers = {} -- Inicia uma table vazia. for i, player in ipairs (getElementsByType ("player")) do -- Para cada jogador conectado no servidor, faça: if (getAccountData (getPlayerAccount(player), data)) then -- Se o jogador possui a accountData específica, então: table.insert (dataPlayers, player) -- Adiciona esse jogador na table dataPlayers end end return dataPlayers -- Retorna uma lista de jogadores que possuem a accountData específica. Retornará uma lista vazia se ninguém possuir tal accountData. end E depois no seu script, passe um loop por essa tabela, mandando a mensagem pra cada jogador nela. local helpers = getPlayersFromAccountData ("Helper") if (#helpers > 0) then -- Se existe algum jogador com essa accountData, então: for i, player in ipairs (helpers) do -- Para cada jogador na lista, manda isso no chat dele: outputChatBox ("Mensagem exclusiva para helpers.", player) end end Link to comment
Other Languages Moderators Lord Henry Posted June 9, 2020 Other Languages Moderators Share Posted June 9, 2020 function getPlayersFromAccountData (data) if (not data) then return false end -- Se não tiver data no parâmetro, retorna false. local dataPlayers = {} -- Inicia uma table vazia. for i, player in ipairs (getElementsByType ("player")) do -- Para cada jogador conectado no servidor, faça: if (getAccountData (getPlayerAccount(player), data) > 0) then -- Se o jogador possui a accountData específica maior que 0, então: table.insert (dataPlayers, player) -- Adiciona esse jogador na table dataPlayers end end return dataPlayers -- Retorna uma lista de jogadores que possuem a accountData específica. Retornará uma lista vazia se ninguém possuir tal accountData. end 1 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