Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    4,005
  • Joined

  • Last visited

  • Days Won

    184

Everything posted by Lord Henry

  1. Os caras não sabem como funciona a função. Ficam os dois se confundindo. Sugiro que leiam a Wiki do onClientMarkerHit. Como eu já falei, não adianta ficar tentando chutar comandos sem saber o que está fazendo.
  2. Esse código não vai funcionar, pois hitElement não foi declarado em lugar nenhum.
  3. Cara. Isso que eu mandei é só um exemplo. Não adianta vc só copiar as coisas sem saber o que está fazendo.
  4. Não use o nome do evento igual o nome da função.
  5. Só usar isGuestAccount. theMarker = createMarker (0, 0, 6, "cylinder") function teste (hitElement) if hitElement and getElementType (hitElement) == "player" then local account = getPlayerAccount (hitElement) if isGuestAccount (account) then outputChatBox ("É necessário estar logado para acessar a concessionária.", hitElement, 255, 150, 0) else outputChatBox ("Bem-vindo à concessionária.", hitElement, 0, 255, 0) end end end addEventHandler ("onMarkerHit", theMarker, teste)
  6. Sim. Só vc baixar uma concessionária que funciona. Como essa por exemplo: https://community.multitheftauto.com/index.php?p=resources&s=details&id=14855
  7. Favor use a ferramenta de código do fórum para postar seu script. Assim ficará mais legível E não está dando certo pois você está usando player em vez de localPlayer. Além disso, você estava tentando setar a posição do player em vez de dimensão na linha 9. Ta ae o código corrigido. function ClickDimension() Entrar = guiCreateButton(629, 375, 124, 56, "entrar", false) addEventHandler("onClientGUIClick", Entrar, DimensionSet, false) end addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), ClickDimension) function DimensionSet() if (getElementDimension(localPlayer) == 0) then setElementDimension(localPlayer, 1) outputChatBox("ok!") end end
  8. @R1S1NG, por acaso foi você quem fez uma pergunta nos comentários do resource do sistema-home? Bom, só pra avisar que eu já respondi.
  9. Seria mais fácil vc postar o código em vez de link de sites de terceiros. Também é mais conveniente vc dizer os erros em vez de mandar print do erro.
  10. Aprenda lógica de programação primeiro. Para isso, vc precisa estudar algoritmos computacionais. Tutorial no YouTube: https://www.youtube.com/watch?v=M2Af7gkbbro&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV&index=2&t=20 Sem saber a lógica de programação, você nunca aprenderá a programar. Você vai apenas "decorar" as funções e dificilmente vai saber o que está fazendo.
  11. Use códigos hexadecimais no texto. Antes da parte que vc quer colorir. #FF0000 #00FF00 #0000FF Assim: function coloridoChat () outputChatBox ("Vermelho #00FF00Verde #0000FFAzul", root, 255, 0, 0, true) end addCommandHandler ("chat", coloridoChat) Se você quer colocar só 1 cor no texto inteiro, declare os valores no formato RGB depois do root.
  12. Só acho que, se ele enviou por privado, significa que ele não queria mostrar no público. Dai vc foi lá e publicou o código do cara '-'
  13. Postou na área incorreta, colega. Esta sessão destina-se para postar tutoriais em geral e não para perguntar sobre programação. Da próxima vez poste na sessão correta de Programação em Lua. A propósito, a sua imagem é essa: Mas o que exatamente você está tentando fazer? Mandar um chat colorido? Com quais cores?
  14. Sobre o assunto gamemode, o pessoal brasileiro está começando a aprender a jogar RPG no MTA, mas isso é recente. Até então só existia Freeroam, DayZ e Race. O brasileiro em sua maioria não se interessava pelos outros gamemodes, e os que tentavam algo diferente acabavam falindo devido a essa falta de interesse. Minha dica é a seguinte: Se você tem paciência, planejamento de desenvolvimento e conhecimento avançado com programação de MTAScript (Lua), sugiro que vá pelo RPG. É um dos gamemodes mais complexos de se fazer, muitas regras, detalhes e não tem muitos resources voltados ao RPG na internet, ou seja, você terá que criar seus próprios resources na maioria. MAS Se você é iniciante, não tem tanta experiência com criação de servidores e gerenciamento de equipe, recomendo que continue no bom e velho Freeroam, que ainda tem bastante força no Brasil e é mais fácil de criar e gerenciar. Obs: Tenha em mente que é mais fácil vender VIP em servidores RPG do que no Freeroam.
  15. 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.
  16. Bom, não é o espaço correto. Visto que aqui é mais para programação e não para ideias. Mas respondendo a sua pergunta: O que faz alguém ficar no mesmo server? Ter amigos no servidor Ter o que fazer no servidor (trabalhos, corporações, gangues, etc) Se divertir no servidor Ter excelente suporte da Staff Não ter Lag Ter constantes novidades (Ex: Cada semana uma pequena atualização, com resources novos ou correções dos que já existem) Ter eventos NÃO SER CÓPIA DE OUTRO SERVER Não ter resources da internet, exclusividade é o melhor caminho. Espero ter ajudado.
  17. Ah mano, dai é problema do radar editado que não tem suporte pra áreas. Coloque outro.
  18. Me agradeça dando um Thanks no meu comentário que te ajudou. Só ir naquele botão de coração ali em baixo da minha resposta. Sim. Pra criar uma área no radar é só usar createRadarArea. Dai nos parâmetros vc informa a coordenada X e Y da área no mapa e seu tamanho X e tamanho Y, além de cor e transparência.
  19. Só você diminuir o número que vai depois do sy nessas partes aqui: dxDrawRectangle ( sx - 220, (sy-20)-(index*25), 200, 20, tocolor ( 0, 0, 0, v4 ) ) if ( v2 ) then dxDrawText ( "+ $"..convertNumber ( v1 ), sx - 200, (sy-18)-(index*25), 50, 20, tocolor ( 0, 255, 0, v4+75 ), 1, 'default-bold' ) else dxDrawText ( "- $"..convertNumber ( v1 ), sx - 200, (sy-18)-(index*25), 50, 20, tocolor ( 255, 0, 0, v4+75 ), 1, 'default-bold' ) end Onde está -20, coloque -320 e onde está -18 coloque -318 Quanto mais negativo o número, mais pra cima ele vai ficar. Espero ter ajudado. E seria interessante você deixar o fórum Português no seu favoritos, assim você não se esquece de postar na sessão correta.
  20. Você deveria dar mais detalhes, aqui você tem seu espaço para isso. Algumas correções: Esport não existe. Ou vc escreve em inglês "sport" ou você escreve em português "esporte". Painel de Login/registro é algo que todos os servers possuem. Isso não funcionou no marketing. Dizer que perdeu as texturas é desnecessário, não é bom ficar dizendo as suas falhas. Boa sorte com seu server.
  21. Tá, você não é capaz nem de responder minhas perguntas. Permita-me responder para você: R: Não, nem tentei traduzir e não entendi os erros. Mas agora que vi que o @Lord Henry traduziu e me disse oq significam, vou tentar arrumar. R: De acordo com a Wiki do getElementsByType, essa função retorna uma lista contendo todos os elementos do tipo declarado. No caso, retorna uma lista com todos os jogadores online no server. Isso significa que a variável players não é um jogador e sim uma lista de jogadores online. function AntiComando (source) -- source = player que executou o comando desta função. (/a) local players = getElementsByType ("player") -- players = uma lista de jogadores online. local playerrivalx, playerrivaly, playerrivalz = getElementPosition ( players ) -- ERRO: Não é possível encontrar a posição de uma lista, pois ela não é um elemento. local player1x, player1y, player1z = getElementPosition ( source ) -- player1x, player1y, player1z = Posição X, Y e Z do jogador que executou o comando /a local dist = getDistanceBetweenPoints3D ( playerrivalx, playerrivaly, playerrivalz, player1x, player1y, player1z ) -- ERRO: playerrivalx, playerrivaly, playerrivalz não existem, pois deu erro na linha 3. Portanto a variável dist também dará erro. if ( dist < 5 ) then -- ERRO: Não tem como comparar FALSE com 5. outputChatBox("#FFFFFFComando Não poder ser utilizado perto de um rival!", source, 255, 255, 255, true) elseif ( dist > 100 ) then -- ERRO: Não tem como comparar FALSE com 100. outputChatBox("#FFFFFFcomando utilizado com sucesso.!", source, 255, 255, 255, true) end end addCommandHandler ("a", AntiComando)
  22. 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.
  23. E as minhas perguntas, consegue responder?
  24. Provavelmente você já manja de Lógica de Programação, então sugiro que baixe alguns resources básicos da comunidade MTA e estude a documentação das funções na Wiki MTA.
×
×
  • Create New...