#DaNiLiN Posted September 26, 2018 Share Posted September 26, 2018 Olá neste código tentei privar um botão apenas para uma acl só que não deu certo, o botão não desabilita. -- Server-Side function Aclpainel(thePlayer) accountname = getAccountName(getPlayerAccount(thePlayer)) if isObjectInACLGroup("user." .. accountname, aclGetGroup("Consolee") or aclGetGroup("SCMD-PMERJ")) then --> Gruop que vai poder abrir o painel ! triggerClientEvent(thePlayer,"teste",thePlayer) end end -- Client-Side function Gerenciamento (on_off) guiSetEnabled (button, on_off) end addEvent("teste", true) addEventHandler("teste", root, Gerenciamento) button = guiCreateButton(136, 192, 20, 39, "", false) Help Link to comment
main Posted September 26, 2018 Share Posted September 26, 2018 -- Client-Side button = guiCreateButton(136, 192, 20, 39, "", false) function fToggleButtonEnabled(bool) guiSetEnabled(button, bool) end addEvent("toggleButtonEnabled", true) addEventHandler("toggleButtonEnabled", resourceRoot, fToggleButtonEnabled) -- Server-Side function aclPanel(thePlayer) local accName = getAccountName(getPlayerAccount(thePlayer)) if isObjectInACLGroup("user." .. accName, aclGetGroup("Console") or aclGetGroup("SCMD-PMERJ")) then triggerClientEvent(thePlayer, "toggleButtonEnabled", resourceRoot, true) -- botao ativado else triggerClientEvent(thePlayer, "toggleButtonEnabled", resourceRoot, false) -- botao desativado end end 1 Link to comment
Other Languages Moderators Lord Henry Posted September 27, 2018 Other Languages Moderators Share Posted September 27, 2018 Algo parece errado. Não existe nada ativando a função server-side. Desse modo, thePlayer não existe. @danilin você esqueceu de passar o valor de on_off pelo seu triggerClientEvent. 1 Link to comment
#DaNiLiN Posted September 27, 2018 Author Share Posted September 27, 2018 do modo que o MainSCR Montou não deu certo. acabei só copiando e colando, mais o código que ele monto parecia está funcional :\ Link to comment
main Posted September 27, 2018 Share Posted September 27, 2018 3 hours ago, danilin said: do modo que o MainSCR Montou não deu certo. acabei só copiando e colando, mais o código que ele monto parecia está funcional Você precisa mostrar o resto do código para podermos verificar se não tem algo errado... Link to comment
#DaNiLiN Posted September 28, 2018 Author Share Posted September 28, 2018 não tem erro no código, o botão só não habilita/desabilita, Lord arrumei os erros também não foi, tentei também. -- Server Side function aclPanel(thePlayer) local accName = getAccountName(getPlayerAccount(thePlayer)) if isObjectInACLGroup("user." .. accName, aclGetGroup("Console") or aclGetGroup("SCMD-PMERJ")) then triggerClientEvent(thePlayer, "teste", root, false) -- botao ativado else triggerClientEvent(thePlayer, "teste", root, true) -- botao desativado end end end -- Client Side button = guiCreateButton(136, 192, 20, 39, "", false) guiSetVisible(button, false) function open () if (guiGetVisible(button) == false) then guiSetVisible(button, true) else guiSetVisible(button, false) end end addCommandHandler("a", open) function Gerenciamento (on_off) if (guiGetEnabled (button) == false) then guiSetEnabled(button, true) else guiSetEnabled(button, false) end end addEvent("teste", true) addEventHandler("teste", root, Gerenciamento) que também não funfo Link to comment
Other Languages Moderators androksi Posted September 28, 2018 Other Languages Moderators Share Posted September 28, 2018 (edited) -- Client-side local SCREEN = { guiGetScreenSize ( ) } local WIDTH = 180 local HEIGHT = 25 addEventHandler( "onClientResourceStart", resourceRoot, function ( ) theButton = guiCreateButton ( SCREEN[1] - ( WIDTH + 5 ), SCREEN[2] / 2 - HEIGHT / 2, WIDTH, HEIGHT, "Teste", false ) guiSetVisible ( theButton, false ) end ) addCommandHandler( "open", function ( ) local isVisible = guiGetVisible ( theButton ) guiSetVisible ( theButton, not isVisible ) triggerServerEvent( "checkACL", localPlayer ) end ) addEvent( "toggleButton", true ) addEventHandler( "toggleButton", root, function ( string ) local bool = string == "enableButton" and true or false guiSetEnabled ( theButton, bool ) end ) -- Server-side addEvent( "checkACL", true ) addEventHandler( "checkACL", root, function ( ) local account = getPlayerAccount ( source ) if isGuestAccount ( account ) then return false end local accountName = getAccountName ( account ) if isObjectInACLGroup ( "user." .. accountName, aclGetGroup( "Console" ) ) then triggerClientEvent ( source, "toggleButton", source, "enableButton" ) else triggerClientEvent ( source, "toggleButton", source, "disableButton" ) end end ) Edited September 28, 2018 by asrzk 1 Link to comment
Other Languages Moderators Lord Henry Posted September 28, 2018 Other Languages Moderators Share Posted September 28, 2018 (edited) 2 hours ago, danilin said: não tem erro no código, o botão só não habilita/desabilita, Lord arrumei os erros também não foi, tentei também. -- Server Side function aclPanel(thePlayer) local accName = getAccountName(getPlayerAccount(thePlayer)) if isObjectInACLGroup("user." .. accName, aclGetGroup("Console") or aclGetGroup("SCMD-PMERJ")) then triggerClientEvent(thePlayer, "teste", root, false) -- botao ativado else triggerClientEvent(thePlayer, "teste", root, true) -- botao desativado end end end -- ERRO, 'end' sem escopo em aberto. Nunca use root como terceiro parâmetro de um triggerClientEvent, assim como avisa a Wiki. Você deveria ler a Wiki para saber como essa função funciona. Note: To save client CPU, you should avoid setting sourceElement to the root element where possible. Using resourceRoot is usually sufficient if the event is handled by the same resource on the client. Nota: Para economizar o uso da CPU do cliente, você deve evitar de colocar o parâmetro sourceElement como root onde for possível. Usar resourceRoot é geralmente suficiente se o evento é ativado pelo mesmo resource no cliente. Essa função funciona assim: -- theClient = O cliente (jogador) onde a função será ativada. -- "teste" = Nome do evento que será executado no client. Precisa estar obrigatoriamente entre aspas. -- sourceElement = O elemento ativador dessa função, que será o source no client. Geralmente é o mesmo que theClient, mas também pode ser um veículo, etc. -- parametro1 = o valor do primeiro parâmetro da função no client. Pode ser qualquer valor exceto outra função. triggerClientEvent (theClient, "teste", sourceElement, parametro1) CLIENT function qualquerCoisa (argumento1) -- argumento1 é o valor que foi passado no 'parametro1' do triggerClientEvent outputChatBox ("Evento 'teste' ativado no client com argumento: "..tostring(argumento1)) end addEvent ("teste", true) -- Cria o evento "teste" e permite que ele seja transmitido para os outros scripts. addEventHandler ("teste", getRootElement(), qualquerCoisa) -- Ao chamar o evento "teste", executa a função qualquerCoisa. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Exemplo: Server-side: function verificaACL (thePlayer) local accountName = getAccountName (getPlayerAccount (thePlayer)) if isObjectInACLGroup ("user."..accountName, aclGetGroup("Console")) or isObjectInACLGroup ("user."..accountName, aclGetGroup("SCMD-PMERJ")) then outputChatBox ("Botão liberado.", thePlayer) triggerClientEvent (thePlayer, "teste", thePlayer, true) else outputChatBox ("Botão bloqueado.", thePlayer) triggerClientEvent (thePlayer, "teste", thePlayer, false) end end addCommandHandler ("a", verificaACL) Client-side: x, y = guiGetScreenSize () botao = guiCreateButton (x/2 - 50, y/2 - 15, 100, 30, "TESTE", false) guiSetVisible (botao, false) function mostrarBotao (state) outputChatBox ("Evento 'teste' ativado no client com argumento: "..tostring(state)) guiSetVisible (botao, true) guiSetEnabled (botao, state) end addEvent ("teste", true) addEventHandler ("teste", getRootElement(), mostrarBotao) OBS: Use o comando /a para fazer o botão aparecer na tela. Edited September 28, 2018 by Lord Henry 1 1 Link to comment
Jonas^ Posted September 28, 2018 Share Posted September 28, 2018 18 minutes ago, Lord Henry said: Nunca use root como terceiro parâmetro de um triggerClientEvent, assim como avisa a Wiki. Você deveria ler a Wiki para saber como essa função funciona. Note: To save client CPU, you should avoid setting sourceElement to the root element where possible. Using resourceRoot is usually sufficient if the event is handled by the same resource on the client. Nota: Para economizar o uso da CPU do cliente, você deve evitar de colocar o parâmetro sourceElement como root onde for possível. Usar resourceRoot é geralmente suficiente se o evento é ativado pelo mesmo resource no cliente. Essa função funciona assim: SERVER -- theClient = O cliente (jogador) onde a função será ativada. -- "teste" = Nome do evento que será executado no client. Precisa estar obrigatoriamente entre aspas. -- sourceElement = O elemento ativador dessa função, que será o source no client. Geralmente é o mesmo que theClient, mas também pode ser um veículo, etc. -- parametro1 = o valor do primeiro parâmetro da função no client. Pode ser qualquer valor exceto outra função. triggerClientEvent (theClient, "teste", sourceElement, parametro1) CLIENT function qualquerCoisa (argumento1) -- argumento1 é o valor que foi passado no 'parametro1' do triggerClientEvent outputChatBox ("Evento 'teste' ativado no client com argumento: "..tostring(argumento1)) end addEvent ("teste", true) -- Cria o evento "teste" e permite que ele seja transmitido para os outros scripts. addEventHandler ("teste", getRootElement(), qualquerCoisa) -- Ao chamar o evento "teste", executa a função qualquerCoisa. Server-side: function verificaACL (thePlayer) local accountName = getAccountName (getPlayerAccount (thePlayer)) if isObjectInACLGroup ("user."..accountName, aclGetGroup("Console")) or isObjectInACLGroup ("user."..accountName, aclGetGroup("SCMD-PMERJ")) then outputChatBox ("Botão liberado.", thePlayer) triggerClientEvent (thePlayer, "teste", thePlayer, true) else outputChatBox ("Botão bloqueado.", thePlayer) triggerClientEvent (thePlayer, "teste", thePlayer, false) end end addCommandHandler ("a", verificaACL) Client-side: x, y = guiGetScreenSize () botao = guiCreateButton (x/2 - 50, y/2 - 15, 100, 30, "TESTE", false) guiSetElementVisible (botao, false) function mostrarBotao (state) outputChatBox ("Evento 'teste' ativado no client com argumento: "..tostring(argumento1)) guiSetVisible (botao, true) guiSetEnabled (botao, state) end addEvent ("teste", true) addEventHandler ("teste", getRootElement(), mostrarBotao) OBS: Use o comando /a para fazer o botão aparecer na tela. Vou dar gostei pra agradecer a ajuda do lord pois o Danilin costuma não ser agradecido pelas ajudas que recebe.. 1 Link to comment
#DaNiLiN Posted September 30, 2018 Author Share Posted September 30, 2018 obrigado lord. 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