• 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!

Action potions and runes grouped

vander

Mapper/Hoster
Joined
May 10, 2009
Messages
111
Reaction score
0
Location
Brasil
Potions and runes grouped


data/actions/scripts/liquids/potions.

PHP:
local config = {        removeOnUse = "no",        usableOnTarget = "yes", -- can be used on target? (fe. healing friend)        splashable = "no",        realAnimation = "no", -- make text effect visible only for players in range 1x1        healthMultiplier = 1.0,        manaMultiplier = 1.0}config.removeOnUse = getBooleanFromString(config.removeOnUse)config.usableOnTarget = getBooleanFromString(config.usableOnTarget)config.splashable = getBooleanFromString(config.splashable)config.realAnimation = getBooleanFromString(config.realAnimation)local POTIONS = {        [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion        [7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion        [7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8, 11 ,12}, vocStr = "knights and paladins"}, -- strong health potion        [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion        [8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8, 12}, vocStr = "knights"}, -- ultimate health potion        [7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion        [7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7, 9, 10, 11}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion        [7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion        [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7, 11}, vocStr = "paladins"} -- great spirit potion}local exhaust = createConditionObject(CONDITION_EXHAUST)setConditionParam(exhaust, CONDITION_PARAM_TICKS, (1000))function onUse(cid, item, fromPosition, itemEx, toPosition)        local potion = POTIONS[item.itemid]        if(not potion) then                return false        end        if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then                if(not config.splashable) then                        return false                end                if(toPosition.x == CONTAINER_POSITION) then                        toPosition = getThingPos(item.uid)                end                doDecayItem(doCreateItem(2016, potion.splash, toPosition))                                                if(fromPosition.x == CONTAINER_POSITION) then                                --doCreateItem(potion.empty, 1, getThingPos(item.uid))  --fix me!!!                                     doRemoveItem(item.uid, 1)                        else                                            doCreateItem(potion.empty, 1, getThingPos(item.uid))                                doRemoveItem(item.uid, 1)                                               end                                        return true        end        if(hasCondition(cid, CONDITION_EXHAUST)) then                doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)                return true        end        if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and                not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES))        then                doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1)                return true        end        local health = potion.health        if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then                return false        end        local mana = potion.mana        if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then                return false        end        doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)        if(not realAnimation) then                doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)        else                for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do                        if(isPlayer(tid)) then                                doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)                        end                end        end        doAddCondition(cid, exhaust)        if(not potion.empty or config.removeOnUse) then                doRemoveItem(item.uid)                return true        end             if(fromPosition.x == CONTAINER_POSITION) then            --doCreateItem(potion.empty, 1, getThingPos(item.uid))      --fix me!!!                     doRemoveItem(item.uid, 1)        else                            doCreateItem(potion.empty, 1, getThingPos(item.uid))                doRemoveItem(item.uid, 1)                               end                --doTransformItem(item.uid, potion.empty, 1)        return trueend
 
Last edited:
try to improve you post please, i don't know is the code is good or useless with simple view...
 
so long line :( lazy to read
fix it:mad:
 
Code:
local config = {
	removeOnUse = "no",
	usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
	splashable = "no",
	realAnimation = "no", -- make text effect visible only for players in range 1x1
	healthMultiplier = 1.0,
	manaMultiplier = 1.0
}

config.removeOnUse = getBooleanFromString(config.removeOnUse)
config.usableOnTarget = getBooleanFromString(config.usableOnTarget)
config.splashable = getBooleanFromString(config.splashable)
config.realAnimation = getBooleanFromString(config.realAnimation)

local POTIONS = {
	[8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion        
	[7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion
	[7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8, 11 ,12}, vocStr = "knights and paladins"}, -- strong health potion
	[7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion
	[8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8, 12}, vocStr = "knights"}, -- ultimate health potion
	[7620] = {empty = 7636, splash = 7, mana = {70, 130}}, -- mana potion
	[7589] = {empty = 7634, splash = 7, mana = {110, 190}, level = 50, vocations = {1, 2, 3, 5, 6, 7, 9, 10, 11}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
	[7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6, 9, 10}, vocStr = "sorcerers and druids"}, -- great mana potion
	[8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7, 11}, vocStr = "paladins"} -- great spirit potion
}

local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, 1000)

