Ir para conteúdo

Featured Replies

Postado

Uma função que pode ser útil de varias maneiras:
 

Spoiler

function getNumberVector(k)
	if(type(k) ~= "string") then
		return error("bad argument #1 to function '" .. debug.getinfo(1, "n").name .. "' (string expected, got " .. type(k) .. ")", 2)
	end
	
	local ret, sep = {}, k:explode(";")
	for _, vec in ipairs(sep) do
		if(vec:find("-")) then
			local fromTo = vec:explode("-")
			if(fromTo and tonumber(fromTo[1]) and tonumber(fromTo[2])) then
				for i = tonumber(fromTo[1]), tonumber(fromTo[2]) do
					table.insert(ret, i)
				end
			end
		elseif(tonumber(vec)) then
			table.insert(ret, vec)
		end
	end
	
	return ret
end

 

 

Como funciona? Bom... Ela retorna uma tabela contendo os números do vector, da mesma forma que no XML. Exemplo: "1-50;60;80" ele retornaria uma tabela contendo os números de 1 a 50 e também o 60 e 80.

 

Ainda não entendeu? Então aqui vai alguns scripts de exemplo:
 

Exemplo 1:

Spoiler

local conf = {
	["1;5"] = "Sorcerer",
	["2;6"] = "Druid",
	["3;7"] = "Paladin",
	["4;8"] = "Knight"
}

function onSay(cid, words, param, channel)
	for k, v in pairs(conf) do
		local vec = getNumberVector(k)
		if(isInArray(vec, getPlayerVocation(cid))) then
			doPlayerSendTextMessage(cid, 22, "You are " .. v .. ".") -- retorna o nome da vocação baseada no vocationId
			break
		end
	end
	
	return true
end

 

 

Exemplo 2:

Spoiler

local conf = {
	["1-49"] = "Very Weak",
	["50-99"] = "Weak",
	["100-149"] = "Medium",
	["150-199"] = "Strong",
	["200-299"] = "Very Strong",
	["300-449"] = "Incredible",
	["450-699"] = "Immortal"
}

function onSay(cid, words, param, channel)
	local s
	for k, v in pairs(conf) do
		local vec = getNumberVector(k)
		if(isInArray(vec, getPlayerLevel(cid))) then
			s = v
			break
		end
	end
	
	doPlayerSendTextMessage(cid, 22, "Based in your level you are: " .. (s or "Invincible").. ".") -- retorna titulo baseado no level
	return true
end

 

 

Já da pra ter uma noção de como funciona.

Postado

Parabéns, seu tópico de conteúdo foi aprovado!
Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.

Spoiler

Congratulations, your content has been approved!
Thank you for your contribution, we of Tibia King we are grateful.
Your content will help many other users, you received +1 REP.

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo