Ir para conteúdo

Fazendo Rum (Bunch Of Sugar Cane)


Oneshot

Posts Recomendados

FAALA AÊ, ÉKS

;)

 

Recebi recentemente um pedido de um membro para criar uma action que, normalmente, não vem com os servidores - o mecanismo de criar rum do Tibia.

 

Criei alguns scripts simples e editei alguns, tornando possível o funcionamento do sistema.

 


 

data/actions/scripts

 

Na pasta tools, crie um arquivo com nome sickle.lua, adicionando o conteúdo abaixo:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(itemEx.itemid == 5471) then
			doTransformItem(itemEx.uid, 5463)
			doCreateItem(5467, 1, toPosition)
			doDecayItem(itemEx.uid)
			return true
	end
	return destroyItem(cid, itemEx, toPosition)
end

 

Ainda na pasta tools, crie um arquivo com nome firebug.lua, adicionando o conteúdo abaixo:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(itemEx.itemid == 5466) then
			doSendMagicEffect(toPosition, CONST_ME_HITBYFIRE)
			doTransformItem(itemEx.uid, 5465)

			doRemoveItem(item.uid, 1)
			doDecayItem(itemEx.uid)
			return true
	end
end

 

Na pasta other, crie um arquivo com nome bunch of sugar cane.lua e adicione o conteúdo abaixo:

 