function onUse(cid, item, fromPosition, itemEx, toPosition)
	local potion = POTIONS[item.itemid]
	if(not potion) then
		return false
	end

	if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then
		if(not config.splashable) then
			return false
		end
		if(toPosition.x == CONTAINER_POSITION) then
			toPosition = getThingPos(item.uid)
		end
		doDecayItem(doCreateItem(2016, potion.splash, toPosition))
		if(fromPosition.x == CONTAINER_POSITION) then
			--doCreateItem(potion.empty, 1, getThingPos(item.uid)) --fix me!!!
			doRemoveItem(item.uid, 1)
		else
			doCreateItem(potion.empty, 1, getThingPos(item.uid))
			doRemoveItem(item.uid, 1)
		end
		return true
	end

	if(hasCondition(cid, CONDITION_EXHAUST)) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
		return true
	end

	if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES)) then
		doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1)
		return true
	end

	local health = potion.health
	if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then
		return false
	end

	local mana = potion.mana
	if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then
		return false
	end

	doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
	
	if(not realAnimation) then
		doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
	else
		for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do
			if(isPlayer(tid)) then
				doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
			end
		end
	end

	doAddCondition(cid, exhaust)

	if(not potion.empty or config.removeOnUse) then
		doRemoveItem(item.uid)
		return true
	end

	if(fromPosition.x == CONTAINER_POSITION) then
		--doCreateItem(potion.empty, 1, getThingPos(item.uid)) --fix me!!!
		doRemoveItem(item.uid, 1)
	else
		doCreateItem(potion.empty, 1, getThingPos(item.uid))
		doRemoveItem(item.uid, 1)
	end

	--doTransformItem(item.uid, potion.empty, 1)
	return true
end
 
tested on tfs 0.4 and didnt work.. potions cannot be grouped
by grouping you mean potions can be stackable?
it would be really nice if you make this work!
thx
 
tested on tfs 0.4 and didnt work.. potions cannot be grouped
by grouping you mean potions can be stackable?
it would be really nice if you make this work!
thx

noo, it's not that. to make them stackable you must use my items.otb and client 8.60
 
you can emulate stack on item with charges, but you wont get theselect count window in client(so you will be able to moveonly by one item)
 
[QUOTE = hepy ; 941623 ] testado em TFS 0.4 e não trabalho .. poções não podem ser agrupados
agrupando dizer poções podem ser empilhadas ?
seria muito bom se você fazer este trabalho !
thx [/ quote]

nunca testada em espírito místico, mas eu sei que funciona no choro ameixa
 
only works with 8.6

never tested in mystic spirit, but I know it works in crying damson
 
PHP:
local config = {
	removeOnUse = "no",
	usableOnTarget = "yes", -- can be used on target? (fe. healing friend)
	splashable = "no",
	range = -1,
	realAnimation = "yes", -- make text effect visible only for players in range 1x1
	healthMultiplier = 1.0,
	manaMultiplier = 1.0
}
 
config.removeOnUse = getBooleanFromString(config.removeOnUse)
config.usableOnTarget = getBooleanFromString(config.usableOnTarget)
config.splashable = getBooleanFromString(config.splashable)
config.realAnimation = getBooleanFromString(config.realAnimation)
 
