Ir para conteúdo
  • 0

(Pedido) Refine Para Itens Mágicos


madmagebr

Pergunta

Boa Tarde Pessoal.

Servidor: TFS 4.0 ( 9.1)

 

Procurei muito por isso mais não encontro.

Gostaria de um script igual um refine ( Uso o do Mock atualmente ) mas para itens mágicos.

 

Por exemplo wands, rods e spellbooks, que refinados ficariam +1 / +2 / +3... e add ML ou se possivel até aumentaria o atak da respectiva wand/rod.

Ja testei alguns refines existentes aqui e em outros foruns mas nenhum consegue fazer esse tipo de upgrade ( ou nenhum tipo em itens magicos ).

 

O OT ficou muito desequilibrado, knights e paladins conseguem dar upgrade em todos os itens ( aumentando atak e def. ) e mages apenas em alguns itens ( específicos p/ mages ) aumentando apenas def.

 

Vale um REP+ xD

 

Vlw galera. ^^

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Esse:

 

 

--- Perfect refine system by Mock the bear (MTB).

---

local gain = {

gainArmor='&p+1',loseArmor='&p-1',

gainShield='&s+#',loseShield='&s-(#+1)',

gainAttack='&a+(2*(#))',loseAttack='&a-(2*(#+1))',

gainDefense='&d+(2*(#))',loseDefense='&d-(2*(#+1))',

chance='100/((#*(1/(@/2)))*(@/2))', -- Eu fiz essa equação para variar de +0 a +7 o item

--- Essa equação deve retornar em % a chance do item se refinar (0-100) 100 = sempre, 0 = nunca

maxlvl = 7,

blocked_ids = {2488,8881}

}

-- &a = weapon attack

-- &d = weapon defense

-- &s = shield defense

-- &p = armor defense

-- # = nivel do item

-- @ = max level

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

function isArmor(uid) -- Function by Mock the bear.

if (getItemArmor(uid) and getItemArmor(uid) ~= 0 and not getItemInfo(uid.itemid,'attack') and not getItemInfo(uid.itemid,'defense') and getItemWeaponType(uid.uid) == 0) then

return true

end

return false

end

function isWeapon(uid) -- Function by Mock the bear.

uid = uid or 0

local f = getItemWeaponType(uid)

if f == 1 or f == 2 or f == 3 then

return TRUE

end

return FALSE

end

function isShield(uid) -- Function by Mock the bear.

uid = uid or 0

if getItemWeaponType(uid) == 4 then

return TRUE

end

return FALSE

end

 

function getWeaponLevel(uid) -- Function by Mock the bear.

uid = uid or 0

local name = getItemName(uid)

local lvl = string.match(name,'+(%d)')

return tonumber(lvl) or 0

end

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) or getItemInfo(i.itemid).attack)

local c = string.gsub(c,'&d',getItemDefense(i.uid) or getItemInfo(i.itemid).defense)

local c = string.gsub(c,'&s',getItemDefense(i.uid) or getItemInfo(i.itemid).defense)

local c = string.gsub(c,'&p',getItemArmor(i.uid) or getItemInfo(i.itemid).armor)

local c = string.gsub(c,'#',getWeaponLevel(i.uid))

local q,err = loadstring('return '..c)

assert(q,err)

return assert(q())

end

function onUse(cid, item, fromPosition, itemEx, toPosition)

toPosition.stackpos = 255

if isInArray(gain.blocked_ids, itemEx.itemid) == TRUE

or getItemWeaponType(itemEx.uid) > 4

or (getItemWeaponType(itemEx.uid) == 0

and isArmor(itemEx) == FALSE)

or itemEx.itemid == 0 then

doPlayerSendTextMessage(cid, 24,"You cant refine this item.")

return TRUE

end

if isCreature(itemEx.uid) == TRUE then

return FALSE

end

local level = getWeaponLevel(itemEx.uid)

local chance = doTransform(gain.chance,itemEx)

if chance >= math.random(0,100) or item.actionid >= 1000 or (item.actionid == 500 and math.random(0,100) <= 25) then

if level+1 > gain.maxlvl then

doSendMagicEffect(toPosition, 2)

return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.")

else

setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level+1))

doPlayerSendTextMessage(cid, 24,"Your item has been upgrated to +"..(level+1)..".")

doSendMagicEffect(toPosition, 12)

if isArmor(itemEx) == TRUE then

local get = doTransform(gain.gainArmor,itemEx)

setItemArmor(itemEx.uid,get)

elseif isWeapon(itemEx.uid) == TRUE then

setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx))

setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx))

elseif isShield(itemEx.uid) == TRUE then

setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx))

end

end

else

 

if level == 0 then

doPlayerSendTextMessage(cid, 24,"No effect.")

doSendMagicEffect(toPosition, 2)

elseif level == gain.maxlvl then

doSendMagicEffect(toPosition, 2)

return doPlayerSendTextMessage(cid, 24,"Your item is on max level, you can't upgrade it.")

elseif level > 0 then

if level == 1 then

setItemName(itemEx.uid, getItemNameById(itemEx.itemid))

doPlayerSendTextMessage(cid, 24,"Your item back to normal.")

else

setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1))

doPlayerSendTextMessage(cid, 24,"Your item back to +"..(level-1)..".")

end

if isArmor(itemEx) == TRUE then

setItemArmor(itemEx.uid,doTransform(gain.loseArmor ,itemEx))

elseif isWeapon(itemEx.uid) == TRUE then

setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx))

setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx))

elseif isShield(itemEx.uid) == TRUE then

setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx))

end

end

doSendMagicEffect(toPosition, 9)

end

doRemoveItem(item.uid,1)

return TRUE

end

 

Os itens para Paladin ( bow, cross, etc.. ) não estão dando refine também, mas coloquei algumas magias para balancear.

E outra coisa Vilden, o shield com refine recebe atak ao invés de def., se conseguir me ajudar nisso tbm agradeço ^^

Editado por MadMage
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...