Leaderboard
Popular Content
Showing content with the highest reputation on 23/12/20 in all areas
-
O que é for? Assim como while ou do...while, o for é uma estrutura de repetição, que serve pra que? Repetir as coisas xd Por exemplo: local vehicles = getElementsByType("vehicle") Essa parte do seu código retorna uma tabela de veículos, contendo vários veículos que você deseja destruir. Não existe uma função nativa do MTA que destrói todos os carros, você deve destruir um a um. Imagina como seria fazer isso sem uma estrutura de repetição ? Então basicamente é isso, estrutura de repetição serve pra repetir alguma função ou pedaço de código. Por exemplo, se você quer contar de 1 até 1000 e exibir isso no chat do player, ou você faz 1000 linhas de código dando outputChatBox ou faz um for que se repetirá 1000 vezes, se resolvendo em 3 linhas de código. for i=0, 1000, 1 do -- Enquanto i for menor ou igual a 1000 ele é incrementado de 1 a 1 outputChatBox (i) --Vai exibir o índice, que vai de 0 a 1000 end -- fecha o for (Foi só um for limitado de 0 a 1000, que não percorremos tabela, então a sintaxe não exige que usemos o in ipairs) Se você quer saber programar melhor, não somente MTA mas qualquer coisa, deve aprender sobre estruturas de condição e repetição, são importantíssimos! for INDICE, VALOR in ipairs (TABELA) do end INDICE: Uma tabela tem várias posições, índice é em qual posição da tabela o seu for está executando naquele momento. VALOR: É o valor da tabela naquele índice rodando no momento. Por exemplo, se estiver rodando uma tabela de carros (como vc fez), a minha variável VALOR vai representar todos os carros enquanto roda o for, um de cada vez. No seu exemplo o que cumpriu esse papel foi a variável v. in ipairs: Faz com que o for varra uma tabela em modo sequencial (posição 1, posição 2, posição 3...). Também tem o in pairs que varre uma tabela em modo aleatório (posição 3, posição 8, posição 1...) O "for" e o "do" são só parte da sintaxe.2 points
-
Olá pessoal, hoje vamos falar de algo que destrói a cabeça de novatos no MTA: Quando e onde devo usar source? Então vamos a primeira pergunta que surge, mas o que diabos é source no MTA? source nada mais é do que: parâmetro determinado por uma função ou evento. Você agora você deve estar perguntando o que é parâmetro. É muito simples, pense comigo na função addCommandHandler. Ela tem 2 parâmetros predeterminados que são (Quem_Executou, Nome_Do_Comando), como na imagem abaixo: Como você pode ver na imagem, ela tem os 2 parâmetros citados acima. Lembrando que: a própria wiki fala sobre os parâmetros. playerSource: O jogador que acionou o comando ou o console do servidor. Se não for acionado por um jogador (por exemplo, por administrador) ou console de servidor, isso será falso. commandName: O nome do comando que foi acionado. Isso é útil se vários comandos passarem por uma mesma função. Mesmo o parâmetro sendo predeterminado, você pode botar o nome que você quiser, por ex: O parâmetro de quem executou o comando é playerSource, mas você pode botar qualquer nome como: p, player, sujeito, shuppinga e etc.... da mesma maneira o commandName (nome do comando), você pode botar (nome_do_comando, comando). Como você prefere. (mas é claro, siga um padrão a qual os outros programadores possam entender seu código !!) _____________________________________________________________ Mas quando devo usar source então? Simples, quando não existe o parâmetro que indique o sujeito. Por exemplo, o evento onPlayerWasted. O evento onPlayerWasted tem o seguintes parâmetros: totalAmmo - A munição total que a vitima tinha quando morreu, killer - O assassino que matou a vitima, killerWeapon - O id da arma do assassino, bodyPart - A parte do corpo da vítima que foi atingida quando ela morreu, stealth - Um valor booleano representando se esta foi ou não uma morte furtiva. Note que não existe o parâmetro vítima. Então aqui que entra o source. Mas como saber o que é o source? A própria wiki diz, basta ler A source deste evento é o jogador que morreu ou foi morto. Então o tutorial fica por aqui :), bye bye. (lembrando que essas fontes são próprias, então pode ser um conteúdo incorreto, mas espero ter ajudado a tirar a dúvida, lembrando que ela pode ser corrigida por alguém de bom conhecimento sobre do conteúdo.)1 point
-
Bom eu tava conversando com um amigo meu, aele queria que eu lhe ajudasse fazendo um script de destruir carros porem eu n sabia, ele me mandou uma funcao feita pela comunidade e queria tirar algumas duvidas aqui. function destroyVehiclesOfModel(modelID) local vehicles = getElementsByType("vehicle") for i,v in ipairs(vehicles) do if (getElementModel(v) == modelID) then destroyElement(v) end end end Queria entender como funcionar esse for i,v in ipairs(vehicles) do Queria saber oque eh ipairs, do in e for, e suas funcionalidades se alguem puder explicar eu agradeco!1 point
-
1 point
-
As the pinned thread says, this is not a help or support section! Thread's moved to the Client Support section for best results. As far as I understand, you cannot remove the watermark unless you use custom client.1 point
-
1 point
-
function showTime (TimeType) local time = getRealTime() local hours = time.hour local minutes = time.minute local seconds = time.second -- Make sure to add a 0 to the front of single digits. if (hours < 10) then hours = "0"..hours end if (minutes < 10) then minutes = "0"..minutes end if (seconds < 10) then seconds = "0"..seconds end if TimeType == 'horas' then return hours elseif TimeType == 'minutos' then return minutes elseif TimeType == 'segundos' then return minutes end end bote isso !1 point
-
tente assim: --https://forum.multitheftauto.com/forum/127-programação-em-lua/page/2/ function showtime (TimeType) local time = getRealTime() local hours = time.hour local minutes = time.minute local seconds = time.second -- Make sure to add a 0 to the front of single digits. if (hours < 10) then hours = "0"..hours end if (minutes < 10) then minutes = "0"..minutes end if (seconds < 10) then seconds = "0"..seconds end if TimeType == 'horas' then return hours elseif TimeType == 'minutos' then return minutes elseif TimeType == 'segundos' then return minutes end end function ptriniciar(thePlayer, cmd, state) local accName = getAccountName ( getPlayerAccount ( thePlayer ) ) if isObjectInACLGroup ("user."..accName, aclGetGroup ( "Policial" ) ) then if (state == "iniciar" or state == "finalizar") then -- Verifica se o comando é seguido por um parâmetro válido. local nameOfPerson = getPlayerName (thePlayer) -- Obtém o nick de quem executou o comando. if (fileExists ("logPTR.txt")) then -- Se já existe um arquivo de texto com este nome neste resource, então: newFile = fileOpen ("logPTR.txt") -- Abre o arquivo para poder editá-lo. fileSetPos (newFile, fileGetSize (newFile)) -- Coloca o cursor de escrita no fim do arquivo, caso contrário ele vai começar a escrever no começo dele, antes do que já estiver escrito no arquivo. if (state == "iniciar") then -- Se o parâmetro que o jogador usou após o comando foi "iniciar" então: outputChatBox ("Patrulha iniciada.", thePlayer) -- Apenas pra saber q o comando funcionou, normalmente teria as verificações antes de permissões e se já está em patrulha. fileWrite (newFile, "["..showTime('horas')..":"..showTime('minutos').."] "..nameOfPerson.." Iniciou sua patrulha.\n") -- Escreve isso no documento. O \n pula para a linha seguinte após a mensagem. elseif (state == "finalizar") then outputChatBox ("Patrulha finalizada.", thePlayer) fileWrite (newFile, "["..showTime('horas')..":"..showTime('minutos').."] "..nameOfPerson.." Finalizou sua patrulha.\n") end fileClose (newFile) -- Para todo fileOpen ou fileCreate, é necessário um fileClose pois enquanto arquivos estiverem abertos, eles podem ser corrompidos e os dados serão perdidos. else -- Se o arquivo ainda não existe, então: newFile = fileCreate ("logPTR.txt") -- Cria o arquivo de texto dentro deste resource e abre ele. (se já existisse um arquivo com esse nome, substituiria por um novo em branco) if (newFile) then -- Se conseguiu criar o arquivo, então: (as vezes pode dar erro de permissão no servidor, então use isso para evitar erros.) fileSetPos (newFile, fileGetSize (newFile)) if (state == "iniciar") then outputChatBox ("Patrulha iniciada.", thePlayer) fileWrite (newFile, "["..showTime('horas')..":"..showTime('minutos').."] "..nameOfPerson.." Iniciou sua patrulha.\n") elseif (state == "finalizar") then outputChatBox ("Patrulha finalizada.", thePlayer) fileWrite (newFile, "["..showTime('horas')..":"..showTime('minutos').."] "..nameOfPerson.." Finalizou sua patrulha.\n") end fileClose (newFile) else -- Se não conseguiu criar o arquivo, então: debug ("ERRO: Impossivel criar arquivo 'logPTR.txt' no servidor.") end end else -- Se não usou nenhum parâmetro após o comando ou então usou um parâmetro incorreto, então: outputChatBox ("Sintaxe: /ptr <iniciar / finalizar>", thePlayer, 255, 255, 0) end end end addCommandHandler("ptr", ptriniciar)1 point
-
1 point
-
1 point
-
use o evento onElementDestroy para isso. ex: addEventHandler("onElementDestroy", getRootElement(), function () if getElementType(source) == "vehicle" then local occupant = getVehicleOccupant(source, 0) if (occupant) then local data2 = dbPoll(dbQuery(db, "SELECT * FROM Veiculos WHERE Conta = ?", getAccountName(getPlayerAccount(occupant))), -1) for i, data in ipairs (data2) do local IDDoDono = getElementData(occupant, "ID") if not IDDoDono then return end local VeiculoIDDoDono = ProcurarVeiculosNoJogo(IDDoDono) if VeiculoIDDoDono then destroyElement(VeiculoIDDoDono) end if VeiculoAluguel[occupant] then destroyElement(VeiculoAluguel[occupant]) end dbExec(db, "UPDATE Veiculos SET Status = ? WHERE Conta = ? AND Status = ?", "Guardado", getAccountName(getPlayerAccount(occupant)), "Spawnado") end end end end)1 point
-
alir em ' state == "down" ', coloque 'both' --> ' state == "down" '. Na wiki fala sobre o evento: 'onClientClick'1 point
-
1 point
-
https://github.com/Vadya963/50pSublimeText3Package updated to version 1.5.71 point