Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    3,912
  • Joined

  • Last visited

  • Days Won

    170

Everything posted by Lord Henry

  1. Conforme está escrito ali, ele está dizendo que apertar a tecla num_1 (1 do teclado numérico) vai ocultar essa mensagem. No entanto, ele só vai lembrar disso durante sua sessão atual de jogo, ou seja, se vc sair e entrar novamente no servidor, a mensagem estará visível novamente. Se o que vc quer fazer é que essa mensagem já esteja oculta por padrão ao entrar no servidor, dai sim você tem que programar umas coisas. Sim, com shaders. Um shader básico de substituição de textura faz isso.
  2. Sim, é possível. Utilize isElementInWater para saber se o jogador está na água, junto com getElementPosition para saber se ele está dentro do mapa (evitar que tome dano em outras águas fora do mapa) e para dar o dano, use getElementHealth junto com setElementHealth.
  3. Eu testei o código e ele está funcionando. Sim, eu fiz as correções de lógica.
  4. @laxante009 ele só está avisando que moveu este tópico para a seção Portuguesa, pois você postou inicialmente na seção errada. Agora o tópico já está na seção correta, não precisa responder ele. Apenas tome cuidado para postar na área correta nas próximas vezes. Sobre sua dúvida. Você adicionou 3x o evento "DarSkin" no server, em vez de adicionar o "DarSkin1" e o "DarSkin2". Outro problema é que você errou ao colocar um valor no lugar de uma variável ali no evento. Além de uma série de erros de lógica e otimização. server-side: addEvent("DarSkin", true) addEventHandler("DarSkin", root, function(skinID) -- skinID recebe o valor que foi passado depois do localPlayer lá no triggerServerEvent. if skinID and tonumber(skinID) then setPedSkin(source, tonumber(skinID)) -- source é o que foi passado como segundo argumento lá no triggerServerEvent. end end) client-side: local janela = guiCreateWindow(0.27, 0.29, 0.54, 0.34, "", true) guiWindowSetSizable(janela, false) guiSetVisible(janela, false) local button = guiCreateButton(0.02, 0.37, 0.44, 0.37, "Skin 1", true, janela) guiSetFont(button, "clear-normal") guiSetProperty(button, "NormalTextColour", "FFAAAAAA") guiSetVisible(button, false) local button1 = guiCreateButton(0.54, 0.38, 0.44, 0.37, "Skin 2", true, janela) guiSetFont(button1, "clear-normal") guiSetProperty(button1, "NormalTextColour", "FFAAAAAA") guiSetVisible(button1, false) local button2 = guiCreateButton(0.73, 0.13, 0.25, 0.14, "inicial", true, janela) guiSetProperty(button2, "NormalTextColour", "FFAAAAAA") guiSetVisible(button2, false) local label = guiCreateLabel(0.09, 0.14, 0.61, 0.09, "pegue a skin do time que vc começou a jogar >", true, janela) guiSetVisible(label, false) local visible = false addCommandHandler("painel", function() if visible == false then guiSetVisible(janela, true) guiSetVisible(button, true) guiSetVisible(button1, true) guiSetVisible(button2, true) guiSetVisible(label, true) visible = true showCursor(true) else guiSetVisible(janela, false) guiSetVisible(button, false) guiSetVisible(button1, false) guiSetVisible(button2, false) guiSetVisible(label, false) visible = false showCursor(false) end end) addEventHandler("onClientGUIClick", guiRoot, function (btn, state) -- btn para não dar conflito com o guiElement chamado button. if btn == "left" and state == "up" then if source == button then -- Se o elemento que foi clicado for o button, então: triggerServerEvent("DarSkin", localPlayer, 294) elseif source == button1 then -- Senão se o elemento que foi clicado for o button1, então: triggerServerEvent("DarSkin", localPlayer, 30) elseif source == button2 then -- Senão se o elemento que foi clicado for o button2, então: triggerServerEvent("DarSkin", localPlayer, 21) end end end)
  5. Troque aquela sua função por esta: addEventHandler("onVehicleEnter", root, function(player) if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(player)), aclGetGroup ("Admin")) then local model = getElementModel(source) local x, y, z = getElementPosition(source) if getElementData(source, "vehSpawn") then if veh[player] and isElement(veh[player]) then destroyElement(veh[player]) end veh[player] = createVehicle(model, x+3, y, z) warpPedIntoVehicle(player, veh[player]) end else outputChatBox("Acesso negado.", player, 255, 50, 50) removePedFromVehicle(player) end end)
  6. 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.
  7. 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.
  8. Só colocar isso: if isObjectInACLGroup ("user."..getAccountName(getPlayerAccount(player)), aclGetGroup ("Admin")) then -- Se o jogador está na ACL Group admin, então:
  9. Qual sentença você usou para criar a tabela? E qual o objetivo de obter o último ID?
  10. 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.
  11. Sem o código fica impossível adivinhar. Nem seu arquivo meta.xml está certo.
  12. Script ilegível. Faça a indentação correta do seu código.
  13. 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" />
  14. 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).
  15. 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.
  16. Sim, você consegue. Pois o SetVehicleHandling só funciona no veículo específico e não em todos daquele modelo.
  17. 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.
  18. Não entendi o que você deseja fazer. Seria interessante mostrar uma print de exemplo do que você quer fazer.
  19. Não é permitido solicitar/enviar drops de mods aqui no fórum.
  20. 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
  21. 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.
  22. GG, top demais. 1% é tranquilo.
  23. 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)
×
×
  • Create New...