Lord Henry

Members
  • Content count

    799
  • Joined

  • Last visited

  • Days Won

    11

Lord Henry last won the day on August 10

Lord Henry had the most liked content!

Community Reputation

229 Celebrity

About Lord Henry

  • Rank
    Homie
  • Birthday 16/01/1996

Details

  • Gang
    Grove Street
  • Location
    Brazil
  • Occupation
    Gamer,Game Designer,Level Designer,Developer
  • Interests
    Game Design, Script Development

Recent Profile Visitors

2,545 profile views
  1. Recomendo que não faça painéis DX com objetivo interativo, pois eles são mais pesados e mais complexos de se fazer manutenção. Mas caso você não esteja preocupado com desempenho e queira apenas um painel bonito, siga em frente. Delete toda essa parte: local x, y = guiGetScreenSize () buttonPro = guiCreateButton (screenW * 0.5571, screenH * 0.6602, 200, 49, "Proteção", false) -- Botão de exemplo. addEventHandler ("onClientGUIClick", buttonPro, function () -- Executa essa função ao clicar no buttonPro. if not getElementData (localPlayer, "protegido") then -- Se o jogador não está protegido, então: setElementData (localPlayer, "protegido", true) -- Torna o jogador protegido. outputChatBox ("Você está protegido.", 0, 255, 0) else -- Se o jogador está protegido, então: setElementData (localPlayer, "protegido", false) -- Torna o jogador desprotegido. outputChatBox ("Você está desprotegido.", 255, 0, 0) end end, false) E coloque isso: function Pro (button, state, absoluteX, absoluteY) if Painel == true then if state == "down" then if absoluteX >= (screenW * 0.5586) and absoluteX <= ((screenW * 0.5586) + 200) and absoluteY >= (screenH * 0.5716) and absoluteY <= ((screenH * 0.5716) + 49) then if not getElementData (localPlayer, "protegido") then setElementData (localPlayer, "protegido", true) outputChatBox ("Você está protegido.", 0, 255, 0) else setElementData (localPlayer, "protegido", false) outputChatBox ("Você está desprotegido.", 255, 0, 0) end end end end end addEventHandler ("onClientClick", root, Pro)
  2. Ajuda?? Painel B por ACL

    Leia isso e boa sorte: https://wiki.multitheftauto.com/wiki/PT-BR/Introdução_ao_Scripting
  3. Anti-Bind

    Bom, nunca fiz bloqueio de teclas então passei metade do dia aprendendo a fazer isso. Consegui fazer ele detectar as teclas que possuem bind de texto e bloquear seu uso caso o jogador não tenha permissão. Você me pediu por privado para fazer via ACL Group, então fiz o bloqueio usando a ACL Group Console como exemplo. Se o jogador não estiver na ACL Group Console, o script bloqueará qualquer bind de texto dele. A parte do bloqueio de binds é feita client-side e a parte de verificar ACL Group é server-side. Server: addEventHandler ("onResourceStart", getResourceRootElement(getThisResource()), function () -- Executa essa função ao iniciar este resource. local everybody = getElementsByType ("player") -- everybody é uma lista com todos os players conectados no servidor, incluindo os deslogados. for i, thePlayer in ipairs (everybody) do -- Para cada jogador que já está no servidor, faça: if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("Console")) then -- Se este jogador está na ACL Group Console, então: setElementData (thePlayer, "bindPermission", true) -- Permite que este player use teclas com binds de texto. else -- Se ele não está na ACL Group Console, então: setElementData (thePlayer, "bindPermission", false) -- Proíbe que este player use teclas com binds de texto. end end end) addEventHandler ("onPlayerLogin", getRootElement(), function (prev, curr) -- Quando alguém fizer login, executa essa função. if isObjectInACLGroup ("user."..getAccountName(curr), aclGetGroup("Console")) then -- Se o jogador que fez login está na ACL Group Console, então: setElementData (source, "bindPermission", true) -- Permite que este player use teclas com binds de texto. end end) addEventHandler ("onPlayerLogout", getRootElement(), function (prev, curr) -- Quando alguém deslogar, executa essa função. setElementData (source, "bindPermission", false) -- Proíbe que o player deslogado use teclas com binds de texto. end) Client: addEventHandler ("onClientKey", getRootElement(), function (button, state) -- Executa essa função quando o jogador pressionar ou soltar qualquer tecla. if not state then return end -- Não verifica ao soltar a tecla, somente ao pressionar. if not getElementData (localPlayer, "bindPermission") then -- Se o jogador não tem permissão para usar binds de texto, então: local keys = getBoundKeys ("say") -- Obtém uma lista com todas as teclas com binds de texto. if keys then -- Se existe alguma tecla com bind de texto, então: for keyName, keyState in pairs (keys) do -- Para cada tecla com bind de texto, faça: if button == keyName then -- Se a tecla pressionada está com bind de texto, então: outputChatBox ("Tecla bloqueada: "..keyName, 255, 0, 0) -- Avisa o jogador que essa tecla foi bloqueada. cancelEvent () -- Cancela o efeito dessa tecla como se ela nem tivesse sido usada. break -- Sai do loop do FOR para não precisar verificar as demais teclas com bind de texto. end end end end end) Espero ter ajudado.
  4. DÚVIDA [ Download Lado Server/Client ]

    Sim, você sempre precisa fazer download dos arquivos novos que forem adicionados a uma host. Mesmo que vc já tenha eles no seu computador. No server local também precisa fazer download, mas geralmente é tão rápido que você nem percebe. Esse download é o seu MTA iniciando os arquivos no seu client.
  5. Favor reenvie seu código sem traduzir a página. Estamos falando em Português com você, não precisa tentar nos traduzir. E use a ferramenta de código do fórum para postar códigos.
  6. Anti-Divulgação

    Exemplo, se o cara estiver na ACL Group "Console": function Divulgacao (msg, msgtype) if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("Console")) then return -- Se o jogador estiver na ACL Group Console, ignora o bloqueio e a mensagem é enviada normalmente. end if string.find (msg ,"mtasa://") then -- Só pra avisar que é extremamente fácil burlar isso, mas ok. cancelEvent() end end addEventHandler ("onPlayerChat", getRootElement ( ), Divulgacao) E da próxima vez, poste na sessão correta de Programação em Lua.
  7. Da pra fazer tudo client-side. Basta você setar uma data no jogador quando ele clica no botão e depois tirar essa data quando ele clica novamente. Enquanto ele estiver com essa data ("protegido") ele estará protegido. local x, y = guiGetScreenSize () buttonPro = guiCreateButton (x/2, y/2, 80, 25, "Proteção", false) -- Botão de exemplo. addEventHandler ("onClientGUIClick", buttonPro, function () -- Executa essa função ao clicar no buttonPro. if not getElementData (localPlayer, "protegido") then -- Se o jogador não está protegido, então: setElementData (localPlayer, "protegido", true) -- Torna o jogador protegido. outputChatBox ("Você está protegido.", 0, 255, 0) else -- Se o jogador está protegido, então: setElementData (localPlayer, "protegido", false) -- Torna o jogador desprotegido. outputChatBox ("Você está desprotegido.", 255, 0, 0) end end, false) addEventHandler ("onClientPlayerDamage", getRootElement(), function () -- Protege o jogador contra danos se ele estiver com data "protegido". if getElementData (source, "protegido") then cancelEvent() end end) addEventHandler ("onClientPlayerStealthKill", localPlayer, function (targetPlayer) -- Protege o jogador contra a facada mortal se ele estiver com data "protegido". if getElementData (targetPlayer, "protegido") then cancelEvent() end end)
  8. Como fazer um Look At na rotação Z?

    Não acredito que não vi essa função. Estava me quebrando todo para descobrir como fazer isso. Eu já tinha descoberto que precisava trabalhar com tangente mas estava com problemas para converter o valor obtido em graus. Eu só havia feito isso até então: function lookAt (theSource, target) if isElement (theSource) and isElement (target) then local px, py = getElementPosition (theSource) local tx, ty = getElementPosition (target) local relatedAngle = math.atan2 (px - tx, py - ty) if (relatedAngle < 0) then relatedAngle = relatedAngle + 360 elseif (relatedAngle > 360) then relatedAngle = relatedAngle - 360 end return math.floor(relatedAngle) end end Preciso voltar a estudar mais a Wiki. Muito obrigado.
  9. Local de contas registradas MTA Server

    Elas ficam salvas no banco de dados internal.db Ele está localizado geralmente em C:\Program Files (x86)\MTA San Andreas 1.5\server\mods\deathmatch
  10. MTA Dando Erro Me ajuda Porfavor

    Já tentou conectar em outro servidor?
  11. Olá senhores. Bom, estou precisando fazer um objeto apontar para outro como se ele estivesse fazendo um Look At. Mas não sei como calcular o ângulo da rotação Z com base nas posições. Exemplo. Objeto A está na posição 0, 0, 0. Objeto B está na posição 1, 1, 0. Ilustrações: Aplicando o Look At no Objeto A para o B, deve fazer o objeto A "mirar" no Objeto B, colocando a rotação Z do objeto A em 315. Mas como calculo isso? Obs: A rotação é com base nas posições, não importa a rotação do objB.
  12. Universo Virtual - MTA Brasil

    Favor não usar fontes muito grandes, ninguém aqui é cego e isso é classificado como Spam.
  13. Comando Troll

    Em relação a fechar o jogo, isso não é possível (e nem permitido) por questões de segurança. Mas você pode sim dar um "Kick zoeiro" no jogador usando a função kickPlayer. Ex: function verifyVIP (thePlayer, cmd) if not (isObjectInACLGroup("user."..getAccountName(getPlayerAccount(thePlayer)), aclGetGroup("VIP"))) then -- Se o jogador não está na ACL Group VIP, então: kickPlayer (thePlayer, "Você foi trolado!") -- Kicka o jogador do servidor, com o motivo definido. end end addCommandHandler ("vip", verifyVIP) Obs: Normalmente não aparece no chat o motivo do kick. Se o seu server estiver com um joinquit ligado, que anuncia quando alguém entra ou sai do seu servidor, ele aparece algo do tipo: NomeJogador left the server. [kicked] De qualquer forma, os outros jogadores não sabem que foi um kick troll. Obs2: O resource precisa ter acesso à permissão function.kickPlayer para funcionar.
  14. Pickup Money

    Usar setTimer não é recomendável pra longos períodos de tempo. Ele é mais pesado do que o getRealTime.
  15. Pickup Money

    Não há limite de estoque. Você define isso.