MaligNos

Members
  • Content Count

    386
  • Joined

  • Last visited

  • Days Won

    1

MaligNos last won the day on March 2

MaligNos had the most liked content!

Community Reputation

115 Excellent

4 Followers

About MaligNos

  • Rank
    Street Cat

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Lá na última linha tá destroyElement, troque por DestroyMarker (confundi quando reescrevi o trecho)
  2. Tente usar esse: function DestroyMarker(source) if isElementWithinMarker(source, destroyM) then local veiculo = getPedOccupiedVehicle (source) if (veiculo) then destroyElement(veiculo) end end end addCommandHandler("destruir", destroyElement) Se não der, apague o arquivo, crie um novo e tente reescrever de novo, pois o código em si está ok.
  3. Se não me engano, existe animações em que é possível andar normalmente enquanto executa, talvez esse seja o caso... mas ai se a animação que você quer, não seja a que é possível andar, pode tentar coloca-la no lugar de alguma que pode: engineLoadIFP
  4. Já ouvi comentários de um tal bug quando copia e cola o código, tente ao invés de copiar, reescrever o código como está aqui.
  5. Na realidade o ponto chave de aprender é tentar! function DestroyMarker(source) if isElementWithinMarker(source, destroyM) then local veiculo = getPedOccupiedVehicle (source) if (veiculo) then destroyElement(veiculo) end end end addCommandHandler("destruir", DestroyMarker) Não entendi o que tú quer fazer com aquela tabela veh, então deixei de acordo com o que foi descrito no tópico.
  6. Infelizmente sim, embora na wiki não informe, existe essa limitação: LINK Na arma também não tem como, o que fazem é uma “gambiarra” deixando invisível o modelo real da arma e anexando ao ped objetos quaisquer que tiveram seu modelo substituído por alguma arma, ou seja, na verdade a arma personalizada pode ser uma pizza (objeto) que foi grudado na sua mão. Com armas até que é viável, já com carros usando tal técnica seria um negócio bem feioso, pois perderia interação... a lataria não danificaria, o pneu não rodaria, a porta não abriria e etc.
  7. O título pelo mesmo fica claro que é ao menos dois com a mesma .dff De qualquer modo, não tem como um player visualizar diferentes modelos/texturas num mesmo veículo. Em relação a sirene em outras motos, pode-se criar algum script de sirene personalizada, visto que addVehicleSirens não funciona com motos.
  8. txd = engineLoadTXD ( "pmerj.txd" ) engineImportTXD ( txd, 522 ) txd = engineLoadTXD ( "pmesp.txd" ) engineImportTXD ( txd, 521 ) txd = engineLoadTXD ( "detran.txd" ) engineImportTXD ( txd, 461 ) dff = engineLoadDFF ( "model.dff" ) engineReplaceModel ( dff, 522 ) engineReplaceModel ( dff, 521 ) engineReplaceModel ( dff, 461 ) Desse modo, eu teria três motos com o modelo igual, porém com a textura diferente (as texturas devem ser compatíveis com o modelo).
  9. Uma boa também é usar resourceRoot no lugar de root, assim aciona a função apenas para elementos pertencentes ao mesmo resource, evitando com isso chamadas desnecessárias por elementos de outros resources.
  10. API: https://vp9lluyksc.execute-api.sa-east-1.amazonaws.com/dev/mtasa?ip=127.0.0.1&port=22003 Pode usar por enquanto, mas o ideal é você buscar algo próprio seguindo o caminho informado pelo DNL291, pois depender de terceiros (ainda mais em serviços free) você não tem garantia de segurança, estabilidade, etc.
  11. Daquele jeito nunca irá mostrar a 1ª mensagem e também não foi definido condição de parada do timer (vai acessar posições indevidas do array). tMensagems = 1 -- TEMPO cont = 0 MensagensInfo = { "Falta 10 Minutos para acabar o Roud.", "Falta 9 Minutos para acabar o Roud.", "Falta 8 Minutos para acabar o Roud.", "Falta 7 Minutos para acabar o Roud.", "Falta 6 Minutos para acabar o Roud.", "Falta 5 Minutos para acabar o Roud.", "Falta 4 Minutos para acabar o Roud.", "Falta 3 Minutos para acabar o Roud.", "Falta 2 Minutos para acabar o Roud.", "Falta 1 Minutos para acabar o Roud.", "Roud Finalizado. X1 de Costas Será iniciado!", } setTimer(function ( ) cont = cont +1 outputChatBox ('#FF0000[INFO]: #FFFFFF'..MensagensInfo[cont] ,getRootElement(),255,255,255,true) end, tMensagems * 60000 , #MensagensInfo)
  12. Infelizmente para esses casos deve-se recorrer a alguma aplicação externa, seja gratuita ou paga, que dai basta efetuar uma simples chamada com fetchRemote que a aplicação cuida do resto. Na wiki do fetchRemote tem até um exemplo de envio de e-mail. Alguns sites que prestam esses serviços: E-mail: mailgun | sendgrid | mailtrap SMS: twilio, e vários outros por ai... O envio de e-mail é mais viável, podendo inclusive criar seu próprio servidor SMTP responsável por enviar os e-mails, e dai não precisar criar essa dependência com aplicações externas. Caso não queira muito trabalho na configuração dos servidores SMTP+HTTP, pode alugar alguma hospedagem web, que no caso já terá esses serviços, além de possibilitar ações além do envio de e-mail, usando talvez PHP-SDK / Node.js-SDK Já com SMS é mais complicado e custoso, visto as taxas das operadoras e etc… não optaria tal uso nesse caso.
  13. O ponto forte do uso de SMS/E-mail seria notificar o autor sobre as utilizações (ativações) trazendo por exemplo, qual IP ativou o resource, e com isso ser possível detectar casos de vazamento/roubo. Mas a segurança do resource em si (bloqueando utilizações indevidas), já seria o suficiente através do IP, pois o uso de SMS/E-mail para requisitar autorização de ativação se enquadraria mais como luxo, visto que o IP já é um dado que temos e é capaz de efetuar a autenticação através dele, sendo ainda que a utilização desses passos adicionais (gerar um código → enviar e-mail com o código → efetuar ação no e-mail → liberar ativação do resource) para autenticação, podem inclusive tornar o sistema mais vulnerável. Então acho que o ideal seria validar através do IP e caso o IP seja diferente do esperado, comunicasse o autor do resource de alguma forma.
  14. E com guiCreateStaticImage ? Particularmente acho esse processo de conversão custoso, a quantidade de dados transferidos seria algo considerável, e a mudança de formato não garante a segurança do dado, você basicamente está mudando o cabeçalho do arquivo e evitando a leitura por algumas aplicações, mas o corpo, o conteúdo em si, é o mesmo. Se não me engano, o fetchRemote tem um limite de dados para transferência, então dependendo do arquivo essa técnica não servirá. Acho que algo localmente, usando talvez base64 juntamente com alguma criptografia seria mais eficaz e seguro.
  15. Pelo que eu entendi, o site converte o formato do arquivo. Não sei como o MTA consegue carregar corretamente tal arquivo ao realizar essa “fake” mudança de formato... ou você fica efetuando o processo inverso ?