Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

me confundi só por causa do nome do script :fuu: alguem porfavor move para actions.

  Citar

Nome: Mining System

Autor: Lwkass

Modificação: Vittu

Detalhes: um sistema de mineração com skill.

Bem pessoal esse era um sistema de lenhador, mas eu dei uma modificada eu transformei ele ne um script de mining, antes de falarem qualquer coisa, eu tive autorização do autor para modificar o script.

Nivel Máximo Padrão = 100

- Ganhos Por Nivel-

  Citar

|Nivel X ~ Y: Gold Nuggets = min, max; Chance = %

|Nivel 0 ~ 9: Minimo = 1, Máximo = 2; Chance = 5 %

|Nivel 10 ~ 19: Minimo = 2, Máximo = 4; Chance = 10 %

|Nivel 20 ~ 29: Minimo = 3, Máximo = 6; Chance = 15 %

|Nivel 30 ~ 39: Minimo = 4, Máximo = 8; Chance = 20 %

|Nivel 40 ~ 49: Minimo = 5, Máximo = 10; Chance = 25 %

|Nivel 50 ~ 59: Minimo = 6, Máximo = 12; Chance = 30 %

|Nivel 60 ~ 69: Minimo = 7, Máximo = 14; Chance = 30 %

|Nivel 70 ~ 79: Minimo = 8, Máximo = 16; Chance = 35 %

|Nivel 80 ~ 89: Minimo = 9, Máximo = 18; Chance = 35 %

|Nivel 90 ~ 99: Minimo = 10, Máximo = 20; Chance = 40 %

|Nivel 100: Minimo = 11, Máximo = 22; Chance = 50 %

Esse sistema conta com mensagem de avanço de nivel ou seja, você passou do nivel 10 pro 11 mostra o seguinte:

"You advanced from level 10 to level 11 in mining."

Delay, esse delay(atraso) funciona da seguinte forma, ao quebrar a rocha ela se torna um "destroço de pedra" e ao passar 480 segundos(pode ser modificado) a rocha volta.

OBS: Deixei o Delay pois ficaria dificil o player esperar o Server Save para achar mais rochas caso o servidor seja pequeno.

Oque o player ganha ao quebrar as rochas?

Ele ganha Gold Nuggets(configuravel)

Instalação:

Abra a pasta data/actions/script e adicione isso em um arquivo lua (Sugestão: mining.lua)

------------------------------------------------------

-- Script by: Lwkass

-- Mod: Vittu

-- Version: 2.0

-- Tested in: TFS 0.4

---------------------------

-- Configurations --

---------------------------

local STORAGE_SKILL_LEVEL = 10002

local STORAGE_SKILL_TRY = 10003

	local config = {

	 levels = {

		 {level = {0,9}, quant = {1,2}, percent = 5},

		 {level = {10,19}, quant = {2,4}, percent = 10},

		 {level = {20,29}, quant = {3,6}, percent = 15},

		 {level = {30,39}, quant = {4,8}, percent = 20},

		 {level = {40,49}, quant = {5,10}, percent = 25},

		 {level = {50,59}, quant = {6,12}, percent = 30},

		 {level = {60,69}, quant = {7,14}, percent = 30},

		 {level = {70,79}, quant = {8,16}, percent = 35},

		 {level = {80,89}, quant = {9,18}, percent = 35},

		 {level = {90,99}, quant = {10,20}, percent = 40},

		 {level = {100}, quant = {11,22}, percent = 50}

	 },

	 rocks = {1356, 1285, 3607, 3616}, -- Id das rochas que podem ser quebradas

	 stones = {},  -- Modelo = {rock_id, rock_id}

	 default_stone = 2157, -- pedra padrão

	 rock_delay = 480, -- Tempo de volta da rocha (Em segundos)

	 bonus_chance = 3, -- Chance (em porcentagem) de se conseguir um bonus de exp

	 bonus_exp = 1 -- Bonus extra

	}



------------------------------------

-- END Configurations ---

------------------------------------

function getMiningLevel(cid)

	return getPlayerStorageValue(cid, STORAGE_SKILL_LEVEL)

end

function setPlayerMiningLevel(cid, n)

	setPlayerStorageValue(cid, STORAGE_SKILL_LEVEL, n)

end

function addMiningLevel(cid, n)

	setPlayerMiningLevel(cid, getMiningLevel(cid) + (isNumber(n) and n or 1))

	setMiningTry(cid, 0)

end

function getMiningInfo(cid)

	for i = 1, #config.levels do

		min = config.levels[i].level[1]; max = config.levels[i].level[2]

		if (getMiningLevel(cid) >= min and getMiningLevel(cid) <= max) then

			return {quantity = {min = config.levels[i].quant[1], max = config.levels[i].quant[2]}, chance = config.levels[i].percent}

		end

	end

