• 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!
  • 2026 staff recruitment is open! Check it out and consider applying!

Upgrade system pomoc

TiMan

New Member
Joined
Dec 31, 2010
Messages
14
Reaction score
0
Witam!
Chodzi o to jak zrobić, żeby tym skryptem dało się ulepasz stary ,speary i itd, oraz ,żeby było coś takiego notallowed czyli wpisać id itemku i się go nieda ulepszyć
Code:
local conf = {}

conf["level"] = {
-- [item_level] = {successParcent=PARCENT FOR UPGRADING SUCCESS, downrageLevel = IF UPGRADING FAIL - ITEM WAS DECRASED TO LEVEL HERE}
 [1] = {successParcent = 90, downrageLevel = 0},
 [2] = {successParcent = 80, downrageLevel = 1},
 [3] = {successParcent = 70, downrageLevel = 2},
 [4] = {successParcent = 60, downrageLevel = 3},
 [5] = {successParcent = 50, downrageLevel = 4},
 [6] = {successParcent = 40, downrageLevel = 5},
 [7] = {successParcent = 30, downrageLevel = 6},
 [8] = {successParcent = 20, downrageLevel = 7},
 [9] = {successParcent = 10, downrageLevel = 8}
}
conf["upgrade"] = { -- how many parcent attributes are rised?
    attack = 30, -- attack %
    extraAttack = 0, -- extra Attack %
    defense = 30, -- defence %
    extraDefense = 0, -- extra defence %
    armor = 30, -- armor %
    hitChance = 0, -- 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, 12)
                doPlayerSendTextMessage(cid, 22, "")
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 2, "")
            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
 
Spróbuj:
PHP:
local conf = {}

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

notAllowed = {2160 --[[tutaj te ID, które nie da rady ulepszyć]]}

-- // 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 (isInArray(notAllowed, itemEx.itemid)) then
        return doPlayerSendTextMessage(cid, 19, "Sorry, but this type of items is not allowed.")
    end
    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, 12)
                doPlayerSendTextMessage(cid, 22, "")
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 2, "")
            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
 
Eh, sprawdź jeszcze tak bo nie jestem pewny, czy isInArray zwraca wartość true/false czy liczbową
PHP:
local conf = {}

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

notAllowed = {2160 --[[tutaj te ID, które nie da rady ulepszyć]]}

-- // 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 (isInArray(notAllowed, itemEx.itemid) == TRUE) then
        return doPlayerSendTextMessage(cid, 19, "Sorry, but this type of items is not allowed.")
    end
    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, 12)
                doPlayerSendTextMessage(cid, 22, "")
            else
                doSendMagicEffect(toPosition, 2)
                doPlayerSendTextMessage(cid, 2, "")
            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
 
może napisz do autora, a nie bezmyślnie zaśmiecasz forum?

#down
bo łatwiej zrobić temat może ktoś pomoże, zamiast zapytać autora, lub spróbować samemu.
dla twojej wiadomości itemy, które się łączą po rozłączeniu/połączeniu spowrotem przybierają normalne wartości.
a śledząc temat autora znajdziesz odpowiedź na "noAllowed" bo w poprzedniej wersji była ta funkcja, więc bez problemu byś mógł ją skopiować.
 
Last edited:
Tzn twoje działa na to ,że nie da się ulepszyć itema o danym id, ale co z tym żeby się dało ulepszać stary i itd?
 
Pogłówkuj troszeczkę - powiem ci tylko to, że ta linijka blokuje większość możliwości:
PHP:
if((getItem.weaponType > 0 or getItem.armor > 0) and not isItemStackable(itemEx.itemid))then
Stars, Spears to przedmioty, które się łącza w grupy (chodzi mi tutaj o stack), a w tym warunku automatycznie blokuje takie przedmiotu. Do tego stoi przeszkoda w pierwszej części warunku getItem.weaponType (które pozwala wyłącznie na bronie - a nie jestem pewny czy w/w przedmioty to tej grupy należą).
 
a masz zamiar kamienie upgradujące wrzucić do SMS Shopu? bo jeżeli tak - to przeczytaj górną część tematu : )
 
Back
Top