luddeax
New Member
- Joined
- Jun 14, 2009
- Messages
- 115
- Reaction score
- 0
Here's the deal.
I'm building a mana rune script, I've got one working with exhaust but no managain, and one giving mana but no exhaust.
I'll post the two scripts and maybe someone could help me how to mix them so both functions works.
Thanks in advance
(using tfs 0.2.2 so I don't want a new script)
THE SCRIPT WITH WORKING EXHAUST:
THE ONE WITH WORKING MANA GAIN:
I'm building a mana rune script, I've got one working with exhaust but no managain, and one giving mana but no exhaust.
I'll post the two scripts and maybe someone could help me how to mix them so both functions works.
Thanks in advance
(using tfs 0.2.2 so I don't want a new script)
THE SCRIPT WITH WORKING EXHAUST:
Lua:
-----------------------------------
--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 level = getPlayerLevel(cid)
local mlevel = getPlayerMagLevel(cid)
local pos = getPlayerPosition(cid)
local reqml = 3 --Magic Level required to use it
local reqlvl = 15 --Character Level required to use it
local potExhaust = false -- causes exhaust like potions (false creates seperate exhaust for mana rune)
local mana_minimum = (level * 1) + (mlevel * 2) - 50
local mana_maximum = (level * 1) + (mlevel * 2)
local mana_add = math.random(mana_minimum, mana_maximum)
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're not using potion exhaust (potExhaust = false) edit the following the way you'd like
local storeValue = 50 --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 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 item2.uid < 1 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)
doPlayerAddMana(item2.uid, mana_add)
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
THE ONE WITH WORKING MANA GAIN:
Lua:
local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
function onUse(cid, var)
local level = getPlayerLevel(cid)
local mlevel = getPlayerMagLevel(cid)
local pos = getPlayerPosition(cid)
-- Mana Formula Settings --
-- You can use "level" and "mlevel" --
local mana_minimum = (level * 1) + (mlevel * 2) - 50
local mana_maximum = (level * 1) + (mlevel * 2)
-- Mana Formula Settings END --
local mana_add = math.random(mana_minimum, mana_maximum)
doSendMagicEffect(pos,28)
doPlayerAddMana(cid, mana_add)
doSendAnimatedText(pos, mana_add, TEXTCOLOR_LIGHTBLUE)
doCreatureSay(cid, "Aaah.. mana.", TALKTYPE_ORANGE_1)
return doCombat(cid, combat, var)
end