Jump to content

androksi

Other Languages Moderators
  • Posts

    546
  • Joined

  • Last visited

  • Days Won

    38

Everything posted by androksi

  1. Muitíssimo obrigado pelas respostas. Acho que eu não expliquei direito o que realmente eu quero fazer, é algo bem simples na real e eu já fiz diversas vezes. O problema não é como fazer, mas sim calcular certo. Fiz um vídeo rápido pra mostrar. Criei a imagem do auto-falante só pra mostrar a vocês. Então, como vocês perceberam, ao iniciar a música, apenas com as frequências mais graves, o tamanho da imagem sincroniza perfeitamente com a batida da música (usei cálculo simples pra isso). MAAAAS, quando a música começa com as outras frequências baixas, fica uma junção no auto-falante de 'frequências altas + frequências baixas'. É aí que tá. Queria apenas as frequências altas, para que o sincronismo da batida seja perfeito. Irei usar isso para outras coisas, não só com imagens. O código tá dessa forma: -- // rodapé - ícone do auto-falante if ( theSound ) then local fft = getSoundFFTData( theSound, 2048, 2 ); if ( fft ) then rot = rot + 5; local h = math.sqrt( fft[ 1 ] ) * 24; if ( h > 0 ) then dxDrawImage( sX + 180 - ( h / 2 ), sY + panel_size[ 2 ] - 65 - ( h / 2 ), 8 + ( h ), 8 + ( h ), "images/speaker.png", rot ); dxDrawImage( sX + 180 - ( h / 2 ), sY + panel_size[ 2 ] - 65 - ( h / 2 ), 8 + ( h ), 8 + ( h ), "images/speaker.png", rot ); end end end Defini o terceiro parâmetro da função getSoundFFTData para 2, pois achei que retornaria apenas o valor 1 como frequência alta, porém acho que estou errado.
  2. Desisto de tentar por mim mesmo! Então, é o seguinte, quero [título]. Já tentei de diversas formas e sempre retorna com um pouco de voz, quero apenas a batida. Usei todos os iSamples disponíveis e calculei diversas vezes o iBands, porém sempre tem voz no meio. local self.fftData = getSoundFFTData( self.sound, 4096, 256 ); -- // faço isso pra obter o gráfico do som if ( self.fftData ) then local beat = math.sqrt( self.fftData[ 8 ] ) * 256; -- // meu código abaixo (não irei mostrar o código todo, pois não é preciso) end Fiz um gráfico com dx-rectangle pra tentar ver qual seria a index do "beat", tentei a 8, mas ainda tem voz. Talvez o problema seja com o valor definido de iSamples ou iBands, não sei muito sobre essas parada de música.
  3. Use este script. Após ligá-lo, aperte a tecla 'num_8' para visualizar uma lista de todas as texturas, então pressione 'num_7' ou 'num_9' para navegar pela lista. Deixe um carro modificado perto de você, pois se a textura for detectada, o carro ficará com efeito colorido. Aperte 'K' para copiar o nome da textura e altere de 'vehiclegrunge256' para o nome da textura copiada. Caso o nome das texturas sejam diferentes, você precisará criar uma tabela, indexado ao ID do veículo.
  4. Sim, é possível fazer com shader. Não tenho muito conhecimento com shader, mas sei que é um pouco complicado isso que você quer.
  5. Troque dxDrawText(""..job"", (screenW * 0.8906) - 1, (screenH * 0.1000) - 1, (screenW * 0.9922) - 1, (screenH * 0.1417) - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_CicleSemi, "left", "center", false, false, false, false, false) Por dxDrawText(tostring( job ), (screenW * 0.8906) - 1, (screenH * 0.1000) - 1, (screenW * 0.9922) - 1, (screenH * 0.1417) - 1, tocolor(0, 0, 0, 255), 1.00, dxfont0_CicleSemi, "left", "center", false, false, false, false, false)
  6. Você também pode obter tabelas e/ou variáveis de outro script. Basta usar _G.nome_da_variavel. (Lembre-se que a variável deve ser global). Exemplo: - Script markerJob = { {1366.15, -1275.507, 12.6}, } -- Onde o carro do emprego deve aparecer. spawnCar = {} -- Lugares onde o jogador deve ir. routes = {} -- Onde termina o trabalho e o jogador recebe. endJob = {} - Obter em outro resource for i, v in pairs ( _G.markerJob ) do -- código end
  7. Abaixo da linha 9. function MotoristaDeUberAirNew () local Level = getElementData ( source, "Level" ) or 0 if Level >= 15 then TudoInvisivel () setElementVisibleTo ( MotoristaDeUber, source, true ) setElementData ( source, "AirNew>Encaminhamento", "Motorista de Uber" ) outputChatBox ( "Você foi aceito no Emprego de Motorista de Uber", source, 255, 255, 255, true ) outputChatBox ( "Para Iniciar os Serviços siga o Checkpoint Vermelho em seu Radar", source, 255, 255, 255, true ) setElementData ( source, "Emprego", false ) else -- outro código aqui end end addEvent( "Encaminhar>MotoristaDeUber", true ) addEventHandler( "Encaminhar>MotoristaDeUber", getRootElement(), MotoristaDeUberAirNew )
  8. Exatamente. Na parte do dxDrawText, se for criado com DX. Caso tenha dúvidas, poste a parte do código aqui.
  9. Use math.floor. Exemplo: local health = getElementHealth( localPlayer ); outputChatBox( math.floor( health ) );
  10. Obrigado por explicar. Estou há 8 ou 9 anos jogando e programando, mas nunca percebi que 'onPlayerMarkerHit' era um evento. Agora eu sei!
  11. O que você quer são shader de markers, ou seja, texturizar um marcador. Eu tenho um aqui: mShader. Não é o listrado, mas é fácil de editar, se souber mexer com design. Print/vídeo do marker: YouTube @EDIT: Ah, já ia me esquecendo de falar sobre o seu script. Ele está quase correto, o problema realmente é o tamanho e a altura dele que, em server-side, a colisão é meio bugada, digamos assim. É sempre bom verificar o tipo de elemento que o marcador está recebendo, então sempre utilize o parâmetro 'hitElement' ou do jeito que você quiser, tipo assim: local theMarker = createMarker( x, y, z, "cylinder", 1.25, 0, 171, 0, 220 ); function someFunction( hitElement, d ) if ( getElementType( hitElement ) == "player" ) and ( d ) then -- getElementType() verifica o tipo de elemento. A letra "d" serve para verificar se o jogador está na mesma dimensão que o marker. local playerPos = { getElementPosition( hitElement ) }; someVeh = createVehicle( 411, playerPos[ 1 ], playerPos[ 2 ], playerPos[ 3 ] + 0.5 ); warpPedIntoVehicle( hitElement, someVeh ); end end addEventHandler( "onMarkerHit", theMarker, someFunction )
  12. Bom, o meu conselho é criar um tópico em inglês, na seção inglesa. Marque o ccw e o Dutchman101. Eles têm um conhecimento superior ao nosso sobre isso.
  13. Nossa. É difícil encontrar jogadores com este erro. Já tive esse problema no meu outro computador. A solução que encontrei foi formatar ele e instalar os drivers originais de fábrica, diretamente do site. Creio eu que haja alguma solução que não precise formatar, porém desconheço.
  14. E aí. Realmente não funcionou. O problema é que essa função não serve para realizar tal ação, isto é, desativar aquele som de armas em Los Santos. Você deverá usar essa função: setWorldSoundEnabled Veja o exemplo feito pela própria Wiki do MTA: setWorldSoundEnabled
  15. Você também pode criar uma tabela e inserir dados nela. Exemplo: local _SCREEN = { guiGetScreenSize( ) }; local _W, _H = 320, 280; local _TABLE = { }; -- criar uma tabela. addEventHandler( "onClientResourceStart", resourceRoot, function( ) for i = 1, 32 do table.insert( _TABLE, { pID = i, pNick = "Player_" .. i, pPing = math.random( 50 ) } ); -- inserir 32 dados na tabela. end gridList = guiCreateGridList( _SCREEN[ 1 ] - ( _W + 5 ), ( _SCREEN[ 2 ] / 2 - _H / 2 ), _W, _H, false ); guiGridListAddColumn( gridList, "#", 0.15 ); guiGridListAddColumn( gridList, "Nickname", 0.40 ); guiGridListAddColumn( gridList, "Ping", 0.20 ); for i = 1, #_TABLE do local row = guiGridListAddRow( gridList ); guiGridListSetItemText( gridList, row, 1, _TABLE[ i ].pID, false, false ); guiGridListSetItemText( gridList, row, 2, _TABLE[ i ].pNick, false, false ); guiGridListSetItemText( gridList, row, 3, _TABLE[ i ].pPing, false, false ); end end )
  16. Você tá no caminho certo, rapaz. Apenas troque getVehicleNameFromModel por getElementModel. Use também os parâmetros que são corretos dentro da função. Neste caso: if ( not getElementModel( v ) == 481 ) then
  17. A função setAmbientSoundEnabled é client-side. Vejo que você está usando eventos que são server-side. addEventHandler( "onClientResourceStart", resourceRoot, function( ) setAmbientSoundEnabled( "general", false ); setAmbientSoundEnabled( "gunfire", false ); end ) Jogue este código em um script que seja client-side. Assim que você ligar, já irá funcionar.
  18. Você teria de pegar o modelo dos objetos e editá-los, por exemplo, no 3DSMax para remover as portas, janelas, etc.
  19. Isso é acontece quando você segura SHIFT+TAB com o RaidCall aberto. A solução é desativar o overlay do RaidCall. Settings -> Overlay (dentro do RC). Aí em cada um dos campos que irá aparecer, você aperta CTRL + Espaço pra deixar vazio.
  20. Talvez aumentando a qualidade. Verifique os parâmetros do voice dentro do arquivo mtaserver.conf. Os parâmetros padrões são esses: https://wiki.multitheftauto.com/wiki/Server_mtaserver.conf#voice
  21. androksi

    Samp & Mta

    Dá para fazer qualquer script no MTA, usando outras linguagens de programação. Como Java e C. Então essa parada de "impossível", na atual versão do MTA e toda a tecnologia que as linguagens nos proporcionam, não existe mais. É possível fazer qualquer coisa.
  22. Ah, sim, tudo bem. Desculpe a minha má interpretação. É que eu costumo trabalhar com servidores vinculados à sites. Neste caso, para mim, é mais fácil. De qualquer forma; você está correto sobre criar coisas que já existem, não faz sentido. AHAUHAHUAUHA
  23. Por que discorda. Lord? Para mim, banco de dados além de ser um ótimo recurso para armazenar dados e obtê-los de forma rápida, as chances de você perder os dados são menores. Já dados salvos na internal ou registry, podem ser perdidos facilmente caso ocorra alguma falha na hospedagem do servidor ou algo do tipo. Também, banco de dados (MySQL pra ser mais específico), possui comandos de realizar backup e salvar em determinado local. Bem, é assim que eu trabalho: usando banco de dados. Cada um faz do seu jeito.
  24. O melhor a se fazer é criar um banco de dados com as contas dos jogadores. Sendo assim, com um SELECT (bem escrito), levaria menos de 1 segundo para realizar uma verificação.
×
×
  • Create New...