Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,932
  • Joined

  • Last visited

  • Days Won

    174

Everything posted by Lord Henry

  1. Obs: O comando /aclrequest só pode ser usado por Admins ou superiores por padrão. Então não adianta pedir para staffs Moderadores nem SuperModeradores para aceitar a solicitação pois eles não tem acesso a esse comando por padrão.
  2. Fora do painel P ou sem mexer no acl.xml você não tem como. A não ser que você desenvolva um resource só para fazer isso via comando. (mas obviamente este resource precisará de permissão admin para poder fazer isso) Outra coisa mais inteligente a se fazer é configurar seu resource para solicitar sozinho as permissões que ele precisa. Por exemplo, se o seu resource precisa de permissão admin só para usar a função de KickPlayer, basta você fazer este resource solicitar essa permissão específica em vez de dar acesso total de admin para ele. Para fazer um resource solicitar permissões específicas, basta adicionar isto no meta.xml dele: <aclrequest> <right name="function.kickPlayer" access="true" /> </aclrequest> Depois de iniciar o resource, deve aparecer a solicitação no Debug Console (use /debugscript 3 para mostrá-lo). Para aceitar a solicitação, só precisa que um Staff autorize com /aclrequest allow NomeDoResource all A solicitação também pode ser aceita no Server Console, usando o mesmo comando porém sem a barra.
  3. Só colocar isso: if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(player)), aclGetGroup ("Admin")) then -- Se o jogador está na ACL Group admin, então:
  4. Qual sentença você usou para criar a tabela? E qual o objetivo de obter o último ID?
  5. A colisão do marker cylinder é bugada mesmo. O que você pode fazer é criar um marker do tipo "corona" invisível e deixar o marker do tipo cylinder apenas como visual.
  6. Sem o código fica impossível adivinhar. Nem seu arquivo meta.xml está certo.
  7. Script ilegível. Faça a indentação correta do seu código.
  8. Ele está apenas reclamando que falta uma informação no seu arquivo meta.xml. Seu script só funciona a partir da versão 1.5.4-9.11413 do MTA. Então você precisa adicionar isso no meta.xml: <min_mta_version server="1.5.4-9.11413" client="1.5.4-9.11413" />
  9. local comandos = {"login", "logout", "testando"} -- Lista de comandos que não podem ser bindados. function playerPressedKey(button, press) if (press) then -- Se o jogador apertou a tecla, então: local bindados = getCommandsBoundToKey(button, "down") -- Obtém uma lista de comandos bindados a essa tecla que o jogador acabou de apertar. O comando é o índice e o argumento é o valor. if table.size(bindados) == 0 then return end -- Se não há nada bindado nesta tecla (a função acima retornou uma tabela vazia), então nada acontece. for cmd,v in pairs(bindados) do -- Para cada comando bindado nesta tecla, faça: for _,cmds in pairs(comandos) do -- Para cada comando que não pode ser bindado, faça: if cmd == cmds then -- Se o comando bindado nesta tecla está na lista de comandos proibidos, então: outputChatBox("O comando '"..cmd.."' não pode ser bindado.") cancelEvent() return end end end end end addEventHandler("onClientKey", root, playerPressedKey) addCommandHandler("testando", function(cmd) -- Comando genérico só para saber se ele está sendo executado ou não. outputChatBox("Você está testando.") end) function table.size(theTable) -- Função útil que conta quantos elementos tem uma tabela. Quando usar #tabela não funcionaria. local size = 0 for _, v in pairs(theTable) do size = size + 1 end return size end Os comandos continuam funcionando fora da bind (digitados manualmente).
  10. Por padrão, o gamemode Play já faz isso. A não ser que você use outro gamemode ou edite o gamemode Play para ele não fazer mais esse efeito. No seu script isso não acontece pois você está respawnando o jogador no mesmo instante em que ele morre. Então a tela não faz isso pois o jogador já renasceu antes do efeito começar. O efeito só acontece enquanto jogador está morto.
  11. Sim, você consegue. Pois o SetVehicleHandling só funciona no veículo específico e não em todos daquele modelo.
  12. 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.
  13. Não entendi o que você deseja fazer. Seria interessante mostrar uma print de exemplo do que você quer fazer.
  14. Não é permitido solicitar/enviar drops de mods aqui no fórum.
  15. 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
  16. Código #4 se refere a isso: Violação de segurança geral. Este é o código AC mais comum para tentativa de cheat, ferramentas proibidas, trainers GTA ou execução inadvertida de um cheat para outro jogo enquanto o MTA está aberto.
  17. GG, top demais. 1% é tranquilo.
  18. 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)
  19. É sim. Sozinho este resource está consumindo 45% de processamento no seu client.
  20. 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.
  21. Já verificou se os mods de veículos que você está colocando são pesados demais? Teste com algum veículo bem leve.
  22. 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.
  23. 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)
×
×
  • Create New...