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

Linux How to fix this script?

Vrotz

Member
Joined
Apr 7, 2011
Messages
1,071
Reaction score
7
Location
Brazil
Here, no motive to explain this:
Err.JPG

Script:
PHP:
local conf = {}

conf["level"] = {
-- [item_level] = {successParcent=PARCENT FOR UPGRADING SUCCESS, downrageLevel = IF UPGRADING FAIL - ITEM WAS DECRASED TO LEVEL HERE}
[1] = {successParcent = 70, downrageLevel = 0},
[2] = {successParcent = 60, downrageLevel = 1},
[3] = {successParcent = 50, downrageLevel = 2},
[4] = {successParcent = 40, downrageLevel = 3},
[5] = {successParcent = 25, downrageLevel = 2},
}
conf["upgrade"] = { -- how many parcent attributes are rised?
attack = 1, -- attack %
extraAttack = 1, -- extra Attack %
defense = 1, -- defence %
extraDefense = 1, -- extra defence %
armor = 1, -- armor %
hitChance = 1, -- hit chance %
}

-- // do not touch // -- 
-- Upgrading system v.3.1 by Azi [Ersiu] --
local upgrading = {
upValue = function (value, level, parcent)
if(not(value>0))then return 0 end 
for i=1,level do
value = math.ceil(((value/100)*parcent)+value)+1
end
return (value > 0) and value or 0
end,

getLevel = function (item)
local name = string.explode(getItemName(item), '+')
return (#name == 1) and 0 or math.abs(name[2])
end,
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local getItem = getItemInfo(itemEx.itemid)
if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
local level = upgrading.getLevel(itemEx.uid)
if(level < #conf["level"])then
local nLevel = (conf["level"][(level+1)].successParcent >= math.random(1,100)) and (level+1) or conf["level"][level].downrageLevel
if(nLevel > level)then
doSendMagicEffect(toPosition, 30)
doPlayerSendTextMessage(cid, 22, "Congratulations! Upgraded was successful, your item has become stronger!")
if nLevel >= 3 then
doBroadcastMessage("Combination with success: " .. getCreatureName(cid) .. " combined " .. getItem.name .. " +" .. nLevel .. "!", MESSAGE_STATUS_WARNING)
end
else
doSendMagicEffect(toPosition, 2)
doPlayerSendTextMessage(cid, 22, "Argh! Upgrading fail... you item lost some of strong!")
end
doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and "+"..nLevel or "")) 
doItemSetAttribute(itemEx.uid, "attack", upgrading.upValue(getItem.attack, nLevel, conf["upgrade"].attack))
doItemSetAttribute(itemEx.uid, "extraattack", upgrading.upValue(getItem.extraAttack, nLevel, conf["upgrade"].extraAttack))
doItemSetAttribute(itemEx.uid, "defense", upgrading.upValue(getItem.defense,nLevel, conf["upgrade"].defense))
doItemSetAttribute(itemEx.uid, "extradefense", upgrading.upValue(getItem.extraDefense, nLevel, conf["upgrade"].extraDefense))
doItemSetAttribute(itemEx.uid, "armor", upgrading.upValue(getItem.armor, nLevel, conf["upgrade"].armor))
doItemSetAttribute(itemEx.uid, "hitChance", upgrading.upValue(getItem.hitChance,nLevel, conf["upgrade"].hitChance))
doRemoveItem(item.uid, 1)
else
doPlayerSendTextMessage(cid, 19, "Sorry this item is on max level.")
end
else
doPlayerSendTextMessage(cid, 19, "You cannot upgrade this item.")
end
end
 
Try adding local value = nil above the function then before the line if(not( add if(value ~= nil) then

But I don't know I'm on my phone right now so I can't actually read the script yet when i get time ill get on pc and look
 
Next time please tab them :D
try this, the script looks solid, but I removed a () that I thought was useless, though I could not possibly see why it would mess up!
Lua:
local conf = {}

conf["level"] = {
-- [item_level] = {successParcent=PARCENT FOR UPGRADING SUCCESS, downrageLevel = IF UPGRADING FAIL - ITEM WAS DECRASED TO LEVEL HERE}
[1] = {successParcent = 70, downrageLevel = 0},
[2] = {successParcent = 60, downrageLevel = 1},
[3] = {successParcent = 50, downrageLevel = 2},
[4] = {successParcent = 40, downrageLevel = 3},
[5] = {successParcent = 25, downrageLevel = 2},
}
conf["upgrade"] = { -- how many parcent attributes are rised?
attack = 1, -- attack %
extraAttack = 1, -- extra Attack %
defense = 1, -- defence %
extraDefense = 1, -- extra defence %
armor = 1, -- armor %
hitChance = 1, -- hit chance %
}

-- // do not touch // -- 
-- Upgrading system v.3.1 by Azi [Ersiu] --
local upgrading = {
    upValue = function (value, level, parcent)
    if(not(value>0))then return 0 end 
        for i=1,level do
            value = math.ceil(((value/100)*parcent)+value)+1
        end
    return (value > 0) and value or 0
    end,

    getLevel = function (item)
    local name = string.explode(getItemName(item), '+')
        return (#name == 1) and 0 or math.abs(name[2])
    end,
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local getItem = getItemInfo(itemEx.itemid)
    if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
        local level = upgrading.getLevel(itemEx.uid)
        if(level < #conf["level"])then
            local nLevel = (conf["level"][level+1].successParcent >= math.random(1,100)) and (level+1) or conf["level"][level].downrageLevel
            if(nLevel > level)then
                doSendMagicEffect(toPosition, 30)
                doPlayerSendTextMessage(cid, 22, "Congratulations! Upgraded was successful, your item has become stronger!")
                if nLevel >= 3 then
                    doBroadcastMessage("Combination with success: " .. getCreatureName(cid) .. " combined " .. getItem.name .. " +" .. nLevel .. "!", MESSAGE_STATUS_WARNING)
                end
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 22, "Argh! Upgrading fail... you item lost some of strong!")
            end
            doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and "+"..nLevel or "")) 
            doItemSetAttribute(itemEx.uid, "attack", upgrading.upValue(getItem.attack, nLevel, conf["upgrade"].attack))
            doItemSetAttribute(itemEx.uid, "extraattack", upgrading.upValue(getItem.extraAttack, nLevel, conf["upgrade"].extraAttack))
            doItemSetAttribute(itemEx.uid, "defense", upgrading.upValue(getItem.defense,nLevel, conf["upgrade"].defense))
            doItemSetAttribute(itemEx.uid, "extradefense", upgrading.upValue(getItem.extraDefense, nLevel, conf["upgrade"].extraDefense))
            doItemSetAttribute(itemEx.uid, "armor", upgrading.upValue(getItem.armor, nLevel, conf["upgrade"].armor))
            doItemSetAttribute(itemEx.uid, "hitChance", upgrading.upValue(getItem.hitChance,nLevel, conf["upgrade"].hitChance))
            doRemoveItem(item.uid, 1)
        else
            doPlayerSendTextMessage(cid, 19, "Sorry this item is on max level.")
        end
    else
        doPlayerSendTextMessage(cid, 19, "You cannot upgrade this item.")
    end
end
 
problem was here:
Code:
conf["level"][level].downrageLevel
it needed a failsafe statement for index "0" which is always nil.
Lua:
local conf = {}

conf["level"] = {
-- [item_level] = {successParcent=PARCENT FOR UPGRADING SUCCESS, downrageLevel = IF UPGRADING FAIL - ITEM WAS DECRASED TO LEVEL HERE}
[1] = {successParcent = 70, downrageLevel = 0},
[2] = {successParcent = 60, downrageLevel = 1},
[3] = {successParcent = 50, downrageLevel = 2},
[4] = {successParcent = 40, downrageLevel = 3},
[5] = {successParcent = 25, downrageLevel = 2},
}
conf["upgrade"] = { -- how many parcent attributes are rised?
attack = 1, -- attack %
extraAttack = 1, -- extra Attack %
defense = 1, -- defence %
extraDefense = 1, -- extra defence %
armor = 1, -- armor %
hitChance = 1, -- hit chance %
}

-- // do not touch // -- 
-- Upgrading system v.3.1 by Azi [Ersiu] --
local upgrading = {
    upValue = function (value, level, parcent)
    if(not(value>0))then return 0 end 
        for i=1,level do
            value = math.ceil(((value/100)*parcent)+value)+1
        end
    return (value > 0) and value or 0
    end,

    getLevel = function (item)
    local name = string.explode(getItemName(item), '+')
        return (#name == 1) and 0 or math.abs(name[2])
    end,
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local getItem = getItemInfo(itemEx.itemid)
    if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
        local level = upgrading.getLevel(itemEx.uid)
        if(level < #conf["level"])then
            local nLevel = (conf["level"][level+1].successParcent >= math.random(1,100)) and (level+1) or (level>0 and conf["level"][level].downrageLevel or 0)
            if(nLevel > level)then
                doSendMagicEffect(toPosition, 30)
                doPlayerSendTextMessage(cid, 22, "Congratulations! Upgraded was successful, your item has become stronger!")
                if nLevel >= 3 then
                    doBroadcastMessage("Combination with success: " .. getCreatureName(cid) .. " combined " .. getItem.name .. " +" .. nLevel .. "!", MESSAGE_STATUS_WARNING)
                end
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 22, "Argh! Upgrading fail... you item lost some of strong!")
            end
            doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and "+"..nLevel or "")) 
            doItemSetAttribute(itemEx.uid, "attack", upgrading.upValue(getItem.attack, nLevel, conf["upgrade"].attack))
            doItemSetAttribute(itemEx.uid, "extraattack", upgrading.upValue(getItem.extraAttack, nLevel, conf["upgrade"].extraAttack))
            doItemSetAttribute(itemEx.uid, "defense", upgrading.upValue(getItem.defense,nLevel, conf["upgrade"].defense))
            doItemSetAttribute(itemEx.uid, "extradefense", upgrading.upValue(getItem.extraDefense, nLevel, conf["upgrade"].extraDefense))
            doItemSetAttribute(itemEx.uid, "armor", upgrading.upValue(getItem.armor, nLevel, conf["upgrade"].armor))
            doItemSetAttribute(itemEx.uid, "hitChance", upgrading.upValue(getItem.hitChance,nLevel, conf["upgrade"].hitChance))
            doRemoveItem(item.uid, 1)
        else
            doPlayerSendTextMessage(cid, 19, "Sorry this item is on max level.")
        end
    else
        doPlayerSendTextMessage(cid, 19, "You cannot upgrade this item.")
    end
end

- - - Updated - - -

also conjure a new armor and try the script again.
 
I dont understand anything of what u said, but I believe and I'll test.

- - - Updated - - -

The first script was success, so I changed the second to have a greater chance of not breaking, but I got this error when using it:
http://otland.net/attachments/f16/20354d1367039172-how-fix-script-imagem.jpg

the first script, the item only refinery to +5 and this goes up to +10

here the first:
PHP:
local conf = {}
 
conf["level"] = {
-- [item_level] = {successParcent=PARCENT FOR UPGRADING SUCCESS, downrageLevel = IF UPGRADING FAIL - ITEM WAS DECRASED TO LEVEL HERE}
[1] = {successParcent = 70, downrageLevel = 0},
[2] = {successParcent = 60, downrageLevel = 1},
[3] = {successParcent = 50, downrageLevel = 2},
[4] = {successParcent = 40, downrageLevel = 3},
[5] = {successParcent = 25, downrageLevel = 2},
}
conf["upgrade"] = { -- how many parcent attributes are rised?
attack = 1, -- attack %
extraAttack = 1, -- extra Attack %
defense = 1, -- defence %
extraDefense = 1, -- extra defence %
armor = 1, -- armor %
hitChance = 1, -- hit chance %
}
 
-- // do not touch // -- 
-- Upgrading system v.3.1 by Azi [Ersiu] --
local upgrading = {
    upValue = function (value, level, parcent)
    if(not(value>0))then return 0 end 
        for i=1,level do
            value = math.ceil(((value/100)*parcent)+value)+1
        end
    return (value > 0) and value or 0
    end,
 
    getLevel = function (item)
    local name = string.explode(getItemName(item), '+')
        return (#name == 1) and 0 or math.abs(name[2])
    end,
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local getItem = getItemInfo(itemEx.itemid)
    if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
        local level = upgrading.getLevel(itemEx.uid)
        if(level < #conf["level"])then
            local nLevel = (conf["level"][level+1].successParcent >= math.random(1,100)) and (level+1) or (level>0 and conf["level"][level].downrageLevel or 0)
            if(nLevel > level)then
                doSendMagicEffect(toPosition, 30)
                doPlayerSendTextMessage(cid, 22, "Congratulations! Upgraded was successful, your item has become stronger!")
                if nLevel >= 3 then
                    doBroadcastMessage("Combination with success: " .. getCreatureName(cid) .. " combined " .. getItem.name .. " +" .. nLevel .. "!", MESSAGE_STATUS_WARNING)
                end
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 22, "Argh! Upgrading fail... you item lost some of strong!")
            end
            doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and "+"..nLevel or "")) 
            doItemSetAttribute(itemEx.uid, "attack", upgrading.upValue(getItem.attack, nLevel, conf["upgrade"].attack))
            doItemSetAttribute(itemEx.uid, "extraattack", upgrading.upValue(getItem.extraAttack, nLevel, conf["upgrade"].extraAttack))
            doItemSetAttribute(itemEx.uid, "defense", upgrading.upValue(getItem.defense,nLevel, conf["upgrade"].defense))
            doItemSetAttribute(itemEx.uid, "extradefense", upgrading.upValue(getItem.extraDefense, nLevel, conf["upgrade"].extraDefense))
            doItemSetAttribute(itemEx.uid, "armor", upgrading.upValue(getItem.armor, nLevel, conf["upgrade"].armor))
            doItemSetAttribute(itemEx.uid, "hitChance", upgrading.upValue(getItem.hitChance,nLevel, conf["upgrade"].hitChance))
            doRemoveItem(item.uid, 1)
        else
            doPlayerSendTextMessage(cid, 19, "Sorry this item is on max level.")
        end
    else
        doPlayerSendTextMessage(cid, 19, "You cannot upgrade this item.")
    end
end

the second (I modified):
PHP:
local conf = {}
 
conf["level"] = {
-- [item_level] = {successParcent=PARCENT FOR UPGRADING SUCCESS, downrageLevel = IF UPGRADING FAIL - ITEM WAS DECRASED TO LEVEL HERE}
[1] = {successParcent = 80, downrageLevel = 0},
[2] = {successParcent = 80, downrageLevel = 1},
[3] = {successParcent = 80, downrageLevel = 2},
[4] = {successParcent = 80, downrageLevel = 3},
[5] = {successParcent = 80, downrageLevel = 4},
[6] = {successParcent = 80, downrageLevel = 5},
[7] = {successParcent = 80, downrageLevel = 0},
[8] = {successParcent = 80, downrageLevel = 0},
[9] = {successParcent = 80, downrageLevel = 0},
[10] = {successParcent = 80, downrageLevel = 0}
}
conf["upgrade"] = { -- how many parcent attributes are rised?
attack = 1, -- attack %
extraAttack = 1, -- extra Attack %
defense = 1, -- defence %
extraDefense = 1, -- extra defence %
armor = 1, -- armor %
hitChance = 1, -- hit chance %
}
 
-- // do not touch // -- 
-- Upgrading system v.3.1 by Azi [Ersiu] --
local upgrading = {
    upValue = function (value, level, parcent)
    if(not(value>0))then return 0 end 
        for i=1,level do
            value = math.ceil(((value/100)*parcent)+value)
        end
    return (value > 0) and value or 0
    end,
 
    getLevel = function (item)
    local name = string.explode(getItemName(item), '+')
        return (#name == 1) and 0 or math.abs(name[2])
    end,
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local getItem = getItemInfo(itemEx.itemid)
    if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
        local level = upgrading.getLevel(itemEx.uid)
        if(level < #conf["level"])then
            local nLevel = (conf["level"][level+1].successParcent >= math.random(1,100)) and (level+1) or (level>0 and conf["level"][level].downrageLevel or 0)
            if(nLevel > level)then
                doSendMagicEffect(toPosition, 30)
                doPlayerSendTextMessage(cid, 22, "Congratulations! Upgraded was successful, your item has become stronger!")
                if nLevel >= 3 then
                    doBroadcastMessage("Combination with success: " .. getCreatureName(cid) .. " combined " .. getItem.name .. " +" .. nLevel .. "!", MESSAGE_STATUS_WARNING)
                end
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 22, "Argh! Upgrading fail... you item lost some of strong!")
            end
            doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and " +"..nLevel or "")) 
            doItemSetAttribute(itemEx.uid, "attack", upgrading.upValue(getItem.attack, nLevel, conf["upgrade"].attack))
            doItemSetAttribute(itemEx.uid, "extraattack", upgrading.upValue(getItem.extraAttack, nLevel, conf["upgrade"].extraAttack))
            doItemSetAttribute(itemEx.uid, "defense", upgrading.upValue(getItem.defense,nLevel, conf["upgrade"].defense))
            doItemSetAttribute(itemEx.uid, "extradefense", upgrading.upValue(getItem.extraDefense, nLevel, conf["upgrade"].extraDefense))
            doItemSetAttribute(itemEx.uid, "armor", upgrading.upValue(getItem.armor, nLevel, conf["upgrade"].armor))
            doItemSetAttribute(itemEx.uid, "hitChance", upgrading.upValue(getItem.hitChance,nLevel, conf["upgrade"].hitChance))
            doRemoveItem(item.uid, 1)
        else
            doPlayerSendTextMessage(cid, 19, "Sorry this item is on max level.")
        end
    else
        doPlayerSendTextMessage(cid, 19, "You cannot upgrade this item.")
    end
end

what's happening this time?
 

Attachments

Last edited:
Small mistakes

this line
Lua:
doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and " +"..nLevel or ""))
should be
Lua:
doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and "+"..nLevel or ""))
fixed script below
Lua:
local conf = {}
 
