Ir para conteúdo
  • 0

Script Mook Refinamento - Ajudem


Mehahbr

Pergunta

Teria ao inves de por no nome do item +1 de refinamento, por na descricao tipo: Refinado (Arm): +1 ??

Obrigado!

 

 

  --- Perfect refine system by Mock the bear (MTB).
--- Email: [email]mock_#####@hotmail.com[/email]
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 

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

respondendo a perguta sim,claro ja fis tipo isso pra um outro cara

mais pra coloca o atributo que foi aumentado seria mais complicado

passa como voce quer que fique

 

explo: sword[refinada (atk) +1]

Link para o comentário
Compartilhar em outros sites

  • 0

tenta assim (talves de um erro no getweaponlevel, se der avisa ae )

 

 

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

--- Email: mock_#####@hotmail.com

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

if isWeapon(itemEx.uid) == TRUE then

setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' Refinado (Atk): +'..(level+1)..' /Refinado (Def): +'..(level+1))

elseif isShield(itemEx.uid) == TRUE then

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

elseif isArmor(itemEx) == TRUE then

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

end

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

if isWeapon(itemEx.uid) == TRUE then

setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' Refinado (Atk): +'..(level-1)..' /Refinado (Def): +'..(level-1))

elseif isShield(itemEx.uid) == TRUE then

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

elseif isArmor(itemEx) == TRUE then

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

end

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

 

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo eu quero ele assim:

 

 

You see a demon armor (Arm:17).
It weighs 80.00 oz.
Refinado(Arm): +1
Esse item foi obtido por [ADM] Myth.

 

e nao assim:

 

 

You see a demon armor Refinado(Arm): +1 (Arm:17).
It weighs 80.00 oz.
Esse item foi obtido por [ADM] Myth.

 

Tem como fazer?

 

terminaa ai como eu quero fzedno favor! ja dei 3 rep pra você

Link para o comentário
Compartilhar em outros sites

  • 0

eu sei mas minha net ta um lixo e n to conseguido posta,ta bugando tudo

uhsauhsahusaasuh

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

  • 0

Tipo eu quero ele assim:

 

 

You see a demon armor (Arm:17).
It weighs 80.00 oz.
Refinado(Arm): +1
Esse item foi obtido por [ADM] Myth.

 

e nao assim:

 

 

You see a demon armor Refinado(Arm): +1 (Arm:17).
It weighs 80.00 oz.
Esse item foi obtido por [ADM] Myth.

 

Tem como fazer?

 

terminaa ai como eu quero fzedno favor! ja dei 3 rep pra você

 

doItemSetAttribute(itemEx.uid, "description", 'Descrição')

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei por o Code que você me passo Beyerne e deu erro... agora toda vez que refina parece que ele ta refinando pela primeira vez --'

 

Deuu Erro

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

  • 0

a e minha net ta melhor agora(tava um lixão tive que chama assistncia tecnica aki(a antena tava desalinhada))

tenta iso

 

--- Perfect refine system by Mock the bear (MTB).
--- Email: mock_#####@hotmail.com
--- edited by lordbug
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,'description',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,and edited by lorbug
uid = uid or 0
local name = getItemDescriptions(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
if isWeapon(itemEx.uid) == TRUE then
setItemName(itemEx.uid, ' Refinado (Atk): +'..(level+1)..' /Refinado (Def): +'..(level+1))
elseif isShield(itemEx.uid) == TRUE then
setItemName(itemEx.uid, ' Refinado (Def): +'..(level+1))
elseif isArmor(itemEx) == TRUE then
setItemName(itemEx.uid, ' Refinado (Arm): +'..(level+1))
end
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
if isWeapon(itemEx.uid) == TRUE then
setItemName(itemEx.uid, ' Refinado (Atk): +'..(level-1)..' /Refinado (Def): +'..(level-1))
elseif isShield(itemEx.uid) == TRUE then
setItemName(itemEx.uid, ' Refinado (Def): +'..(level-1))
elseif isArmor(itemEx) == TRUE then
setItemName(itemEx.uid, ' Refinado (Arm): +'..(level-1))
end
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

 

--edit--

@byerne

1º so pra avisa eu ja sabia que tinha que usa "doItemSetAttribute(item, "description", 'Descrição')"

2º n é so usa o doitemsetatribute,tem que usa uma outra função,senão da a quele bug que ele falo acima

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

×
×
  • Criar Novo...