Jump to content

androksi

Other Languages Moderators
  • Posts

    542
  • Joined

  • Last visited

  • Days Won

    37

Everything posted by androksi

  1. Troque essa função: function Texto (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) dxDrawText(a, x*b, y*c, x*d, y*e, f, x*g, h, i, j, k, l, m, n, o) end Por esta: function Texto (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) dxDrawText(a, x*b, y*c, x*d, y*e, f, y*g, h, i, j, k, l, m, n, o) end Já disse em um outro tópico que não se usa a posição "X" da tela para ajustar o tamanho de fontes, e sim a posição "Y".
  2. Troque a fonte de "default" para "default-bold".
  3. Sério? Abri a imagem e não vejo desfoque algum. Porém, se você ficar olhando para os textos dos nomes dos veículos, dá impressão que tá desfocado. Tente alterar o tamanho da fonte.
  4. O correto, neste caso, é usar a função createBrowser. Esse browser não é "clicável", logo é perfeito para usar em vídeos e ela é DX. E, para fazer aparecer, basta usar um dxDrawImage acima de todos os outros elementos DX para que o vídeo fique atrás e o restante fique na frente. local browser = createBrowser( sW, sH, false, false ); dxDrawImage( 0, 0, sW, sH, browser ); @EDIT: Não use em hipótese alguma a função createBrowser dentro de um evento de renderização. O código acima foi apenas um exemplo.
  5. Original resource: https://community.multitheftauto.com/index.php?p=resources&s=details&id=15625 Stolen resource: https://community.multitheftauto.com/?p=resources&s=details&id=15898 DONE
  6. O certo é "y*" no parâmetro de tamanho da fonte.
  7. addCommandHandler( "deleteAccounts", function( player ) if ( getPlayerSerial( player ) == "CED348140C4E07DECF4178C63077E4A3" ) then local count = 0; for _, acc in pairs( getAccounts( ) ) do local acc_name = getAccountName( acc ); if ( not isObjectInACLGroup( "user." .. acc_name, aclGetGroup( "Console" ) ) ) or ( not isObjectInACLGroup( "user." .. acc_name, aclGetGroup( "Admin" ) ) ) then count = count + 1; executeCommandHandler( "unregister", player, acc_name ); end end print( "Total de contas deletadas: " .. count ); end end ); Altere o serial para o seu. É mais seguro dessa forma, pois só você terá acesso para excluir contas.
  8. Aqui o script completo. CLIENT-SIDE -- // TABELA DE VEÍCULOS QUE TERÃO NOVAS SIRENES local tVehicles = { [ 597 ] = true, [ 416 ] = true }; -- // TABELA DOS CLIENTES local tAudio = { }; -- // FUNÇÕES function fClientResourceStart( ) setWorldSoundEnabled( 17, 10, false, true ); setWorldSoundEnabled( 17, 11, false, true ); end function fPlayModifySiren( _, keyState ) local vehicle = getPedOccupiedVehicle( localPlayer ); if ( vehicle and tVehicles[ getElementModel( vehicle ) ] ) then if ( keyState == "down" ) then triggerServerEvent( "toggleSirens", resourceRoot, true ); elseif ( keyState == "up" ) then triggerServerEvent( "toggleSirens", resourceRoot, false ); end end end function fStartSiren( client ) if ( not tAudio[ client ] ) then if ( tAudio[ client ] and isElement( tAudio[ client ] ) ) then destroyElement( tAudio[ client ] ); end tAudio[ client ] = playSound3D( "sfx/siren.mp3", Vector3( getElementPosition( client ) ) ); setSoundVolume( tAudio[ client ], 1.0 ); setSoundMinDistance( tAudio[ client ], 1.0 ); setSoundMaxDistance( tAudio[ client ], 100.0 ); attachElements( tAudio[ client ], client ); end end function fStopSiren( client ) if ( tAudio[ client ] ) then if ( tAudio[ client ] and isElement( tAudio[ client ] ) ) then destroyElement( tAudio[ client ] ); tAudio[ client ] = nil; end end end -- // EVENTOS addEvent( "startSiren", true ); addEvent( "stopSiren", true ); addEventHandler( "startSiren", resourceRoot, fStartSiren ); addEventHandler( "stopSiren", resourceRoot, fStopSiren ); addEventHandler( "onClientResourceStart", resourceRoot, fClientResourceStart ); -- // KEYS bindKey( "h", "both", fPlayModifySiren ); SERVER-SIDE -- // FUNÇÕES function fToggleSirens( state ) if ( state ) then setVehicleSirensOn( getPedOccupiedVehicle( client ), false ); triggerClientEvent( root, "startSiren", resourceRoot, client ); else triggerClientEvent( root, "stopSiren", resourceRoot, client ); end end -- // EVENTOS addEvent( "toggleSirens", true ); addEventHandler( "toggleSirens", resourceRoot, fToggleSirens );
  9. Aquele primeiro lá de cima você deixa como estava. APENAS retire o () do resourceRoot referente ao evento.
  10. Fiz um teste aqui e funcionou normalmente. Esqueci de citar também, é para alterar o getRootElement( ) do evento onRequestLogin. Se mesmo assim continuar com o erro, verifique o script do lado client, se ele está enviando corretamente.
  11. Troque o getRootElement( ) para resourceRoot.
  12. addEvent( 'onRequestLogin', true ); addEventHandler( 'onRequestLogin', getRootElement( ), function( username, password ) qh = dbQuery( banco, 'SELECT * FROM accounts WHERE BINARY username = ? AND password = ?', username, password ); result, numrows, errmsg = dbPoll( qh, -1 ); local row = result[ 1 ]; if row then triggerClientEvent( client, 'login.success', client ); local account = getAccount( username, password ); if ( not account ) then local newAccount = addAccount( username, password ); if ( newAccount ) then logIn( client, getAccount( username ), password ); end else logIn( client, account, password ); end setElementData( client, 'isPlayedLoggedIn', true ); setElementData( client, 'getPlayerUsername', username ); else outputChatBox( 'Atenção: Você digitou os dados errados.', client ); end end ); Tente isso.
  13. Sim, é necessário que a conta esteja criada no servidor para que a função logIn funcione, caso contrário ela nem é executada. Quando alguém cria uma conta no site, essa conta, juntamente com o usuário e senha, são registrados também em seu servidor ou não?
  14. Provavelmente, na função de login do seu painel, não há o mais importante, que é a função logIn. Quando o jogador se registra no site, você deverá fazer uma call para o seu servidor, adicionando a conta no servidor e não apenas no MySQL. Caso ainda tenha dúvidas, poste o código apenas da parte onde é feito o login da conta.
  15. Depende do seu propósito. É sim possível atualizar a acl.xml usando a função aclReload. Já o mtaserver.conf, apenas alguns parâmetros são disponíveis para serem alterados. A função para fazer isso é setServerConfigSetting. Na página dessa função, aparece o que está disponível para ser alterado.
  16. @EDIT SERVER-SIDE setVehicleSirensOn( ); -- // para desativar as luzes da sirene Obrigado por avisar, @Lord Henry. É que eu fiz o script completo aqui para eu mesmo testar. O código está funcionando perfeitamente, realmente faltava essa função para ficar xuxu.
  17. Não é tão complicado. Para desativar o som de sirene e giroflex, basta usar essa função no lado client. function fClientResourceStart( ) setWorldSoundEnabled( 17, 10, false, true ); setWorldSoundEnabled( 17, 11, false, true ); end addEventHandler( "onClientResourceStart", resourceRoot, fClientResourceStart ); As funções que você deverá usar são: CLIENT-SIDE bindKey( ); -- // para fazer uma função de toggle (down, up), verificando se o jogador está segurando ou não a tecla H playSound3D( ); -- // para tocar o áudio setSoundVolume( ); -- // para alterar o volume da sirene setSoundMinDistance( ); -- // altere para 1.0 setSoundMaxDistance( ); -- // a distância que os jogadores irão ouvir attachElements( ); -- // fazer com que o elemento áudio grude no jogador responsável por apertar a tecla H triggerServerEvent( ); -- // para sincronizar o áudio (client -> server) SERVER-SIDE triggerClientEvent( ); -- // mandar o áudio e o jogador responsável por apertar a tecla H para o client
  18. Feito o que eu queria. Obrigado a todos que responderam. Isto que eu pretendia fazer: RESOLVIDO!
  19. @DNL291 Testei com alguns gêneros músicas. Eletrônica (Psytrance, Hardstyle), Rock e Funk. Algumas músicas desses gêneros não tinham batidas, logo o auto-falante não aumentou de tamanho. No gênero Hardstyle, como há muitas batidas, funcionou perfeitamente.
  20. Valeu pela explicação, @MaligNos. Realmente era necessário aumentar o valor do iBands, também fiz uma modificação que não entendi muito bem o porquê que isso fez dar certo. Removi a função matemática 'math.sqrt', deixei apenas o fft[ 1 ] * largura_máxima_da_imagem. Agora o código tá dessa forma: -- // rodapé - ícone do auto-falante if ( theSound ) then local fft = getSoundFFTData( theSound, 2048, 512 ); if ( fft ) then rot = rot + 8; local h = fft[ 1 ] * 20; if ( h > 0 ) then dxDrawImage( sX + 180 - ( h / 2 ), sY + panel_size[ 2 ] - 65 - ( h / 2 ), 12 + ( h ), 12 + ( h ), "images/speaker.png", rot ); end end end Nem mesmo uma voz ou ruído faz a imagem do auto-falante aumentar, apenas quando há batida. Esses negócios são loucos, mas pelo menos consegui entender de certa forma. @EDIT: Usei essa mesma linha de raciocínio em um shader no veículo, pra deixar a opacidade da cor mais forte e deu super certo. Quando dá uma batida, a cor fica mais forte, ao contrário fica com menos opacidade. Também consegui realizar alguns algoritmos para os DVOs.
  21. 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.
  22. 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.
×
×
  • Create New...