-
Posts
545 -
Joined
-
Last visited
-
Days Won
38
Everything posted by androksi
-
Se sua definição de "logados" for apenas os jogadores que estiverem registrados e usando uma conta, você pode usar, em um evento onPlayerLogin, a função setElementData e adicionar uma data temporária e, na função de adicionar os jogadores na GridList, basta verificar com getElementData. -- // SERVER-SIDE addEventHandler( "onPlayerLogin", root, function( _, acc ) -- // Assim que o jogador logar, vamos armazenar, dentro da uma data, o valor true setElementData( source, "isPlayerLoggedIn", true ); end ); -- // CLIENT-SIDE local Screen = Vector2( guiGetScreenSize( ) ); local gridList = guiCreateGridList( Screen.x - 300, Screen.y + 250, 280, 180, false ); guiGridListAddColumn( gridList, "Jogadores", 0.85 ); -- // Adicionar apenas os jogadores logados for _, v in pairs( getElementsByType( "player" ) ) do if ( getElementData( v, "isPlayerLoggedIn" ) ) then local row = guiGridListAddRow( gridList ); guiGridListSetItemText( gridList, row, 1, string.gsub( getPlayerName( v ), "#%x%x%x%x%x%x", "" ), false, false ); end end
-
Melhorou!
-
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".
-
Troque a fonte de "default" para "default-bold".
-
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.
-
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.
- 19 replies
-
- 1
-
- programação em lua
- scripts
-
(and 2 more)
Tagged with:
-
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
-
Que tipo de bug?
-
O certo é "y*" no parâmetro de tamanho da fonte.
-
AJUDA! Contas/Database
androksi replied to UltimaterSCR's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
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. -
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 );
-
Aquele primeiro lá de cima você deixa como estava. APENAS retire o () do resourceRoot referente ao evento.
-
Retire o () do resourceRoot.
-
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.
-
Troque o getRootElement( ) para resourceRoot.
-
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.
-
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?
-
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.
-
[AJUDA]Login/Contas
androksi replied to UltimaterSCR's topic in Ajudas relacionadas ao MTA:SA (Cliente/Servidor)
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. -
@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.
-
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
-
[Ajuda] Obter a index referente à batida da música
androksi replied to androksi's topic in Programação em Lua
Feito o que eu queria. Obrigado a todos que responderam. Isto que eu pretendia fazer: RESOLVIDO! -
[Ajuda] Obter a index referente à batida da música
androksi replied to androksi's topic in Programação em Lua
@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. -
[Ajuda] Obter a index referente à batida da música
androksi replied to androksi's topic in Programação em Lua
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. -
[Ajuda] Obter a index referente à batida da música
androksi replied to androksi's topic in Programação em Lua
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.