Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,912
  • Joined

  • Last visited

  • Days Won

    170

Lord Henry last won the day on January 12

Lord Henry had the most liked content!

About Lord Henry

  • Birthday 16/01/1996

Member Title

  • Portuguese Section Moderator

Details

  • Gang
    MTA Simpsons
  • Location
    Brazil
  • Occupation
    Game Developer
  • Interests
    Resource Development, Gamer, Map Design, Staff Management, MTA Forum Portuguese Section Helper

Recent Profile Visitors

18,491 profile views

Lord Henry's Achievements

Soldier

Soldier (43/54)

1.6k

Reputation

  1. A culpa é inteiramente da administração do servidor. As possíveis causas são as seguintes: 1) Não desenvolveram uma segurança decente para o servidor, permitindo que os jogadores violem os banimentos. 2) Desenvolveram resources com brechas de segurança que tornaram o servidor violável pelos clientes. 3) Deram permissão admin para algum resource desconhecido que está colocando usuários não autorizados na ACL Group Console.
  2. Nenhum desses exemplos vai funcionar pois faltou fechar o parênteses do addEventHandler. Adicione um ) depois do último end.
  3. Para fazer com que o jogador não consiga abrir o chatbox pela tecla T (isso também vai impedir que ele use o teamsay pela tecla Y), você pode simplesmente desativar o controle de acesso do chatbox com isso: (client-side) -- CLIENT-SIDE addEventHandler("onClientResourceStart", resourceRoot, function() -- Executa essa função ao iniciar este resource no client. toggleControl("chatbox", false) -- Bloqueia o acesso ao chatbox pelas teclas T e Y, mas ainda é possível enviar mensagens e comandos pelo F8. showChat (false) -- Esta função torna o chat invisível para este client. -- O jogador ainda pode restaurar o chat pelo comando "showchat" no F8. Mas ele continuará inacessível pelo T e Y devido ao toggleControl. -- Após restaurar o chat pelo F8, o jogador pode mandar mensagens e comandos pelo F8 também. end) Para evitar as mensagens de "say" e "teamsay" pelo F8, use isso: (server-side) -- SERVER-SIDE local cmdBloqueados = {"say", "teamsay"} -- Lista de comandos bloqueados. addEventHandler("onPlayerCommand", root, function(command) for _,cmd in pairs(cmdBloqueados) do if (command == cmd) then cancelEvent() -- Só consegue bloquear comandos server-side. break end end end) Com isso você torna impossível usar o chatbox. Comandos server-side você pode bloquear adicionando ali na lista. Mas os comandos client-side não podem ser bloqueados por questões de segurança.
  4. Por medidas de segurança, não é possível desativar o F8. O evento onClientKey não chega a ser chamado ao apertar a tecla F8. Da mesma forma, não adianta bindar comandos no F8 pois eles não serão chamados. Essa tecla é para uso restrito do Client Console e não pode ser utilizada para outras finalidades.
  5. Tem. Basta cancelar o evento onClientPlayerDamage quando o tipo de dano for de queda. addEventHandler("onClientPlayerDamage", localPlayer, function (attacker, weapon) -- Ativa este evento sempre que o localPlayer tomar qualquer dano. if weapon == 54 then -- Se o dano for de queda, então: cancelEvent() -- Cancela este evento e não toma o dano. end end)
  6. Só verificar se o veículo existe com isElement.
  7. ola lord henry poderia ver meu topico se sim obrigado

     

  8. Mano, não irei programar seu resource para você. Quando abrir o painel, coloque aquela elementData no jogador (ou outra data, se preferir). Depois remova essa data (coloque valor false) ao fechar o painel. É bem simples. Pelo que parece, você também está usando a variável Chest para definir se o painel está aberto ou não, dai nesse caso é mais fácil ainda. local theKeys = {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"} -- Obs: Por medidas de segurança, a tecla F8 não aciona este evento e portanto não pode ser bloqueada. addEventHandler("onClientKey", root, function (button, press) if Chest then -- Se o painel está aberto, então: if press then for i,key in pairs(theKeys) do if button == key then cancelEvent() outputChatBox("Tecla bloqueada.") -- Apenas para testes, remova na versão final. break end end end end end)
  9. Gostaria de relatar alguns contratempos que tenho enfrentado recentemente ao tentar acessar o jogo e o Discord.

    Ontem, fiz minha primeira entrada no servidor do Discord. Embora não tenha enviado nenhuma mensagem nem interagido de forma alguma, fui surpreendentemente banido hoje às 10:01.

    Além disso, estou encontrando dificuldades na instalação do MTA, devido a um erro identificado como CL 22, acompanhado da mensagem "Erro 5. Acesso Negado (ShellExecute)".

    Agradeço antecipadamente por qualquer orientação ou assistência que possam fornecer para solucionar esses problemas.

    Respeitosamente,

    Felipe

  10. Ou você pode setar rotação nos braços do jogador algemado em vez de setar uma animação. Dai é só ficar chamando todo frame enquanto ele estiver com elementData de algemado. -- Client-side: function setCuffed(thePlayer) -- Função que seta a "animação" de algemado. -- Left setElementBoneRotation(thePlayer, 32, 26.574, 61.3375, 59.2065) setElementBoneRotation(thePlayer, 33, 27.844, 15.364, 46.406) setElementBoneRotation(thePlayer, 34, -81.0185, 342.875, 326.118) -- Right setElementBoneRotation(thePlayer, 22, 338.839, 53.4935, 298.452) setElementBoneRotation(thePlayer, 23, 307.687, 22.11, 313.594) setElementBoneRotation(thePlayer, 24, 96.0475, 357.883, 56.739) updateElementRpHAnim(thePlayer) -- Aplica as rotações nos ossos do thePlayer neste frame. end addEventHandler("onClientPedsProcessed", root, function() -- Chama essa função a cada frame, quando os personagens são processados. for _,player in pairs(getElementsByType("player", root, true)) do -- Para cada jogador próximo, faça: if getElementData(player, "algemado") then -- Se o jogador está com a elementData "algemado" então: setCuffed(player) -- Seta a animação de algemado nele durante 1 frame. end end end) -- Server-side: addCommandHandler("algemar", function(theCop, cmd, name) -- Comando que vai algemar/desalgemar alguém. Use /algemar NomeDoPlayer if not isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(theCop)), aclGetGroup ("Policia")) then -- Se quem executou o comando não está na ACL Group "Policia", então: outputChatBox("Acesso negado. Você precisa ser um policial para usar este comando.", theCop, 255, 50, 50) return -- Cancela a execução dessa função aqui e nem lê o resto. end if not name then -- Se não foi declarado nada depois do /algemar, então: outputChatBox("Erro: É necessário informar o nome do jogador a ser algemado/desalgemado.", theCop, 255, 50, 50) return end local thePlayer = getPlayerFromName(name) if thePlayer then -- Se existe o jogador com o nome informado, então: (o nome precisa ser exato, incluindo códigos de cores) if getPedOccupiedVehicle(thePlayer) then -- Não permite algemar/desalgemar jogadores que estão em veículos. outputChatBox("Erro: Este jogador está em um veículo, não é possível algemar/desalgemar ele.", theCop, 255, 50, 50) return end if getElementData(thePlayer, "algemado") then -- Se o jogador já tem a data de algemado, então: setElementData(thePlayer, "algemado", false) -- Remove a data dele, parando a animação de algemado dele. disenableControls(thePlayer, true) -- Habilita os controles do jogador. outputChatBox("Você desalgemou o jogador "..name, theCop, 255, 255, 0) else -- Se o jogador não tem a data de algemado, então: setElementData(thePlayer, "algemado", true) -- Coloca a data nele, a animação de algemado será aplicada nele. disenableControls(thePlayer, false) -- Desabilita os controles do jogador. setPedWeaponSlot (thePlayer, 0) -- Coloca o slot de arma desarmado no jogador. Para ele não ficar segurando armas enquanto algemado. outputChatBox("Você algemou o jogador "..name, theCop, 255, 255, 0) end else -- Se não existe um jogador com o nome informado (ou o nome informado não é exato), então: outputChatBox("Erro: Jogador não encontrado: "..name, theCop, 255, 50, 50) end end) function disenableControls(thePlayer, state) -- Função que ativa/desativa alguns controles específicos do jogador, pra n ficar repetindo código. local controls = {"fire", "action", "jump", "sprint", "aim_weapon", "next_weapon", "previous_weapon", "enter_exit"} for _,ctrl in pairs (controls) do -- Para cada controle da lista, faça: toggleControl (thePlayer, ctrl, state) -- Ativa/desativa o controle. end end
  11. Defina o parâmetro interruptable da animação como false.
  12. @SUPERNATUR4L assim funciona: local theKeys = {"F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"} -- Obs: Por medidas de segurança, a tecla F8 não aciona este evento e portanto não pode ser bloqueada. addEventHandler("onClientKey", root, function (button, press) if press then for i,key in pairs(theKeys) do if button == key then if getElementData(localPlayer, "Porta-Malas") then cancelEvent() outputChatBox("Tecla bloqueada.") -- Apenas para testes, remova na versão final. else -- Apenas para testes, remova na versão final. outputChatBox("Você não tem a elementData necessária. Tecla liberada.") -- Apenas para testes, remova na versão final. end break end end end end)
  13. Essa variável player não faz sentido. E você está usando um evento client-side, sendo que para mexer na vida dos jogadores você deve fazer server-side. Utilize o evento onPlayerDamage em vez disso, pois é um evento server-side. function headDamage (attacker, weapon, bodypart) if (bodypart == 9 and attacker and attacker ~= source) then -- Se o dano recebido foi na cabeça e não foi causado por si mesmo, então: cancelEvent() -- Cancela o dano normal que o tiro daria na cabeça. local hp = getElementHealth(source) -- Obtém a vida atual do jogador que tomou o tiro. setElementHealth(source, hp - 34) -- Subtrai 34 da vida atual do jogador. -- Primeiro tiro: 100 >> 66 -- Segundo tiro: 66 >> 32 -- Terceiro tiro: 32 >> -2 (morre) end end addEventHandler ("onPlayerDamage", root, headDamage)
  14. Mantenha-se no seu tópico original. Não fique criando outros tópicos iguais.
×
×
  • Create New...