Ir para conteúdo
  • Cadastre-se

(Resolvido)Ajuda refine system mock


Ir para solução Resolvido por KotZletY,

Posts Recomendados

Diga em poucas palavras a base utilizada (Nome do servidor ou nome do website).

OTX 2;  Mas os scripts do tfs 0.4 funcionam normalmente

Base: 8.60

 

 

Qual erro está surgindo/O que você procura?

 

Boa trade pessoal. Gostaria de uma ajuda da comunidade referente ao sistema de refine system do mock para fazer uma modificação no mesmo e deixá-lo semelhante ao do pbotwars.

Vou usar os exemplos de look no item abaixo para tentar explicar melhor.

 


[EXEMPLO DE ITEM NORMAL SEM SER REFINADO]

 You see a imperium axe (Atk:80, Def:30).
It can only be wielded properly by elite knights of level 8 or higher.
It weighs 40.00 oz.


[AO USAR A PEDRA DE REFINAMENTO PRIMA VEZ]

 Your item has been upgrated to +1.
You see a imperium axe +1 (Atk:81, Def:31).
It can only be wielded properly by elite knights of level 8 or higher.
It weighs 40.00 oz.

 

[AO USAR A PEDRA DE REFINAMENTO SEGUNDA VEZ]

Your item has been upgrated to +2.
17:06 You see a imperium axe +2 (Atk:83, Def:33).
It can only be wielded properly by elite knights of level 8 or higher.
It weighs 40.00 oz.

 

Acima é o que esta ocorrendo, no entanto gostaria que ficasse da seguinte forma. Vejamos abaixo:

 

[ITEM NORMAL SEM SER REFINADO]

 You see a imperium axe (Atk:80, Def:30).
It can only be wielded properly by elite knights of level 8 or higher.
It weighs 40.00 oz.


[AO USAR A PEDRA DE REFINAMENTO PRIMA VEZ]

 Your item has been upgrated to +1.
You see a imperium axe +1 (Atk:81, Def:31).
It can only be wielded properly by elite knights of level 8 or higher.
It weighs 40.00 oz.

 

[AO USAR A PEDRA DE REFINAMENTO SEGUNDA VEZ]

Your item has been upgrated to +2.
17:06 You see a imperium axe +2 (Atk:82, Def:32).
It can only be wielded properly by elite knights of level 8 or higher.
It weighs 40.00 oz.

 

[AO USAR PELA TERCEIRA VEZ]

Your item has been upgrated to +3.
17:06 You see a imperium axe +3 (Atk:83, Def:33).
It can only be wielded properly by elite knights of level 8 or higher.
It weighs 40.00 oz.

 

E assim sucessivamente.

 

Resumindo, quero que cada pedra de 1 a mais de upgrade no item e que a quantidade de vezes que ele foi refinado (em que usei a pedra) apareça antes dos atributos de atack e defesa.

 

Vou deixar o código abaixo caso alguém possa me ajudar. Com certeza aquele rep + estará garantido.

 

Muito obrigado!

 

 

 

Você tem o código disponível? Se tiver publique-o aqui:

--- Perfect refine system by Mock the bear (MTB).
--- Email: [email protected]
local gain = {
gainArmor='&p+1',loseArmor='&p-1',
gainShield='&s+2',loseShield='&s-2',
gainAttack='&a+2',loseAttack='&a-2',
gainDefense='&d+2',loseDefense='&d-2',
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 = 6,
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 or f == 4 then
             return TRUE
         end
         return FALSE
end
function isShield(uid) -- Function by Mock the bear.
         uid = uid or 0
         if getItemWeaponType(uid) == 5 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.gainShield,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.loseShield,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

 

Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.

Link para o post
Compartilhar em outros sites
  • Solução

@maicao22 modifique o ataque para +1 nas configurações do script. De:

gainAttack='&a+2'

para:

gainAttack='&a+1'

 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites

Vou testar aqui e ja falo o resultado.

 

Perfeito amigo. Simples hahha. Eu tentei fazer algo assim mas tava alterando errado. Muito obrigado por sua colaboração. Reputado.

 

Unica coisa que falta eu ajeitar agora para o script ficar 100% é fazer ele funcionar nas armors, helmets, shields etc. Mas creio que deve ser algo na minha distro. Vou trocar para ver.

Editado por maicao22 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
15 minutos atrás, maicao22 disse:

Unica coisa que falta eu ajeitar agora para o script ficar 100% é fazer ele funcionar nas armors, helmets, shields etc. Mas creio que deve ser algo na minha distro. Vou trocar para ver.

Certifique de quê o item tenha o atributo armor!

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
gainArmor='&p+1',loseArmor='&p-1',
gainShield='&s+2',loseShield='&s-2',
gainAttack='&a+2',loseAttack='&a-2',
gainDefense='&d+2',loseDefense='&d-2',

remplaze

 

gainArmor='&p+1',loseArmor='&p-1',
gainShield='&s+1',loseShield='&s-1',
gainAttack='&a+1',loseAttack='&a-1',
gainDefense='&d+1',loseDefense='&d-1',

 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo