Jump to content

androksi

Other Languages Moderators
  • Posts

    545
  • Joined

  • Last visited

  • Days Won

    38

Everything posted by androksi

  1. "shoes" armazena qual valor? 1, 2, 3, 4...?
  2. Dá sim. Basta usar as funções exportadas ou a função triggerClientEvent.
  3. Utilize o resource da comunidade: https://community.multitheftauto.com/index.php?p=resources&s=details&id=131 Está descompilado, sem erros e basta traduzir as mensagens.
  4. Quando a função for chamada, um novo tempo será definido. Pelo o que eu vejo na sua tabela: 5, 10, 15 ou 20 minutos. Opcional. Não irá fazer muita diferença neste caso.
  5. É uma opção pessoal. Prefiro usar onMarkerHit pois você pode já anexar o marker neste evento, acho que facilitaria pra ele e deixaria mais otimizado. Já no onPlayerMarkerHit não é possível anexar um marker, você tem que adicionar o evento como root e, dentro do evento, verificar os marcadores.
  6. Você colocou pra destruir "rndPos", sendo que rndPos é uma variável que tá armazenando posições. Tente substituir por isso: if ( marker and isElement( marker ) ) then destroyElement( marker ); end if ( blip and isElement( blip ) ) then destroyElement( blip ); end if ( object and isElement( object ) ) then destroyElement( object ); end Também, retire a palavra local antes de marker, blip e object. Se eu fosse você, passaria a usar o evento onMarkerHit ao invés de onPlayerMarkerHit.
  7. Não. Como você sabe, basta converter skins do GTA pro MTA. O que eu disse é sobre personalizar o personagem. Vários tipos de pele, cabelo, tamanho do nariz, boca, olhos, seios, bunda, novas camisas, luvas e calças, esses itens em geral, isso sim é tudo no CJ, feito com shaders. O sistema é simples de fazer, mas criar esses modelos/texturas é bem complexo.
  8. Não, não é possível. Apenas o CJ é compatível com isso.
  9. Isso é feito através de shaders. Basicamente, você precisa criar texturas de pele, rosto, cabelo, camisas, calças, tênis etc e aplicar no CJ. Daí você poderá facilmente alterar a roupa, pele, cabelo, apenas aplicando shaders.
  10. Tente redimensionar para 256, tanto na largura quanto na altura. Se mesmo assim não funcionar, baixe outra camisa.
  11. Existe sim, Lord. -> https://wiki.multitheftauto.com/wiki/Clothing_Component_IDs
  12. De onde você está baixando essas novas texturas? A textura deve estar assim e ter tamanho 256x256.
  13. Exemplo com localPlayer -- // CLIENT-SIDE triggerServerEvent( "someTrigger", localPlayer, 1, 2, 3 ); -- // SERVER-SIDE addEvent( "someTrigger", true ); addEventHandler( "someTrigger", root, function( n1, n2, n3 ) print( n1 ); -- // retorna 1 print( n2 ); -- // retorna 2 print( n3 ); -- // retorna 3 --[[ Quando você usa o parâmetro 'localPlayer' em algum triggerServerEvent, o elemento retornado é source. Abaixo está um exemplo simples de como obter o nickname do jogador que executou o 'someTrigger'. ]]-- print( getPlayerName( source ) ); end ); Exemplo com resourceRoot -- // CLIENT-SIDE triggerServerEvent( "someTrigger", resourceRoot, 1, 2, 3 ); -- // SERVER-SIDE addEvent( "someTrigger", true ); addEventHandler( "someTrigger", resourceRoot, function( n1, n2, n3 ) print( n1 ); -- // retorna 1 print( n2 ); -- // retorna 2 print( n3 ); -- // retorna 3 --[[ Agora, quando você usa o parâmetro 'resourceRoot' em algum triggerServerEvent, o elemento retornado é client (que seria o mesmo caso do source, porém client). Veja o exemplo abaixo. ]]-- print( getPlayerName( client ) ); end );
  14. Não é necessário, mas como você disse Então sim, pode destruir os elementos e anular as variáveis. A propósito, vejo que você ainda está errando naquilo que eu lhe disse, sobre nomes iguais em tabelas. Veja o seu código com atenção e tente-o corrigir. Cada vez que você posta algo aqui, fico surpreendido com sua evolução. De fato, colocar todos os elementos dentro de apenas uma função, fica bem otimizado. Seus eventos estão otimizados. Lembre-se: verifique o seu código e tente encontrar os erros de repetição.
  15. Quando você aciona a função de aparecer o login ou registro, você está CRIANDO novamente o conteúdo, esse é o motivo do travamento. Use simplesmente a função guiSetVisible para deixar a window visível. Outro detalhe: você está usando, novamente, o mesmo nome para dois elementos. Isto: CEGUI.image["background"] = guiCreateStaticImage( 0, 0, screenW, screenH, "files/background.jpg", false ) Troque o nome da janela de registro para "background_register" e a janela de login para "background_login". Daí, para fazer aparecer ou ocultar, basta fazer isso: addEventHandler ("onClientGUIClick", guiRoot, function() if (source == CEGUI.button["back"]) then guiSetVisible( CEGUI.image[ "background_login" ], true ); -- // Irá voltar para a janela de login guiSetVisible( CEGUI.image[ "background_register" ], false ); -- // Irá ocultar a janela de registro e seus respectivos elementos que estão anexados. end end end)
  16. Verifique se a resolução do seu monitor é igual a resolução do MTA. Se o seu monitor for 1920x1080, também deixe, dentro do jogo, 1920x1080. (Lembre-se que a taxa de bits também influencia x16/x32). Caso não resolva, pode ser problema de compatibilidade do seu driver de vídeo com o Windows 10.
  17. Faça assim: -- // CLIENT-SIDE addEventHandler( "onClientPlayerDamage", root, function( attacker, weapon, bodypart, loss ) cancelEvent( ); -- // Cancela o dano if ( attacker == localPlayer ) then -- // Verifica se o 'attacker' é o jogador que está dando dano e não o que está sofrendo o dano triggerServerEvent( "onClientGotDamage", localPlayer, attacker, weapon, bodypart, loss, source ); -- // Sincroniza o dano else if ( weapon == 53 ) then -- // Verifica se o jogador sofreu uma queda setElementHealth( localPlayer, loss ); -- // Sofreu? Então ele perderá vida end end end ); -- // SERVER-SIDE local TABLE_DAMAGE = { -- // [ID da Arma] = Novo Dano [23] = 20, -- // Pistola Silenciada [24] = 35, -- // Desert Eagle [30] = 25, -- // AK-47 }; addEvent( "onClientGotDamage", true ) -- // atirador, arma, bodypart, dano, alvo addEventHandler( "onClientGotDamage", root, function( attacker, weapon, bodypart, damage, target ) if ( not isPeadDead( attacker ) ) then -- // Caso o atirador esteja morto, o alvo não sofrerá mais danos local newDamage local targetArmor = getPedArmor( target ); -- // Obtém o valor do colete (se tiver) local targetHealth = getElementHealth( target ); -- // Obtém o valor da vida if ( getElementData( attacker, "mane123" ) ) then -- // A sua verificação, se ele é um "admin" local g_Damage = TABLE_DAMAGE[ weapon ] or damage; newDamage = g_Damage; if ( targetArmor > 0 ) then -- // O alvo tem colete? setPedArmor( target, targetArmor - newDamage ); else -- // O alvo não tem colete? Então bora tirar a vida dele. local h = math.max( targetHealth - newDamage, 0 ); setElementHealth( target, h ); if ( h <= 0 ) then killPed( target, attacker, weapon, bodypart, false ); end end end end end );
  18. Usando essa função creio eu que não, não seja possível. Porém há outra forma de fazer isso. Usando o evento onClientPlayerDamage.
  19. Obtenha o texto com guiGetText e verifique se é maior que 0. Exemplo: local g_Text = guiGetText( eLogin ); if ( #g_Text > 0 ) then -- O símbolo # (hashtag) antes de uma variável que é string, retorna o valor de caracteres que essa variável possui. -- // blá, blá, blá end OBS.: Não é recomendado colocar o mesmo nome da variável para a mesma função. Você definiu "eLogin" para o campo de login e registro. Sendo assim, use sempre tabelas para armazenar e poupar Memória RAM do jogador. local CEGUI = { window = { }, button = { }, edit = { }, gridlist = { } } -- // Exemplo com números CEGUI.window[ 1 ] = guiCreateWindow( ... ); CEGUI.button[ 1 ] = guiCreateButton( ... ); CEGUI.edit[ 1 ] = guiCreateEdit( ... ); CEGUI.edit[ 2 ] = guiCreateEdit( ... ); -- // Exemplo com strings (nomes) CEGUI.window[ "janelaPrincipal" ] = guiCreateWindow( ... ); CEGUI.button[ "botãoRegistro" ] = guiCreateButton( ... ); CEGUI.edit[ "campoUsuário" ] = guiCreateEdit( ... ); CEGUI.edit[ "campoSenha" ] = guiCreateEdit( ... ); --[[ Você pode usar tanto números quanto nomes. (Para mim, nomes são melhores para facilitar o que cada um é) SIM! Você pode usar acentuação caso esteja usando strings. ]]--
  20. Veja este tópico já resolvido. É o mesmo conceito.
  21. Engraçado que ele começa falando que o script é para retirar as armas, depois que uma barra de progresso chegar em 100%. De repente, no segundo reply dele, o propósito do script muda. OMEGALUL
  22. KKKKK. Concordo. É que eu uso minha framework, aí eu meio que fiz todas as funções GUI como DX. dxCreateGridList, dxCreateButton, dxCreateScrollBar, dxCreateWindow, dxWindowSetMovable, dxWindowSetSizable etc. Todas as funções de GUI, porém em DX. Acabei me esquecendo desse detalhe do render.
  23. Isso definitivamente NÃO é normal. Eu costumo fazer meus painéis em DirectX(DX) e nunca tive problemas com performance.
  24. Apenas fiz um exemplo. Você escreve o código do jeito que quiser (claro, dentro dos padrões da programação). Respondendo: Sim, pode deixá-los fora de alguma função.
×
×
  • Create New...