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

Potions exhaustion!

Kspen

Wofb.mine.nu
Joined
Jan 18, 2008
Messages
40
Reaction score
0
Location
Norway - Tromsø
Heeey peeps! =) I've got a problem with my potions, cause I want it to be possible to heal while using normal/strong/great mana potions and same for the health potions and great sprit potions. But I've tried alot, first of I tried to download some potions that was alrdy done, worked to add them and everyting, but each time you used one of the potions a error came in the server console and the server freezed for about a second. I'm using Tfs 0.2.1.

What I need help to is to get that error away, or help me with the potion script I'm alrdy using so you don't get exhausted so you can't use healing spells at the same time.

Thanks in advance!=)

Here is the script that worked well, but couldn't heal while using the potions.

PHP:
local ultimateHealthPot = 8473 
local greatHealthPot = 7591 
local greatManaPot = 7590 
local greatSpiritPot = 8472 
local strongHealthPot = 7588 
local strongManaPot = 7589 
local healthPot = 7618 
local manaPot = 7620 
local smallHealthPot = 8704 
local antidotePot = 8474 
local greatEmptyPot = 7635 
local strongEmptyPot = 7634 
local emptyPot = 7636 

local antidote = createCombatObject() 
setCombatParam(antidote, COMBAT_PARAM_TYPE, COMBAT_HEALING) 
setCombatParam(antidote, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) 
setCombatParam(antidote, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE) 
setCombatParam(antidote, COMBAT_PARAM_AGGRESSIVE, FALSE) 
setCombatParam(antidote, COMBAT_PARAM_DISPEL, CONDITION_POISON) 

local exhaust = createConditionObject(CONDITION_EXHAUST_HEAL) 
setConditionParam(exhaust, CONDITION_PARAM_TICKS, getConfigInfo('timeBetweenExActions')) 

function onUse(cid, item, fromPosition, itemEx, toPosition) 
    if(itemEx.uid ~= cid or itemEx.itemid ~= 1) then 
        return TRUE 
    end 

    if(getCreatureCondition(cid, CONDITION_EXHAUST_HEAL) == TRUE) then 
        doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) 
        return TRUE 
    end 

    if(item.itemid == antidotePot) then 
        if(doCombat(cid, antidote, numberToVariant(cid)) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, emptyPot) 
    elseif(item.itemid == smallHealthPot) then 
        if(doTargetCombatHealth(0, cid, COMBAT_HEALING, 50, 100, CONST_ME_MAGIC_BLUE) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, emptyPot) 
    elseif(item.itemid == healthPot) then 
        if(doTargetCombatHealth(0, cid, COMBAT_HEALING, 100, 200, CONST_ME_MAGIC_BLUE) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, emptyPot) 
    elseif(item.itemid == manaPot) then 
        if(doTargetCombatMana(0, cid, 70, 130, CONST_ME_MAGIC_BLUE) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, emptyPot) 
    elseif(item.itemid == strongHealthPot) then 
        if(not(isKnight(cid) or isPaladin(cid)) or (getPlayerLevel(cid) < 50)) and not(getPlayerGroupId(cid) >= 2) then 
            doCreatureSay(cid, "This potion can only be consumed by paladins and knights of level 50 or higher.", TALKTYPE_ORANGE_1) 
            return TRUE 
        end 

        if(doTargetCombatHealth(0, cid, COMBAT_HEALING, 150, 300, CONST_ME_MAGIC_BLUE) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, strongEmptyPot) 
    elseif(item.itemid == strongManaPot) then 
        if(doTargetCombatMana(0, cid, 110, 190, CONST_ME_MAGIC_BLUE) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, strongEmptyPot) 
    elseif(item.itemid == greatSpiritPot) then 
        if(not(isPaladin(cid)) or (getPlayerLevel(cid) < 80)) and not(getPlayerGroupId(cid) >= 2) then 
            doCreatureSay(cid, "This potion can only be consumed by paladins of level 80 or higher.", TALKTYPE_ORANGE_1) 
            return TRUE 
        end 

        if(doTargetCombatHealth(0, cid, COMBAT_HEALING, 200, 400, CONST_ME_MAGIC_BLUE) == LUA_ERROR or doTargetCombatMana(0, cid, 110, 190, CONST_ME_MAGIC_BLUE) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, greatEmptyPot) 
    elseif(item.itemid == greatHealthPot) then 
        if(not(isKnight(cid)) or (getPlayerLevel(cid) < 80)) and not(getPlayerGroupId(cid) >= 2) then 
            doCreatureSay(cid, "This potion can only be consumed by knights of level 80 or higher.", TALKTYPE_ORANGE_1) 
            return TRUE 
        end 

        if(doTargetCombatHealth(0, cid, COMBAT_HEALING, 500, 700, CONST_ME_MAGIC_BLUE) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, greatEmptyPot) 
    elseif(item.itemid == greatManaPot) then 
        if(not(isSorcerer(cid) or isDruid(cid)) or (getPlayerLevel(cid) < 80)) and not(getPlayerGroupId(cid) >= 2) then 
            doCreatureSay(cid, "This potion can only be consumed by sorcerers and druids of level 80 or higher.", TALKTYPE_ORANGE_1) 
            return TRUE 
        end 

        if(doTargetCombatMana(0, cid, 200, 300, CONST_ME_MAGIC_BLUE) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, greatEmptyPot) 
    elseif(item.itemid == ultimateHealthPot) then 
        if(not(isKnight(cid)) or (getPlayerLevel(cid) < 130)) and not(getPlayerGroupId(cid) >= 2) then 
            doCreatureSay(cid, "This potion can only be consumed by knights of level 130 or higher.", TALKTYPE_ORANGE_1) 
            return TRUE 
        end 

        if(doTargetCombatHealth(0, cid, COMBAT_HEALING, 800, 1000, CONST_ME_MAGIC_BLUE) == LUA_ERROR) then 
            return FALSE 
        end 
        doAddCondition(cid, exhaust) 
        doCreatureSay(cid, "Aaaah...", TALKTYPE_ORANGE_1) 
        doTransformItem(item.uid, greatEmptyPot) 
    end 
    return TRUE 
end



And here is one of the scripts that worked with exura san & great spirit potion, but made a error in the console and lagged the server. (great spirit potion!)

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

function onUse(cid, item, fromPosition, itemEx, toPosition) 
    if isPlayer(itemEx.uid) == FALSE then 
        return FALSE 
    end 

    if((not(isPaladin(itemEx.uid)) or getPlayerLevel(itemEx.uid) < 80)) then 
        doCreatureSay(itemEx.uid, "Only paladins of level 80 or above may drink this fluid.", TALKTYPE_ORANGE_1) 
        return TRUE 
    end 

    if doCreatureAddHealth(itemEx.uid, math.random(MIN_HEALTH, MAX_HEALTH)) == LUA_ERROR or doPlayerAddMana(itemEx.uid, math.random(MIN_MANA, MAX_MANA)) == LUA_ERROR then 
        return FALSE 
    end 

    doAddCondition(cid, exhaust) 
    doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) 
    doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) 
    doTransformItem(item.uid, EMPTY_POTION) 
    return TRUE 
end
 
Back
Top