MRXBBC Posted August 3, 2021 Share Posted August 3, 2021 Alguém sabe como faço para mostrar o numero de staffs online por Acl. não o nome e sim quantos function MRX(localPlayer) if (not isPlayerMapVisible()) then local money = convertNumber(getPlayerMoney(getLocalPlayer())) local Emprego = getElementData(getLocalPlayer(), "Emprego") or "Desempregado" local fome = getElementData(getLocalPlayer(), "hunger") local sede = getElementData(getLocalPlayer(), "sede") local vida = math.floor(getElementHealth(getLocalPlayer())) local colete = math.floor(getPedArmor(getLocalPlayer())) local players = getElementsByType( "player" ) dxDrawImage(x*700, y*300, x*555, y*460, "img/0.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*720, y*362, x*30, y*30, "img/user.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end end Link to comment
Blaack Posted August 3, 2021 Share Posted August 3, 2021 (edited) On 03/08/2021 at 10:36, MRXBBC said: Alguém sabe como faço para mostrar o numero de staffs online por Acl. não o nome e sim quantos function MRX(localPlayer) if (not isPlayerMapVisible()) then local money = convertNumber(getPlayerMoney(getLocalPlayer())) local Emprego = getElementData(getLocalPlayer(), "Emprego") or "Desempregado" local fome = getElementData(getLocalPlayer(), "hunger") local sede = getElementData(getLocalPlayer(), "sede") local vida = math.floor(getElementHealth(getLocalPlayer())) local colete = math.floor(getPedArmor(getLocalPlayer())) local players = getElementsByType( "player" ) dxDrawImage(x*700, y*300, x*555, y*460, "img/0.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*720, y*362, x*30, y*30, "img/user.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end end Rapaz, boa tarde. A função de verificar acl, só funciona em resource server-side... então não há como fazer essa verificação diretamente no client, a não ser que um staff seu esteja setado em algum tipo de data (elementData), ou que você envia a quantia via trigger quando for abrir o painel. Edited August 4, 2021 by Lord Henry server-side* Link to comment
MRXBBC Posted August 3, 2021 Author Share Posted August 3, 2021 3 minutes ago, Blaack said: Rapaz, boa tarde. A função de verificar acl, só funciona em resource script-side... então não há como fazer essa verificação diretamente no client, a não ser que um staff seu esteja setado em algum tipo de data (elementData), ou que você envia a quantia via trigger quando for abrir o painel. estava vendo isso, já tive uma ideia aqui, se eu conseguir eu posto aqui de novo Link to comment
Blaack Posted August 3, 2021 Share Posted August 3, 2021 2 minutes ago, MRXBBC said: estava vendo isso, já tive uma ideia aqui, se eu conseguir eu posto aqui de novo Caso não consiga, me chame por aqui ou por pm que te ajudo Link to comment
MRXBBC Posted August 3, 2021 Author Share Posted August 3, 2021 9 minutes ago, Blaack said: Caso não consiga, me chame por aqui ou por pm que te ajudo eu tava pensando em fazer um if se o player for pertencente a acl ele adiciona mais um a uma variavel function checkAccess(thePlayer) if isPlayerInACL(thePlayer, "Console") then p = p+1 end end Link to comment
Blaack Posted August 3, 2021 Share Posted August 3, 2021 8 minutes ago, MRXBBC said: eu tava pensando em fazer um if se o player for pertencente a acl ele adiciona mais um a uma variavel function checkAccess(thePlayer) if isPlayerInACL(thePlayer, "Console") then p = p+1 end end Me mande a funcao que aciona o painel (para abrir o dx) Link to comment
MRXBBC Posted August 3, 2021 Author Share Posted August 3, 2021 1 minute ago, Blaack said: Me mande a funcao que aciona o painel (para abrir o dx) local screenW,screenH = guiGetScreenSize() local resW, resH = 1920,1080 local x, y = (screenW/resW), (screenH/resH) local font = dxCreateFont("font/font.ttf", 10) local ping = getPlayerPing(getLocalPlayer()) local bind = "F2" function MRX(localPlayer) if (not isPlayerMapVisible()) then local PlayerLoc = (localPlayer) local money = convertNumber(getPlayerMoney(getLocalPlayer())) local Emprego = getElementData(getLocalPlayer(), "Emprego") or "Desempregado" local fome = getElementData(getLocalPlayer(), "hunger") or 100 local ID = getElementData(getLocalPlayer(), "ID") or "N/A" local sede = getElementData(getLocalPlayer(), "sede") or 100 local vida = math.floor(getElementHealth(getLocalPlayer())) local colete = math.floor(getPedArmor(getLocalPlayer())) local Nome = getPlayerName(getLocalPlayer()) local players = getElementsByType( "player" ) dxDrawImage(x*700, y*300, x*555, y*460, "img/0.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*720, y*361, x*30, y*30, "img/user.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*720, y*402, x*30, y*30, "img/emp.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*865, y*402, x*30, y*30, "img/level.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*720, y*443, x*30, y*30, "img/mala.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawText(Nome, x*755, y*408, x*578, y*344, tocolor(255, 255, 255, 255), 1.00, font, "left", "center", false, false, false, false, false) dxDrawText(ID, x*755, y*495, x*578, y*344, tocolor(255, 255, 255, 255), 1.00, font, "left", "center", false, false, false, false, false) dxDrawText(ping, x*900, y*495, x*578, y*344, tocolor(255, 255, 255, 255), 1.00, font, "left", "center", false, false, false, false, false) dxDrawText(Emprego, x*780, y*576, x*578, y*344, tocolor(255, 255, 255, 255), 1.00, font, "left", "center", false, false, false, false, false) dxDrawImage(x*730, y*520, x*50, y*200, "img/rec.png", 0, 0, 0, tocolor(105, 105, 105, 255), false) dxDrawImage(x*790, y*520, x*50, y*200, "img/rec.png", 0, 0, 0, tocolor(105, 105, 105, 255), false) dxDrawImage(x*850, y*520, x*50, y*200, "img/rec.png", 0, 0, 0, tocolor(105, 105, 105, 255), false) dxDrawImage(x*910, y*520, x*50, y*200, "img/rec.png", 0, 0, 0, tocolor(105, 105, 105, 255), false) dxDrawImage(x*730, y*720, x*50, y*200/-100*vida, "img/rec.png", 0, 0, 0, tocolor(168, 54, 54, 255), false) dxDrawImage(x*790, y*720, x*50, y*200/-100*colete, "img/rec.png", 0, 0, 0, tocolor(199,21,133, 255), false) dxDrawImage(x*850, y*720, x*50, y*200/-100*fome, "img/rec.png", 0, 0, 0, tocolor(187, 93, 65, 255), false) dxDrawImage(x*910, y*720, x*50, y*200/-100*sede, "img/rec.png", 0, 0, 0, tocolor(65, 141, 158, 255), false) dxDrawImage(x*740, y*690, x*25, y*25, "img/hp.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*802, y*690, x*25, y*25, "img/shield.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*862, y*690, x*25, y*25, "img/fome.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) dxDrawImage(x*922, y*690, x*25, y*25, "img/gota.png", 0, 0, 0, tocolor(255, 255, 255, 255), false) end end bindKey (bind, "both", function() if isDXVisible then removeEventHandler( "onClientRender", root, MRX ) else addEventHandler( "onClientRender", root, MRX ) end isDXVisible = not isDXVisible end) function convertNumber ( number ) local formatted = number while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1.%2') if ( k==0 ) then break end end return formatted end Link to comment
MRXBBC Posted August 3, 2021 Author Share Posted August 3, 2021 1 hour ago, Blaack said: Me mande a funcao que aciona o painel (para abrir o dx) addEventHandler ( 'onPlayerLogin', getRootElement ( ), function(source) local conta = getAccountName(getPlayerAccount(source)) if isObjectInACLGroup ("user."..conta, aclGetGroup ( "Admin") ) then local Nome = getPlayerName(source) local Pontstaff = getElementData(root, "Expediente_Staff1") or 0 setElementData(source, "Expediente_Staff1", "Sim") setElementData(root, "Qtd_Admin", Pontstaff + 1) elseif isObjectInACLGroup ("user."..conta, aclGetGroup ( "Policia") ) then local PontPM = getElementData(root, "Expediente_Policia1") or 0 setElementData(source, "Expediente_Policia1", "Sim") setElementData(root, "Qtd_Policia", PontPM + 1) elseif isObjectInACLGroup ("user."..conta, aclGetGroup ( "Samu") ) then local PontSoco = getElementData(root, "Expediente_Socorrista1") or 0 setElementData(source, "Expediente_Socorrista", "Sim") setElementData(root, "Qtd_Socorrista", PontSoco + 1) elseif isObjectInACLGroup ("user."..conta, aclGetGroup ( "Gang") ) then local PontGang = getElementData(root, "Expediente_Gang1") or 0 setElementData(source, "Expediente_Gang1", "Sim") setElementData(root, "Qtd_Gang", PontGang + 1) elseif isObjectInACLGroup ("user."..conta, aclGetGroup ( "Mecanico") ) then local PontMecanico = getElementData(root, "Expediente_Mecanico") or 0 setElementData(source, "Expediente_Mecanico1", "Sim") setElementData(root, "Qtd_Mecanico", PontMecanico + 1) end end ) function loggedOut(source) local conta = getAccountName(getPlayerAccount(source)) if isObjectInACLGroup ("user."..conta, aclGetGroup ( "Admin") ) then local Nome = getPlayerName(source) local Pontstaff = getElementData(root, "Expediente_Staff1") or 0 setElementData(source, "Expediente_Staff1", "Não") setElementData(root, "Qtd_Admin", Pontstaff - 1) elseif isObjectInACLGroup ("user."..conta, aclGetGroup ( "Policia") ) then local PontPM = getElementData(root, "Expediente_Policia1") or 0 setElementData(source, "Expediente_Policia1", "Não") setElementData(root, "Qtd_Policia", PontPM - 1) elseif isObjectInACLGroup ("user."..conta, aclGetGroup ( "Samu") ) then local PontSoco = getElementData(root, "Expediente_Socorrista1") or 0 setElementData(source, "Expediente_Socorrista", "Não") setElementData(root, "Qtd_Socorrista", PontSoco - 1) elseif isObjectInACLGroup ("user."..conta, aclGetGroup ( "Gang") ) then local PontGang = getElementData(root, "Expediente_Gang1") or 0 setElementData(source, "Expediente_Gang1", "Não") setElementData(root, "Qtd_Gang", PontGang - 1) elseif isObjectInACLGroup ("user."..conta, aclGetGroup ( "Mecanico") ) then local PontMecanico = getElementData(root, "Expediente_Mecanico") or 0 setElementData(source, "Expediente_Mecanico1", "Não") setElementData(root, "Qtd_Mecanico", PontMecanico - 1) end end addEventHandler("onPlayerLogout",getRootElement(),loggedOut) fiz desse jeito so que ta dando uns erros Link to comment
Keven Campos Posted August 6, 2021 Share Posted August 6, 2021 poderia criar uma Tabela para armazenar os valores, Exemplo: -- Lado servidor staffOnline = {} -- Uma tabela vazia, poderia ser qualquer nome --[[ QUANDO O JOGADOR ENTRAR ]] addEventHandler("onPlayerLogin", root, function() local conta = getAccountName ( getPlayerAccount ( source ) ) -- Pega if isObjectInACLGroup ("user."..tostring(conta), aclGetGroup ( "Staff" ) ) then -- Se o jogador estiver no Grupo staff table.insert(staffOnline, 1) -- Aqui adiciona um item na tabela, aumentando o tamanho dela toda vez que alguem do Grupo Staff entre end ) --[[ QUANDO O JOGADOR DESCONECTAR ]] function JogadorQuit ( quitType ) local conta = getAccountName ( getPlayerAccount ( source ) ) -- Pega if isObjectInACLGroup ("user."..tostring(conta), aclGetGroup ( "Staff" ) ) then -- Se o jogador estiver no Grupo staff table.remove(staffOnline) -- Remove o "usuario" da tabela end end addEventHandler ( "onPlayerQuit", getRootElement ( ), JogadorQuit ) Se usado "#staffOnline" Você consegue obter o tamanho desta tabela. realmente não sei se funcionaria, mais talvez seja algo que vale apena pensar Não testei o codigo acima Link to comment
Blaack Posted August 6, 2021 Share Posted August 6, 2021 2 hours ago, Keven Campos said: poderia criar uma Tabela para armazenar os valores, Exemplo: -- Lado servidor staffOnline = {} -- Uma tabela vazia, poderia ser qualquer nome --[[ QUANDO O JOGADOR ENTRAR ]] addEventHandler("onPlayerLogin", root, function() local conta = getAccountName ( getPlayerAccount ( source ) ) -- Pega if isObjectInACLGroup ("user."..tostring(conta), aclGetGroup ( "Staff" ) ) then -- Se o jogador estiver no Grupo staff table.insert(staffOnline, 1) -- Aqui adiciona um item na tabela, aumentando o tamanho dela toda vez que alguem do Grupo Staff entre end ) --[[ QUANDO O JOGADOR DESCONECTAR ]] function JogadorQuit ( quitType ) local conta = getAccountName ( getPlayerAccount ( source ) ) -- Pega if isObjectInACLGroup ("user."..tostring(conta), aclGetGroup ( "Staff" ) ) then -- Se o jogador estiver no Grupo staff table.remove(staffOnline) -- Remove o "usuario" da tabela end end addEventHandler ( "onPlayerQuit", getRootElement ( ), JogadorQuit ) Se usado "#staffOnline" Você consegue obter o tamanho desta tabela. realmente não sei se funcionaria, mais talvez seja algo que vale apena pensar Não testei o codigo acima Pensando desta maneira, e se o staff fosse removido do grupo? ele tem que transferir o bindKey pro lado server e quando acionado la. Mandar por trigger a quantia Link to comment
Keven Campos Posted August 7, 2021 Share Posted August 7, 2021 19 hours ago, Blaack said: Pensando desta maneira, e se o staff fosse removido do grupo? ele tem que transferir o bindKey pro lado server e quando acionado la. Mandar por trigger a quantia Realmente, nesta situação acho que não seria possível um sistema eficiente com os métodos que eu coloquei como exemplo Link to comment
KronoS Lettify Posted August 14, 2021 Share Posted August 14, 2021 Esse sistema só vai ser funcional com uma boa usabilidade e performance se não usar Grupos da ACL, mas sim outros meios de determinar um grupo ao jogador. Seja um sistema de grupo personalizado, ou o do próprio MTA. Link to comment
Other Languages Moderators Lord Henry Posted August 17, 2021 Other Languages Moderators Share Posted August 17, 2021 (edited) Um jeito mais fácil e otimizado é você apenas contar quantos jogadores tem permissão de mutar players. Você usa a função hasObjectPermissionTo. Edited August 17, 2021 by Lord Henry Enviado via mobile. Link to comment
Jonas^ Posted August 20, 2021 Share Posted August 20, 2021 Talvez seja melhor fazer desta forma: addCommandHandler ("staffs", function (player, cmd) local admins = getOnlinePlayersFromGroup ("Admin") local superMods = getOnlinePlayersFromGroup ("SuperModerator") if admins == "" then outputChatBox ("Nenhum administrador online no momento!", player, 255, 0, 0) else outputChatBox ("Admins: #FFFFFF"..tostring(admins), player, 255, 0, 0, true) end if superMods == "" then outputChatBox ("Nenhum SuperModerador online no momento!", player, 255, 0, 0) else outputChatBox ("SuperModeradores: #FFFFFF"..tostring(superMods), player, 51, 170, 255, true) end end) function getOnlinePlayersFromGroup (group) local t = {} local players = "" for k, v in ipairs (getElementsByType("player")) do local acc = getPlayerAccount(v) if acc and not isGuestAccount(acc) then local accName = getAccountName(acc) if group and aclGetGroup(tostring(group)) then local g = aclGetGroup(tostring(group)) local isAdmin = isObjectInACLGroup ("user."..accName, g) if isAdmin then if players ~= "" then players = players..", " end; players = players..getPlayerName(v):gsub("#%x%x%x%x%x%x", "") end end end end return players 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