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

Action Perfect items upgrade 2.0 -- Slot sytem

click here -->
reputation.gif


But <<< near my avatar
 
Armor:
Code:
[02/07/2010 11:18:11] Lua Script Error: [Action Interface] 
[02/07/2010 11:18:11] data/actions/scripts/upgrade.lua:onUse

[02/07/2010 11:18:11] data/actions/scripts/upgrade.lua:52: attempt to call global 'getItemInfo' (a nil value)
[02/07/2010 11:18:11] stack traceback:
[02/07/2010 11:18:11] 	data/actions/scripts/upgrade.lua:52: in function 'isArmor'
[02/07/2010 11:18:11] 	data/actions/scripts/upgrade.lua:100: in function <data/actions/scripts/upgrade.lua:95>
Weapon:
Code:
[02/07/2010 11:18:04] Lua Script Error: [Action Interface] 
[02/07/2010 11:18:04] data/actions/scripts/upgrade.lua:onUse

[02/07/2010 11:18:04] data/actions/scripts/upgrade.lua:90: attempt to call global 'getItemInfo' (a nil value)
[02/07/2010 11:18:04] stack traceback:
[02/07/2010 11:18:04] 	data/actions/scripts/upgrade.lua:90: in function 'doTransform'
[02/07/2010 11:18:04] 	data/actions/scripts/upgrade.lua:109: in function <data/actions/scripts/upgrade.lua:95>

I have that bugs...
 
Last edited:
@juanC
Here:
@MrLipzZz
-- &a = weapon attack
-- &d = weapon defense
-- &s = shield defense
-- &p = armor defense
-- # = nivel do item > item level > 5
-- @ = max level >> 17
chance='(100/math.sqrt((((@/4)+(#*2))/@)*#))',
(100/math.sqrt((((17/4)+(5*2))/17)*5))
100/math.sqrt((((4,25)+(10))/17)*5)
100/math.sqrt((((14,25))/17)*5)
100/math.sqrt((0,832...)*5)
100/math.sqrt(4,191..)
100/2,something = 48.846339804336% ---> 48%
 
uhh ._., please help me configure this script :/ and sorry for spam. After my configure , sword have 3 attack and 3 defense ._. lol

This is my upgrade.lua (max lvl upgrade = 5)
PHP:
local gain = {
gainArmor='2+(1)',loseArmor='1-(1)',
gainShield='2+1',loseShield='1-(1+1)',
gainAttack='2+(1*(1))',loseAttack='1-(1*(1+1))',
gainDefense='2+(1*(1))',loseDefense='1-(1*(1+1))',
chance='(100/math.sqrt((((17/4)+(5*2))/17)*5))',
maxlvl = 5,
blocked_ids = {8881}
}
local it = {
--[itemid] = [percent]
[8306] = 0, -- 0% additional
[8305] = 100, -- 50%
}
if not setItemName then
    function setItemName(uid,name)
                return doItemSetAttribute(uid,'name',name)
    end
    function setItemArmor(uid,name)
                return doItemSetAttribute(uid,'armor',name)
    end
        function setItemDefense(uid,name)
                return doItemSetAttribute(uid,'defense',name)
        end
        function setItemAttack(uid,name)
                return doItemSetAttribute(uid,'attack',name)
        end
        function getItemAttack(uid)
                return getItemAttribute(uid,'attack')
        end
        function getItemDefense(uid)
                return getItemAttribute(uid,'defense')
        end
function getItemArmor(uid)
   if type(uid) == 'number' then
      return getItemAttribute(uid,'armor')
   else
      return getItemInfo(uid.itemid).armor
   end
end
end

local function isArmor(uid) -- Function by Mock the bear.
    if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then
                return true
        end
        return false
end
local function isWeapon(uid) -- Function by Mock the bear.
        uid = uid or 0
        local f = getItemWeaponType(uid)
        if f == 1 or f == 2 or f == 3 then
                return true
        end
        return false
end
local function isShield(uid) -- Function by Mock the bear.
        uid = uid or 0
        if getItemWeaponType(uid) == 4 then
                return true
        end
        return false
end
local function isBow(uid) -- Function by Mock the bear.
        uid = uid or 0
        if getItemWeaponType(uid) == 5 then
                return true
        end
        return false
end
local function getWeaponLevel(uid) -- Function by Mock the bear.
   uid = uid or 0
   local name = getItemName(uid.uid) or getItemInfo(uid.itemid).name or ''
   local lvl = string.match(name,'%s%+(%d+)%s*')
   return tonumber(lvl) or 0
