Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,980
  • Joined

  • Last visited

  • Days Won

    181

Everything posted by Lord Henry

  1. Dai é bug do MTA. Não do código.
  2. Tá ae: https://dev.prineside.com/gtasa_samp_game_texture/view/effectsPC/ A textura que você procura talvez seja o smoke4 que é essa fumaça colorida que sai do flare. Ou então a textura sphere que é esse brilho de luz ao redor do flare.
  3. -- FUNÇÕES ÚTEIS function fadeInImage (posX, posY, sizeX, sizeY, texture, rotation, rotationCenterOffsetX, rotationCenterOffsetY, r, g, b, postGUI, theDuration, theType, thePeriod, theAmplitude, theOvershoot) local start = getTickCount() function renderIn () local now = getTickCount() local endTime = start + theDuration local elapsedTime = now - start local duration = endTime - start local progress = elapsedTime / duration local a = interpolateBetween (0, 0, 0, 255, 0, 0, progress, theType, thePeriod, theAmplitude, theOvershoot) dxDrawImage (posX, posY, sizeX, sizeY, texture, rotation, rotationCenterOffsetX, rotationCenterOffsetY, tocolor (r, g, b, a), postGUI) end addEventHandler ("onClientRender", root, renderIn) end function fadeOutImage (posX, posY, sizeX, sizeY, texture, rotation, rotationCenterOffsetX, rotationCenterOffsetY, r, g, b, postGUI, theDuration, theType, thePeriod, theAmplitude, theOvershoot) local start = getTickCount() removeEventHandler ("onClientRender", root, renderIn) function renderOut () local now = getTickCount() local endTime = start + theDuration local elapsedTime = now - start local duration = endTime - start local progress = elapsedTime / duration local a = interpolateBetween (255, 0, 0, 0, 0, 0, progress, theType, thePeriod, theAmplitude, theOvershoot) dxDrawImage (posX, posY, sizeX, sizeY, texture, rotation, rotationCenterOffsetX, rotationCenterOffsetY, tocolor (r, g, b, a), postGUI) end addEventHandler ("onClientRender", root, renderOut) setTimer (function() removeEventHandler ("onClientRender", root, renderOut) end, theDuration+100, 1) end -- CÓDIGO EM SI local screen = Vector2(guiGetScreenSize()) -- É o mesmo que: local screen.x, screen.y = guiGetScreenSize() local tempoAtivo = 3000 -- Tempo com a imagem visível. Não pode ser menor que o tempo da animação. local tempoOculto = 1000 -- Tempo com a imagem invisível. Não pode ser menor que o tempo da animação. local tempoAnimation = 1000 -- Tempo que cada fade demora para ser completado. local logo = dxCreateTexture ("image.png", "argb", false, "clamp") -- Aqui você coloca o nome da imagem da sua logo onde está "logo.png" addEventHandler ("onClientResourceStart", resourceRoot, function () -- Aqui é como se fosse dxDrawImage normal, só que vai incluir a duração da animação e easing da animação, por padrão usamos "Linear". fadeInImage (screen.x/2 - 100, 10, 200, 200, logo, 0, 0, 0, 255, 255, 255, true, tempoAnimation, "Linear") setTimer (fadeOutImage, tempoAtivo, 1, screen.x/2 - 100, 10, 200, 200, logo, 0, 0, 0, 255, 255, 255, true, tempoAnimation, "Linear") setTimer (function () fadeInImage (screen.x/2 - 100, 10, 200, 200, logo, 0, 0, 0, 255, 255, 255, true, tempoAnimation, "Linear") setTimer (fadeOutImage, tempoAtivo, 1, screen.x/2 - 100, 10, 200, 200, logo, 0, 0, 0, 255, 255, 255, true, tempoAnimation, "Linear") end, tempoAtivo+tempoOculto, 0) end)
  4. Aqui não é o local adequado para solicitar desban. E mesmo que não use nenhum cheat no MTA, você pode ser banido por ter algo no seu PC que esteja sendo detectado pelo MTA. O seu anti-lag no GTA por exemplo é ilegal, remova-o e deixe seu GTA limpo. Se o seu banimento é temporário, limpe seu PC e apenas aguarde o BAN expirar. Se o banimento é permanente, limpe seu PC e depois solicite desban EM INGLÊS nesse link com o máximo de informações possível.
  5. Você pode utilizar a função útil getPlayersInACLGroup que faz justamente isso que você precisa. Ela retorna uma tabela com todos os jogadores da ACL específica que estejam online. Depois basta contar quantos elementos tem nessa tabela, se for 4 ou mais então permite o assalto.
  6. @Frost.DEV Na próxima vez que for colar código no seu tópico, clique no botão <> em vez de colar direto no texto.
  7. Tópico trancado pois já foi respondido no seu outro tópico igual na seção internacional.
  8. @Igor Ricardo 66não fazemos drop de mods. Mas você pode tentar desenvolver seu próprio mod e nós iremos lhe ajudar. Você vai precisar da função setVehicleDamageProof.
  9. Seu código não tem nenhuma função de setar vida nem colete. Faltou a parte server-side.
  10. Você só precisa disso para ocultar toda a HUD do jogador: local screen = Vector2(guiGetScreenSize()) -- Obtém a resolução da tela do jogador. local rendering = false -- Serve como alternância para ativar/desativar o efeito com o mesmo comando. addEventHandler("onClientResourceStart", resourceRoot, function() myScreenSource = dxCreateScreenSource(screen.x, screen.y) -- Cria uma textura do tamanho da tela que recebe a printscreen do jogador. end) bindKey("F10", "down", function(key, state) -- Troque F10 pela tecla que deseja usar para ativar/desativar o efeito. showChat (rendering) -- Mostra/oculta o chatBox. if rendering then -- Se já está renderizando o efeito, então para de renderizar o efeito. removeEventHandler("onClientRender", root, renderEmptyScreen) else -- Se não está renderizando o efeito, então começa a renderizar o efeito. addEventHandler("onClientRender", root, renderEmptyScreen) end rendering = not rendering -- Alterna rendering entre true e false. end) function renderEmptyScreen() if myScreenSource then -- Se a textura foi criada com sucesso, então: dxUpdateScreenSource(myScreenSource) -- Captura o frame atual da tela do jogador e aplica na textura criada. dxDrawImage (0, 0, screen.x, screen.y, myScreenSource) -- Desenha essa textura na tela. end end
  11. function stringToPhone (str) local ddd = "("..string.sub(str, 0, 2)..")" local a = string.sub(str, 3, 6).."-" local b = string.sub(str, 7, 10) return ddd..a..b end print (stringToPhone(1140028922)) -- Vai printar isso: (11)4002-8922
  12. Não é necessário escrever em inglês neste tópico pois ele já foi movido para a seção Portuguesa. Escreva em inglês somente nos tópicos da seção internacional.
  13. Sim, eu entendi oq vc quis dizer. Você quer que a aba fique desativada, trancada para não ser possível acessar ela.
  14. Corrigida a indentação. Código comentado com dicas. Testado e funcionando. server-side: veicletestdrive = {} -- Optei por não mudar o nome da sua variável, apesar dela estar com nome zoado. addEvent("testdrive", true) addEventHandler("testdrive", root, function(vehID) -- Evite usar tipos de elementos como parâmetro. E não precisa passar o localPlayer como parâmetro, use a variável nativa 'client' que é o localPlayer que acionou o trigger. if (isElement(client)) then veicletestdrive[client] = createVehicle(vehID, -2422.011, -605.479, 132.563) warpPedIntoVehicle(client, veicletestdrive[client]) setTimer(function(thePlayer) -- É necessário passar client como parâmetro de função do setTimer, pois ele deixa de existir dentro do timer. Então thePlayer = client. destroyElement(veicletestdrive[thePlayer]) setElementPosition(thePlayer, -2412.013, -596.524, 132.648) -- Não é necessário mais do que 3 decimais. end, 30000, 1, client) end end) client-side: triggerServerEvent("testdrive", resourceRoot, 490) -- Passei o ID direto pois não tenho o resto do seu código para usar a variável. -- Não é recomendado passar 'localPlayer' como source do evento pois pode ocorrer conflito. -- Também não passe o 'root' inteiro pois ele é muito pesado, exceto se for acionar por meio de outro resource. -- resourceRoot já é o suficiente se o trigger estiver no mesmo resource.
  15. Basta colocar um resource de "/pro" no seu servidor e então colocar a elementData dele no jogador quando ele entra no carro blindado.
  16. Olá. Você precisa postar a parte do seu código que está com dúvida, não temos como adivinhar o problema.
  17. Não é aconselhável mexer no painel admin ser ter conhecimento avançado no que está fazendo, pois ele é um resource muito complexo e cheio de dependências entre os códigos, uma mudança errada e você pode perder seu painel admin. Eu lembro que na minha versão, precisei criar uma ACL Right nova padrão para o painel, da mesma forma que a permissão para a aba Bans existe. <right name="general.tab_settings" access="false"></right> É claro que simplesmente criar a permissão nova não é suficiente, você tem que configurar a aba das opções para depender dessa permissão, como as demais abas foram feitas.
  18. -- Para salvar as cores na conta: local colors = toJSON({r, g, b}) -- Converte a tabela {r, g, b} numa string e salva essa string como accountData. setAccountData(account, "colors", colors) -- Para obter as cores da conta: local data = fromJSON(getAccountData(account, "colors")) -- Converte a string da tabela numa tabela normal. local r, g, b = unpack(data)
  19. Isso acontece pq você está usando duas constantes. shop.prodAtual é sempre 0 shop.adc é sempre 1 Ou seja, vc está fazendo isso: shop.novosProdutos = (0 + 1) Tente fazer assim: shop.novosProdutos = (shop.novosProdutos + shop.adc) Na primeira vez, será 0 + 1. Mas na segunda vez, será 1 + 1, depois 2 + 1 e assim por diante.
  20. function onSair(thePed) -- Nunca use source como parâmetro de função. if isElement(veiculo[thePed]) then -- Verifique se o veículo do jogador existe. Se existir, destrói ele. destroyElement(veiculo[thePed]) veiculo[thePed] = nil end end addEventHandler("onVehicleExit", root, onSair) -- Não use onPedVehicleExit pois ele não funciona para players, só com NPCs.
  21. Na próxima vez, crie uma votação com as duas opções. É mais fácil do que cada um ficar respondendo.
  22. Existem 2 formas de fazer isso, a primeira é como nosso colega havia mencionado que seria evitar a propagação do evento adicionando um false após o último end. addEventHandler("onClientGUIClick", Butoon_Sair, function(tecla) if tecla == "left" then guiSetVisible(Janela_Agencia_Emprego, false) showCursor(false) end end, false) A segunda forma e também a mais recomendada seria você adicionar um evento inteiro que ativa com todos os elementos CEGUI do seu resource e então verificar qual deles é o source (elemento cegui clicado). addEventHandler ("onClientGUIClick", resourceRoot, function (button) if (button == "left") then if (source == Butoon_Sair) then guiSetVisible (Janela_Agencia_Emprego, false) showCursor (false) -- elseif (source == Butoon_???) then -- Aqui você vai adicionando o que os demais botões do painel devem fazer. end end end)
  23. Se a bind pertencer ao mesmo resource do assalto onde está o marker, você poderia apenas adicionar o jogador como índice de uma tabela e depois de um tempo remover ele da tabela. Enquanto o jogador estiver nessa tabela, ele não conseguirá assaltar novamente. Exemplo: local assaltantes = {} -- Tabela vazia, onde os jogadores que estão assaltando ficam e depois de um tempo somem. local theMarker = createMarker (0, 0, 4) -- Aqui é onde você coloca o marker do assalto. Onde o jogador precisa estar para usar a bind. -- setElementInterior(theMarker, 0) -- setElementDimension(theMarker, 0) function assaltar(keyPresser) if (assaltantes[keyPresser]) then return end -- Se o jogador já ativou essa função, nada acontece e não executa o resto da função. if (isElementWithinMarker(keyPresser, theMarker)) then -- Se o jogador que ativou essa função está dentro do marker theMarker, então: assaltantes[keyPresser] = true -- Adiciona o jogador como índice na tabela de assaltantes. assalt(keyPresser) -- Ativa a função que faz o assalto. setTimer(function() -- Depois que o assalto é concluído, remove o jogador da tabela. Permitindo que ele assalte novamente. assaltantes[keyPresser] = nil end, config["Gerais"]["tempoAssaltar"]*1000, 1) -- Você também pode aumentar esse tempo, assim o jogador precisará esperar mais tempo depois de concluir o assalto, além do próprio tempo de duração do assalto. end end bindKey (root, "q", "down", assaltar) -- Binda a função assaltar na tecla Q. OBS: Você ainda terá um bug de que vários jogadores conseguem assaltar o mesmo lugar ao mesmo tempo. Mas dai essa parte é com vc.
  24. Basicamente ele está reclamando que a ACL Vip que você está tentando atribuir ao jogador ela não existe. Antes da linha do erro, coloque isso na linha anterior e descubra qual o nome da ACL que não existe. iprint("Nome da ACL inexistente:", item.informations.vip)
  25. Mostre o código que você está tentando fazer. Sua pergunta é muito vaga. O bloqueio é para todo mundo ou só para quem está fazendo spam de bind? (bloquear somente pra quem acabou de usar a bind e depois de um tempo desbloquear) O bloqueio da bind é de uma tecla única? Ou uma combinação de teclas? Se refere a bloquear um controle do jogador (andar, atirar, correr) ou a um comando bindado? (bind de /say, bind de /repair)
×
×
  • Create New...