Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

image.png.3d2036a5d05fc578e7ef09ef30307d27.png

 

 

Trago a vocês esse sistema, originalmente produzido para um servidor custom 8.60. (testado em 0.4 - firelement). Acredito que será mais útil pra vocês do que pra mim nesse momento. Se alguém puder acrescentar informações a respeito do uso em diferentes tfs agradeço. ?

 

 

 

INFORMAÇÕES

P = Posso mineirar vários itens nesse sistema?

R = Sim, existem quatro elementos e quatro categorias, possibilitando gerar até 16 produtos finais nas minas. Essa configuração pode ser editada facilmente. Caso queira usar da maneira como o script está feito, ao mineirar você poderá coletar as seguintes pedras:

image.png.367baa0f5aa7762f97a1ff098f1fb725.png

 

 

P = Mas as pedras caem aleatoriamente?

R = Não, esse mining possui um SKILL, conforme você mineira o skill aumenta e consecutivamente o seu LEVEL. Inicia com pedras Light, depois pure, rare e massive. Você pode editar facilmente o modo como a exp sobe, os leveis necessários para executar cada ação e as pedras.

 

 

P = Qual a utilidade das pedras elementares?

R = Na ideia original, projetei o sistema para que as pedras fossem gastas ao comprar itens em baús, mas fica a seu critério como utilizá-las. Por exemplo, um colar de proteção earth/ice precisaria ser pago com pedras de earth e ice. Incluirei no tópico o script utilizado no baú e o script para trocar as pedras quando atingir 100 unidades cada. Veja o exemplo:

 

image.thumb.png.37defd37b0bd8fee9ac976af1547f7e6.png

 

INSTALAÇÃO

Em data/actions/script crie um arquivo .lua chamado elementalmining e cole o código dentro:

local config = {
maxmininglevel = 100,
storagemining = 10000,
expperlevel = 1000,
experiencemining = 10001
}

local stone = {
	blue = {8637, 8633, 9798, 1354}, 
	green = {8640, 8636, 9791, 1353},
	lightblue = {8638, 8634, 9790, 12344},
	red = {8639, 8635, 9788, 1355},
}

local stones = {
	crystal = {stone.blue[1], stone.green[1], stone.lightblue[1], stone.red[1]},
	lcrystal = {stone.blue[2], stone.green[2], stone.lightblue[2], stone.red[2]},
	pcrystal = {stone.blue[3], stone.green[3], stone.lightblue[3], stone.red[3]},
	scrystal = {stone.blue[4], stone.green[4], stone.lightblue[4], stone.red[4]},
}

local ore = {
	blue = {2146, 7759, 5905, 8302},
	green = {2149, 7761, 12396 ,8298}, 
	lightblue = {2150, 7762, 12575, 8303}, 
	red = {2147, 7760, 5906, 8299},
}

local ores = { ore.blue[1], ore.blue[2], ore.blue[3], ore.blue[4], ore.green[1], ore.green[2], ore.green[3], ore.green[4], ore.lightblue[1], ore.lightblue[2], ore.lightblue[3], ore.lightblue[4], ore.red[1], ore.red[2], ore.red[3], ore.red[4]}

local levels = {
	{
	level = {0,19}, 
	stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4]},
	items = {ores[1],ores[5], ores[9], ores[13]}, 
	iselect = 0,
	bstart = 1,
	gstart = 2,
	lbstart = 3,
	rstart = 4,
	chance = 10, -- 30
	qtdmax = 1,
	expgainmin = 1, --15
	expgainmax = 1 --50
	},
	{
	level = {20,49}, 
	stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4]},
	items = {ores[1],ores[2], ores[5], ores[6], ores[9],ores[10], ores[13], ores[14]}, 
	iselect = 1,
	bstart = 1,
	gstart = 3,
	lbstart = 5,
	rstart = 7,
	chance = 10, 
	qtdmax = 1,
	expgainmin = 1,
	expgainmax = 1
	},
	{
	level = {50,69}, 
	stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4], stones.pcrystal[1], stones.pcrystal[2], stones.pcrystal[3], stones.pcrystal[4]},
	items = {ores[1],ores[2], ores[3], ores[5], ores[6], ores[7], ores[9],ores[10], ores[11], ores[13], ores[14], ores[15]}, 
	iselect = 2,
	bstart = 1,
	gstart = 4,
	lbstart = 7,
	rstart = 10,
	chance = 10, 
	qtdmax = 1,
	expgainmin = 1,
	expgainmax = 1
	},
	{
	level = {70,89}, 
	stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4], stones.pcrystal[1], stones.pcrystal[2], stones.pcrystal[3], stones.pcrystal[4], stones.scrystal[1], stones.scrystal[2], stones.scrystal[3], stones.scrystal[4]},
	items = {ores[1],ores[2], ores[3], ores[4], ores[5], ores[6], ores[7], ores[8], ores[9],ores[10], ores[11], ores[12], ores[13], ores[14], ores[15], ores[16]}, 
	iselect = 3,
	bstart = 1,
	gstart = 5,
	lbstart = 9,
	rstart = 13,
	chance = 10, 
	qtdmax = 1,
	expgainmin = 1,
	expgainmax = 1
	},
	{
	level = {90,100}, 
	stone = {stones.crystal[1], stones.crystal[2], stones.crystal[3], stones.crystal[4], stones.lcrystal[1], stones.lcrystal[2], stones.lcrystal[3], stones.lcrystal[4], stones.pcrystal[1], stones.pcrystal[2], stones.pcrystal[3], stones.pcrystal[4], stones.scrystal[1], stones.scrystal[2], stones.scrystal[3], stones.scrystal[4]},
	items = {ores[1],ores[2], ores[3], ores[4], ores[5], ores[6], ores[7], ores[8], ores[9],ores[10], ores[11], ores[12], ores[13], ores[14], ores[15], ores[16]},
	iselect = 3,
	bstart = 1,
	gstart = 5,
	lbstart = 9,
	rstart = 13,
	chance = 10, 
	qtdmax = 1,
	expgainmin = 1,
	expgainmax = 1
	}
}

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


