Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,980
  • Joined

  • Last visited

  • Days Won

    181

Everything posted by Lord Henry

  1. Sobre a indentação: Indente com 4 espaços no lugar de cada TAB, assim ele aparece certinho aqui pro fórum. Sobre seu problema, já tentou apenas converter o texto em número? Coloque isso na segunda linha: quantia = tonumber(quantia)
  2. Não. Se vc retirar essas permissões do painel, todo mundo vai ficar sem essas permissões. É o mesmo que remover a permissão admin do painel admin.
  3. Não é necessário pois este tópico já foi movido para a seção Português. Ele quis dizer que sempre que você for criar um tópico fora da seção Português, você deve escrever em inglês.
  4. Tem. Vc terá que editar o painel, criar um novo tipo de permissão padrão e depois vincular essa permissão ao botão. É necessário ser avançado em programação para saber o que está fazendo, pois o painel é bem complexo de mexer.
  5. Olá @Ipanema Roleplay utilize o botão <> do fórum para postar scripts. Não cole direto no texto.
  6. O fórum indenta com 8 espaços. Pra não distorcer é só vc usar 4 espaços em vez de TAB.
  7. Não fazemos drop de mods. Tente desenvolver o seu e podemos lhe ajudar com dúvidas. Comece estudando o evento onPlayerQuit.
  8. Utilize isso para remover o pneu do veículo: setVehicleWheelStates
  9. No seu painel de dar TAGs, adicione essa função: function getUsersInACLGroup (group) -- Group é a ACL Group que está sendo verificada. (não é o nome) local users = {} -- Tabela vazia que será preenchida com todas as contas que estão nessa ACL Group. if (group) then for _, object in ipairs(aclGroupListObjects(group) or {}) do -- Para cada objeto da aclGroup, faça: local objType = gettok (object, 1, string.byte('.')) -- Obtém tudo que estiver antes do ponto, que pode ser "user" ou "resource". if (objType == "user") then -- Se for um user, então: local _name = gettok (object, 2, string.byte('.')) -- Obtém tudo que estiver depois do ponto. No caso, o nome da conta de cada usuário. table.insert (users, _name) -- Adiciona o nome da conta na tabela users. end end return users -- Retorna uma tabela com todos os nomes das contas registradas nessa ACL Group. end end E depois quando for adicionar TAG a um novo usuário, você pode verificar quantos usuários já existem naquela ACL Group, se tiver por exemplo 10 usuários ou mais, então evita de dar a TAG. if #getUsersInACLGroup(aclGetGroup("Moderator")) < 10 then -- Se tem menos do que 10 users na ACL Group Moderator, então: -- Adiciona a nova conta normalmente na ACL Group. else -- Manda um outputChatBox dizendo que a ACL Group já atingiu o limite de usuários. end
  10. Primeiro é melhor você separar os tipos de dados em sub-tabelas e usar o comando do teleporte como índice.
  11. Mas é pra isso que estamos aqui. A gente te ajuda a desenvolver seus próprios scripts e a corrigir bugs, mas você precisa ter a iniciativa de tentar e começar por conta própria.
  12. @yToPzz ele está reclamando que a variável name é nil (não existe). O erro está lá no triggerServerEvent do script client onde a variável name foi passada.
  13. A solução é você desenvolver seu próprio sistema de Modo Passivo e colocar um sistema de anti-flood nele.
  14. YouTube Este fórum Wiki do MTA Discord oficial do MTA
  15. Ao iniciar o resource, dará erro sempre que algum jogador não estiver em um veículo, pois a variável local v será false. Você pode evitar esse erro adicionando essa linha antes do for: if not v then return end Mas saiba que qualquer veículo criado depois que essa função já foi chamada, terá colisão normal. Essa função só vai deixar fantasma os veículos que já existiam antes. Além disso, você colocou root ali no eventHandler, isso significa que ele vai chamar essa função sempre que qualquer resource for iniciado. Se você quer que funcione somente ao reiniciar este resource, troque o root por resourceRoot que é a forma resumida de getResourceRootElement(getThisResource()).
  16. @ABR na próxima vez utilize o botão <> do fórum para colocar seu script. Não cole ele direto no texto.
  17. Você pode melhorar seu código utilizando tabelas e loop em vez de ficar adicionando cada comando em uma função separada. Para deixar o jogador imortal, basta colocar uma elementData nele e verificar se ele tem essa data no client. Se tiver, cancela qualquer dano que ele recebe. server.lua local teleportes = { -- [comando] = {x, y, z, nome}, ["cj"] = {2466.6, -1669.82, 13.475, "o CJ"}, ["shp"] = {1129.24, -1468.47, 15.74, "o Shopping"}, ["conce"] = {552.06, -1260.37, 17.24, "a Concessionária"}, ["aldeia"] = {2159.42, -979.93, 17.24, "a Favela da Aldeia"}, ["ljarmas"] = {2162.64, -1732.49, 17.28, "a Loja de Armas"}, ["pvp"] = {437.1, -6549.2, 14.3, "a Área de PvP"}, } local imortais = {} function telePlayer (thePlayer, cmd) -- Função que é ativada pelo addCommandHandler. if teleportes[cmd] then -- Se o comando utilizado existe na tabela, então: if imortais[thePlayer] then -- Se o jogador ainda está imortal, então nada acontece. outputChatBox("Aguarde 3 segundos para teleportar novamente.", thePlayer, 255, 60, 0) return else imortais[thePlayer] = true -- Adiciona o jogador na tabela de imortais. setElementAlpha(thePlayer, 150) -- Deixa o player translúcido (fantasma) pra mostrar que está imortal. setElementData(thePlayer, "imortal", true) -- Coloca essa elementData nele pra deixá-lo imortal. setTimer(function() -- Depois de 3 segundos, tira o jogador da tabela de imortais, deixa ele opaco novamente e remove a data de imortal dele. imortais[thePlayer] = nil setElementAlpha(thePlayer, 255) removeElementData(thePlayer, "imortal") end, 3000, 1) end local x, y, z, nome = unpack(teleportes[cmd]) -- Pega as infos desse item da tabela e separa em variáveis. setElementPosition(thePlayer, x, y, z, true) -- Teleporta o player. -- setElementRotation(thePlayer, 0, 0, 0) outputChatBox("[Teleporte] O jogador #ffffff"..getPlayerName(thePlayer).." #FF3C00foi para "..nome..". [/"..cmd.."]", root, 255, 60, 0, true) -- Manda essa mensagem pra todo mundo. end end for cmd,v in pairs (teleportes) do -- Faz um loop pela tabela, adicionando todos os addCommandHandlers. addCommandHandler(cmd, telePlayer) end client.lua addEventHandler ("onClientPlayerDamage", root, function () if getElementData(source, "imortal") then -- Se o jogador que tomou dano tem essa elementData, então cancela o dano e nada acontece. cancelEvent() end end) addEventHandler ("onClientPlayerStealthKill", localPlayer, function (targetPlayer) if getElementData (targetPlayer, "imortal") then -- Se o jogador que está sendo alvo da facada fatal tiver essa elementData, impede que ele tome a facada e nada acontece. cancelEvent() end end)
  18. Substitua essa linha: if isPedInVehicle(localPlayer) then Por essa: if getPedOccupiedVehicle(localPlayer) then
  19. O terceiro parâmetro representa o jogador que está tendo o veículo roubado. Se ele existe, então cancela a função. Se não existe, então entra no veículo normalmente. addEventHandler ("onVehicleStartEnter", root, function (thePlayer, seat, jacked) if isElement(jacked) then outputChatBox("Você não pode roubar o veículo de alguém.", thePlayer, 255, 150, 0) cancelEvent() end end) Obs: Ele só vai cancelar se for roubar o motorista pra dirigir o veículo dele. Se o veículo tiver passageiro mas não tiver motorista, vai entrar normalmente. Se o jogador for entrar como passageiro, também vai entrar normalmente mesmo se já tiver motorista.
  20. A mira do jogador depende da câmera. Se a câmera não está no jogador, irá bugar. Se quer mirar, volte a câmera pro jogador.
  21. Portas dos veículos não possuem colisão própria. A colisão pro player não atravessar a porta é a própria colisão do veículo. Se você abrir o DFF de um veículo original, vai encontrar várias esferas de colisão dentro dele, são essas esferas que evitam que o jogador atravesse o veículo ao andar em direção a ele.
  22. O script precisa estar declarado como client-side no meta.xml. Além disso, certifique-se de que o volume de áudio do ambiente está configurado nas opções do menu ESC.
  23. O que me chamou mais atenção, além do erro, seria você ter usado isso: if (not sql == false) then Quando poderia simplesmente ter usado isso: if (sql) then
×
×
  • Create New...