#DeltaSCR Posted February 18, 2019 Posted February 18, 2019 Bom, estou desenvolvendo um código cujo mesmo possui gridList, eu necessito que nesta GridList apareça a lista de Todos os Players logados no Servidor, como eu deveria fazer isso? ----- GRIDLIST ----- playersList = guiCreateGridList (0.26, 0.25, 0.11, 0.57, true) guiGridListAddColumn (playersList, "Jogadores", 0.9) Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
#DaNiLiN Posted February 18, 2019 Posted February 18, 2019 Bom, na wiki mesmo deixa um exemplo... '-' local playerList = guiCreateGridList(0.80, 0.40, 0.15, 0.35, true) guiGridListAddColumn(playerList, "Player", 0.85) for _, player in ipairs(getElementsByType("player")) do guiGridListAddRow(playerList, getPlayerName(player)) end Meu comentário foi útil? Deixe um Thanks
androksi Posted February 18, 2019 Posted February 18, 2019 Se sua definição de "logados" for apenas os jogadores que estiverem registrados e usando uma conta, você pode usar, em um evento onPlayerLogin, a função setElementData e adicionar uma data temporária e, na função de adicionar os jogadores na GridList, basta verificar com getElementData. -- // SERVER-SIDE addEventHandler( "onPlayerLogin", root, function( _, acc ) -- // Assim que o jogador logar, vamos armazenar, dentro da uma data, o valor true setElementData( source, "isPlayerLoggedIn", true ); end ); -- // CLIENT-SIDE local Screen = Vector2( guiGetScreenSize( ) ); local gridList = guiCreateGridList( Screen.x - 300, Screen.y + 250, 280, 180, false ); guiGridListAddColumn( gridList, "Jogadores", 0.85 ); -- // Adicionar apenas os jogadores logados for _, v in pairs( getElementsByType( "player" ) ) do if ( getElementData( v, "isPlayerLoggedIn" ) ) then local row = guiGridListAddRow( gridList ); guiGridListSetItemText( gridList, row, 1, string.gsub( getPlayerName( v ), "#%x%x%x%x%x%x", "" ), false, false ); end end Hello, world. Tutorial sobre interação de BOTs do Discord com o seu servidor - Visitar (Brazilian Portuguese) Tutorial sobre tabelas - Visitar (Brazilian Portuguese) Tutorial sobre banco de dados - Visitar (Brazilian Portuguese)
#DeltaSCR Posted February 18, 2019 Author Posted February 18, 2019 (edited) 4 hours ago, asrzk said: Se sua definição de "logados" for apenas os jogadores que estiverem registrados e usando uma conta, você pode usar, em um evento onPlayerLogin, a função setElementData e adicionar uma data temporária e, na função de adicionar os jogadores na GridList, basta verificar com getElementData. -- // SERVER-SIDE addEventHandler( "onPlayerLogin", root, function( _, acc ) -- // Assim que o jogador logar, vamos armazenar, dentro da uma data, o valor true setElementData( source, "isPlayerLoggedIn", true ); end ); -- // CLIENT-SIDE local Screen = Vector2( guiGetScreenSize( ) ); local gridList = guiCreateGridList( Screen.x - 300, Screen.y + 250, 280, 180, false ); guiGridListAddColumn( gridList, "Jogadores", 0.85 ); -- // Adicionar apenas os jogadores logados for _, v in pairs( getElementsByType( "player" ) ) do if ( getElementData( v, "isPlayerLoggedIn" ) ) then local row = guiGridListAddRow( gridList ); guiGridListSetItemText( gridList, row, 1, string.gsub( getPlayerName( v ), "#%x%x%x%x%x%x", "" ), false, false ); end end Bom, eu estou criando essa GridList junto com um Painel, e já uso guiCreateGridList e guiGetScreenSize fora de função alguma, eu poderia mantê-los fora de qualquer função? Edited February 18, 2019 by danblemes1 Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
androksi Posted February 18, 2019 Posted February 18, 2019 Apenas fiz um exemplo. Você escreve o código do jeito que quiser (claro, dentro dos padrões da programação). Respondendo: Sim, pode deixá-los fora de alguma função. Hello, world. Tutorial sobre interação de BOTs do Discord com o seu servidor - Visitar (Brazilian Portuguese) Tutorial sobre tabelas - Visitar (Brazilian Portuguese) Tutorial sobre banco de dados - Visitar (Brazilian Portuguese)
Moderators Lord Henry Posted February 18, 2019 Moderators Posted February 18, 2019 Também crio meus painéis GUI fora de funções. Não sei se tem diferença entre deixá-los fora ou deixá-los dentro de uma função com onClientResourceStart. Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanks! Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment Discord Oficial do MTA: https://mtasa.com/discord Blacklist e Whitelist de Scripters: Planilha Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.
#DeltaSCR Posted February 18, 2019 Author Posted February 18, 2019 1 minute ago, Lord Henry said: Também crio meus painéis GUI fora de funções. Não sei se tem diferença entre deixá-los fora ou deixá-los dentro de uma função com onClientResourceStart. Não sei se é do meu PC, mas tipo, quando eu tava com a GridList dentro da Função, assim que eu abria o Painel começava a travar tudo Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
androksi Posted February 18, 2019 Posted February 18, 2019 24 minutes ago, danblemes1 said: Não sei se é do meu PC, mas tipo, quando eu tava com a GridList dentro da Função, assim que eu abria o Painel começava a travar tudo Isso definitivamente NÃO é normal. Eu costumo fazer meus painéis em DirectX(DX) e nunca tive problemas com performance. Hello, world. Tutorial sobre interação de BOTs do Discord com o seu servidor - Visitar (Brazilian Portuguese) Tutorial sobre tabelas - Visitar (Brazilian Portuguese) Tutorial sobre banco de dados - Visitar (Brazilian Portuguese)
Moderators Lord Henry Posted February 18, 2019 Moderators Posted February 18, 2019 (edited) 17 minutes ago, asrzk said: Isso definitivamente NÃO é normal. Eu costumo fazer meus painéis em DirectX(DX) e nunca tive problemas com performance. É, mas NÃO TEM COMO fazer um painel DX fora de funções, né? hauahauahua Pois ele depende de uma função render. Edited February 18, 2019 by Lord Henry 1 Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanks! Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment Discord Oficial do MTA: https://mtasa.com/discord Blacklist e Whitelist de Scripters: Planilha Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.
androksi Posted February 19, 2019 Posted February 19, 2019 50 minutes ago, Lord Henry said: É, mas NÃO TEM COMO fazer um painel DX fora de funções, né? hauahauahua Pois ele depende de uma função render. KKKKK. Concordo. É que eu uso minha framework, aí eu meio que fiz todas as funções GUI como DX. dxCreateGridList, dxCreateButton, dxCreateScrollBar, dxCreateWindow, dxWindowSetMovable, dxWindowSetSizable etc. Todas as funções de GUI, porém em DX. Acabei me esquecendo desse detalhe do render. Hello, world. Tutorial sobre interação de BOTs do Discord com o seu servidor - Visitar (Brazilian Portuguese) Tutorial sobre tabelas - Visitar (Brazilian Portuguese) Tutorial sobre banco de dados - Visitar (Brazilian Portuguese)
Moderators Lord Henry Posted February 19, 2019 Moderators Posted February 19, 2019 Manda print por privado de alguns painéis DX que vc fez. Quero ver se vc é bom mesmo. Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanks! Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment Discord Oficial do MTA: https://mtasa.com/discord Blacklist e Whitelist de Scripters: Planilha Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.
#DeltaSCR Posted February 20, 2019 Author Posted February 20, 2019 Bom, eu fiz essa parte do código baseado na WikiMTA, porém o debug está indicando os seguintes erros: Spoiler https://prntscr.com/mnmpty Podem me ajudar dizendo o que eu devo alterar no código a seguir? function createPlayerList () playersList = guiCreateGridList (0.26, 0.25, 0.11, 0.57, true) local column = guiGridListAddColumn (playersList, "Jogadores", 0.9) if (column) then for _, v in ipairs (getElementsByType("player")) do local row = guiGridListAddRow (playerList) guiGridListSetItemText (playerList, row, 1, string.gsub(getPlayerName(v), "#%x%x%x%x%x%x", ""), false, false) end addEventHandler ("onClientGUIClick", playerList, click) end end addEventHandler ("onClientResourceStart", resourceRoot, createPlayerList) function click (button, state, sx, sy, x, y, z, elem, gui) if ((state == "down") and (gui == true) and (source == playerList)) then local playerName = guiGridListGetItemText (playerList, guiGridListGetSelectedItem (playerList), 1) outputChatBox (playerName) end end Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
Moderators Lord Henry Posted February 20, 2019 Moderators Posted February 20, 2019 Você botou playerList quando o certo é playersList Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanks! Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment Discord Oficial do MTA: https://mtasa.com/discord Blacklist e Whitelist de Scripters: Planilha Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.
#DeltaSCR Posted February 20, 2019 Author Posted February 20, 2019 1 hour ago, Lord Henry said: Você botou playerList quando o certo é playersList Ah sim, realmente, mas fora isso está tudo certo? Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
Moderators Lord Henry Posted February 20, 2019 Moderators Posted February 20, 2019 A princípio era só isso. Teste e veja se tem mais algum erro no /debugscript 3 Eu te ajudei ou achou meu comentário útil? Não esqueça de deixar um Thanks! Minhas contribuições para a comunidade: LordHenry - MTA Wiki Profile Inscreva-se no meu canal do YouTube: Lord Henry - Entertainment Discord Oficial do MTA: https://mtasa.com/discord Blacklist e Whitelist de Scripters: Planilha Por favor, não me envie mensagens privadas solicitando suporte. Crie um tópico no fórum em vez disso.
DNL291 Posted February 20, 2019 Posted February 20, 2019 (edited) Coloque false depois de 'click' na linha 9. Na função click, você está usando o parâmetro state e verificando se o clique está 'segurado'. Mas na verdade esse parâmetro só funciona para o state "up" (botão solto), tornando essa verificação desnecessária. Também, a verificação (source == playerList) será desnecessária já que source sempre será a gridList, e por fim, gui deve estar definido no seu código, caso contrário a verificação será sempre invalidada. Sobre o clique nas rows, o código funcionará assim: local sr = guiGridListGetSelectedItem (source) -- obtendo a row selecionada if sr and sr ~= -1 then -- verificando se o clique foi na row local playerName = guiGridListGetItemText ( source, sr, 1 ) -- obtendo o valor da row selecionada outputChatBox ( playerName ) else -- o clique foi fora de qualquer 'row' outputChatBox ( "Nenhuma row selecionada" ) end Edited February 20, 2019 by DNL291 1 Please do not PM me with scripting related question nor support, use the forums instead.
#DeltaSCR Posted February 21, 2019 Author Posted February 21, 2019 11 hours ago, DNL291 said: Coloque false depois de 'click' na linha 9. Na função click, você está usando o parâmetro state e verificando se o clique está 'segurado'. Mas na verdade esse parâmetro só funciona para o state "up" (botão solto), tornando essa verificação desnecessária. Também, a verificação (source == playerList) será desnecessária já que source sempre será a gridList, e por fim, gui deve estar definido no seu código, caso contrário a verificação será sempre invalidada. Sobre o clique nas rows, o código funcionará assim: local sr = guiGridListGetSelectedItem (source) -- obtendo a row selecionada if sr and sr ~= -1 then -- verificando se o clique foi na row local playerName = guiGridListGetItemText ( source, sr, 1 ) -- obtendo o valor da row selecionada outputChatBox ( playerName ) else -- o clique foi fora de qualquer 'row' outputChatBox ( "Nenhuma row selecionada" ) end Então na parte dos parametros de função ficaria assim?: function click (button, sx, sy, x, y, z, elem) Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
#DeltaSCR Posted February 21, 2019 Author Posted February 21, 2019 Permaneço com uma duvida, no caso eu pretendo fazer uma verificação com o player selecionado, na verificação, qual seria o elemento? Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
DNL291 Posted February 21, 2019 Posted February 21, 2019 (edited) 9 hours ago, danblemes1 said: Então na parte dos parametros de função ficaria assim?: function click (button, sx, sy, x, y, z, elem) Não pois os parâmetros desse evento não são esses. Os parâmetros são: function click (button, state, absoluteX, absoluteY) Sendo que desses parâmetros você só vai precisar usar o primeiro ( button ) : if button == "left" then 8 minutes ago, danblemes1 said: Permaneço com uma duvida, no caso eu pretendo fazer uma verificação com o player selecionado, na verificação, qual seria o elemento? Qual tipo de verificação você quer fazer? Edit: se for obter o jogador, getPlayerFromName não vai funcionar se o nick teve seu código hex removido. Edited February 21, 2019 by DNL291 Please do not PM me with scripting related question nor support, use the forums instead.
#DeltaSCR Posted February 21, 2019 Author Posted February 21, 2019 1 minute ago, DNL291 said: Não pois os parâmetros desse evento não são esses. Os parâmetros são: function click (button, state, absoluteX, absoluteY) Sendo que desses parâmetros você só vai precisar usar o primeiro ( button ) : if button == "left" then Qual tipo de verificação você quer fazer? 1 - Onde e como eu encaixaria "button"? 2 - Pretendo verificar armas e Data Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
DNL291 Posted February 21, 2019 Posted February 21, 2019 1 - dentro do evento onClientGUIClick 2 - Como você removeu os códigos em hex. dos nicks na gridList, você vai precisar obter o jogador assim, por exemplo: function _getPlayerFromName( name ) if not (name) then return false end -- for i,p in pairs(getElementsByType("player")) do if getPlayerName(p):gsub("#%x%x%x%x%x%x", "") == name then return p end end return false end Feito isso só substituir o uso da função getPlayerFromName por essa. Para verificar element-data você vai usar o jogador obtido com a função acima, e para as armas faça um loop com a função getPedWeapon verificando o slot do jogador com os slots de 0 a 12. 1 Please do not PM me with scripting related question nor support, use the forums instead.
#DeltaSCR Posted February 21, 2019 Author Posted February 21, 2019 5 minutes ago, DNL291 said: 1 - dentro do evento onClientGUIClick 2 - Como você removeu os códigos em hex. dos nicks na gridList, você vai precisar obter o jogador assim, por exemplo: function _getPlayerFromName( name ) if not (name) then return false end -- for i,p in pairs(getElementsByType("player")) do if getPlayerName(p):gsub("#%x%x%x%x%x%x", "") == name then return p end end return false end Feito isso só substituir o uso da função getPlayerFromName por essa. Para verificar element-data você vai usar o jogador obtido com a função acima, e para as armas faça um loop com a função getPedWeapon verificando o slot do jogador com os slots de 0 a 12. Mas "guiGridListGetText" não seria pra obter o Jogador selecionado? Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
DNL291 Posted February 21, 2019 Posted February 21, 2019 4 minutes ago, danblemes1 said: Mas "guiGridListGetText" não seria pra obter o Jogador selecionado? Retorna a string ou texto da row selecionada. Please do not PM me with scripting related question nor support, use the forums instead.
#DeltaSCR Posted February 21, 2019 Author Posted February 21, 2019 2 minutes ago, DNL291 said: Retorna a string ou texto da row selecionada. Então eu teria que fazer desta forma?:pl playerName = guiGridListGetItemText ( source, sr, 1) thePlayer = _getPlayerFromName (playerName) Minha resposta te ajudou? Por favor, não esqueça de avaliar - #DeltaSCR Minha página no Facebook: Delta Scripting - MTA "Viribus et honor"
DNL291 Posted February 21, 2019 Posted February 21, 2019 Exatamente. Please do not PM me with scripting related question nor support, use the forums instead.
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