Jump to content

Ajuda Contas e outros


Recommended Posts

preciso de algumas ajudinhas pois estou iniciando a programar em mta.

 

1 duvida: 

Eu estava estudando a linguagem .lua em si, mas fiquei com uma grande duvida, olhe

se eu fizer

for i=0, 100 do
       --aq coloco e tals
end

mas pra q serve

for i, v in ipairs(vetor) do
        --aq coloco e tals
end

pra que serve esse pairs e ipairs? se puder me expliquem dando ex pois meu raciocínio é meio lento rs

 

2 duvida:

 

Onde ficam salvas as contas dos players? tem um painel de login aqui, mas onde elas estão salvas? que tipo de salvamento é?


Link to comment
  • Moderators
for i=1, 10 do
  
for i,v in ipairs(table) do
    
for i,v in pairs(table) do

Esses três métodos vão fazer a mesma coisa, a diferença é que você usa ipairs ou pairs para iterar os valores duma tabela, você também pode fazer usando o primeiro loop no código acima, mas já tem duas funções apropriadas para isso.

ipairs: percorre pelos valores da tabela (começando do índice 1), retornando os valores sempre na ordem, exemplo

local cores =
{
	[1] = "branco",
	[2] = "vermelho",
	[3] = "amarelo",
	[4] = "azul",
	[5] = "verde"
}

for i,v in ipairs(cores) do
	print(v)
	--[[
		> branco
		> vermelho
		> amarelo
		> azul
		> verde
	]]
end

Nesse caso, os índices são de 1 a 5. Neste caso a seguir, ipairs não funciona:

local cores =
{
	[10] = "branco",
	[20] = "vermelho",
	[30] = "amarelo",
	[40] = "azul",
	[50] = "verde"
}

for i,v in ipairs(cores) do
	print(v) -- > não sai nada
end

Conclusão: ipairs deve ser usado apenas quando a tabela estiver definida com uma ordem em seus índices. Se você usar:

local cores =
{
	[1] = "branco",
	[3] = "vermelho",
	[4] = "amarelo",
	[5] = "azul",
	[6] = "verde"
}

for i,v in ipairs(cores) do
	print(v) -- > branco
end

Note que o índice 2 é pulado.

Vai sair só o valor do índice 1, os restante será ignorado.

Ou seja ipairs é usado apenas em tabelas simples, quando seus índices têm uma ordem, iniciando de 1.

Só deixando claro outra coisa, você não precisa criar cada índice no código quando for estruturado dessa forma. Você pode deixar:

local cores =
{
	"branco",
	"vermelho",
	"amarelo",
	"azul",
	"verde"
}

Isso é o mesmo que definindo os índices com 1,2,3,4,5 para cada valor, respectivamente.

 

Sobre pairs então, fica tudo mais claro - usa-se quando a estrutura da tabela é mais complexa, exemplo:

local cores =
{
	["white"] = "branco",
	["red"] = "vermelho",
	["yellow"] = "amarelo",
	["blue"] = "azul",
	["green"] = "verde"
}

for k,v in pairs(cores) do
	print(k.. " Tradução: "..v)
	--[[
		> blue Tradução: azul
		> green Tradução: verde
		> yellow Tradução: amarelo
		> red Tradução: vermelho
		> white Tradução: branco
	]]
end

Esses valores serão retornados numa ordem aleatória.

 

EDIT: Sobre a segunda pergunta, as contas do MTA ficam armazenadas no arquivo internal.db.

Edited by DNL291
  • Like 1
Link to comment
On 01/05/2017 at 01:09, DNL291 said:

for i=1, 10 do
  
for i,v in ipairs(table) do
    
for i,v in pairs(table) do

Esses três métodos vão fazer a mesma coisa, a diferença é que você usa ipairs ou pairs para iterar os valores duma tabela, você também pode fazer usando o primeiro loop no código acima, mas já tem duas funções apropriadas para isso.

ipairs: percorre pelos valores da tabela (começando do índice 1), retornando os valores sempre na ordem, exemplo


local cores =
{
	[1] = "branco",
	[2] = "vermelho",
	[3] = "amarelo",
	[4] = "azul",
	[5] = "verde"
}

for i,v in ipairs(cores) do
	print(v)
	--[[
		> branco
		> vermelho
		> amarelo
		> azul
		> verde
	]]
end

Nesse caso, os índices são de 1 a 5. Neste caso a seguir, ipairs não funciona:


local cores =
{
	[10] = "branco",
	[20] = "vermelho",
	[30] = "amarelo",
	[40] = "azul",
	[50] = "verde"
}

for i,v in ipairs(cores) do
	print(v) -- > não sai nada
end

Conclusão: ipairs deve ser usado apenas quando a tabela estiver definida com uma ordem em seus índices. Se você usar:


local cores =
{
	[1] = "branco",
	[3] = "vermelho",
	[4] = "amarelo",
	[5] = "azul",
	[6] = "verde"
}

for i,v in ipairs(cores) do
	print(v) -- > branco
end

Note que o índice 2 é pulado.

Vai sair só o valor do índice 1, os restante será ignorado.

Ou seja ipairs é usado apenas em tabelas simples, quando seus índices têm uma ordem, iniciando de 1.

Só deixando claro outra coisa, você não precisa criar cada índice no código quando for estruturado dessa forma. Você pode deixar:


local cores =
{
	"branco",
	"vermelho",
	"amarelo",
	"azul",
	"verde"
}

Isso é o mesmo que definindo os índices com 1,2,3,4,5 para cada valor, respectivamente.

 

Sobre pairs então, fica tudo mais claro - usa-se quando a estrutura da tabela é mais complexa, exemplo:


local cores =
{
	["white"] = "branco",
	["red"] = "vermelho",
	["yellow"] = "amarelo",
	["blue"] = "azul",
	["green"] = "verde"
}

for k,v in pairs(cores) do
	print(k.. " Tradução: "..v)
	--[[
		> blue Tradução: azul
		> green Tradução: verde
		> yellow Tradução: amarelo
		> red Tradução: vermelho
		> white Tradução: branco
	]]
end

Esses valores serão retornados numa ordem aleatória.

 

EDIT: Sobre a segunda pergunta, as contas do MTA ficam armazenadas no arquivo internal.db.

vlw, e obrigado pelos outros que postaram tb, mas uma duvida:

sobre o salvamento de contas, como faço pra ser salvo mais um item no internal.db? tipo, vou criar um server de mta rpg ai preciso que fique salva a organização do cara, a skin, se tem veiculo ou não, qual a casa dele, etc, como coloco mais um campo no internal.db?

Link to comment
  • Moderators

Representa todos os elementos da árvore, digamos que é o pai de todos os elementos presente no servidor. Por exemplo, usando a função getElementChildren(root) retorna uma tabela com todos os elementos-filhos (esses são todos elementos, por exemplo). E a estrutura é nessa ordem: root > resources > elementos_do_resource, nunca testei getElementChildren mas deve ser assim.

Facilita na hora de chamar uma função na qual deve ser executada pra todos os elementos que convém para a função. Também, caso não saiba, root é a variável predefinida pra getRootElement, usando root no código é o mesmo que chamar essa função.

getResourceRootElement funciona da mesma forma, mas engloba apenas os elementos presente em tal resource, e sua variável predefinida é resourceRoot.

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...