Ir para conteúdo

Refinamento


PsyMcKenzie

Posts Recomendados

versao 8.60

action

baiak server

 

eu queria um script de fortalecimento q fosse até o nivel +15 os items, e se possivel 5 pedras a primeira com 10% de chance de sucesso,

a segunda 20% a 3ª 30% a 4ª 40% e a 5ª 50%

valew ae se algem conseguir um npc q troke 200 unidades de um certo item com certo id, por um uma dessas pedras, 100= pedra nvl1, 200=pedra nvl obrigado ae :D

Link para o comentário
Compartilhar em outros sites

Olha amigo, nós temos grandes sistemas de refinamento aqui no fórum. Vou te passar o link dos que eu lembro:

 

http://www.xtibia.com/forum/topic/153132-sistema-de-alquimia/

http://www.xtibia.com/forum/topic/138928-sistema-de-refinamento-em-portugues/

 

Da uma olhada nesses ai, abraço.

Link para o comentário
Compartilhar em outros sites

ta aqui (tirado do tópico: Sistema De Refinamento Em Português)

 

E aew pessoal hoje to fazendo mais um post aki no xtbia

um sistema de refinamento usado em muitos ots,porém esse coloquei umas modificações e passei para portugês.

Vamos lah...

primeiro abra o bloco de notas e cole isso:

local gain = {
gainArmor='&p+5',loseArmor='&p-5',
gainShield='&s+#',loseShield='&s-(#+7)',
gainAttack='&a+#+1',loseAttack='&a-(#+4)-2',
gainDefense='&d+#+2',loseDefense='&d-(#+4)-2',
chance='75/((#*(1/(@/2)))*(@/2))',  -- Essa equação é boa para ficar perfeito seu refinamento
--- Se você colocar "chance=100" sempre irá funcionar o upgrade e se colocar chance=0 sempre ira falhar
maxlvl = 10,
blocked_ids = {2488,8881}
}
-- &a = weapon attack
-- &d = weapon defense
-- &s = shield defense
-- &p = armor defense
-- # = weapon curr level
-- @ = max level
function isArmor(uid) -- Function by Mock the bear.
        uid = uid or 0
        if getItemArmor(uid) > 0 and getItemAttack(uid) == 0 and getItemDefense(uid) == 0 and getItemWeaponType(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.find(name,'+(%d+)')
  return tonumber(lvl) or 0
end
function doTransform(s,uid) -- Function by Mock the bear.
   local c = string.gsub(s,'@',gain.maxlvl)
   local c = string.gsub(c,'&a',getItemAttack(uid))
   local c = string.gsub(c,'&d',getItemDefense(uid))
   local c = string.gsub(c,'&s',getItemDefense(uid))
   local c = string.gsub(c,'&p',getItemArmor(uid))
   local c = string.gsub(c,'#',getWeaponLevel(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.uid) == FALSE)
            or itemEx.itemid == 0 then
               doPlayerSendTextMessage(cid, 24,"Você não pode refinar esse item.")
               return TRUE
        end
        if isCreature(itemEx.uid) == TRUE then
           return FALSE
        end
       local level = getWeaponLevel(itemEx.uid)
       local chance = doTransform(gain.chance,itemEx.uid)
       if chance >= math.random(0,100) or item.actionid >= 1000 then
          if level+1 > gain.maxlvl then
             doSendMagicEffect(toPosition, 2)
             return doPlayerSendTextMessage(cid, 24,"Seu Item esta no nivel maximo,nao pode mais fazer upgrade nele.")
          else
             setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level+1))
             doPlayerSendTextMessage(cid, 24,"Seu item foi almentado para +"..(level+1)..".")
             doSendMagicEffect(toPosition, 39)
             if isArmor(itemEx.uid) == TRUE then
                local get = doTransform(gain.gainArmor,itemEx.uid)
                setItemArmor(itemEx.uid,get)
             elseif isWeapon(itemEx.uid) == TRUE then
                 setItemAttack(itemEx.uid, doTransform(gain.gainAttack,itemEx.uid))
                 setItemDefense(itemEx.uid, doTransform(gain.gainDefense,itemEx.uid))              
             elseif isShield(itemEx.uid) == TRUE then
                 setItemDefense(itemEx.uid, doTransform(gain.gainShield,itemEx.uid))  
             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,"Seu Item esta no nivel maximo,nao pode mais ser feito upgrade.")
          elseif level > 0 then
              if level == 1 then
                  setItemName(itemEx.uid, getItemNameById(itemEx.itemid))
                  doPlayerSendTextMessage(cid, 24,"Seu item voltou ao normal.")
              else
                  setItemName(itemEx.uid, getItemNameById(itemEx.itemid)..' +'..(level-1))
                  doPlayerSendTextMessage(cid, 24,"Seu Item voltou para +"..(level-1)..".")
              end
             if isArmor(itemEx.uid) == TRUE then
                setItemArmor(itemEx.uid,doTransform(gain.loseArmor,itemEx.uid))
             elseif isWeapon(itemEx.uid) == TRUE then
                 setItemAttack(itemEx.uid, doTransform(gain.loseAttack,itemEx.uid))
                 setItemDefense(itemEx.uid, doTransform(gain.loseDefense,itemEx.uid))              
             elseif isShield(itemEx.uid) == TRUE then
                 setItemDefense(itemEx.uid, doTransform(gain.loseShield,itemEx.uid))  
             end
          end
          doSendMagicEffect(toPosition, 15)
       end
    doRemoveItem(item.uid,1)  
    return TRUE
end 

 

Agora salve ele como upgrade.lua na pasta scripts

agora em actions.xml adicione essa linha

<action itemid="8306" script="upgrade.lua"/>

e pronto seu script esta feito!!!

mudanças:

* Script atualizado para português

* diminuido a chance de sucesso do upgrade(se nao todos no ot vai ter os itens fortes)

* almentado os pontos que ganha quando o upgrade tem sucesso

* almentado os pontos que perde quando o upgrade falha

 

espero que vocês gostem do novo script

 

créditos 98% para Mock(criador do script) e 2 % para min pelas mudanças.

atualizado

Link para o comentário
Compartilhar em outros sites

Ei DemonBeholder não tem como você colocar q pode refinar até nvl 15, 5 pedras de niveis diferentes e uma com mais chance de sucesso q a outra, e os ids pudessem ser editados??

se puder valew :D

Link para o comentário
Compartilhar em outros sites

isso se altera nessa linha :

maxlvl = 10,

 

so por 15

 

 

o lvl pode ser alterado aki:

maxlvl = 10, <~~~ só por 15 aki

 

ja a chance e calculada pela funcao abaixo

 

chance='75/((#*(1/(@/2)))*(@/2))',  -- Essa equação é boa para ficar perfeito seu refinamento

 

essa funcao denomina a chance de se conseguir refinar!

 

e possivel remontar ela para seu gosto, mais o script fikaria muito grande e complicado!

 

se alguem se dispor de fazer pra ele !

 

ajudei? + rep !!!!

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...