local POTIONS = {
	[8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion
	[7618] = {empty = 7636, splash = 2, health = {100, 200}}, -- health potion
	[7588] = {empty = 7634, splash = 2, health = {200, 400}, level = 50, vocations = {3, 4, 7, 8, 12, 11}, vocStr = "knights and paladins"}, -- strong health potion
	[7591] = {empty = 7635, splash = 2, health = {400, 600}, level = 80, vocations = {4, 8, 12}, vocStr = "knights"}, -- great health potion
	[8473] = {empty = 7635, splash = 2, health = {670, 900}, level = 130, vocations = {4, 8, 12}, vocStr = "knights"}, -- ultimate health potion
 
	[7620] = {empty = 7636, splash = 7, mana = {70, 140}}, -- mana potion
	[7589] = {empty = 7634, splash = 7, mana = {140, 250}, level = 50, vocations = {1, 2, 3, 5, 6, 7, 10, 9}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
	[7590] = {empty = 7635, splash = 7, mana = {250, 440}, level = 80, vocations = {1, 2, 5, 6, 10, 9}, vocStr = "sorcerers and druids"}, -- great mana potion
 
	[8472] = {empty = 7635, splash = 3, health = {250, 400}, mana = {110, 190}, level = 80, vocations = {3, 7, 11}, vocStr = "paladins"} -- great spirit potion
}
 
local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (680))
 
local achievement = "Potion Addict"
 
function onUse(cid, item, fromPosition, itemEx, toPosition)
	local potion = POTIONS[item.itemid]
	if(not potion) then
		return false
	end
 
        if getPlayerStorageValue(cid,20066) == 90000000 then --storage to get uses of potion
		if not playerHasAchievement(cid, getAchievementInfoByName(achievement).id) then
        		doPlayerSendTextMessage(cid,22,"Congratulations! You earned the achievement " .. achievement .. ".")
   			doPlayerAddAchievement(cid, getAchievementInfoByName(achievement).id)
		end
        end
 
	if(not isPlayer(itemEx.uid) or (not config.usableOnTarget and cid ~= itemEx.uid)) then
		if(not config.splashable) then
			return false
		end
 
		if(toPosition.x == CONTAINER_POSITION) then
			toPosition = getThingPos(item.uid)
		end
 
		doDecayItem(doCreateItem(2016, potion.splash, toPosition))
		doTransformItem(item.uid, potion.empty)
		return true
	end
 
	if(hasCondition(cid, CONDITION_EXHAUST)) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
		return true
	end
 
	if(((potion.level and getPlayerLevel(cid) < potion.level) or (potion.vocations and not isInArray(potion.vocations, getPlayerVocation(cid)))) and
		not getPlayerCustomFlagValue(cid, PLAYERCUSTOMFLAG_GAMEMASTERPRIVILEGES))
	then
		doCreatureSay(itemEx.uid, "Only " .. potion.vocStr .. (potion.level and (" of level " .. potion.level) or "") .. " or above may drink this fluid.", TALKTYPE_ORANGE_1)
		return true
	end
 
	local health = potion.health
	if(health and not doCreatureAddHealth(itemEx.uid, math.ceil(math.random(health[1], health[2]) * config.healthMultiplier))) then
		return false
	end
 
	local mana = potion.mana
	if(mana and not doPlayerAddMana(itemEx.uid, math.ceil(math.random(mana[1], mana[2]) * config.manaMultiplier))) then
		return false
	end
 
	doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE)
	if(not realAnimation) then
		doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1)
		doRemoveCondition(itemEx.uid, CONDITION_PARALYZE) 
	else
		for i, tid in ipairs(getSpectators(getCreaturePosition(cid), 1, 1)) do
			if(isPlayer(tid)) then
				doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1, false, tid)
			end
		end
	end
 
	doAddCondition(cid, exhaust)
	if(not potion.empty or config.removeOnUse) then
		doRemoveItem(item.uid, 1)
		return true
	end
	doRemoveItem(item.uid, 1)
	doPlayerAddItem(cid, potion.empty, 1)
   	pot_count = getPlayerItemCount(cid, potion.empty)
    	doPlayerRemoveItem(cid, potion.empty, pot_count)
    	doPlayerAddItem(cid, potion.empty, pot_count)
	return true
end

only tfs 0.4
 

Similar threads

Back
Top