end
local function doTransform(s,i) -- Function by Mock the bear.
    local c = string.gsub(s,'@',gain.maxlvl)
    local c = string.gsub(c,'&a',(getItemAttack(i.uid) ~= 0 and getItemAttack(i.uid) or getItemInfo(i.itemid).attack))
    local c = string.gsub(c,'&d',(getItemDefense(i.uid) ~= 0 and getItemDefense(i.uid) or getItemInfo(i.itemid).defense))
    local c = string.gsub(c,'&s',(getItemDefense(i.uid) ~= 0 and getItemDefense(i.uid) or getItemInfo(i.itemid).defense))
    local c = string.gsub(c,'&p',(getItemArmor(i.uid) ~= 0 and getItemArmor(i.uid) or getItemInfo(i.itemid).armor))
    local c = string.gsub(c,'#',getWeaponLevel(i))
    local q =  assert(loadstring('return '..c))
    return math.floor(assert(q()))
end
function onUse(cid, item, fromPosition, itemEx, toPosition)
         if item.uid == 0 or item.itemid == 0 then return false end
                 toPosition.stackpos = 255
         if isInArray(gain.blocked_ids, itemEx.itemid)
          or (not getItemWeaponType(itemEx.uid) or getItemWeaponType(itemEx.uid) > 5)
           or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx))
             or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then
                doPlayerSendTextMessage(cid, 24,"You cant refine this item.")
                return TRUE
         end
         if isCreature(itemEx.uid) == TRUE then
            return FALSE
         end
        local level = getWeaponLevel(itemEx)
        local chance = doTransform(gain.chance,itemEx)
                if level == gain.maxlvl then
                        doSendMagicEffect(toPosition, 2)
            return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.")
                end
                doPlayerSendTextMessage(cid, 24,"Trying refine with "..(chance+it[item.itemid] > 100 and 100 or chance+it[item.itemid]).."% of sucess!")
        if chance+it[item.itemid] >= math.random(0,100) then
                        local nm = getItemName(itemEx.uid)
                        local slot = nm:match('(%[.+%])') or '' ---If you server use slot system dont change it ^^
                        slot = slot~='' and ' '..slot or slot
            setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level+1)..slot)
            addEvent(doPlayerSendTextMessage,500,cid, 24,"Your item has been upgrated to +"..(level+1)..slot..".")
            doSendMagicEffect(toPosition, 12)
            if isArmor(itemEx) then
                                local get = doTransform(gain.gainArmor,itemEx)
                                setItemArmor(itemEx.uid,get)
                        elseif isBow(itemEx.uid) then
                                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
                        elseif isWeapon(itemEx.uid) then
                                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
                                setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx))
            elseif isShield(itemEx.uid) then
                                setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx))
                        end
        else
                        if level == 0 then
                                addEvent(doPlayerSendTextMessage,500,cid, 24,"No effect.")
                                doSendMagicEffect(toPosition, 2)
                        elseif level > 0 then
                        local nm = getItemName(itemEx.uid)
                        local slot = nm:match('(%[.+%])') or '' ---If you server use slot system dont change it ^^
                                slot = slot~='' and ' '..slot or slot
                                if level == 1 then
                                        setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..slot)
                                        addEvent(doPlayerSendTextMessage,500,cid, 24,"Your item back to normal.")
                                else
                                        setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1)..slot)
                                        addEvent(doPlayerSendTextMessage,500,cid, 24,"Your item back to +"..(level-1)..slot..".")
                                end
                                if isArmor(itemEx) then
                                        setItemArmor(itemEx.uid,doTransform(gain.loseArmor  ,itemEx))
                                elseif isWeapon(itemEx.uid) then
                                        setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                                        setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx))
                                elseif isBow(itemEx.uid) then
                                        setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                                elseif isShield(itemEx.uid) then
                                        setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx))
                                end
                        end
                        doSendMagicEffect(toPosition, 9)
        end
        doRemoveItem(item.uid,1)
        return true
end
 
mock se liga.. num tem como por exp qdo fo da upgrade com a pedra azul inves do item volta exp tava +6 deu falia ele volta +5 não teria como ao inves dele volta ele fica no level q estava? exp +6ai a pedra falha ele continua +6??
 
men i need help...i want to know how can i upgrade wands and rods and the atack speed with that script if u can help me with this...
 
Mock tem um erro nos items de pala ele refina mais nao muda o dano e quando o item é retirado da mao o ataque volta ao normal porque acontece isso ?
 
Back
Top