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

Problems with the potions

lol94

Loler
Joined
Dec 23, 2008
Messages
764
Reaction score
55
Location
Mexico
Sup guys! I guess everybody is thinking that im a f@cking spammer... Anyways i just got a problem... How can i make infinite potions...... Mabye is a NOOB problem but please help meeee will rep :) +++++
 
Distro? Version?
Ex. TFS 0.3.6?

Anyway, potions.lua TFS 0.3.5 pl1
Code:
  local config =  {
        removeOnUse = "no",
        usableOnTarget = "no", -- 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,
	infinite = true
}

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}, vocStr = "knights and paladins"}, -- strong health potion
        [7591] = {empty = 7635, splash = 2, health = {500, 700}, level = 80, vocations = {4, 8}, vocStr = "knights"}, -- great health potion
        [8473] = {empty = 7635, splash = 2, health = {800, 1000}, level = 130, vocations = {4, 8}, 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}, vocStr = "sorcerers, druids and paladins"}, -- strong mana potion
        [7590] = {empty = 7635, splash = 7, mana = {200, 300}, level = 80, vocations = {1, 2, 5, 6}, vocStr = "sorcerers and druids"}, -- great mana potion

        [8472] = {empty = 7635, splash = 3, health = {200, 400}, mana = {110, 190}, level = 80, vocations = {3, 7}, vocStr = "paladins"} -- great spirit potion
}

local exhaust = createConditionObject(CONDITION_EXHAUST)
setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100))

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))
                doTransformItem(item.uid, potion.empty)
                return true
        end

        if(hasCondition(cid, CONDITION_EXHAUST_HEAL)) 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(config.infinite == false) then
        doTransformItem(item.uid, potion.empty)
        return true
end 
end
 
data\actions\scripts\liquids\potions

removeOnUse = "yes"

change it to removeOnUse = "no"

hope I helped again ;)
 
Ehm, I don't know if its only my script (was in TFS 0.3.5), but removeOnUse only handels whenever the vials should stay or they should be removed after you empty the potion...
 
Or if you don't have that function where you can just say yes or no to it, you can also do it this way.

[7618] = {empty = 7618, splash = 2, health = {200, 350}}, -- health potion

Just change where its bold to the same id as the potion you're wanting to use.
 
Back
Top