local getMiningLevel = getPlayerStorageValue(cid, config.storagemining)
local getMiningExp = getPlayerStorageValue(cid, config.experiencemining)

	if getMiningLevel == -1 then
		setPlayerStorageValue(cid, config.storagemining, 0)
	end
	if getMiningExp < 0 then
		setPlayerStorageValue(cid, config.experiencemining, 0)
	end

	if (isInArray(stones.crystal, itemEx.itemid) or isInArray(stones.lcrystal, itemEx.itemid) or isInArray(stones.pcrystal, itemEx.itemid) or isInArray(stones.scrystal, itemEx.itemid))  then
		
		for a = 1, #levels do
			min = levels[a].level[1]; max = levels[a].level[2]

			if (getMiningLevel >= min and getMiningLevel <= max) then
				if isInArray(levels[a].stone, itemEx.itemid) then
						if (math.random(1, 100) <= levels[a].chance) then
							quantity = math.random(1, levels[a].qtdmax)
							experience = math.random(levels[a].expgainmin, levels[a].expgainmax)
								if isInArray(stone.blue, itemEx.itemid) then
									iselection = math.random(levels[a].bstart, levels[a].bstart + levels[a].iselect)
									collect = levels[a].items[iselection]
								end
								if isInArray(stone.green, itemEx.itemid) then
									iselection = math.random(levels[a].gstart, levels[a].gstart + levels[a].iselect)
									collect = levels[a].items[iselection]
								end
								if isInArray(stone.lightblue, itemEx.itemid) then
									iselection = math.random(levels[a].lbstart, levels[a].lbstart + levels[a].iselect)
									collect = levels[a].items[iselection]
								end
								if isInArray(stone.red, itemEx.itemid) then
									iselection = math.random(levels[a].rstart, levels[a].rstart + levels[a].iselect)
									collect = levels[a].items[iselection]
								end
							
							if getMiningLevel == 100 then
							doSendMagicEffect(toPosition, 9)
							doPlayerSendTextMessage(cid, 22, text)
							doPlayerAddItem(cid, collect, quantity)
							
							elseif getMiningLevel <= 99 then
							
								if getMiningExp >= config.expperlevel then
									doSendMagicEffect(getCreaturePosition(cid), 49)
									setPlayerStorageValue(cid, config.storagemining, getMiningLevel + 1)
									setPlayerStorageValue(cid, config.experiencemining, getMiningExp - config.expperlevel)
									text = "You collected " ..quantity.. " matter" ..(quantity > 1 and "s" or "").. ". \n You have gained " ..experience.. " experience points in Mining. \n You advanced from mining skill level " ..getMiningLevel.. " to mining skill level " ..(getMiningLevel + 1).. "."
								else
									setPlayerStorageValue(cid, config.experiencemining, getMiningExp + experience)
									text = "You collected " ..quantity.. " matter" ..(quantity > 1 and "s" or "").. ". \n You have gained " ..experience.. " experience points in Mining. \n" ..(config.expperlevel - getMiningExp - experience).. " experience points left to next level. \nCurrent Mining Skill: " ..getMiningLevel.. "."
								end
								doSendMagicEffect(toPosition, 9)
								doPlayerSendTextMessage(cid, 22, text)
								doPlayerAddItem(cid, collect, quantity)
							end
							
						else
							doSendMagicEffect(toPosition, 3)
							doSendAnimatedText(getCreaturePosition(cid), "Working!", COLOR_WHITE)
						end
				else
					doPlayerSendTextMessage(cid, 22, "You need to get better in Mining to mining this.")
				end
			end

		end

	else
		doSendMagicEffect(getCreaturePosition(cid), 2)
		doPlayerSendTextMessage(cid, 22, "You can't mining this.")
	end

	
