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

Lua Great mana potion

zcorpy

New Member
Joined
Sep 12, 2017
Messages
85
Reaction score
4
Hi, what I need is the lua script of great mana potion similar to collapser for example regenerate mana depending on the level and magic level please!!!
 
Last edited:
What did I just read?

We will need detailed info about your distro and what you exactly want to do, what‘s even single to collapser zulu?
 
oh sorry, what I need is the lua script of great mana potion similar to collapser for example regenerate mana depending on the level and magic level
What did I just read?

We will need detailed info about your distro and what you exactly want to do, what‘s even single to collapser zulu?
 
oh sorry, what I need is the lua script of great mana potion similar to collapser for example regenerate mana depending on the level and magic level

Post the script so we can modify it.

What did I just read?

We will need detailed info about your distro and what you exactly want to do, what‘s even single to collapser zulu?

To my understanding he wants to change mana potions to give a certain amount depending on mlvl and lvl.
 
Post the script so we can modify it.



To my understanding he wants to change mana potions to give a certain amount depending on mlvl and lvl.
local MIN = 2.0
local MAX = 2.01


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 hasCondition(cid, CONDITION_EXHAUST_HEAL) == TRUE then
doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
return TRUE
end

if doPlayerAddMana(itemEx.uid, math.random((getPlayerLevel(cid) * MIN), (getPlayerLevel(cid) * MAX))) == LUA_ERROR then
return FALSE
end

doAddCondition(cid, exhaust)
doSendMagicEffect(getThingPos(itemEx.uid), 13)
doCreatureSay(itemEx.uid, "", TALKTYPE_ORANGE_1)
return TRUE
end
 
local MIN = 2.0
local MAX = 2.01


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 hasCondition(cid, CONDITION_EXHAUST_HEAL) == TRUE then
doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
return TRUE
end

if doPlayerAddMana(itemEx.uid, math.random((getPlayerLevel(cid) * MIN), (getPlayerLevel(cid) * MAX))) == LUA_ERROR then
return FALSE
end

doAddCondition(cid, exhaust)
doSendMagicEffect(getThingPos(itemEx.uid), 13)
doCreatureSay(itemEx.uid, "", TALKTYPE_ORANGE_1)
return TRUE
end

Changed so it checks both lvl and mlvl, you just have to change the formula to w/e you want.
Lua:
local min = 2.0
local max = 2.01

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

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

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

    if doPlayerAddMana(itemEx.uid, math.random((getPlayerLevel(cid) * min), (getPlayerMagLevel(cid) * max))) == LUA_ERROR then
        return false
    end

    doAddCondition(cid, exhaust)
    doSendMagicEffect(getThingPos(itemEx.uid), 13)
    doCreatureSay(itemEx.uid, "", TALKTYPE_ORANGE_1)
    return true
end

Can you see the min / max by doing this;
level * min and magic lvl * max.

So ex min = 2.0 and max = 3.0
Magic lvl 70 and level 100 would be min 200 and max 210
 
Changed so it checks both lvl and mlvl, you just have to change the formula to w/e you want.
Lua:
local min = 2.0
local max = 2.01

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

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

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

    if doPlayerAddMana(itemEx.uid, math.random((getPlayerLevel(cid) * min), (getPlayerMagLevel(cid) * max))) == LUA_ERROR then
        return false
    end

    doAddCondition(cid, exhaust)
    doSendMagicEffect(getThingPos(itemEx.uid), 13)
    doCreatureSay(itemEx.uid, "", TALKTYPE_ORANGE_1)
    return true
end

Can you see the min / max by doing this;
level * min and magic lvl * max.

So ex min = 2.0 and max = 3.0
Magic lvl 70 and level 100 would be min 200 and max 210
Msg error you cant not use this object
 
Msg error you cant not use this object

Lua:
local min = 2.0
local max = 2.01

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

function onUse(cid, item, fromPosition, itemEx, toPosition)
    print("test script")
    if not isPlayer(itemEx.uid) then
        print("1")
        return false
    end

    if hasCondition(cid, CONDITION_EXHAUST_HEAL) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
        print("3")
        return true
    end

    if doPlayerAddMana(itemEx.uid, math.random((getPlayerLevel(cid) * min), (getPlayerMagLevel(cid) * max))) == LUA_ERROR then
        print("4")
        return false
    end

    doAddCondition(cid, exhaust)
    doSendMagicEffect(getThingPos(itemEx.uid), 13)
    doCreatureSay(itemEx.uid, "", TALKTYPE_ORANGE_1)

    print("5")

    return true
