Hidroponica
Member
- Joined
- Feb 16, 2016
- Messages
- 75
- Reaction score
- 8
wanted help with this script to separate some conditions by vocation kind in conditionML only works with druids and sorc and conditionMELEE only works with paladin and knights
local conditionSUP,conditionML,conditionMELEE,conditionSPEED,conditionWARLOCK,conditionAMP = {},{},{},{},{},{}
for i=1,300 do
conditionSUP = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(conditionSUP, CONDITION_PARAM_SUBID, 50)
setConditionParam(conditionSUP, CONDITION_PARAM_TICKS, -1)
setConditionParam(conditionSUP, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i)
setConditionParam(conditionSUP, CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i)
conditionML = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(conditionML, CONDITION_PARAM_SUBID, 51)
setConditionParam(conditionML, CONDITION_PARAM_TICKS, -1)
setConditionParam(conditionML, CONDITION_PARAM_STAT_MAGICPOINTS, i)
setConditionParam(conditionML, CONDITION_PARAM_SKILL_SHIELD, i)
conditionMELEE = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(conditionMELEE, CONDITION_PARAM_SUBID, 52)
setConditionParam(conditionMELEE, CONDITION_PARAM_TICKS, -1)
setConditionParam(conditionMELEE, CONDITION_PARAM_SKILL_MELEE, i)
setConditionParam(conditionMELEE, CONDITION_PARAM_SKILL_SHIELD, i)
setConditionParam(conditionMELEE, CONDITION_PARAM_SKILL_DISTANCE, i)
conditionSPEED = createConditionObject(CONDITION_HASTE)
setConditionParam(conditionSPEED, CONDITION_PARAM_SUBID, 53)
setConditionParam(conditionSPEED, CONDITION_PARAM_TICKS, -1)
setConditionParam(conditionSPEED, CONDITION_PARAM_SPEED, i)
conditionWARLOCK = createConditionObject(CONDITION_REGENERATION)
setConditionParam(conditionWARLOCK, CONDITION_PARAM_SUBID, 54)
setConditionParam(conditionWARLOCK, CONDITION_PARAM_TICKS, -1)
setConditionParam(conditionWARLOCK, CONDITION_PARAM_HEALTHGAIN, i)
setConditionParam(conditionWARLOCK, CONDITION_PARAM_HEALTHTICKS, 2000)
setConditionParam(conditionWARLOCK, CONDITION_PARAM_MANAGAIN, i)
setConditionParam(conditionWARLOCK, CONDITION_PARAM_MANATICKS, 2000)
end
function getSlotType(n)
if not n then
return false
end
if n:match('%[(.+)%]') then
n = n:match('%[(.+)%]')
if n == '?' then
return 0,n
else
return n:match('(.-)%.([+-])(%d+)%%')
end
else
return false
end
end
local function loadSet(cid)
local t = {}
for slot=1,9 do
t[slot] = ''
local s = getPlayerSlotItem(cid,slot).uid
if s ~= 0 then
t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
end
end
return t
end
function chk(cid,f)
if not isPlayer(cid) then return false end
local t = loadSet(cid)
for i=1,#f do
if f ~= t then
equip(cid,nil,slot)
break
end
end
addEvent(chk,2000,cid,t)
end
function check_slot(aab, i)
if i == 5 or i == 6 then
if isWeapon(aab) or isShield(aab) or isBow(aab) then
return true
end
else
return true
end
return false
end
function equip(cid,item,slot)
local t = {}
if item then
local mm,sinal,qto = getSlotType(Item(item.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION))
t[mm] = tonumber(qto)
end
for i=1,9 do
if i ~= slot then
if getPlayerSlotItem(cid,i).itemid ~= 0 then
local aab = getPlayerSlotItem(cid,i).uid
if aab and check_slot(aab,i) then
for _ in Item(aab):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do
local mm,sinal,qto2 = getSlotType(_)
if mm then
if not t[mm] then
t[mm] = 0
end
t[mm] = t[mm]+tonumber(qto2)
t[mm] = t[mm] > 300 and 300 or t[mm]
end
end
end
end
end
end
local fu = 0
local ca = {}
local s = ''
for sl,n in pairs(t) do
fu = fu+1
s = s..''..n..'% more of '..sl..'\n'
if sl == 'supreme' then
doAddCondition(cid,conditionSUP[tonumber(n)])
Player(cid):addHealth(Player(cid):getMaxHealth() - Player(cid):getHealth())
ca[50] = 1
doSendTutorial(cid,19)
elseif sl == 'magically' then
doAddCondition(cid,conditionML[tonumber(n)])
ca[51] = 1
elseif sl == 'blessed' then
doAddCondition(cid,conditionMELEE[tonumber(n)])
ca[52] = 1
elseif sl == 'speedy' then
doAddCondition(cid,conditionSPEED[tonumber(n)])
ca[53] = 1
elseif sl == 'warlock' then
doAddCondition(cid,conditionWARLOCK[tonumber(n)])
ca[54] = 1
end
end
if fu > 0 then
for i=50,54 do
if not ca then
doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
doRemoveCondition(cid,CONDITION_REGENERATION,i)
doRemoveCondition(cid,CONDITION_HASTE,i)
end
end
else
for i=50,54 do
doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
doRemoveCondition(cid,CONDITION_REGENERATION,i)
doRemoveCondition(cid,CONDITION_HASTE,i)
end
end
return true
end
function onLogin(creature)
local cid = creature:getId()
equip(cid,nil,slot)
addEvent(chk,2000,cid,loadSet(cid))
return true
end