end

 

Em data/actions/actions.xml use: 

<!-- MINING -->
<action itemid="2553" event="script" value="elementalmining.lua"/>

 

Se tiver dúvidas a respeito de como configurar pergunte no tópico. As partes editáveis são: Local config, local Stone, local Ore, local Levels. Note que local Levels indica que algumas pedras só podeerão ser mineiradas ao ter mining level superior.

 

Configurações das pedras:

Em data/items/items.xml troque os nomes de cada pedra (os nomes ficam a seu critério ;p)

<item id="2149" article="a" name="light earth substance" plural="light earth substance">
        <attribute key="weight" value="1000" />

</item>

<item id="2146" article="a" name="light ice substance" plural="light ice substance">
        <attribute key="weight" value="1000" />

</item>

<item id="2147" article="a" name="light fire substance" plural="light fire substance">
        <attribute key="weight" value="1000" />

</item>

<item id="2150" article="a" name="light energy substance" plural="light energy substance">
        <attribute key="weight" value="1000" />

</item>



<item id="7761" article="a" name="pure earth substance" plural="pure earth substance">
        <attribute key="weight" value="1000" />
</item>

<item id="7759" article="a" name="pure ice substance" plural="pure ice substance">
        <attribute key="weight" value="1000" />
</item>

<item id="7760" article="a" name="pure fire substance" plural="pure fire substance">
        <attribute key="weight" value="1000" />

</item>

<item id="7762" article="a" name="pure energy substance" plural="pure energy substance">
        <attribute key="weight" value="1000" />
</item>



<item id="12396" article="a" name="rare earth matter" plural="rare earth substance">
        <attribute key="weight" value="1000" />
</item>

<item id="6551" article="a" name="rare ice substance" plural="rare ice substance">
        <attribute key="weight" value="1000" />
</item>

<item id="6550" article="a" name="rare fire substance" plural="rare fire substance">
        <attribute key="weight" value="1000" />
</item>

<item id="12575" article="a" name="rare energy substance" plural="rare energy substance">
        <attribute key="weight" value="1000" />
</item>



<item id="8298" name="massive earth substance" plural="massive earth substance">
        <attribute key="weight" value="1000" />
</item>

item id="8302" name="massive ice substance" plural="massive ice substance">
        <attribute key="weight" value="1000" />
</item>

<item id="8303" name="massive energy substance" plural="massive energy substance">
        <attribute key="weight" value="1000" />
</item>

<item id="8299" name="massive fire substance" plural="massive fire substance">
        <attribute key="weight" value="1000" />
</item>

TRANSFORMAR PEDRAS EM MOEDAS

Em data/actions/scripts/tools crie um arquivo .lua e nomeie como changecoin:

local COINS = {
	LIGHT = {
			EARTH_SUBSTANCE = 2149,
			ICE_SUBSTANCE = 2146,
			ENERGY_SUBSTANCE = 2150,
			FIRE_SUBSTANCE = 2147
			},
	PURE = {
			EARTH_SUBSTANCE = 7761,
			ICE_SUBSTANCE = 7759,
			ENERGY_SUBSTANCE = 7762,
			FIRE_SUBSTANCE = 7760
			},
	RARE = {
			EARTH_SUBSTANCE = 12396,
			ICE_SUBSTANCE = 6551,
			ENERGY_SUBSTANCE = 12575,
			FIRE_SUBSTANCE = 6550
			},
	MASSIVE = {
			EARTH_SUBSTANCE = 8298,
			ICE_SUBSTANCE = 8302,
			ENERGY_SUBSTANCE = 8303,
			FIRE_SUBSTANCE = 8299
			}
}

