Otavio Posted December 21, 2020 Share Posted December 21, 2020 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 Link to comment
Boechat Posted December 21, 2020 Share Posted December 21, 2020 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 Link to comment
HiroShi Posted December 27, 2020 Share Posted December 27, 2020 @Boechatmuito bem !. Mas deixarei um exemplo aqui usando o elemento 'player' no getElementsByType(). Vamos supor que desejamos puxar um player pelo seu ID, então faremos assim: print(getPlayerName(getPlayerFromID(23))) -- aqui daremos um print no nome do player que tem o id 23. function getPlayerFromID(ID) -- aqui é a function que puxa o player pelo ID v = false -- aqui criamos uma variavel que atribuimos o valor boolean 'false' for INDICE, VALOR in ipairs (getElementsByType('player')) do -- aqui iniciamos um loop de todos os players if getElementData(VALOR, "ID") == ID then -- aqui verificamos os players que tem o elementData 'ID' igual o que botamos no print acima v = VALOR -- aqui transformamos a variavel no player selecionado. break -- aqui quebramos o loop end end return v -- aqui retornamos para o 'print' o 'player or false' end 1 1 Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now