Ir para conteúdo

Featured Replies

Postado

Fala galera do Tk 

Tenho um syste,ma de Upgrade System Quase perfeito 

So tem um Bug

Todas as armas refinao normal

ate +10

porem a de pally refina +1+2 +3 ate +10 tbm mas nao add mais ataques nas armas 

minha sword é Sword (Atk:2485 physical + 15 fire, Def:40, sword fighting +10).

quando refino fica

Sword +1 (Atk:2490 physical + 15 fire, Def:45, sword fighting +10).

 

ae vem as armas de pally onde esta o bug

a normal é

Bow (Atk:3000).

e quando refica so aparece o +1 mas nao almenta o dano igual as sword

olha

Bow +1 (Atk:3000).

tem como arrumar pra minn

 

segue o script

 


--- Email: <a href="mailto:mock_otnet@hotmail.com">mock_otnet@hotmail.com</a>
-- &a = weapon attack
-- &d = weapon defense
-- &s = shield defense
-- &p = armor defense
-- # = nivel do item
-- @ = max level
local gain = {
gainArmor='&p+(5)',loseArmor='&p-(3)',
gainShield='&s+#',loseShield='&s-(#+3)',
gainAttack='&a+(5*(#))',loseAttack='&a-(3*(#+3))',
gainDefense='&d+(5*(#))',loseDefense='&d-(3*(#+3))',
chance='(100/math.sqrt((((@/4)+(#*2))/@)*#))',
maxlvl = 10,
blocked_ids = {8881}
}
local it = {
--[itemid] = [percent]
[8306] = 7, -- 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.
    local f = getItemInfo(uid.itemid)
    if f.armor ~= 0 and f.wieldPosition ~= CONST_SLOT_NECKLACE then
        return true
    end
    return false
end
local function isWeapon(uid) -- Function by Mock the bear.
    uid = uid or 0
    local f = getItemInfo(uid.itemid)
    if table.find({WEAPON_SWORD, WEAPON_CLUB, WEAPON_AXE}, f.weaponType) then
        return true
    end
    return false
end
local function isShield(uid) -- Function by Mock the bear.
    uid = uid or 0
    local f = getItemInfo(uid.itemid)
    if f.defense ~= 0 and f.weaponType == WEAPON_SHIELD then
        return true
    end
    return false
end
local function isBow(uid) -- Function by Mock the bear.
    local f = getItemInfo(uid.itemid)
    if f.weaponType == WEAPON_DIST and f.ammoType ~= 0 then
        return true
    end
    return false
end
local function isBow2(uid) -- Function by Mock the bear.
    local f = getItemInfo(uid.itemid)
    if f.weaponType == WEAPON_DIST and f.ammoType ~= 0 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,"Voce nao consegue trabalhar neste item.")
                return TRUE
         end
         if isCreature(itemEx.uid) == TRUE then
            return FALSE
         end
        local level = getWeaponLevel(itemEx)
        local chance = doTransform(gain.chance,itemEx)
        local nm = getItemName(itemEx.uid)
        if level == gain.maxlvl then
            doSendMagicEffect(toPosition, 2)
            return doPlayerSendTextMessage(cid, 24,"Voce nao pode mais refinar este objeto, ele ja atingiu o seu maximo!")
        end
        doPlayerSendTextMessage(cid, 24,"Voce tenta refinar um(a) "..nm.." com "..(chance+it[item.itemid] > 100 and 100 or chance+it[item.itemid]).."% de chance de sucesso. ")
        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
            if level==0 then
                setItemName(itemEx.uid, nm..' +'..(level+1)..slot)
            elseif level<=9 then
                setItemName(itemEx.uid, string.match(string.match(string.sub(nm, 1, -3), "%S.*"), ".*%S")..' +'..(level+1)..slot)
            else
                setItemName(itemEx.uid, string.match(string.match(string.sub(nm, 1, -4), "%S.*"), ".*%S")..' +'..(level+1)..slot)
            end
            addEvent(doPlayerSendTextMessage,500,cid, 24,"Voce refina com sucesso o objeto e ele avanca para o nivel "..(level+1)..slot..".")
            doSendMagicEffect(toPosition, 12)
            if isArmor(itemEx) then
                local get = doTransform(gain.gainArmor,itemEx)
                setItemArmor(itemEx.uid,get)
            elseif isBow(itemEx) then
                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
            elseif isWeapon(itemEx) then
                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
                setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx))
            elseif isShield(itemEx) then
                setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx))
            end
        else
            -- Give it a second chance, if it success, the item stays the same level.
            if chance+it[item.itemid] >= math.random(0,100) then
                addEvent(doPlayerSendTextMessage,500,cid, 24,"O refinamento falha mas seu objeto mantem-se no meso nivel.")
            else
                --if not, we'll give it a 15% change to get destroyed.
                if math.random(0,100) <= 15 then
                    -- And only if the level is above 7.
                    if level > 7 then
                        addEvent(doPlayerSendTextMessage,500,cid, 24,"O objeto nao aguentou a carga do refinamento e acabou sendo destruido no processo.")
                        doRemoveItem(itemEx.uid,1)
                        -- You can set a custom animation for the destruction of the item here if you want. Just change the number to other animation
                        doSendMagicEffect(toPosition, 9)
                    else
                        addEvent(doPlayerSendTextMessage,500,cid, 24,"O refinamento falha mas seu objeto mantem-se no meso nivel.")
                    end
                else
                    if level == 0 then
                        addEvent(doPlayerSendTextMessage,500,cid, 24,"Não surte efeito.")
                        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,"Seu objeto voltou ao normal.")
                        else
                            setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1)..slot)
                            addEvent(doPlayerSendTextMessage,500,cid, 24,"O refinamento falha e seu objeto volta para o nivel "..(level-1)..slot..".")
                        end
                        if isArmor(itemEx) then
                            setItemArmor(itemEx.uid,doTransform(gain.loseArmor  ,itemEx))
                        elseif isWeapon(itemEx) then
                            setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                            setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx))
                        elseif isBow(itemEx) then
                            setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                        elseif isShield(itemEx) then
                            setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx))
                        end
                    end
                    doSendMagicEffect(toPosition, 9)
                end
            end
        end
    doRemoveItem(item.uid,1)
    return true
