Jump to content

gustavorn

Members
  • Posts

    212
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by gustavorn

  1. Olá @Mischief-1, como vai? Adicione uma verificação adicional para garantir que os blips sejam removidos quando os jogadores deixarem os grupos. playerBlibs = {} amouunt = 0 function updateGPS() amouunt = 0 local gangname = getElementData(getLocalPlayer(), "gang") -- Remover todos os blips existentes for i, blip in ipairs(playerBlibs) do if isElement(blip) then destroyElement(blip) end end -- Verificar se o jogador pertence a um grupo if gangname == "none" then return end playerBlibs = {} -- Criar blips para os jogadores no mesmo grupo for i, player in ipairs(getElementsByType("player")) do if gangname == getElementData(player, "gang") and player ~= localPlayer then amouunt = amouunt + 1 playerBlibs[amouunt] = createBlipAttachedTo(player, 2, 2) setBlipVisibleDistance(playerBlibs[amouunt], 1000) end end end setTimer(updateGPS, 5000, 0) Acredito que isso ajude a resolver o problema. Qualquer dúvida, volte a perguntar. Tmj! Att,
  2. Hola @Shadox, Parece que el problema está en la creación del área de radar. Aquí está la corrección en el código para asegurar que el área de radar se cree correctamente y se muestre en el radar: if bUseRadarArea then for _, a in ipairs( aRadarAreaPlaces ) do local x, y, width, height, r, g, b, a = unpack( a ) pRadarArea = createRadarArea( x, y, width, height, r, g, b, a ) end end Asegúrate de que los valores de x, y, width, height y los colores r, g, b, a estén siendo definidos correctamente en la tabla aRadarAreaPlaces. Esto debería garantizar que el área de radar se cree con las dimensiones y colores correctos y se muestre en el radar según lo esperado.E Espero haber ayudado.
  3. Olá @l47, parece que o sistema anti-cheat detectou um driver vulnerável chamado "mhyprotect.sys", que pode ser associado a trapaças ou modificações não autorizadas no jogo. Lembrando que no MTA: o uso de cheats é estritamente proibido, pois compromete a integridade do jogo e prejudica a experiência de todos os jogadores. Se você não está usando intencionalmente cheats ou software de trapaça, é importante investigar e resolver esse problema. Abraços!
  4. Olá @CMMDV, como vai? Espero que bem. É estranho ser banido do servidor do Discord sem ter interagido de forma alguma. Recomendaria entrar em contato com a equipe de moderação do servidor para explicar a situação e solicitar um levantamento do banimento. Eles devem ser capazes de ajudar a resolver esse teu problema. Sobre o erro CL 22 com a mensagem "Erro 5: Acesso Negado (ShellExecute)" geralmente indica que o programa de instalação, não tem permissões suficientes para executar determinadas operações. Tente executar o instalador do MTA como administrador, clicando com o botão direito do mouse no arquivo de instalação e selecionando "Executar como administrador". Isso pode resolver o problema de permissão. Se o problema persistir, verifique se há antivírus ou firewall que pode estar bloqueando a instalação. Desativar temporariamente o antivírus durante a instalação também pode ajudar, tente isso. Espero que essas sugestões ajudem a resolver seus problemas. Se precisar de ajuda, não hesite em perguntar. Abraços!
  5. Fala aí @pikezet, para modificar o dano das armas brancas, como o soco inglês e a faca, você pode usar o evento "onPlayerDamage", mas é importante entender que este evento só é chamado quando um jogador sofre dano e não quando ele inflige dano. Aqui tá uma abordagem alternativa que você pode tentar: addEventHandler("onPlayerDamage", root, function(attacker, weapon, bodypart, loss) -- Verifica se o dano foi causado por uma arma branca if weapon == 0 then -- Define o novo valor de dano aqui (por exemplo, 10) local novoDano = 10 -- Reduz o dano causado pela arma branca para o novo valor setElementHealth(source, getElementHealth(source) - (loss - novoDano)) end end) Isso pode te ajudar a garantir que o dano seja mais consistente e não varie como estava acontecendo antes. Abraços!
  6. Hello, To help resolve the connection timeout issue on your MTA server, I would suggest considering the following steps: 1. **Check Server Status:** Ensure that your server is active and running correctly. Check for any recent reboots or failures. 2. **Server Logs:** Examine the server logs for error or warning messages. This can provide valuable information about the cause of the problem. 3. **Firewall and Network Settings:** Confirm that firewall and network settings are correct. Sometimes, changes in network settings can affect the connection to the server. 4. **Verify Time Settings:** Since you mentioned specific times (3 a.m. and 7 a.m.), make sure that time zone and server time settings are accurate. 5. **Script Checking:** If you made recent changes to scripts, check if those changes are not causing the problem. Temporarily revert changes for testing. If, after these checks, the issue persists, provide more details about specific error logs or any other relevant information. This will help the community offer more accurate assistance. I hope this helps in resolving the issue. Good luck! Best regards, Gustavo.
  7. Olá @zezzok7, tudo bem? Espero que sim! Vamos lá, se eu entendi bem, para obter o número total de caixas de todos os jogadores, incluindo aqueles que estão offline, você precisará percorrer todas as contas e somar os valores correspondentes à chave "numero.caixas". Exemplo: function obterNumeroTotalDeCaixas() local todasAsContas = getAccounts() local numeroTotalDeCaixas = 0 for _, conta in ipairs(todasAsContas) do local valorAtual = getAccountData(conta, "numero.caixas") or 0 numeroTotalDeCaixas = numeroTotalDeCaixas + valorAtual end return numeroTotalDeCaixas end -- Exemplo de uso: local totalDeCaixas = obterNumeroTotalDeCaixas() outputChatBox("Número total de caixas de todos os jogadores: " .. totalDeCaixas) Este script vai percorrer todas as contas no teu servidor, obter o valor atual da chave "numero.caixas" de cada conta (ou assume 0 se não existir) e somar esses valores para obter o número total de caixas de todos os jogadores. Certifique-se de adaptar o script conforme necessário para integrá-lo ao seu código e exibir ou utilizar os resultados conforme desejado. Qualquer outra dúvida, volte a comentar aqui, será um prazer ajudá-lo. Abraços!
  8. Fala @pikezet, tudo bem? Espero que sim! Sua pergunta ficou muito vaga e falta informações, se tua dúvida é referente a algum script posta teu problema aqui junto com seu código. Abraços!
  9. Fala Igor, tudo bem? Espero que sim. A modificação que fiz no seu script anterior move a lógica de carregamento das animações para o lado do servidor usando o evento onResourceStart. Isso deve ajudar a resolver o teu problema. Segue: local animTable = { ifp = {}, anims = { "BIKEd_Back", "BIKEd_drivebyFT", -- Adicione suas outras animações aqui conforme o necessário. } } function loadAnimations() animTable.ifp["block"] = "biked" animTable.ifp["ifp"] = engineLoadIFP("biked.ifp", animTable.ifp["block"]) for _, v in ipairs(animTable.anims) do engineReplaceAnimation(source, "biked", v, animTable.ifp["block"], v) end end addEventHandler("onResourceStart", resourceRoot, loadAnimations) Qualquer dúvida, volte a postar aqui que a gente tenta resolver, até a próxima :)
  10. Bacana meu camarada, fico feliz que tenha dado certo. Como mencionei, era preciso se atentar aos itens da lista. Qualquer outra dúvida, fica a vontade para perguntar neste fórum. Um grande abraço!
  11. Não há de que, amigo. Vamos tentar adicionar mais uma função para simular a alternância de 1 a 4 itens. -- Função para adicionar de 1 a 4 itens da lista lootItems ao airdrop function addRandomItemsToAirdrop(avialColq) for i = 1, math.random(1, 4) do local item = lootItems[math.random(#lootItems)] local value = math.percentChance(item[2], 1) if value >= 1 then setElementData(avialColq, item[1], value) local ammoData, weapID = getWeaponAmmoType(item[1], true) if ammoData then local minBullets, maxBullets = math.floor(getAmmoPlus(ammoData) / 3), getAmmoPlus(ammoData) * 2 local ammoQuantity = math.random(minBullets, maxBullets) setElementData(avialColq, ammoData, ammoQuantity) end end end end function spawnAirdrop(player) -- Verifica se o jogador não é um administrador if isElement(player) and not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Admin")) then return end -- Limpa objetos e timers antigos if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isElement(variavel) then destroyElement(variavel) end if isTimer(respawnAirdropTimer) then killTimer(respawnAirdropTimer) end -- Define um novo timer para respawn do airdrop respawnAirdropTimer = setTimer(spawnAirdrop, 120000, 1) -- Escolhe aleatoriamente uma localização para o airdrop local item_id = math.random(1, #spawnLocations) xq, yq, zq = spawnLocations[item_id][1], spawnLocations[item_id][2], spawnLocations[item_id][3] + 0.35 xpsq, ypsq, zpsq = xq, yq, zq + 7 xpvq, ypvq, zpvq = xq - 48, yq - 16, zq + 37 xsbq, ysbq, zsbq = xq - 48, yq - 16, zq + 41 xssq, yssq, zssq = xq - 528, yq + 2, zq + 141 xsdq, ysdq, zsdq = xq + 528, yq + 2, zq + 141 -- Cria um blip para o airdrop blipq = createBlip(xq, yq, zq, 5) -- Criação do avião e movimentação aviaNavaq = createObject(1683, xssq, yssq, zssq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsbq, ysbq, zsbq) -- Criação do paraquedas setTimer(function() parasProdq = createObject(2903, xpvq, ypvq, zpvq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsdq, ysdq, zsdq) moveObject(parasProdq, 15000, xpsq, ypsq, zpsq) triggerClientEvent("playAirdropSound", getRootElement()) outputChatBox("#ff0000[AIRDROP] #ffffffUM PACOTE COM LOOT MILITAR FOI LANÇADO AO CHÃO. SEU MAPA FOI MARCADO COM O LOCAL.", getRootElement(), 255, 255, 255, true) end, 8000, 1) -- Define um timer para destruir o avião setTimer(destroyElement, 16100, 1, aviaNavaq) -- Cria o conteúdo do airdrop setTimer(function() destroyElement(parasProdq) destroyElement(variavel) productq = createObject(2669, xq, yq, zq, 0, 0, 0) variavel = createObject(2060, xq, yq, zq + 1.3, 1, 0, 0) setElementFrozen(productq, true) avialColq = createColSphere(xq, yq, zq, 2) attachElements(avialColq, productq, 0, 0, 0) setElementData(avialColq, "parent", object) setElementData(avialColq, "hospitalbox", true) setElementData(avialColq, "MAX_Slots", 5000) -- Chama a função para adicionar itens aleatórios addRandomItemsToAirdrop(avialColq) end, 23100, 1) end Não tenho mais o jogo instalado mas acredito que funcione. Espero que ajude, abraços!
  12. Olá camarada, tudo bem? Não sei se isso funciona mas aí está. Lembre-se de que, modificar o mapa do jogo pode ter implicações de desempenho e pode afetar a jogabilidade. Segue o arquivo lua: -- Função para remover LS e SF e manter apenas LV function removeLSandSF() -- Removendo LS e SF removeWorldModel(2256, 3000, 0, 0, 0, LSandSFBounds, true) end -- Estas coordenadas são aproximadas, você pode precisar ajustá-las local LSandSFBounds = { {985, -2627, 0}, {4391, -1287, 2000} } addEventHandler("onResourceStart", resourceRoot, removeLSandSF) Crie um meta.xml e inicie no servidor, não testei mas acredito que possa funcionar para você, boa sorte. Abraços!
  13. Fala meu brother, como vai você? Que nostalgia me aventurar neste ambiente tão legal de comunicado aqui de novo, após tanto tempo. Vou tentar te ajudar, afinal faz tempo que não sei o que é Lua, viu? Kkkk! Em resposta a sua dúvida, irei responder, levando em conta que você saiba algo sobre lógica de programação. Existem vários objetos (itens) com chave e valor sendo armazenado dentro da nossa variável (lista) lootItems, desta forma, certifique-se de que está lista contenha todos os itens que precisam ser adicionados. Agora, vamos para a função. Comentei em blocos para identar o código e melhorar o entendimento. function spawnAirdrop(player) -- Verifica se o jogador não é um administrador if isElement(player) and not isObjectInACLGroup("user."..getAccountName(getPlayerAccount(player)), aclGetGroup("Admin")) then return end -- Limpa objetos e timers antigos if isElement(productq) then destroyElement(productq) end if isElement(avialColq) then destroyElement(avialColq) end if isElement(blipq) then destroyElement(blipq) end if isElement(variavel) then destroyElement(variavel) end if isTimer(respawnAirdropTimer) then killTimer(respawnAirdropTimer) end -- Define um novo timer para respawn do airdrop respawnAirdropTimer = setTimer(spawnAirdrop, 120000, 1) -- Escolhe aleatoriamente uma localização para o airdrop local item_id = math.random(1, #spawnLocations) xq, yq, zq = spawnLocations[item_id][1], spawnLocations[item_id][2], spawnLocations[item_id][3] + 0.35 xpsq, ypsq, zpsq = xq, yq, zq + 7 xpvq, ypvq, zpvq = xq - 48, yq - 16, zq + 37 xsbq, ysbq, zsbq = xq - 48, yq - 16, zq + 41 xssq, yssq, zssq = xq - 528, yq + 2, zq + 141 xsdq, ysdq, zsdq = xq + 528, yq + 2, zq + 141 -- Cria um blip para o airdrop blipq = createBlip(xq, yq, zq, 5) -- Criação do avião e movimentação aviaNavaq = createObject(1683, xssq, yssq, zssq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsbq, ysbq, zsbq) -- Criação do paraquedas setTimer(function() parasProdq = createObject(2903, xpvq, ypvq, zpvq, 0, 0, 0) moveObject(aviaNavaq, 8000, xsdq, ysdq, zsdq) moveObject(parasProdq, 15000, xpsq, ypsq, zpsq) triggerClientEvent("playAirdropSound", getRootElement()) outputChatBox("#ff0000[AIRDROP] #ffffffUM PACOTE COM LOOT MILITAR FOI LANÇADO AO CHÃO. SEU MAPA FOI MARCADO COM O LOCAL.", getRootElement(), 255, 255, 255, true) end, 8000, 1) -- Define um timer para destruir o avião setTimer(destroyElement, 16100, 1, aviaNavaq) -- Cria o conteúdo do airdrop setTimer(function() destroyElement(parasProdq) destroyElement(variavel) productq = createObject(2669, xq, yq, zq, 0, 0, 0) variavel = createObject(2060, xq, yq, zq + 1.3, 1, 0, 0) setElementFrozen(productq, true) avialColq = createColSphere(xq, yq, zq, 2) attachElements(avialColq, productq, 0, 0, 0) setElementData(avialColq, "parent", object) setElementData(avialColq, "hospitalbox", true) setElementData(avialColq, "MAX_Slots", 5000) -- Adiciona de 1 a 4 itens da lista lootItems for i = 1, math.random(1, 4) do local item = lootItems[math.random(1, #lootItems)] local value = math.percentChance(item[2], 1) if value >= 1 then setElementData(avialColq, item[1], value) local ammoData, weapID = getWeaponAmmoType(item[1], true) if ammoData then local minBullets, maxBullets = math.floor(getAmmoPlus(ammoData) / 3), getAmmoPlus(ammoData) * 2 local ammoQuantity = math.random(minBullets, maxBullets) setElementData(avialColq, ammoData, ammoQuantity) end end end end, 23100, 1) end A sua função spawnAirdrop original tinha o objetivo de criar um airdrop com um único item escolhido aleatoriamente da lista lootItems. Para modificar essa função e para que o airdrop contenha de 1 a 4 itens adicionei um loop for i = 1, math.random(1, 4) do Isso cria um loop que escolhe um número aleatório entre 1 e 4, representado por math.random(1, 4), que determinará quantos itens serão adicionados ao airdrop. Espero que tenha funcionado para você e que tenha entendido, no mais, fique a vontade para voltar com qualquer dúvida. Abraços!
  14. Erro de algoritmo. Recomendo verificar as linhas de código do script com o auxílio do debug.
  15. Você pode postar o algoritmo do script para que possamos ajudar?
  16. Olá, Por muito tempo eu não utilizo Linux ou uma plataforma que não seja móvel mas gostaria de tentar te ajudar da maneira que eu conseguir. Primeiro gostaria de saber se baixou os pacotes necessários para conseguir configurar o servidor? Caso não, tente assim para o seu DB: 32 bits apt-get update; apt-get upgrade; apt-get -y install zip unzip libreadline5 screen 64 bits apt-get update; apt-get upgrade; dpkg --add-architecture i386; #add the i386 architecture so the ia32-libs package can be installed apt-get update; #update the list of packages so the ia32-libs package is included in the list apt-get -y install zip unzip ia32-libs lib32ncursesw5 lib32readline5 screen (Me recordo assim ?) Depois dos pacotes tente fazer o processo novamente acompanhando o tutorial pela wiki, espero que ajude. Caso a dúvida seja mais específica me fala aí pra tentar te ajudar melhor. Falou
  17. @DNL291 algumas funções realmente são limitadas aqui no fórum através do dispositivo móvel, mesmo com tantas atualizações e tecnologias encontradas hoje em dia, talvez por conta da plataforma utilizada, ainda é visível essa restrição em certos aspectos na Internet, enfim, muito obrigado pelos esclarecimentos. Novamente eu agradeço pela a sua observação, embora eu discorde que citações podem causar desbalanceamento na organização de um tópico, irei rever essa "conduta" para evitar o incômodo retratado, ainda que, as funções estejam lá para serem utilizadas, claro que, de forma ética e proporcional.
  18. A interface do fórum pra computador e dispositivos móveis são bem diferentes. No celular é bem simples, então pra mim, fica melhor responder desse jeito nos tópicos. Além disso, não há nenhuma regra específica que impeça citações mesmo que não aja outras participações em uma determinada postagem, mas, agradeço pela observação.
  19. Olá, Não posso opinar em relação a qualidade dos servidores prestados, entretanto, para quem esteja sem condições o preço é bastante em conta. O site também está bem otimizado e bacana mas não entendi como funciona a caracterização dos serviços, é citado os pings do CA e BR, isso significa que são serviços hospedados em países diferentes, certo? Porém, acompanhando o site não vi nenhuma opção de configuração do futuro servidor, para poder customizar o serviço, escolher preferência, etc... acho que, deveria formular essas funções pra essa parte. Só uma crítica construtiva, de contrapartida, tá tudo bacana, parabéns pelo trabalho!!!
  20. Olá, Cadê as imagens do seu servidor? Acredito que só texto e o ip do servidor não vai ajudar nem um pouco seu projeto...
  21. Gostei do sarcasmo da galera kkkk, mas afinal, como comprar vip de um Server que não lançou?
  22. Olá, Não consegui abrir a imagem, mas, esses picos de ping não tem haver com hardware da máquina e sim com a rede fornecida pela empresa. É bom verificar se a empresa faz overselling no serviço, típico da maioria dessas empresas. Provavelmente é uma rede compartilhada, somando o uso de banda de todos os clientes em horário de maior transferência de dados, pode ocasionar em delays e instabilidade.
  23. Bacana. Pelo que pude entender a velocidade indicada na placa, é um texto em 3d modelado junto com o objeto. Esse último radar de velocidade ficou legal, uma boa ideia para quem quiser implementar sistema de infrações, multas, limites de velocidades, etc..
  24. Está equivocado, alguns Mods do tipo cleo3 é o suficiente para o MTA interpretar como utilitário malicioso. Neste caso, é necessário verificar individualmente os Mods para descobrir qual está ocasionando o incidente ou remover todos.
×
×
  • Create New...