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

RevScripts Refin System

jel

Member
Joined
Mar 22, 2014
Messages
302
Reaction score
12
hello, how can I put for each level the player needs 10 gold token

distro canary

Lua:
local conf = {
    ["level"] = {
        -- [item_level] = {successPercent= CHANCE TO UPGRADE ITEM, downgradeLevel = ITEM GETS THIS LEVEL IF UPGRADE FAILS}
        [1] = {successPercent = 100, downgradeLevel = 1},
        [2] = {successPercent = 98, downgradeLevel = 1},
        [3] = {successPercent = 96, downgradeLevel = 2},
        [4] = {successPercent = 94, downgradeLevel = 3},
        [5] = {successPercent = 92, downgradeLevel = 4},
        [6] = {successPercent = 90, downgradeLevel = 5},
        [7] = {successPercent = 88, downgradeLevel = 6},
        [8] = {successPercent = 86, downgradeLevel = 7},
        [9] = {successPercent = 84, downgradeLevel = 8},
        [10] = {successPercent = 82, downgradeLevel = 9},
        [11] = {successPercent = 80, downgradeLevel = 10},
        [12] = {successPercent = 78, downgradeLevel = 10},
        [13] = {successPercent = 76, downgradeLevel = 11},
        [14] = {successPercent = 74, downgradeLevel = 12},
        [15] = {successPercent = 72, downgradeLevel = 14},
        [16] = {successPercent = 70, downgradeLevel = 13},
        [17] = {successPercent = 68, downgradeLevel = 15},
        [18] = {successPercent = 66, downgradeLevel = 16},
        [19] = {successPercent = 64, downgradeLevel = 17},
        [20] = {successPercent = 62, downgradeLevel = 20},
        [21] = {successPercent = 60, downgradeLevel = 20},
        [22] = {successPercent = 58, downgradeLevel = 21},
        [23] = {successPercent = 56, downgradeLevel = 22},
        [24] = {successPercent = 54, downgradeLevel = 23},
        [25] = {successPercent = 52, downgradeLevel = 24},
        [26] = {successPercent = 50, downgradeLevel = 25},
        [27] = {successPercent = 48, downgradeLevel = 26},
        [28] = {successPercent = 46, downgradeLevel = 26},
        [29] = {successPercent = 45, downgradeLevel = 28},
        [30] = {successPercent = 45, downgradeLevel = 30},
        [31] = {successPercent = 45, downgradeLevel = 30},
        [32] = {successPercent = 45, downgradeLevel = 31},
        [33] = {successPercent = 45, downgradeLevel = 31},
        [34] = {successPercent = 45, downgradeLevel = 32},
        [35] = {successPercent = 45, downgradeLevel = 35},
        [36] = {successPercent = 45, downgradeLevel = 34},
        [37] = {successPercent = 45, downgradeLevel = 35},
        [38] = {successPercent = 45, downgradeLevel = 35},
        [39] = {successPercent = 45, downgradeLevel = 36},
        [40] = {successPercent = 45, downgradeLevel = 40},
        [41] = {successPercent = 33, downgradeLevel = 38},
        [42] = {successPercent = 32, downgradeLevel = 39},
        [43] = {successPercent = 31, downgradeLevel = 40},
        [44] = {successPercent = 30, downgradeLevel = 41},
        [45] = {successPercent = 25, downgradeLevel = 45},
        [46] = {successPercent = 24, downgradeLevel = 45},
        [47] = {successPercent = 22, downgradeLevel = 45},
        [48] = {successPercent = 20, downgradeLevel = 45},
        [49] = {successPercent = 15, downgradeLevel = 46},
        [50] = {successPercent = 5, downgradeLevel = 45}
    },

    ["upgrade"] = { -- how many percent attributes are rised?
        attack = 1, -- attack %
        defense = 1, -- defense %
        extraDefense = 1, -- extra defense %
        armor = 1, -- armor %
        hitChance = 1, -- hit chance %
    }
}

local upgraded = Action()



-- // do not touch // --
-- Upgrading system by Azi [Ersiu] --
-- Edited for TFS 1.1 by Zbizu --

local upgrading = {
  upValue = function (value, level, percent)
  if value < 0 then return 0 end
     if level == 0 then return value end
     local nVal = value
     for i = 1, level do
       nVal = nVal + (math.ceil((nVal/100*percent)))
     end
  return nVal > 0 and nVal or value
  end,

  getLevel = function (item)
  local name = Item(item):getName():split('+')
     if (#name == 1) then
       return 0
     end

     return math.abs(name[2])
  end,
}

function upgraded.onUse(player, item, fromPosition, target, toPosition, isHotkey)
    cid = player:getId()
    itemEx = target
    
    if isCreature(itemEx.uid) == TRUE then
            return FALSE
         end

    local it = ItemType(itemEx.itemid)

if((it:getWeaponType() > 0 or getItemAttribute(itemEx.uid, ITEM_ATTRIBUTE_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)].successPercent >= math.random(1,100)) and (level+1) or conf["level"][level].downgradeLevel
      if(nLevel > level)then
        doSendMagicEffect(toPosition, CONST_ME_MAGIC_GREEN)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Upgrade to level " .. nLevel .. " successful!")
      else
        doSendMagicEffect(toPosition, CONST_ME_BLOCKHIT)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Upgrade failed. Your " .. it:getName() .. " is now on level " .. nLevel .. "")
      end
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_NAME, it:getName()..((nLevel>0) and "+"..nLevel or ""))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_ATTACK,  upgrading.upValue(it:getAttack(), nLevel, conf["upgrade"].attack))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_DEFENSE, upgrading.upValue(it:getDefense(), nLevel, conf["upgrade"].defense))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_EXTRADEFENSE, upgrading.upValue(it:getExtraDefense(), nLevel, conf["upgrade"].extraDefense))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_ARMOR, upgrading.upValue(it:getArmor(), nLevel, conf["upgrade"].armor))
      doItemSetAttribute(itemEx.uid, ITEM_ATTRIBUTE_HITCHANCE, upgrading.upValue(it:getHitChance(), nLevel, conf["upgrade"].hitChance))
      doRemoveItem(item.uid, 1)
    else
      doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your " .. it:getName() .. " is on max level alredy.")
    end
  else
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You cannot upgrade this item.")
  end
end

upgraded:id(20138)
upgraded:register()
 
You can implement this code in your code.

Lua:
local conf = {

    ["tokensPerLevel"] = 10,

    ["level"] = {

        -- [item_level] = {successPercent= CHANCE TO UPGRADE ITEM, downgradeLevel = ITEM GETS THIS LEVEL IF UPGRADE FAILS}

        [1] = {successPercent = 100, downgradeLevel = 1},

        [2] = {successPercent = 98, downgradeLevel = 1},

        [3] = {successPercent = 96, downgradeLevel = 2},

        -- all the code here

    },



    ["upgrade"] = { -- how many percent attributes are rised?

        attack = 1, -- attack %

        defense = 1, -- defense %

        extraDefense = 1, -- extra defense %

        armor = 1, -- armor %

        hitChance = 1, -- hit chance %

    }

}



local tokensPerLevel = conf["tokensPerLevel"] or 10

local totalTokens = tokensPerLevel * level
 
Back
Top