local TRANSFORM = {
	[COINS.LIGHT.EARTH_SUBSTANCE] = {
		TO = COINS.PURE.EARTH_SUBSTANCE
		},
	[COINS.LIGHT.ICE_SUBSTANCE] = {
		TO = COINS.PURE.ICE_SUBSTANCE
		},
	[COINS.LIGHT.ENERGY_SUBSTANCE] = {
		TO = COINS.PURE.ENERGY_SUBSTANCE
		},
	[COINS.LIGHT.FIRE_SUBSTANCE] = {
		TO = COINS.PURE.FIRE_SUBSTANCE
		},
	[COINS.PURE.EARTH_SUBSTANCE] = {
		FROM = COINS.LIGHT.EARTH_SUBSTANCE, TO = COINS.RARE.EARTH_SUBSTANCE
		},
	[COINS.PURE.ICE_SUBSTANCE] = {
		FROM = COINS.LIGHT.ICE_SUBSTANCE, TO = COINS.RARE.ICE_SUBSTANCE
		},
	[COINS.PURE.ENERGY_SUBSTANCE] = {
		FROM = COINS.LIGHT.ENERGY_SUBSTANCE, TO = COINS.RARE.ENERGY_SUBSTANCE
		},
	[COINS.PURE.FIRE_SUBSTANCE] = {
		FROM = COINS.LIGHT.FIRE_SUBSTANCE, TO = COINS.RARE.FIRE_SUBSTANCE
		},
	[COINS.RARE.EARTH_SUBSTANCE] = {
		FROM = COINS.PURE.EARTH_SUBSTANCE, TO = COINS.MASSIVE.EARTH_SUBSTANCE
		},
	[COINS.RARE.ICE_SUBSTANCE] = {
		FROM = COINS.PURE.ICE_SUBSTANCE, TO = COINS.MASSIVE.ICE_SUBSTANCE
		},
	[COINS.RARE.ENERGY_SUBSTANCE] = {
		FROM = COINS.PURE.ENERGY_SUBSTANCE, TO = COINS.MASSIVE.ENERGY_SUBSTANCE
		},
	[COINS.RARE.FIRE_SUBSTANCE] = {
		FROM = COINS.PURE.FIRE_SUBSTANCE, TO = COINS.MASSIVE.FIRE_SUBSTANCE
		},
	[COINS.MASSIVE.EARTH_SUBSTANCE] = {
		FROM = COINS.RARE.EARTH_SUBSTANCE
		},
	[COINS.MASSIVE.ICE_SUBSTANCE] = {
		FROM = COINS.RARE.ICE_SUBSTANCE
		},
	[COINS.MASSIVE.ENERGY_SUBSTANCE] = {
		FROM = COINS.RARE.ENERGY_SUBSTANCE
		},
	[COINS.MASSIVE.FIRE_SUBSTANCE] = {
		FROM = COINS.RARE.FIRE_SUBSTANCE
		}
}

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(getPlayerFlagValue(cid, PLAYERFLAG_CANNOTPICKUPITEM)) then
		return false
	end

	local COIN = TRANSFORM[item.itemid]
	if(not COIN) then
		return false
	end

	if(COIN.TO ~= nil and item.type == ITEMCOUNT_MAX) then
		doChangeTypeItem(item.uid, item.type - item.type)
		doPlayerAddItem(cid, COIN.TO, 1)
	elseif(COIN.FROM ~= nil) then
		doChangeTypeItem(item.uid, item.type - 1)
		doPlayerAddItem(cid, COIN.FROM, ITEMCOUNT_MAX)
	end

	return true
end

 

Em data/actions/actions.xml acrescente:

    <action itemid="2149" event="script" value="tools/changecoin.lua"/>
	<action itemid="2146" event="script" value="tools/changecoin.lua"/>
	<action itemid="2150" event="script" value="tools/changecoin.lua"/>
	<action itemid="2147" event="script" value="tools/changecoin.lua"/>
	<action itemid="7761" event="script" value="tools/changecoin.lua"/>
	<action itemid="7759" event="script" value="tools/changecoin.lua"/>
	<action itemid="7762" event="script" value="tools/changecoin.lua"/>
	<action itemid="7760" event="script" value="tools/changecoin.lua"/>
	<action itemid="12396" event="script" value="tools/changecoin.lua"/>
	<action itemid="6551" event="script" value="tools/changecoin.lua"/>
	<action itemid="12575" event="script" value="tools/changecoin.lua"/>
	<action itemid="6550" event="script" value="tools/changecoin.lua"/>
	<action itemid="8298" event="script" value="tools/changecoin.lua"/>
	<action itemid="8302" event="script" value="tools/changecoin.lua"/>
	<action itemid="8303" event="script" value="tools/changecoin.lua"/>
	<action itemid="8299" event="script" value="tools/changecoin.lua"/>

 

Script adicional:

 

Isso é tudo, façam bom uso!

  • Respostas 9
  • Visualizações 5.5k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Trago a vocês esse sistema, originalmente produzido para um servidor custom 8.60. (testado em 0.4 - firelement). Acredito que será mais útil pra vocês do que pra mim nesse momento. Se alguém puder acr

  • good deus dani

  • Excelente sistema!

Posted Images

  • 6 months later...

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