Jump to content

Lord Henry

Other Languages Moderators
  • Posts

    4,008
  • Joined

  • Last visited

  • Days Won

    184

Everything posted by Lord Henry

  1. Da próxima vez, utilize a formatação de código clicando no botão <> em vez de colar o código direto no texto. Na sua linha 29, troque "Milicia" por GroupName. Da mesma forma que foi feito na linha 79.
  2. A outra é câmera cinematográfica que fica girando ao redor de um objeto. Vc usa onClientPreRender com setCameraMatrix.
  3. Pode ser. Pois também achei estranho ele sempre retornar nil.
  4. Se refere a aquele efeito de câmera bêbado? Ou se refere a movimentar a câmera orbitando um objeto?
  5. Se o script for client-side, então: Cria uma variável qualquer com valor false. Fora da função. Quando o jogador executa o comando, verifica se a variável é true ou não. Se for true, então: Manda outputChatBox dizendo pra esperar pra usar o comando. Se não for true, então: Faz a variável ficar true. Executa o código que tem que ser executado. Inicia um setTimer de 5 segundos pra fazer a variável voltar pra false. Se o script for server-side, então: Cria uma table qualquer vazia. Fora da função. Será usada pra armazenar os timers dos jogadores. Quando o jogador executa o comando, verifica se existe a variável da table indexada nele ou não. Se a table indexada no jogador for igual a nil, então: Executa o código que tem que ser executado. Cria a variável da table indexada no jogador, ex: tableQualquer[thePlayer] = setTimer... Na variável da table indexada no jogador, inicia um setTimer de 5 segundos pra anular a variável indexada no jogador. tableQualquer[thePlayer] = nil Se a table indexada no jogador não for nil, então: Manda outputChatBox dizendo pra esperar pra usar o comando. Em outra função, se o jogador sair do servidor (onPlayerQuit), então: Verifica se o timer da variável da table indexada no jogador existe com isTimer. Se o timer existe, então: Da killTimer nesse timer e anula a variável da table indexada no jogador. Espero ter ajudado. Eu poderia ter dado código pronto mas vc parece que nem tentou fazer.
  6. Testei essa função mas por algum motivo ela está falhando. Pois o string.find está sempre retornando nil. Fiz assim e resolveu: function removeHex (s) if type (s) == "string" then while (s ~= s:gsub ("#%x%x%x%x%x%x", "")) do s = s:gsub ("#%x%x%x%x%x%x", "") end end return s or false end
  7. Delete e reescreva a linha 8 em vez de copiar do fórum. Vc copiou um símbolo invisível.
  8. Não precisa ser coordenada exata. Use no máximo 3 decimais. Mais que isso é irrelevante. Tente isso: theMarker = createMarker (2796.071, -2373.505, 13.631, "cylinder", 1) function markerPanel (hitPlayer, matchingDimension) if (hitPlayer == localPlayer) then addEventHandler("onClientRender", root, renderPanel) render = true showCursor(true) end end addEventHandler ("onClientMarkerHit", theMarker, markerPanel)
  9. Cara, isso é relativamente complexo de ser feito. Pois além do painel, você vai precisar adaptar todos os mods de veículos para que funcionem em conjunto com o painel. Já vou logo adiantando que vc vai precisar de triggerEvent, triggerServerEvent e triggerClientEvent. Além de funções para verificar se tal resource está funcionando ou não, receber de alguma forma o status do veículo (pois o mod pode estar ligado mas o veículo desativado) para que o painel possa ler. Nome do veículo, salvar os veículos ativos na conta do jogador, etc. No seu lugar eu estudaria mais antes de tentar ir por esse caminho.
  10. getCursorPosition retorna false quando o cursor não está visível. Antes da linha 2, coloque isso: if (not isCursorShowing ()) then return end
  11. No scoreboard, só acessar as configurações dele pelo painel admin e mudar o parâmetro Allow colorcoded names para false. No chat, vc deve cancelar o envio normal das mensagens e reenviá-las sem o parâmetro colorcoded (aquele true que vem depois dos 255). Se você estiver com um resource de TAGs, faça a correção nele. Se não tiver um resource de TAGs, crie um resource novo com um server.Lua e coloque isso nele: function chatbox (text, msgtype) local name = getPlayerName (source) if (msgtype == 0) then cancelEvent (true) -- Cancela a mensagem original. outputChatBox (name..": "..text, root, 231, 217, 176) -- Reenvia a mensagem sem cores. (vai aparecer os códigos de cor em vez disso) outputServerLog ("CHAT: "..name..": "..text) end end No killmessages dai é mais complexo, pois ele vem nativamente bugado. Substitua o script inteiro do textlib.Lua por esse:
  12. Substitua aquela linha 10 por isso: local allowed = {"DM", "Moderador", "SuperModerator", "Admin"} -- Lista de ACL Groups que a mensagem vai aparecer. for i, jogador in ipairs (getElementsByType ("player")) do -- Para cada jogador do servidor, faça: for k, accN in ipairs (allowed) do -- Para cada string da table allowed, faça: if isObjectInACLGroup ("user."..getAccountName (getPlayerAccount(jogador)), aclGetGroup(accN)) then outputChatBox ("[#4888f7FW-SETAGEM#c9c9c9]#fae7a2O #4888f7"..SetNamePlayer.." #fae7a2Setou o Player #4888f7"..nameR.." #fae7a2De Dono do Morro (DM)", jogador, 201, 201, 201, true) break end end end
  13. Dependendo do modelo da construção, a porta é separada e dai vc consegue tirar ela no editor de mapas do MTA. Sobre colocar o interior dentro da construção, vc vai precisar modificar o modelo do interior, pois eles geralmente não cabem dentro das construções. Você vai ter um trabalho absurdo que não vale a pena. Mais detalhes nesse outro tópico com mesmo assunto:
  14. @EduardoMega não reviva tópicos antigos. Da próxima vez crie seu próprio tópico.
  15. Você quer que a mensagem O NOME Setou o Player NOME de DM apareça somente pros jogadores que estiverem nos grupos Admin, SuperModerador, Moderador, DM?
  16. Texto corrigido para se adequar as regras de formatação do fórum. Movido para a seção correta de Programação em Lua. Da próxima vez, utilize o botão <> do fórum para postar códigos em vez de colar direto no texto. Veja as regras do fórum aqui:
  17. Da pra fazer com isso: function isResourceRunning (resourceName) local res = getResourceFromName (resourceName) if (res) then if (getResourceState (res) == "running") then return true else return false end end end Adicione essa função acima no seu script. Depois quando quiser verificar se o resource Freeroam está ligado ou não, basta verificar com: if (isResourceRunning ("freeroam")) then -- Se o resource freeroam está ativo, então: -- Faz alguma coisa end Sua função vai ficar assim: function assignNewTeam (source, commandName) if (isResourceRunning ("freeroam")) then local theTeam -- Cria a variável do time mas não atribui valor nenhum a ela de propósito. if (getTeamFromName ("R7")) then -- Se já existe um time com o nome "R7", então: theTeam = getTeamFromName ("R7") -- A variável recebe o time que já existe. else -- Se não existe nenhum time com esse nome criado, então: theTeam = createTeam ("R7", 0, 255, 0) -- Cria o time e coloca ele nessa variável. end setPlayerTeam (source, theTeam) -- Coloca o player que digitou o comando nesse time. end end addCommandHandler ("navio", assignNewTeam)
  18. A sua função do /navio e do /navio2 ficam tentando criar o time cada vez que alguém usa o comando. Na segunda vez ele dará erro, pois o time já existe. function assignNewTeam (source, commandName) local theTeam -- Cria a variável do time mas não atribui valor nenhum a ela de propósito. if (getTeamFromName ("R7")) then -- Se já existe um time com o nome "R7", então: theTeam = getTeamFromName ("R7") -- A variável recebe o time que já existe. else -- Se não existe nenhum time com esse nome criado, então: theTeam = createTeam ("R7", 0, 255, 0) -- Cria o time e coloca ele nessa variável. end setPlayerTeam (source, theTeam) -- Coloca o player que digitou o comando nesse time. end addCommandHandler ("navio", assignNewTeam)
  19. Eu disse parâmetro de função e não parâmetro de evento. function unassignTeam () local theTeam = getPlayerTeam (source) if theTeam then setPlayerTeam (source, nil) end end addEventHandler ("onPlayerWasted", root, unassignTeam)
  20. OnPlayerWasted não usa aqueles parâmetros de função. No seu caso, daria pra deixar sem parâmetro nenhum.
  21. Por favor não reviva tópicos antigos. Crie um tópico na seção de Programação em Lua com sua dúvida. Regras do fórum:
  22. Tópico movido para a seção correta de Programação em Lua. Da próxima vez, veja as regras do fórum e poste na seção adequada. Há erros de sintaxe no seu meta, esse é um dos motivos para ele não estar funcionando.
  23. Obter a posição do capô em relação ao mundo: local hoodX, hoodY, hoodZ = getVehicleComponentPosition (theVehicle, "bonnet_dummy", "world") E dai pra saber a distância do capô e o jogador, usa um getDistanceBetweenPoints3D.
×
×
  • Create New...