end

 

 

+Rep ajuem aeee

 

 

  • Respostas 9
  • Visualizações 704
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @mullino   Essa é a linha 177, se você colocou pelo blocos de notas, ta vendo que o começo da frase ta menor ?  se você salvar desse jeito, e depois abrir o arquivo vai ter um "?" ponto

  • Até li o código e não consegui identificar o problema. Mas vai uma dica pra vc: Quando for postar códigos, use a função 'Código' do fórum para facilitar a vida de quem for te ajudar! Assim \/

  • Tenta assim então:   --- Email: <a href="mailto:mock_otnet@hotmail.com">mock_otnet@hotmail.com</a> -- &a = weapon attack -- &d = weapon defense -- &s = shield defense --

Posted Images

Postado

Até li o código e não consegui identificar o problema.
Mas vai uma dica pra vc: Quando for postar códigos, use a função 'Código' do fórum para facilitar a vida de quem for te ajudar!

Assim \/

Mostrar conteúdo oculto

Na verdade relendo o código agora me ocorreu algo...
tente usar esse código pra ver se funciona:
 

--- Email: <a href="mailto:mock_otnet@hotmail.com">mock_otnet@hotmail.com</a>
-- &a = weapon attack
-- &d = weapon defense
-- &s = shield defense
-- &p = armor defense
-- # = nivel do item
-- @ = max level
local gain = {
gainArmor='&p+(5)',loseArmor='&p-(3)',
gainShield='&s+#',loseShield='&s-(#+3)',
gainAttack='&a+(5*(#))',loseAttack='&a-(3*(#+3))',
gainDefense='&d+(5*(#))',loseDefense='&d-(3*(#+3))',
chance='(100/math.sqrt((((@/4)+(#*2))/@)*#))',
maxlvl = 10,
blocked_ids = {8881}
}
local it = {
--[itemid] = [percent]
[8306] = 7, -- 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.
    local f = getItemInfo(uid.itemid)
    if f.armor ~= 0 and f.wieldPosition ~= CONST_SLOT_NECKLACE then
        return true
    end
    return false
end
local function isWeapon(uid) -- Function by Mock the bear.
    uid = uid or 0
    local f = getItemInfo(uid.itemid)
    if table.find({WEAPON_SWORD, WEAPON_CLUB, WEAPON_AXE}, f.weaponType) then
        return true
    end
    return false
end
local function isShield(uid) -- Function by Mock the bear.
    uid = uid or 0
    local f = getItemInfo(uid.itemid)
    if f.defense ~= 0 and f.weaponType == WEAPON_SHIELD then
        return true
    end
    return false
end
local function isBow(uid) -- Function by Mock the bear.
    local f = getItemInfo(uid.itemid)
    if f.weaponType == WEAPON_DIST and f.ammoType ~= 0 then
        return true
    end
    return false
end
local function isBow2(uid) -- Function by Mock the bear.
    local f = getItemInfo(uid.itemid)
    if f.weaponType == WEAPON_DIST and f.ammoType ~= 0 then
        return false
    end
    return true
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,"Voce nao consegue trabalhar neste item.")
                return TRUE
         end
         if isCreature(itemEx.uid) == TRUE then
            return FALSE
         end
        local level = getWeaponLevel(itemEx)
        local chance = doTransform(gain.chance,itemEx)
        local nm = getItemName(itemEx.uid)
        if level == gain.maxlvl then
            doSendMagicEffect(toPosition, 2)
            return doPlayerSendTextMessage(cid, 24,"Voce nao pode mais refinar este objeto, ele ja atingiu o seu maximo!")
        end
        doPlayerSendTextMessage(cid, 24,"Voce tenta refinar um(a) "..nm.." com "..(chance+it[item.itemid] > 100 and 100 or chance+it[item.itemid]).."% de chance de sucesso. ")
        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
            if level==0 then
                setItemName(itemEx.uid, nm..' +'..(level+1)..slot)
            elseif level<=9 then
                setItemName(itemEx.uid, string.match(string.match(string.sub(nm, 1, -3), "%S.*"), ".*%S")..' +'..(level+1)..slot)
            else
                setItemName(itemEx.uid, string.match(string.match(string.sub(nm, 1, -4), "%S.*"), ".*%S")..' +'..(level+1)..slot)
            end
            addEvent(doPlayerSendTextMessage,500,cid, 24,"Voce refina com sucesso o objeto e ele avanca para o nivel "..(level+1)..slot..".")
            doSendMagicEffect(toPosition, 12)
            if isArmor(itemEx) then
                local get = doTransform(gain.gainArmor,itemEx)
                setItemArmor(itemEx.uid,get)
            elseif isBow(itemEx) then
                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
            elseif isWeapon(itemEx) then
                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
                setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx))
            elseif isShield(itemEx) then
                setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx))
            end
        else
            -- Give it a second chance, if it success, the item stays the same level.
            if chance+it[item.itemid] >= math.random(0,100) then
                addEvent(doPlayerSendTextMessage,500,cid, 24,"O refinamento falha mas seu objeto mantem-se no meso nivel.")
            else
                --if not, we'll give it a 15% change to get destroyed.
                if math.random(0,100) <= 15 then
                    -- And only if the level is above 7.
                    if level > 7 then
                        addEvent(doPlayerSendTextMessage,500,cid, 24,"O objeto nao aguentou a carga do refinamento e acabou sendo destruido no processo.")
                        doRemoveItem(itemEx.uid,1)
                        -- You can set a custom animation for the destruction of the item here if you want. Just change the number to other animation
                        doSendMagicEffect(toPosition, 9)
                    else
                        addEvent(doPlayerSendTextMessage,500,cid, 24,"O refinamento falha mas seu objeto mantem-se no meso nivel.")
                    end
                else
                    if level == 0 then
                        addEvent(doPlayerSendTextMessage,500,cid, 24,"Não surte efeito.")
                        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,"Seu objeto voltou ao normal.")
                        else
                            setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1)..slot)
                            addEvent(doPlayerSendTextMessage,500,cid, 24,"O refinamento falha e seu objeto volta para o nivel "..(level-1)..slot..".")
                        end
                        if isArmor(itemEx) then
                            setItemArmor(itemEx.uid,doTransform(gain.loseArmor  ,itemEx))
                        elseif isWeapon(itemEx) then
                            setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                            setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx))
                        elseif isBow(itemEx) then
                            setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                        elseif isShield(itemEx) then
                            setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx))
                        end
                    end
                    doSendMagicEffect(toPosition, 9)
                end
            end
        end
    doRemoveItem(item.uid,1)
    return true
