I has trying to make a script (action) that adds elemental defence in one item, but the script doesn't work. Someone that have knowlege and can help me with it, I'll be very thankful.
That's my trying:
local config = {
FdefBonus = 2, --Fire defense in %.
failChance = 30, --Fail chance in percent.
types = {"armor", "legs", "helmet", "boots", "shield"},
noFdef = {1, 2, 3, 9, 10} --Kind of items blocked
}
function onUse(cid, item, fromPos, itemEx, toPos)
if itemEx.itemid < 100 then
return doPlayerSendCancel(cid, "Use this in valid itens.")
elseif isInArray(config.noFdef, getItemWeaponType(itemEx.uid)) then
return doPlayerSendCancel(cid, "Use this in valid itens.")
elseif getItemAttribute(itemEx.uid, "absorbPercentFire") then
return doPlayerSendCancel(cid, "This item has already a fire defense bonus.")
elseif math.random(1, 100) > config.failChance then
return doPlayerSendTextMessage(cid, 27, "Sorry, your item didn't get a fire defense bonus. Good luck at the next try!"), doRemoveItem(item.uid, 1)
end
local checkItemName
for i = 1, #config.types do
if getItemNameById(itemEx.itemid):find(config.types) then
checkItemName = true
break
end
end
if not checkItemName then
return doPlayerSendCancel(cid, "Use this in valid itens.")
end
doPlayerSendTextMessage(cid, 27, "Congratulations, now your item has a sire defense bonus of "..config.FdefBonus.."%!")
doItemSetAttribute(itemEx.uid, "absorbPercentFire", config.FdefBonus)
doItemSetAttribute(itemEx.uid, "name", getItemName(itemEx.uid).." ref "..config.FdefBonus.."%")
doRemoveItem(item.uid, 1)
return true
end
That's my trying:
local config = {
FdefBonus = 2, --Fire defense in %.
failChance = 30, --Fail chance in percent.
types = {"armor", "legs", "helmet", "boots", "shield"},
noFdef = {1, 2, 3, 9, 10} --Kind of items blocked
}
function onUse(cid, item, fromPos, itemEx, toPos)
if itemEx.itemid < 100 then
return doPlayerSendCancel(cid, "Use this in valid itens.")
elseif isInArray(config.noFdef, getItemWeaponType(itemEx.uid)) then
return doPlayerSendCancel(cid, "Use this in valid itens.")
elseif getItemAttribute(itemEx.uid, "absorbPercentFire") then
return doPlayerSendCancel(cid, "This item has already a fire defense bonus.")
elseif math.random(1, 100) > config.failChance then
return doPlayerSendTextMessage(cid, 27, "Sorry, your item didn't get a fire defense bonus. Good luck at the next try!"), doRemoveItem(item.uid, 1)
end
local checkItemName
for i = 1, #config.types do
if getItemNameById(itemEx.itemid):find(config.types) then
checkItemName = true
break
end
end
if not checkItemName then
return doPlayerSendCancel(cid, "Use this in valid itens.")
end
doPlayerSendTextMessage(cid, 27, "Congratulations, now your item has a sire defense bonus of "..config.FdefBonus.."%!")
doItemSetAttribute(itemEx.uid, "absorbPercentFire", config.FdefBonus)
doItemSetAttribute(itemEx.uid, "name", getItemName(itemEx.uid).." ref "..config.FdefBonus.."%")
doRemoveItem(item.uid, 1)
return true
end