end

Test it and take an SS of your console.
 
Lua:
local min = 2.0
local max = 2.01

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

function onUse(cid, item, fromPosition, itemEx, toPosition)
    print("test script")
    if not isPlayer(itemEx.uid) then
        print("1")
        return false
    end

    if hasCondition(cid, CONDITION_EXHAUST_HEAL) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED)
        print("3")
        return true
    end

    if doPlayerAddMana(itemEx.uid, math.random((getPlayerLevel(cid) * min), (getPlayerMagLevel(cid) * max))) == LUA_ERROR then
        print("4")
        return false
    end

    doAddCondition(cid, exhaust)
    doSendMagicEffect(getThingPos(itemEx.uid), 13)
    doCreatureSay(itemEx.uid, "", TALKTYPE_ORANGE_1)

    print("5")

    return true
end

Test it and take an SS of your console.
The Forgotten Server, version 0.3.1 (Crying Damson)
its console and no have fail in console only in tibia error you cant not use this object
look friend I have a good option since it is by mlvl, lvl, and mana-life maximum but now the problem is that the lua is potions.lua and I have no idea what kind of xml put in actions example
<action itemid="????" script="liquids/potions.lua"/>
I do not want it to be through great mana.lua now I want all potions to reference potions.lua
or if the option with which you are helping me is better and easier, tell me what I need to show you
 
Last edited:
The Forgotten Server, version 0.3.1 (Crying Damson)
its console and no have fail in console only in tibia error you cant not use this object
look friend I have a good option since it is by mlvl, lvl, and mana-life maximum but now the problem is that the lua is potions.lua and I have no idea what kind of xml put in actions example
<action itemid="????" script="liquids/potions.lua"/>
I do not want it to be through great mana.lua now I want all potions to reference potions.lua
or if the option with which you are helping me is better and easier, tell me what I need to show you

Then it's either not registerd in actions.xml (could also be ex wrong itemid) or you are editing the wrong file.
That code should always print out 1 if it's started / loaded.
 
Then it's either not registerd in actions.xml (could also be ex wrong itemid) or you are editing the wrong file.
That code should always print out 1 if it's started / loaded.
the great potion if it has its xml in fact I return it to normal and if it works but when I change to that script that you send me it stops working
 
the great potion if it has its xml in fact I return it to normal and if it works but when I change to that script that you send me it stops working

Dafuq the only thing I changed was == FALSE to not and removed the == TRUE since they are not needed.
Can you check your source code if you have this function aswell; getPlayerMagLevel
 
Is there any way that this manarune script can be done as in great mana potion?
here script mr
--Created to make the script easy to manipulate
--If used without using server potion exhaust (EX: potExhaust = false), it will work regardless of server
--Remember, true = yes, false = no, in the config

function onUse(cid, item, frompos, item2, topos)
--Config
local reqml = 8 --Magic Level required to use it
local reqlvl = 250 --Character Level required to use it
local potExhaust = false -- causes exhaust like potions (false creates seperate exhaust for mana rune)
--Maximum amount of mana to be added
local minMana = ((getPlayerLevel(cid) * 1.5 + getPlayerMagLevel(cid) * 1.6) * 1.25) + 20
local maxMana = ((getPlayerLevel(cid) * 1.5 + getPlayerMagLevel(cid) * 1.6) * 1.25) + 20

local ani = 1 --Animation to be sent to player when used (these can be found in your global.lua; search for CONST_ME_)
--If you don't want it to give health, set both to 0
local minHealth = ((getPlayerLevel(cid) * 0 + getPlayerMagLevel(cid) * 0) * 0.0) + 0 --Minimum amount of health to be added
local maxHealth = ((getPlayerLevel(cid) * 0 + getPlayerMagLevel(cid) * 0) * 0.0) + 0 --Maximum amount of health to be added