end

 

Editado por luangop (veja o histórico de edições)

Postado
  • Autor
  Em 13/05/2018 em 01:47, luangop disse:

Até li o código e não consegui identificar o problema.
Mas vai uma dica pra vc: Quando for postar códigos, use a função 'Código' do fórum para facilitar a vida de quem for te ajudar!

Assim \/

Mostrar conteúdo oculto

Na verdade relendo o código agora me ocorreu algo...
tente usar esse código pra ver se funciona:
 


--- Email: <a href="mailto:mock_otnet@hotmail.com">mock_otnet@hotmail.com</a>
-- &a = weapon attack
-- &d = weapon defense
-- &s = shield defense
-- &p = armor defense
-- # = nivel do item
-- @ = max level
local gain = {
gainArmor='&p+(5)',loseArmor='&p-(3)',
gainShield='&s+#',loseShield='&s-(#+3)',
gainAttack='&a+(5*(#))',loseAttack='&a-(3*(#+3))',
gainDefense='&d+(5*(#))',loseDefense='&d-(3*(#+3))',
chance='(100/math.sqrt((((@/4)+(#*2))/@)*#))',
maxlvl = 10,
blocked_ids = {8881}
}
local it = {
--[itemid] = [percent]
[8306] = 7, -- 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.
    local f = getItemInfo(uid.itemid)
    if f.armor ~= 0 and f.wieldPosition ~= CONST_SLOT_NECKLACE then
        return true
    end
    return false
end
local function isWeapon(uid) -- Function by Mock the bear.
    uid = uid or 0
    local f = getItemInfo(uid.itemid)
    if table.find({WEAPON_SWORD, WEAPON_CLUB, WEAPON_AXE}, f.weaponType) then
        return true
    end
    return false
end
local function isShield(uid) -- Function by Mock the bear.
    uid = uid or 0
    local f = getItemInfo(uid.itemid)
    if f.defense ~= 0 and f.weaponType == WEAPON_SHIELD then
        return true
    end
    return false
end
local function isBow(uid) -- Function by Mock the bear.
    local f = getItemInfo(uid.itemid)
    if f.weaponType == WEAPON_DIST and f.ammoType ~= 0 then
        return true
    end
    return false
end
local function isBow2(uid) -- Function by Mock the bear.
    local f = getItemInfo(uid.itemid)
    if f.weaponType == WEAPON_DIST and f.ammoType ~= 0 then
        return false
    end
    return true
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,"Voce nao consegue trabalhar neste item.")
                return TRUE
         end
         if isCreature(itemEx.uid) == TRUE then
            return FALSE
         end
        local level = getWeaponLevel(itemEx)
        local chance = doTransform(gain.chance,itemEx)
        local nm = getItemName(itemEx.uid)
        if level == gain.maxlvl then
            doSendMagicEffect(toPosition, 2)
            return doPlayerSendTextMessage(cid, 24,"Voce nao pode mais refinar este objeto, ele ja atingiu o seu maximo!")
        end
        doPlayerSendTextMessage(cid, 24,"Voce tenta refinar um(a) "..nm.." com "..(chance+it[item.itemid] > 100 and 100 or chance+it[item.itemid]).."% de chance de sucesso. ")
        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
            if level==0 then
                setItemName(itemEx.uid, nm..' +'..(level+1)..slot)
            elseif level<=9 then
                setItemName(itemEx.uid, string.match(string.match(string.sub(nm, 1, -3), "%S.*"), ".*%S")..' +'..(level+1)..slot)
            else
                setItemName(itemEx.uid, string.match(string.match(string.sub(nm, 1, -4), "%S.*"), ".*%S")..' +'..(level+1)..slot)
            end
            addEvent(doPlayerSendTextMessage,500,cid, 24,"Voce refina com sucesso o objeto e ele avanca para o nivel "..(level+1)..slot..".")
            doSendMagicEffect(toPosition, 12)
            if isArmor(itemEx) then
                local get = doTransform(gain.gainArmor,itemEx)
                setItemArmor(itemEx.uid,get)
            elseif isBow(itemEx) then
                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
            elseif isWeapon(itemEx) then
                setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))
                setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx))
            elseif isShield(itemEx) then
                setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx))
            end
        else
            -- Give it a second chance, if it success, the item stays the same level.
            if chance+it[item.itemid] >= math.random(0,100) then
                addEvent(doPlayerSendTextMessage,500,cid, 24,"O refinamento falha mas seu objeto mantem-se no meso nivel.")
            else
                --if not, we'll give it a 15% change to get destroyed.
                if math.random(0,100) <= 15 then
                    -- And only if the level is above 7.
                    if level > 7 then
                        addEvent(doPlayerSendTextMessage,500,cid, 24,"O objeto nao aguentou a carga do refinamento e acabou sendo destruido no processo.")
                        doRemoveItem(itemEx.uid,1)
                        -- You can set a custom animation for the destruction of the item here if you want. Just change the number to other animation
                        doSendMagicEffect(toPosition, 9)
                    else
                        addEvent(doPlayerSendTextMessage,500,cid, 24,"O refinamento falha mas seu objeto mantem-se no meso nivel.")
                    end
                else
                    if level == 0 then
                        addEvent(doPlayerSendTextMessage,500,cid, 24,"Não surte efeito.")
                        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,"Seu objeto voltou ao normal.")
                        else
                            setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1)..slot)
                            addEvent(doPlayerSendTextMessage,500,cid, 24,"O refinamento falha e seu objeto volta para o nivel "..(level-1)..slot..".")
                        end
                        if isArmor(itemEx) then
                            setItemArmor(itemEx.uid,doTransform(gain.loseArmor  ,itemEx))
                        elseif isWeapon(itemEx) then
                            setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                            setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx))
                        elseif isBow(itemEx) then
                            setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))
                        elseif isShield(itemEx) then
                            setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx))
                        end
                    end
                    doSendMagicEffect(toPosition, 9)
                end
            end
        end
    doRemoveItem(item.uid,1)
    return true
end

 

oi ainda nao da attacks ne armas de pally

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo