Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,969
  • Joined

  • Last visited

  • Days Won

    179

Everything posted by Lord Henry

  1. Sim, você consegue. Pois o SetVehicleHandling só funciona no veículo específico e não em todos daquele modelo.
  2. Troque todos os getLocalPlayer() pela variável predefinida localPlayer. Troque todos os getRootElement() pela variável predefinida root. Imagino que seu primeiro script seja client-side e o segundo script seja server-side. Verificar ACL só funciona em scripts server-side, ou seja, tem que ser no seu segundo script. Adicione uma nova linha antes do attachElementToElement e nela coloque isso: if not isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(source)), aclGetGroup ("Staff")) then return end -- Se o jogador não estiver na ACL Group "Staff", cancela essa função e nada acontece. Obs: Limitar permissões de acesso para staffs e não staffs é mais inteligente fazer via permissão em vez de ACL Group. Dessa forma você não precisa ficar criando uma ACL Group genérica de Staff para colocar todos os seus staffs dentro. Você pode simplesmente verificar se o jogador tem permissão de mutar jogadores, se ele tiver essa permissão então ele é staff (moderador ou superior). Para verificar essa permissão, você pode fazer assim: if not hasObjectPermissionTo (source, "command.mute", false) then return end -- Se o jogador não tem permissão para mutar jogadores (não é staff), então cancela essa função e nada acontece.
  3. Não entendi o que você deseja fazer. Seria interessante mostrar uma print de exemplo do que você quer fazer.
  4. Não é permitido solicitar/enviar drops de mods aqui no fórum.
  5. Não existe nenhum evento que ative ao fazer isso. A não ser que você atribua uma elementData específica no jogador quando mexer nas ACLs dele, dai você poderia usar o onElementDataChange
  6. GG, top demais. 1% é tranquilo.
  7. Animação as vezes não funciona em Ped no mesmo instante em que ele é criado. Dai precisa adicionar um timer para setar essa animação só depois que o ped foi criado. O exemplo que eu fiz seta a animação somente quando o Ped toma dano, pois eu pensei que era isso que você queria fazer, setar a animação somente ao dar dano no ped. Vou refazer o exemplo para setar a animação em todos os Peds após eles serem criados. local infos = { -- Tabela onde as infos de cada bot serão declaradas. [1] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true}, [2] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true}, [3] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true}, } local bots = {} -- Tabela onde cada bot criado vai ficar. for i, v in ipairs(infos) do -- Para cada info, cria um bot na lista de bots. bots[i] = createPed(v[1], v[2], v[3], v[4], v[5]) end setTimer(function () for i, v in pairs (bots) do -- Para cada bot, faça: setPedAnimation(v, infos[i][6], infos[i][7], infos[i][8], infos[i][9], infos[i][10], infos[i][11]) -- Seta essa animação que está nas infos. end end, 100, 1) Se estiver se referindo a uma tabela com animações para setar aleatoriamente no ped, é possível sim. local animations = { [id] = { -- Animações que vão estar disponíveis para os Peds deste ID. {"CRACK", "crckidle1", -1, true, true, true}, {"CRACK", "crckidle1", -1, true, true, true}, {"CRACK", "crckidle1", -1, true, true, true}, }, [id] = { -- Outras animações disponíveis para este outro ID. {"CRACK", "crckidle1", -1, true, true, true}, {"CRACK", "crckidle1", -1, true, true, true}, {"CRACK", "crckidle1", -1, true, true, true}, }, } addEventHandler("onClientPedDamage", resourceRoot, function() -- Seta uma animação aleatória no Ped quando ele tomar dano. local id = getElementModel(source) if animations[id] then -- Se existe a tabela de animações para este ID, então: local random = math.random(#animations[id]) -- Gera um número aleatório entre 1 e a quantidade de animações disponível para este ID (neste exemplo é entre 1 e 3) setPedAnimation(source, animations[id][random][1], animations[id][random][2], animations[id][random][3], animations[id][random][4], animations[id][random][5], animations[id][random][6]) end end)
  8. É sim. Sozinho este resource está consumindo 45% de processamento no seu client.
  9. Olá. Infelizmente não há apelação para banimentos temporários. Aguarde o banimento acabar. Mesmo que o banimento fosse permanente, você acabou de admitir que seu irmão baixou cheats no seu computador. No momento em que você permite que alguém mexa na sua máquina e essa pessoa faz coisas ilegais, a responsabilidade também é sua. Recomendo que não permita que mais ninguém utilize o seu computador, ou então fique monitorando para garantir que ele não mexa com o que não deve.
  10. Já verificou se os mods de veículos que você está colocando são pesados demais? Teste com algum veículo bem leve.
  11. Eu lhe dei uma solução simples, mas você prefere continuar reclamando e achando que estou debochando, dai não há o que fazer. O mundo não gira ao seu redor. Se pra você é tão incômodo fazer uma atualização, parece que você não leva a sério o seu próprio servidor. Existem as pessoas que já estão correndo atrás e atualizando seus resources, e existem as pessoas que preferem reclamar achando que o sistema vai mudar para atender às suas reclamações como se você fosse o todo-poderoso. É o clássico "estou pagando, então estou na razão." Mesmo que eu concordasse com suas reclamações e lhe dissesse que o sistema deveria manter na top list os servidores desatualizados, o MTA não iria mudar o sistema de qualquer forma, pois seria apenas a minha opinião, que não interfere em nada no desenvolvimento do MTA em si. Enfim, espero que entenda que existem coisas que não estão sob nosso controle, cabe a nós nos adaptar, melhorar e seguir em frente.
  12. local infos = { -- Tabela onde as infos de cada bot serão declaradas. [1] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true}, [2] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true}, [3] = {id, x, y, z, r, "CRACK", "crckidle1", -1, true, true, true}, } local bots = {} -- Tabela onde cada bot criado vai ficar. for i, v in ipairs(infos) do -- Para cada info, cria um bot na lista de bots. bots[i] = createPed(v[1], v[2], v[3], v[4], v[5]) end function restartPedAnimation() for i, v in pairs (bots) do -- Para cada bot, faça: if source == v then -- Se o bot que tomou dano é um da lista, então: setPedAnimation(source, infos[i][6], infos[i][7], infos[i][8], infos[i][9], infos[i][10], infos[i][11]) -- Seta essa animação que está nas infos. break -- Cancela o loop pois já encontrou o bot correto. end end end addEventHandler("onClientPedDamage", resourceRoot, restartPedAnimation) -- Ativa essa função quando qualquer NPC deste resource tomar dano. Tente isso. (não testado)
  13. Se estiver se referindo a dxDraw, só é possível fazer isso com imagem.
  14. Se vcs não tem capacidade de se manterem atualizados, a culpa não é do MTA. Quem não se atualiza, fica para trás. Isso serve em qualquer área.
  15. Não seria mais fácil vcs simplesmente atualizarem seus servidores para a versão 1.6 também?
  16. É bug do seu servidor. Não há nenhum problema com essas skins.
  17. triggerCleintEvent não existe. Vc escreveu errado. O certo é triggerClientEvent Ali no destroyElement, vechile não deveria ser vehicle?
  18. Use isso: createMarker onMarkerHit setPedAnimation
  19. Não é uma boa ideia usar markers tão grandes. Prefira usar colshapes. Por exemplo createColCuboid. Você pode usar o mesmo tamanho que usou no createRadarArea. Também não faz sentido o script forçar um comando sendo que ele poderia simplesmente chamar direto a função que é chamada pelo comando. Aqui tem uma página secreta com todos os colshapes das zonas de San Andreas. Basta escolher qual território você quer. Utilize este mapa para saber os nomes.
  20. Sem print. Upe a imagem no imgur.com e cole aqui o link.
  21. Já tentou reinstalar ou atualizar os drivers da sua placa de vídeo?
  22. Não há diferença. O servidor vai descompactar o ZIP para baixar seu conteúdo de qualquer forma que uma pasta. Porém o ZIP é mais leve de upar na host por exemplo.
  23. Dica sobre os markers: Crie uma tabela com todos os markers para poupar espaço na memória mantendo todos eles na mesma variável. É melhor fazer assim do que vários createMarkers em variáveis diferentes. local theMarkers = { createMarker(0, 0, 3.5, "cylinder"), createMarker(0, 4, 3.5, "cylinder"), createMarker(0, -4, 3.5, "cylinder"), } function function1(keyPresser, key, keyState) -- Função que é ativada ao apertar a tecla bindada G. if isElementWithinMarker (keyPresser, theMarkers[1]) then -- Se o jogador que apertou a tecla estiver dentro do primeiro marker, então: -- Faz tal coisa. elseif isElementWithinMarker (keyPresser, theMarkers[2]) then -- Senão, se ele estiver no segundo marker, então: -- Faz outra coisa. elseif isElementWithinMarker (keyPresser, theMarkers[3]) then -- E assim por diante. -- Faz outra coisa. end end -- Não precisa da function2, pois todos os markers ativarão a function1 que vai determinar oq cada um faz.
  24. Prefira usar variáveis predefinidas. Troque todos os getResourceRootElement(getThisResource()) por resourceRoot. Troque todos os getRootElement() por root. Ao usar getElementsByType, a ordem dos elementos não importa. O pairs é um pouco mais rápido que o ipairs. Troque todos os ipairs por pairs. Por não ser necessário o índice, você pode ignorar a variável i dos loops, trocando eles por _ (underline). Troque todos os i dos loops por _ Não adicione o mesmo evento várias vezes. No seu exemplo você está adicionando 2 onPlayerJoin e 2 onResourceStart. Coloque todos os bindKey na mesma função onde está o onPlayerJoin e o onResourceStart. Delete as funções e eventos repetidos.
×
×
  • Create New...