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

[TFS 1.0] Item Upgrade

medanny77

New Member
Joined
Dec 25, 2013
Messages
37
Reaction score
4
I looked around, for a while, and couldnt find a upgrade item script for TFS 1.0 if anyone can make one or has one i would be really thankfull.
 
its dont work in tfs 1??

-- Upgrading system v.3.1 by Azi [Ersiu] --

Code:
local conf = {}

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

-- // 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, "Congratz! Upgraded was successful, your item has become stronger!")
            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
 
Thank you all :). It wasnt exactly what i was looking for but i modefied it a little to get it to do what i wanted, here is the script if anyone whats it.
PHP:
local conf = {
maxSlotCount=3,
ignoredIds={}
}

function choose(...)
  local arg = {...}
  return arg[math.random(1,#arg)]
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(conf.ignoredIds, itemEx.itemid)
  or (getItemWeaponType(itemEx.uid) == 0 and not isArmor(itemEx.uid))
  or itemEx.itemid == 0 or itemEx.type > 1 or isItemStackable(itemEx.uid) then
  return false
  end 
  if isCreature(itemEx.uid) then
  return false
  end
  local nam = Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
  function getper()
    local n = 1
    for i=1,10 do
      n = n+math.random(0,10)
      if n < 8*i then
        break
      end
    end
    return n
  end

  function getSlotCount(nam)
    local c = 0
    for _ in nam:gmatch('%[(.-)%]') do
      c = c+1
    end
    return c
  end
 
  local number = math.random(0,100)
  doPlayerSendTextMessage(cid,20,number)

  if number <= 3 then
      doPlayerSendTextMessage(cid,20,"Your item broke in the proccess.")
      doRemoveItem(item.uid,1)
      doRemoveItem(itemEx.uid,1)
      return false
  end

  if number <= 60 then
      doPlayerSendTextMessage(cid,20,"Fail to gain power.")
      doRemoveItem(item.uid,1)
      return false
  end

 

  if getSlotCount(nam) < conf.maxSlotCount then
    local l = choose('hp','mp','ml','melee','shield','dist')
    local p = getper()
    doSendMagicEffect(toPosition,30)
    nam = nam..' ['..l..'.+'..p..'%]'
    doPlayerSendTextMessage(cid, 20,l..'.+'..p..'%')
    doSetItemSpecialDescription(itemEx.uid, nam)
    doRemoveItem(item.uid,1)
    return false
  else
    doPlayerSendTextMessage(cid, 20,"Slot limit reached.")
  end
  return true
end

With this script you can upgrade wands and rods too, and you have a 60% failing rate and 3% chance of breaking the item. :)
 
Back
Top