• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

Solved Vials not working

Dankoo

Active Member
Joined
Sep 4, 2010
Messages
1,007
Reaction score
27
My vials don't work properly, when I use a vial (2006) in a pool of blood or something, nothing happens, just an example.

Here's my script liquids/containers.lua

LUA:
local DISTILLERY = {5513, 5514, 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)
setConditionParam(poison, CONDITION_PARAM_MINVALUE, -50) 
setConditionParam(poison, CONDITION_PARAM_MAXVALUE, -120)
setConditionParam(poison, CONDITION_PARAM_STARTVALUE, -5) 
setConditionParam(poison, CONDITION_PARAM_TICKINTERVAL, 4000) 
setConditionParam(poison, CONDITION_PARAM_FORCEUPDATE, true) 

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(item.itemid == ITEM_RUM_FLASK and isInArray(DISTILLERY, itemEx.itemid)) then
				if(itemEx.actionid == 100) then
					doItemEraseAttribute(itemEx.uid, "description")
					doItemEraseAttribute(itemEx.uid, "aid")
					doChangeTypeItem(item.uid, TYPE_RUM)
				else
					doPlayerSendCancel(cid, "You have to process the bunch into the distillery to get rum.")
				end
				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

Does anyone have an working one?

Thanks!
 
Last edited:
Hadouken

hippo_bump.jpg
 
Teh thing is, there are quests where player need blood to complete it, and he should get it using a vial on a pool of blood, but when I do this, nothing happens

The vial should fill with blood, or other liquid, like water and stuff
 
You see, my 2007 cid was bugged as well :}, that's why I didn't understand ur message

Thanks for you patience Cyk
 
Back
Top