-
Posts
4,008 -
Joined
-
Last visited
-
Days Won
184
Everything posted by Lord Henry
-
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.
-
A outra é câmera cinematográfica que fica girando ao redor de um objeto. Vc usa onClientPreRender com setCameraMatrix.
-
Pode ser. Pois também achei estranho ele sempre retornar nil.
-
setCameraShakeLevel É isso?
-
Se refere a aquele efeito de câmera bêbado? Ou se refere a movimentar a câmera orbitando um objeto?
-
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.
-
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
-
Delete e reescreva a linha 8 em vez de copiar do fórum. Vc copiou um símbolo invisível.
-
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)
-
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.
-
getCursorPosition retorna false quando o cursor não está visível. Antes da linha 2, coloque isso: if (not isCursorShowing ()) then return end
-
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:
-
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
-
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:
-
@EduardoMega não reviva tópicos antigos. Da próxima vez crie seu próprio tópico.
-
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?
-
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)
-
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)
-
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)
-
OnPlayerWasted não usa aqueles parâmetros de função. No seu caso, daria pra deixar sem parâmetro nenhum.
-
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:
-
Função executar apenas perto do Carro !
Lord Henry replied to FeniXMTA's topic in Programação em Lua
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.