local ITEM_IDS = {
	[5469] = 5513,
	[5470] = 5514
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(itemEx.itemid == 5469 or itemEx.itemid == 5470) then
			doSendMagicEffect(toPosition, CONST_ME_BLOCKHIT)
			doTransformItem(itemEx.uid, ITEM_IDS[itemEx.itemid])

			doRemoveItem(item.uid, 1)
			doDecayItem(itemEx.uid)
			return true
	elseif itemEx.itemid == 5513 or itemEx.itemid == 5514 then
			return doPlayerSendCancel(cid, "This machine is processing a bunch already.")
	end
end

 

E na pasta liquid, abra o arquivo containers.lua e substitua todo conteúdo por este:

 

local DISTILLERY_ON = {5513, 5514}
local DISTILLERY_OFF = {5469, 5470}
local ITEM_RUM_FLASK = 5553
local ITEM_POOL = 2016
local TYPE_EMPTY = 0
local TYPE_WATER = 1
local TYPE_BLOOD = 2
local TYPE_BEER = 3
local TYPE_SLIME = 4
local TYPE_MANA_FLUID = 7
local TYPE_LIFE_FLUID = 10
local TYPE_OIL = 11
local TYPE_WINE = 15
local TYPE_MUD = 19
local TYPE_LAVA = 26
local TYPE_RUM = 27
local TYPE_SWAMP = 28
local oilLamps = {[2046] = 2044}
local casks = {[1771] = TYPE_WATER, [1772] = TYPE_BEER, [1773] = TYPE_WINE}
local alcoholDrinks = {TYPE_BEER, TYPE_WINE, TYPE_RUM}
local poisonDrinks = {TYPE_SLIME, TYPE_SWAMP}
local drunk = createConditionObject(CONDITION_DRUNK)
setConditionParam(drunk, CONDITION_PARAM_TICKS, 60000)
local poison = createConditionObject(CONDITION_POISON)
setConditionParam(poison, CONDITION_PARAM_DELAYED, true) -- Condition will delay the first damage from when it's added
setConditionParam(poison, CONDITION_PARAM_MINVALUE, -50) -- Minimum damage the condition can do at total
setConditionParam(poison, CONDITION_PARAM_MAXVALUE, -120) -- Maximum damage
setConditionParam(poison, CONDITION_PARAM_STARTVALUE, -5) -- The damage the condition will do on the first hit
setConditionParam(poison, CONDITION_PARAM_TICKINTERVAL, 4000) -- Delay between damages
setConditionParam(poison, CONDITION_PARAM_FORCEUPDATE, true) -- Re-update condition when adding it(ie. min/max value)
local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100))
function onUse(cid, item, fromPosition, itemEx, toPosition)
	if(itemEx.uid == cid) then
			if(item.type == TYPE_EMPTY) then
					doPlayerSendCancel(cid, "It is empty.")
					return true
			end
			if(item.type == TYPE_MANA_FLUID) then
					if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then
							doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
							return true
					end
					if(not doPlayerAddMana(cid, math.random(80, 160))) then
							return false
					end
					doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1)
					doSendMagicEffect(toPosition, CONST_ME_MAGIC_BLUE)
					doAddCondition(cid, exhaust)
			elseif(item.type == TYPE_LIFE_FLUID) then
					if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) then
							doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
							return true
					end
					if(not doCreatureAddHealth(cid, math.random(40, 75))) then
							return false
					end
					doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1)
					doSendMagicEffect(toPosition, CONST_ME_MAGIC_BLUE)
					doAddCondition(cid, exhaust)
			elseif(isInArray(alcoholDrinks, item.type)) then
					if(not doTargetCombatCondition(0, cid, drunk, CONST_ME_NONE)) then
							return false
					end
					doCreatureSay(cid, "Aaah...", TALKTYPE_ORANGE_1)
			elseif(isInArray(poisonDrinks, item.type)) then
					if(not doTargetCombatCondition(0, cid, poison, CONST_ME_NONE)) then
							return false
					end
					doCreatureSay(cid, "Urgh!", TALKTYPE_ORANGE_1)
			else
					doCreatureSay(cid, "Gulp.", TALKTYPE_ORANGE_1)
			end
			doChangeTypeItem(item.uid, TYPE_EMPTY)
			return true
	end
	if(not isCreature(itemEx.uid)) then
			if(item.type == TYPE_EMPTY) then
					if(isInArray(DISTILLERY_ON, itemEx.itemid)) then
							doChangeTypeItem(item.uid, TYPE_RUM)
							return true
					end
					if(isInArray(DISTILLERY_OFF, itemEx.itemid)) then
							doPlayerSendCancel(cid, "You have to process the bunch into the distillery to get rum.")
							return true
					end

					if(isItemFluidContainer(itemEx.itemid) and itemEx.type ~= TYPE_EMPTY) then
							doChangeTypeItem(item.uid, itemEx.type)
							doChangeTypeItem(itemEx.uid, TYPE_EMPTY)
							return true
					end
					if(casks[itemEx.itemid] ~= nil) then
							doChangeTypeItem(item.uid, casks[itemEx.itemid])
							return true
					end
					local fluidEx = getFluidSourceType(itemEx.itemid)
					if(fluidEx ~= false) then
							doChangeTypeItem(item.uid, fluidEx)
							return true
					end
					doPlayerSendCancel(cid, "It is empty.")
					return true
			end
			if(item.type == TYPE_OIL and oilLamps[itemEx.itemid] ~= nil) then
					doTransformItem(itemEx.uid, oilLamps[itemEx.itemid])
					doChangeTypeItem(item.uid, TYPE_NONE)
					return true
			end
			if(hasProperty(itemEx.uid, CONST_PROP_BLOCKSOLID)) then
					return false
			end
	end
	doDecayItem(doCreateItem(ITEM_POOL, item.type, toPosition))
	doChangeTypeItem(item.uid, TYPE_EMPTY)
	return true
end

 

data/actions

 

 

 

Cole as seguintes tags no arquivo actions.xml

 

<action itemid="2405" event="script" value="tools/sickle.lua">
<action itemid="5468" event="script" value="tools/fire bug.lua">
<action itemid="5467" event="script" value="other/bunch of sugar cane.lua">

 

 

Se você quiser mudar o tempo de duração da máquina funcionando, procure no seu arquivo items.xml pelos IDs 5513 e 5514 e altere o valor do atributo duration. O padrão se não me engano é 15 segundos.

 

 

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...