Lord Henry

Members
  • Content Count

    1,985
  • Joined

  • Last visited

  • Days Won

    50

Lord Henry last won the day on June 1

Lord Henry had the most liked content!

Community Reputation

749 MTA Ambassador

About Lord Henry

  • Rank
    Jacker
  • Birthday 16/01/1996

Details

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

Recent Profile Visitors

4,506 profile views
  1. Amigo, isso aqui é fórum de Multi Theft Auto e não de TeamSpeak.
  2. Lembrando que o resource Freeroam cancela as animações quando vc tenta pular.
  3. Este exemplo apenas vai desabilitar os controles de pular, atirar e mirar do jogador. Não há relação com animação.
  4. Vc já deve ter resolvido. Mas caso alguém queira saber a resposta: Remover o chat não dá. MAS tem como desabilitar ele no momento em que o jogador entra no servidor. addEventHandler ("onPlayerJoin", root, function () showChat (source, false) end) Isso impede o chat de aparecer e a tecla T também deixa de funcionar. Vale lembrar que o jogador ainda pode reativar o chat usando showchat no Client Console do F8. Por ser um comando de cliente nativo do MTA, não há como bloquear esse comando.
  5. Olhando no código-fonte, parece que também funciona com trens, quadricíclo e Monster Trucks.
  6. Cara, as janelas são criadas client-side. Você deve usar guiSetVisible (janela, false) logo depois de criar a janela, assim ela não vai aparecer pra ninguém. Depois vc mostra ela novamente somente pros jogadores específicos usando triggers. Mas pra isso vc vai precisar mandar pro server, pra ele então mandar pros outros clientes. client-side: local x,y = guiGetScreenSize() -- Padrão de qualquer painel. guiPanel = {} -- Faz todos os elementos GUI dentro de 1 table pra economizar espaço na memória. function createPanel () -- ======(PAINEL FEITO DE QUALQUER JEITO SÓ DE EXEMPLO)====== guiPanel["window"] = guiCreateWindow (x/2 - 150, y/2 - 150, 300, 300, "Default Window", false) -- Janela qualquer. guiPanel["edit"] = guiCreateEdit (10, 20, 280, 30, "(Nick exato do outro player)", false, guiPanel["window"]) -- Campo de input pra botar o nick do outro jogador. (tem que incluir os códigos de cores, se tiver. No seu caso é uma gridList que funciona diferente disso) guiPanel["button1"] = guiCreateButton (300/2 - 50, 300 - 40, 100, 30, "CHAT", false, guiPanel["window"]) -- Botão qualquer, que serve pra ativar o trigger. guiSetVisible (guiPanel["window"], false) -- Oculta de cara a janela, pra ela não aparecer pra ninguém. -- O painel vai estar criado em todos os clientes, mas não estará visível em nenhum deles. end addEventHandler ("onClientResourceStart", resourceRoot, createPanel) addCommandHandler ("testar", function (cmd) -- Comando qualquer pra fazer o painel aparecer só no cliente que executar o comando. guiSetVisible (guiPanel["window"], true) showCursor (true) -- Mostra o cursor para poder interagir com o painel. end) function interactionPanel (button, state) if (button == "left" and state == "up") then -- Verificação de segurança padrão. if (source == guiPanel["button1"]) then -- Verificação de botão clicado padrão. local theOther = getPlayerFromName(guiGetText(guiPanel["edit"])) -- Recebe o jogador usando o nick informado no campo de input. if theOther then -- Se existe um jogador com o nick informado, então: guiSetVisible (guiPanel["window"], false) -- Oculta a janela principal. guiPanel[guiGetText(guiPanel["edit"])] = guiCreateWindow (x - 400, y/2 - 200, 400, 400, guiGetText(guiPanel["edit"]), false) -- Cria a janela com o nick do outro cara como título. triggerServerEvent ("ClientServerChat", theOther) -- Ativa este evento no servidor, usando o outro jogador como source. Isso vai criar a janela no outro cara também, com o nosso nick. else outputChatBox ("Player não encontrado, informe o nick exato junto com os códigos de cores.") end end end end addEventHandler ("onClientGUIClick", guiRoot, interactionPanel) -- (Aprendi esses dias aqui no fórum) guiRoot ativa para todos os elementos GUI deste resource. É mais leve do que root. function getUpdate (otherPlayer) -- Isso aqui executa no outro jogador. Nós somos o otherPlayer. guiPanel[getPlayerName(otherPlayer)] = guiCreateWindow (x - 400, y/2 - 200, 400, 400, getPlayerName(otherPlayer), false) -- Cria a janela com o nick do otherPlayer. end addEvent ("ServerClientChat", true) -- Recebe o painel do servidor. Normalmente junto com a mensagem e o jogador que está mandando a mensagem. addEventHandler ("ServerClientChat", resourceRoot, getUpdate) server-side: function transferData () -- Imagine isso apenas como uma ponte entre os clientes. Pode ser usado para tranferência das mensagens. triggerClientEvent (source, "ServerClientChat", client) -- source = o outro player | client = o localPlayer de onde veio este evento (nós) -- Ativa o evento "ServerClientChat" no cliente do source (outro cara) usando client (nós) como parâmetro de função. end addEvent ("ClientServerChat", true) -- Este evento é ativado no servidor pelo nosso cliente. addEventHandler ("ClientServerChat", resourceRoot, transferData)
  7. Postou na seção errada. Da próxima vez poste na seção Geral. Se sua host trocou de IP, vc deverá comprar novamente toplist para o IP novo.
  8. Bom saber. Não sabia que não funcionava em motos. Quais os tipos de veículo que funciona? Só carros?
  9. Tabelas pra colocar o quê nelas? Jogadores? Daria pra construir a tabela no server e dar triggerClientEvent só pros jogadores desta tabela: triggerClientEvent (playersTable, "openChatWindow", resourceRoot)
  10. Acho que não. Visto que já se passaram 2 dias, ele já viu e curtiu a resposta do @MaligNos e não voltou a perguntar.
  11. setPedAnimation O fato dos jogadores conseguirem andar com a animação rendido é um bug, onde no cliente do jogador rendido a animação não está executando mas pros outros jogadores ainda está.
  12. Não. Serve pra evitar de ativar a função novamente por clicar no parente junto.
  13. Já foi avisado para você que dúvidas referentes a scripts devem ser feitas na seção Programação em Lua. Você está criando tópicos na seção de Tutoriais em Geral, aqui você posta Tutoriais pra ajudar os demais membros. Por favor, respeite as regras do fórum.
  14. Quando usar o source, quando declarar o botão no evento e quando usar o parâmetro getPropagated (o false): addEventHandler ("onClientGUIClick", button01, functionQualquer) -- Sem o false e declarando o botão que deve chamar essa função. Esse caso acima é recomendado para botões únicos e que não tenham parentes. Quando vc só tem um único botão, é mais fácil declará-lo direto no evento ativador. Por não existir um parente desse botão, não precisa do false. Se existisse um parente (como uma janela) dai precisaria do false, caso contrário a função seria ativada novamente para esse parente. addEventHandler ("onClientGUIClick", button01, functionQualquer, false) -- Com o false e declarando o botão. Esse caso com o false é recomendado para casos de um botão único e que possui algum parente, como uma guiWindow. O false evita que a janela seja considerada ao clicar no botão. Ativando a função somente 1 vez por clique. addEventHandler ("onClientGUIClick", root, functionQualquer) -- Sem declarar o botão e sem o false. Nesse último caso é o mais comum e recomendado para a maioria dos casos onde uma janela possui vários botões. Você não declara um botão específico no evento, usa-se root para que a função ative em qualquer guiElement clicável. Dentro da função, vc usa source para saber qual elemento foi clicado e se ele é igual a tal botão, por exemplo: if (source == button01) then -- Faz algo. elseif (source == button02) then -- Faz outra coisa. end Em vez de usar vários addEventHandlers para cada botão, e uma função diferente para cada botão, usa-se a mesma função e o mesmo addEventHandler para todos, diferenciando o que cada um dos botões faz através das condições. Isso é questão de otimização. Vários eventos pequenos são mais pesados do que um único evento grande.