Jump to content

androksi

Other Languages Moderators
  • Posts

    545
  • Joined

  • Last visited

  • Days Won

    38

Everything posted by androksi

  1. Olá! Desculpa o atraso. Acredito que o erro esteja vindo do seu servidor MTA. Poderia dar detalhes sobre como está o nome do recurso (resource) e como está configurado as credenciais? Fique à vontade para me mandar mensagem privada aqui no fórum, caso seja necessário.
  2. Olá! Primeiro ponto que devo ressaltar aqui, é que não bugar animação é totalmente responsabilidade dos outros scripts do servidor. Agora, sobre a sua dúvida, tem algumas maneiras de fazer isso. Particularmente, eu não gosto de usar o sistema de dano do próprio GTA, pois tem aquele problema de matar e morrer, entre outros. De qualquer forma, não vou me estender muito aqui. Você pode utilizar o evento onClientPlayerDamage. Na função desse evento, você tem alguns parâmetros que são úteis, como o loss (dano tomado). Além disso, será necessário enviar uma requisição ao servidor (triggerServerEvent), fazendo com que uma animação seja aplicada ao jogador. Pra finalizar, você pode checar no evento, se a vida do jogador é menor que 30 e cancelar os danos que ele recebe. Do contrário, os outros jogadores poderiam o finalizar.
  3. Olá! Seja bem-vindo(a) ao fórum! ? Você pode começar lendo estes tópicos: Como a Wiki funciona. Tutorial Lua para iniciantes. Playlist para você aprender a escrever os seus próprios scripts. Curso sobre algoritmos. Os itens citados são para quem está começando e pode te auxiliar nessa jornada. Todavia, ainda posso te dar as funções para que você possa tentar alguma coisa. Lembrando que, além do fórum, há uma galera bastante ativa em nosso Discord oficial do MTA. Começando desde o princípio, um painel de login seria, de forma bem resumida, uma forma do jogador se autenticar. Para isso, nós precisamos que ele forneça algumas informações, como o usuário e senha. Há várias formas de você estar criando uma maneira disso acontecer. Seja através de comandos básicos, sem nenhuma interface; com interface; integrações via site e muitas outras formas. Considerando que você deseja um painel de login, presumo que nós teremos uma interface. Então, dessa forma, você precisa escolher entre trabalhar com as funções DX ou CEGUI. A diferença entre elas é, basicamente, CEGUI já vem no MTA como uma biblioteca, com diversas funções prontas para o uso. Já o DX, são apenas desenhos na tela, você usará bastante matemática básica - e, claro, criará o seu próprio layout. Darei as funções CEGUI, pois elas são bem fáceis de trabalhar. Para a criação do painel de login, você usaria as seguintes funções: guiCreateWindow - cria a janela; guiCreateEdit - cria os campos para digitar o usuário e senha; guiCreateButton - cria o botão para autenticar (e registrar, caso tenha essa característica); guiCreateLabel - cria um texto na janela, serve para auxiliar o jogador, dizendo qual é o campo de Usuário e Senha. Funções que serão úteis no decorrer da criação: Window (Janela) guiSetVisible - altera a visibilidade da janela, escondendo-a ou fazendo a aparecer. Só para constar, essa função serve para quase todos os elementos CEGUI. A janela foi apenas um exemplo de uso. Buttons (Botões) guiSetProperty - altera algumas característica do botão, como cor do texto, por exemplo; guiSetFont - altera a fonte do botão. As duas funções citadas acima também podem ser usadas em vários elementos CEGUI. Edit (Campos) guiEditSetMaxLength - altera o limite de caracteres que podem ser inseridos no campo. É extremamente importante limitar, para não ter falhas de segurança. Considerando um painel simples, irei citar apenas um evento necessário. Veja abaixo: onClientGUIClick - esse evento é chamado quando ocorre algum clique em um botão que seja da biblioteca CEGUI. As funções e eventos citados acima são parte do que nós chamamos de client-side, ou seja, coisas que rodam no computador do jogador. Agora, é necessário nós pegarmos as informações que ele digitou e mandá-las para o server-side, onde ocorrerá todo o processamento de dados. Para isso, nós utilizamos a função guiGetText, para obter o que foi inserido nos campos (editbox), e também a função triggerServerEvent, para chamar algum evento lá do server-side. Agora que nós enviamos os dados para o servidor, precisamos processá-los. Algumas funções que irão fazer parte do código, para autenticar: getAccount - obtém uma conta, se existente, e também serve para verificar se a senha está correta; logIn - autentica o jogador. Eu não entrei muito em detalhes sobre registrar uma conta, mas você pode explorar mais depois . Lembrando, novamente, sobre o nosso servidor oficial do Discord. Espero que este tópico tenha o ajudado a entender um pouco sobre. Boa sorte na sua jornada.
  4. Olá! Seja bem-vindo(a) ao fórum. ? O e-mail do arquivo mtaserver.conf deve ser o mesmo daquele cadastrado na toplist. Infelizmente não estou apto a responder mais que isso, você precisa contatar o ccw.
  5. @chupisco, por favor, não reviva tópicos que são bem antigos. A resposta dada já é suficiente para você entender que o MTA não possui vírus. Apenas reforçando: deve ser alguma outra coisa que você baixou - e provavelmente, o seu PC está infectado. Sugiro que faça um scan e veja o que está causando o problema.
  6. Olá! Seja bem-vindo(a) ao fórum. ? Acredito que você esteja falando deste resource:
  7. Olá! Aqui nestas linhas: local defaultRadio = "http://icecast.funx.nl:8000/funx-dance.m3u" local defaultRadio = "http://64.56.64.82:14596" Você pode trocar para um link de rádio que seja funcional. Esse resource de rádio é bem antigo, provavelmente os links atuais estão fora do ar. Eu tenho um link funcional. Substitua aquelas duas linhas por apenas esta: local defaultRadio = "https://live.hunter.fm/pop_high" Caso você queira alterar o link dentro do servidor, no seu carro, basta usar o comando setradio no F8 (Console). Por exemplo: setradio https://live.hunter.fm/pop_high
  8. Olá! Seja bem-vindo(a) ao fórum! ? Você pode salvar um intervalo de tempo na conta do jogador. Para salvar, use a função setAccountData; para obter o intervalo de tempo (também conhecido como timestamp), você usa a função getRealTime. Há um tutorial no fórum feito há anos atrás, mas que ainda é totalmente válido. Você pode dar uma olhada. O link é este. Se ainda assim estiver com dificuldades, mostre o que você tem tentado.
  9. O código está correto, mas precisa definir o terceiro parâmetro na função setElementData. Acredito que você queira verificar se a conta é admin, então deixe como true. setElementData(player, "conta:admin", true)
  10. Respondi nas mensagens privadas aqui do fórum.
  11. Olá! MySQL, de fato, seria o mais ideal nesse caso, pois você teria já disponível em ambos servidores (no servidor MTA e no site). Da forma que você deseja fazer, usando a internal, acredito que só seria possível usando funções HTTP, como se fosse um BOT do Discord, onde do site você iria fazer uma requisição para o servidor MTA, usando as funções HTTP disponíveis pelo seu resource. De qualquer forma, mesmo que fosse por MySQL, se você quisesse algo direto (dar VIP para algum jogador e já aparecer no servidor), precisaria das funções HTTP.
  12. Olá! Seja bem-vindo(a) ao fórum. Nós aqui do fórum não fornecemos o código pronto, a menos que a pessoa já tenha tentado algo e esteja fielmente pedindo por ajuda. Porém, nós podemos te fornecer as funções e os eventos necessários para fazer o que você deseja. O que você deseja fazer não é algo tão complicado. Um pouco de conhecimento em Lua e com algumas funções do MTA já é suficiente. Vou te dizer quais você deve usar. Para o comando /listplayers: addCommandHandler - para adicionar o comando; getPlayerCount - para obter o total de jogadores online no servidor; outputChatBox - para mostrar a mensagem no chat. Para o comando /listkills: addCommandHandler - para adicionar o comando; getElementsByType - para obter todos os jogadores do servidor; (1) getElementData - para obter o dado de kills; (2) table.sort - para ordenar a tabela, de acordo com os kills; (3) outputChatBox - para mostrar a mensagem no chat. Referências: Lembrando que a função getElementsByType retorna uma tabela. Sendo assim, você deve ter conhecimento com laços de repetição. Dei o exemplo usando getElementData, mas isso depende totalmente do seu sistema. Não sei como está sendo salvo (se é que o script existe). A função table.sort trabalha com tabelas. Sendo assim, isso requer conhecimento sobre, uma vez que informações como o nome do jogador, total de kills serão armazenados em uma tabela. Se você é novo em Lua e está começando a aprender sobre scripting no MTA, vale a pena dar uma olhada nestes links: Como a Wiki do MTA funciona Tutorial Lua e MTA para completos iniciantes Uma playlist para você aprender a escrever os seus próprios scripts (com um mini projeto durante as aulas) Também é super válido você perguntar suas dúvidas, tanto aqui no fórum quanto em nosso servidor oficial do Discord.
  13. Olá! Seja bem-vindo(a) ao fórum. Primeiramente, partindo do princípio de que banco de dados foi feito para salvar dados únicos, e não um objeto, como JSON. Da forma que você está tentando fazer, fica um pouco mais complicado. Pois, você iria precisar: Criar uma função, cuja recebe o objeto JSON do db; Converter para um formato que o MTA entenda, usando fromJSON; Inserir o resultado do fromJSON em uma tabela, com seus respectivos índice e valor. Uma vez com a tabela contendo os índices e valores, você iria alterar o valor de alguma delas e converter novamente para JSON, usando toJSON. Daí você estaria pronto para salvar novamente os itens do jogador no banco de dados. Exemplo: local playerItems = [[ [ { "maconha": [ 1, 1 ], "cocaina": [ 5, 2 ], "factionid": 1, "anfetamina": [ 3, 3 ], "crack": [ 1, 4 ], "heroina": [ 25, 5 ], "alcool": [ 0, 0 ] } ] ]] -- Pegando como exemplo o seu, da forma que retornaria do banco de dados function convertJSONToTable(object) -- Função para converter JSON em uma tabela no qual poderemos modificar local JSON = fromJSON(object) local data = {} for index, value in pairs(JSON) do data[index] = value end return data end local myItems = convertJSONToTable(playerItems) -- Modificando o valor myItems["crack"][1] = 2 -- [edita_este_valor, 4] myItems["crack"][2] = 6 -- [1, edita_este_valor] local modifiedItems = toJSON(myItems) -- Salve o "modifiedItems" no banco de dados
  14. Olá! Movi o seu tópico para a seção correta, uma vez que envolve o Cliente do MTA.
  15. Olá! Por favor, peço para que use a ferramenta Code quando for enviar códigos Lua.
  16. Opa, foi mal a demora @Boechat. Você precisa instalar o Node.js na sua máquina (ou seja lá onde você irá hospedar).
  17. Olá! Seja bem-vindo(a) ao fórum. Peço para que use a formatação Code, quando for enviar códigos Lua. Em relação à sua dúvida, basta alterar o thePlayer para hitElement, ali dentro da função getElementModel. Você definiu na função do marker que seria hitElement o jogador, portanto não existe thePlayer.
  18. Olá! Tópico movido para a seção de Programação em Lua, uma vez que relacionado com códigos Lua.
  19. Olá! Existe uma função implementada não tão recente no MTA, que permite que você obtenha todos os comandos do servidor, com possibilidade de especificar um resource. Você pode consultá-la aqui: getCommandHandlers. A função que o amigo @Santi enviou, iria servir para outros propósitos, embora ela seja bem pesada para ser usada enquanto o servidor está em produção. O recomendado é utilizar num servidor de testes, onde não haveria nenhum empecilho para com os jogadores; como Network Troubles e outros travamentos.
  20. Olá! O erro ocorre pois em nenhum momento você pede para que a cor seja alterada. A cor está sendo salva no elementData cargo->cor. Sendo assim, você também deve obtê-la. Uma vez com ela, basta aplicar naquela função tocolor. Ficaria algo desta forma: local color = getElementData(player, "cargo->cor") dxDrawText(cargo, x - 1 - w / 2, y - -20 - h - 12 - 18, w, h, tocolor(color[1], color[2], color[3], 255), 1.2, font) Como tal elementData armazena uma tabela, nós obtemos o índice de cada um. Digamos que eu possuo o cargo MOD, então a variável color receberia: {255, 140, 140}. Logo, aqueles valores definidos dentro da função tocolor, seriam o mesmo que: color[1] = 255, color[2] = 140 e color[3] = 140.
  21. Olá. Movi o seu tópico para a seção de Programação em Lua, visto que se trata de código. Sobre a sua dúvida, acredito que o erro não esteja nessa função, e sim onde ela tá sendo chamada. Se você puder fornecer um trecho de código de onde a função tá sendo chamada, ficaria mais simples de responder. E por favor, numa próxima vez que for enviar códigos, use o botão Code. Você pode encontrá-lo aqui:
  22. Olá. Seja bem-vindo(a) ao fórum. É bem provável que você tenha removido o resource admin da ACL de Admin. Em caso de dúvidas, faça backup do arquivo acl.xml e substitua por um que não tenha nenhuma modificação. Você pode encontrar o arquivo original do jogo aqui. (Basta apertar CTRL + A e salvar)
  23. Editei aquele seu código: local window = guiCreateWindow(0.22, 0.10, 0.73, 0.75, "DISCORD LOGIN", true) local browser = guiCreateBrowser(0, 0, 990, 610, false, false, false, window) local theBrowser = guiGetBrowser(browser) addEventHandler("onClientResourceStart", resourceRoot, function() requestBrowserDomains({"discord.com", "discordapp.com"}) end) addEventHandler("onClientBrowserCreated", theBrowser, function() loadBrowserURL(source, "https://discord.com/login") end) addEventHandler("onClientBrowserWhitelistChange", root, function() if theBrowser then loadBrowserURL(theBrowser, "https://discord.com/login") end end)
  24. Olá. O Google e o YouTube são sites verificados pelo MTA. Para usar outros sites, você deve permitir o domínio através da função requestBrowserDomains.
  25. Não precisa, foi só um exemplo.
×
×
  • Create New...