conf["level"] = {
-- [item_level] = {successParcent=PARCENT FOR UPGRADING SUCCESS, downrageLevel = IF UPGRADING FAIL - ITEM WAS DECRASED TO LEVEL HERE}
[1] = {successParcent = 80, downrageLevel = 0},
[2] = {successParcent = 80, downrageLevel = 1},
[3] = {successParcent = 80, downrageLevel = 2},
[4] = {successParcent = 80, downrageLevel = 3},
[5] = {successParcent = 80, downrageLevel = 4},
[6] = {successParcent = 80, downrageLevel = 5},
[7] = {successParcent = 80, downrageLevel = 0},
[8] = {successParcent = 80, downrageLevel = 0},
[9] = {successParcent = 80, downrageLevel = 0},
[10] = {successParcent = 80, downrageLevel = 0},
}
conf["upgrade"] = { -- how many parcent attributes are rised?
attack = 1, -- attack %
extraAttack = 1, -- extra Attack %
defense = 1, -- defence %
extraDefense = 1, -- extra defence %
armor = 1, -- armor %
hitChance = 1, -- hit chance %
}
 
-- // do not touch // -- 
-- Upgrading system v.3.1 by Azi [Ersiu] --
local upgrading = {
    upValue = function (value, level, parcent)
    if(not(value>0))then return 0 end 
        for i=1,level do
            value = math.ceil(((value/100)*parcent)+value)
        end
    return (value > 0) and value or 0
    end,
 
    getLevel = function (item)
    local name = string.explode(getItemName(item), '+')
        return (#name == 1) and 0 or math.abs(name[2])
    end,
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
    local getItem = getItemInfo(itemEx.itemid)
    if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
        local level = upgrading.getLevel(itemEx.uid)
        if(level < #conf["level"])then
            local nLevel = (conf["level"][level+1].successParcent >= math.random(1,100)) and (level+1) or (level>0 and conf["level"][level].downrageLevel or 0)
            if(nLevel > level)then
                doSendMagicEffect(toPosition, 30)
                doPlayerSendTextMessage(cid, 22, "Congratulations! Upgraded was successful, your item has become stronger!")
                if nLevel >= 3 then
                    doBroadcastMessage("Combination with success: " .. getCreatureName(cid) .. " combined " .. getItem.name .. " +" .. nLevel .. "!", MESSAGE_STATUS_WARNING)
                end
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 22, "Argh! Upgrading fail... you item lost some of strong!")
            end
            doItemSetAttribute(itemEx.uid, "name", getItem.name..((nLevel>0) and "+"..nLevel or "")) 
            doItemSetAttribute(itemEx.uid, "attack", upgrading.upValue(getItem.attack, nLevel, conf["upgrade"].attack))
            doItemSetAttribute(itemEx.uid, "extraattack", upgrading.upValue(getItem.extraAttack, nLevel, conf["upgrade"].extraAttack))
            doItemSetAttribute(itemEx.uid, "defense", upgrading.upValue(getItem.defense,nLevel, conf["upgrade"].defense))
            doItemSetAttribute(itemEx.uid, "extradefense", upgrading.upValue(getItem.extraDefense, nLevel, conf["upgrade"].extraDefense))
            doItemSetAttribute(itemEx.uid, "armor", upgrading.upValue(getItem.armor, nLevel, conf["upgrade"].armor))
            doItemSetAttribute(itemEx.uid, "hitChance", upgrading.upValue(getItem.hitChance,nLevel, conf["upgrade"].hitChance))
            doRemoveItem(item.uid, 1)
        else
            doPlayerSendTextMessage(cid, 19, "Sorry this item is on max level.")
        end
    else
        doPlayerSendTextMessage(cid, 19, "You cannot upgrade this item.")
    end
end
 
Back
Top