end

function getStoneByRock(rockid)

	for i = 1, #config.stones do

		if (config.stones[2] == rockid) then

			return config.stones[1]

		end

	end

	return config.default_stone

end

function getMiningTries(cid)

	return getPlayerStorageValue(cid, STORAGE_SKILL_TRY)

end

function setMiningTry(cid, n)

	setPlayerStorageValue(cid, STORAGE_SKILL_TRY, n)

end

function addMiningTry(cid, bonus)

	setMiningTry(cid, getMiningTries(cid) + 1 + (bonus and config.bonus_exp or 0))


	if (getMiningTries(cid) >= getMiningExpTo(getMiningLevel(cid))) then -- Up

		doPlayerSendTextMessage(cid, 22, "You advanced from level " .. getMiningLevel(cid) .. " to level ".. (getMiningLevel(cid) + 1) .." in mining.")


		if ((getMiningLevel(cid)+1) == getMiningMaxLevel()) then

			doPlayerSendTextMessage(cid, 22, "Max level reached in mining.")

		end


		addMiningLevel(cid)

		doSendMagicEffect(getCreaturePosition(cid), math.random(28,30))

		setMiningTry(cid, 0)

	end

end

function getMiningExpTo(level)

	return ((level*1.5)+((level+1)*7))

end

function getMiningMaxLevel()

	return config.levels[#config.levels].level[#config.levels[#config.levels].level]

end

---------------------------


function onUse(cid, item, fromPosition, itemEx, toPosition)

	rock = { id = itemEx.itemid, uid = itemEx.uid, position = toPosition }

	player = { position = getCreaturePosition(cid) }


	if (getMiningLevel(cid) < 0) then

		setPlayerMiningLevel(cid, 0)

	end


	if (isInArray(config.rocks, rock.id)) then

		addMiningTry(cid)


		if (math.random(1,100) <= getMiningInfo(cid).chance) then

			local collected = math.random(getMiningInfo(cid).quantity.min, getMiningInfo(cid).quantity.max)

			doPlayerAddItem(cid, getStoneByRock(rock.id), collected)

			doPlayerSendTextMessage(cid, 22, "You got " .. collected .. " gold" .. (collected > 1 and "s" or "") .. " nuggets.")


			if (math.random(1,100) <= config.bonus_chance) then -- Bonus calc

				addMiningTry(cid, true)

				doSendAnimatedText(player.position, "Bonus!", COLOR_ORANGE)

			end


			event_rockCut(rock)

		else

			if (math.random(1,100) <= (10-getMiningInfo(cid).chance/10)) then

				doPlayerSendTextMessage(cid, 22, "You got nothing.")

				event_rockCut(rock)

			else

				doSendMagicEffect(rock.position, 3)

				doSendAnimatedText(rock.position, "Poff!", COLOR_GREEN)

			end

		end

	else

		doPlayerSendCancel(cid, "This can't be cut.")

	end

end

function event_rockCut(rock)

	addEvent(event_rockGrow, config.rock_delay * 1000, rock.position, rock.id)


	doTransformItem(rock.uid, 3610)

	doSendMagicEffect(rock.position, 3)

	doSendAnimatedText(rock.position, "Tack!", COLOR_GREEN)

	doItemSetAttribute(rock.uid, "name", "A trunk of " .. getItemNameById(rock.id))

end

function event_rockGrow(rockPos, old_id)

	local rock = getThingFromPos(rockPos).uid

	doTransformItem(rock, old_id)

	doItemSetAttribute(rock, "name", getItemNameById(old_id))

	doSendMagicEffect(rockPos, 3)

end

--Lumberjack 2.0 by: Lwkass

<action itemid="id_do_item" script="mining.lua"/>

id_do_item: coloque o id do item que deseja para quebrar as rochas, eu aconselho a usar a pick.

Id da pick: 2553

Obrigado. ;D

Adicione essa linha no actions.xml

Editado por Matheus (veja o histórico de edições)

  • Respostas 13
  • Visualizações 6.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

Postado
  • Administrador

Dei uma editadinha no seu tópico, apenas adicionei a tag da actions.xml que eu acho que você esqueceu de botar, espero que não se importe. ;)

Já conhecia esse sistema, inclusive já tive um otserv que contia ele, muito bom!

TibiaKing Team- KingTópicos
www.tibiaking.com

Postado

Vittu,você vem ajudando muito aqui no fórum,espero que continue assim.

Muito obrigado por compartilhar conosco mais um ótimo script.

Lhe dei REP+ como incentivo !

Obrigado.Att GuuhTorres.

Atenciosamente,

Gustavo H. Torres

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.6k

Informação Importante

Confirmação de Termo