if getPlayerSlotItem(cid, CONST_SLOT_RING).itemid == 6536 and getPlayerStorageValue(cid, 50781) == 1 then
minHealth = minHealth * 0.0 --Minimum amount of health to be added
maxHealth = maxHealth * 0.0 --Maximum amount of health to be added
end



--If you're not using potion exhaust (potExhaust = false) edit the following the way you'd like
local storeValue = 50995 --The storage value that will be used for exhaust if you have potexhaust to false
local exhaustTime = 1 --Exhaust in seconds
local infinite = true --Will it cause rune to lose charges
local canUseInPz = true --If true, mana rune may be used in PZ, otherwise, it will not work.

local player_say = "Ahhh..." --What player says after successfully using the mana rune
local error_ml = "You don't have the required magic level to use that rune." --What the cancel says when ml is too low
local error_lvl = "You don't have the required magic level to use that rune." --What the cancel says when level is too low
local error_notPlayer = "You can only use this rune on players." --What the cancel says when you try to use it on something not a player
local error_exhaust = "You are exhausted." --What the cancel says when you are exhausted
local error_pz = "You may not use this in Protected Zones." --What the cancel says when you are in PZ and canUseInPz is false
------------------------------------------- DO NOT EDIT BELOW THIS LINE!! -------------------------------------------

---------------------------START Check for Errors--------------------------------
--If doesn't allow use in PZ, send poof and cancel message
if canUseInPz == false and getTilePzInfo(getPlayerPosition(cid)) == 1 then
doSendMagicEffect(frompos, CONST_ME_POFF)
doPlayerSendCancel(cid, error_pz)
return 0
end
--If not high enough level, send poof and cancel message
if getPlayerLevel(cid) < reqlvl then
doSendMagicEffect(frompos, CONST_ME_POFF)
doPlayerSendCancel(cid, error_lvl)
return 0
end
--if character is not knight, sejnd poof and cancel message
if((not(isKnight(cid)) or getPlayerLevel(cid) < 250) and getPlayerCustomFlagValue(cid, PlayerCustomFlag_GamemasterPrivileges) == FALSE) then
doSendMagicEffect(frompos, CONST_ME_POFF)
doPlayerSendCancel(cid, error_lvl)
return 0
end

--If ml is too low, send poof and cancel message
if getPlayerMagLevel(cid) < reqml then
doSendMagicEffect(frompos, CONST_ME_POFF)
doPlayerSendCancel(cid, error_ml)
return 0
end

--If it's not a player, send poof and cancel message
if isPlayer(item2.uid) == FALSE then
doSendMagicEffect(frompos, CONST_ME_POFF)
doPlayerSendCancel(cid, error_notPlayer)
return 0
end

--Check if exhausted
if potExhaust == false then --If not using Potion Exhaust
if exhaust(cid, storeValue, exhaustTime) == 0 then
doSendMagicEffect(frompos, CONST_ME_POFF)
doPlayerSendCancel(cid, error_exhaust)
return 0
end
else --If you are using potion exhaust
if hasCondition(cid, CONDITION_EXHAUSTED) == 1 then
doPlayerSendCancel(cid, error_exhaust)
return 0
end
end

---------------------------END Check for Errors--------------------------------

doSendMagicEffect(topos, ani)
doCreatureAddHealth(item2.uid, math.random(minHealth, maxHealth))
doPlayerAddMana(item2.uid, math.random(minMana, maxMana))
if infinite == false then
if item.type > 1 then
doChangeTypeItem(item.uid,item.type-1)
else
doRemoveItem(item.uid,1)
end
end
end

--Exhaust System created by Alreth
--Edited by OsoSangre
function exhaust(cid, storeValue, exhaustTime)
local newExhaust = os.time()
local oldExhaust = getPlayerStorageValue(cid, storeValue)
if (oldExhaust == nil or oldExhaust < 0) then
oldExhaust = 0
end
if (exhaustTime == nil or exhaustTime < 0) then
exhaustTime = 1
end
diffTime = os.difftime(newExhaust, oldExhaust)
if (diffTime >= exhaustTime) then
setPlayerStorageValue(cid, storeValue, newExhaust)
return 1
else
return 0
end
end
 
As far as I can tell from a quick glance, you just need to assign the great mana potions item id in actions.xml to this script, and it'll work the exact same as the rune did.
 
Back
Top