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

how separate conditions for vacations

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
 
xSi2oFz.png


Sorry, couldn't resist.
 
Back
Top