Ir para conteúdo
  • Cadastre-se

(Resolvido)Ajuda Dodge Ne Items


Ir para solução Resolvido por FlavioHulk,

Posts Recomendados

Bom dia galerinha do tk

 

 consegui achar um script de dodgem em items

mas tem um problema ele ta dano comflito com o upgrade system que tenho

quando uso a pedra dodg no item ele fica + 1 +2 +3 +4 e +5 

queria tirar issu deixar com que ele so add as % de dodge no item

 

pq tenho um sistema de upgrade que add no item +1 ate + 10

 

function isHandItem(uid) -- NW based on Mock
         uid = uid or 0
        if isInArray({1,2,3,4,5,6}, getItemWeaponType(uid)) then
             return true
         end
         return false
end


function getItemDodgePercent(itemuid)
return getItemAttribute(itemuid, "dodgePercent") or 0
end


function setItemDodgePercent(uid, percent)
doItemSetAttribute(uid, "description", "[Dodge: "..percent.."%]")
doItemSetAttribute(uid, "dodgePercent", percent)
end


function onUse(cid, item, fromPosition, itemEx, toPosition) 
level = 0
local upgrade = {
[1] = {min = 1, max = 5, chance = 100},
[2] = {min = 5, max = 10, chance = 80},
[3] = {min = 10, max = 20, chance = 60},
[4] = {min = 20, max = 40, chance = 40},
[5] = {min = 40, max = 50, chance = 20}
}


function isWearing(uid) -- NW based on Mock
         uid = uid or 0
        if isInArray({uid}, getPlayerSlotItem(cid, 1).uid) or isInArray({uid}, getPlayerSlotItem(cid, 4).uid) or isInArray({uid}, getPlayerSlotItem(cid, 7).uid) or isInArray({uid}, getPlayerSlotItem(cid, 8).uid) then
             return true
         end
         return false
end


if isHandItem(itemEx.uid) or isWearing(itemEx.uid) then 
local name = getItemName(itemEx.uid)
local atual = math.floor(getItemDodgePercent(itemEx.uid)*10)/10
for i = 1, #upgrade do
if string.find(tostring(name),"+".. i .."") then
level = i
end
end


if level >= #upgrade then
doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your item is already on max level, you can't upgrade it any further.")
return true
end


if math.random(0,100) <= upgrade[level + 1].chance then 
doRemoveItem(item.uid, 1)
doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"You leveled your "..getItemNameById(itemEx.itemid).." to ".. level+1 ..".")
setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10)
doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1))
doSendMagicEffect(toPosition, math.random(28,30))
else
setItemDodgePercent(itemEx.uid, 0)
doRemoveItem(item.uid, 1)
doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,"Your "..getItemNameById(item.itemid).." has failed and destroyed the dodge of your "..getItemNameById(itemEx.itemid).." in the process")
doSendMagicEffect(toPosition, 4)
end


else
doPlayerSendTextMessage(cid, 24,"You cant refine this item.")
end
return true
end

Editado por mullino (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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

voce modifica aqui o texto

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Link para o post
Compartilhar em outros sites
49 minutos atrás, Reds disse:

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

voce modifica aqui o texto

no caso ficaria asim?

doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(Dodge+1))

?

Link para o post
Compartilhar em outros sites

 

 

apaga isso:

 

setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10)
doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1))

 

e coloca isso:

 

 

local porcentagem = atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10

setItemDodgePercent(itemEx.uid, porcentagem)
doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(porcentagem))

 

 

olhei bem por cima o código, se n der me avisa

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Link para o post
Compartilhar em outros sites
4 minutos atrás, Reds disse:

 

 

apaga isso:

 

setItemDodgePercent(itemEx.uid, atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10)
doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(level+1))

 

e coloca isso:

 

 

local porcentagem = atual + (math.random(upgrade[level+1].min,upgrade[level+1].max))/10

setItemDodgePercent(itemEx.uid, porcentagem)
doItemSetAttribute(itemEx.uid,'name', getItemNameById(itemEx.itemid)..' +'..(porcentagem))

 

 

olhei bem por cima o código, se n der me avisa

vou testar aki

 

nao deu ele add 

You see a Supreme Shield +0.8 

 

ae quando uso a pedra de encantar focica asim

You see a Supreme Shield +0.5 +1 

se usar de novo fica asim

You see a Supreme Shield +0.5 +1 +1 

ae se eu usar a de dodge de novo fica asim

You see a Supreme Shield +0.8 

Link para o post
Compartilhar em outros sites

saquei, faz assim então, cola ai o que vc usa para dar +1, +2, +3 e etc..

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Link para o post
Compartilhar em outros sites
39 minutos atrás, Reds disse:

saquei, faz assim então, cola ai o que vc usa para dar +1, +2, +3 e etc..

--- Email: <a href="mailto:[email protected]">[email protected]</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 mesmo 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 isBow2(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

Link para o post
Compartilhar em outros sites

apaga isso:

  

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

 

isso:

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

 

e isso:

 

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

 

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Link para o post
Compartilhar em outros sites

ta certo mais ae ele ficou infinito

toda vez uso a pedra ele fala

18:53 Voce refina com sucesso o objeto e ele avanca para o nivel 1.

8:52 You see Supreme legs (Arm:205, club fighting +3, sword fighting +3, axe fighting +3, distance fighting +3, protection all +2%).

18:54 You see Supreme legs (Arm:330, club fighting +3, sword fighting +3, axe fighting +3, distance fighting +3, protection all +2%).

tem como colocar um limite

 

 

 

 

Link para o post
Compartilhar em outros sites

nao entendi muito bem, pode explicar melhor?

Toda terça-feira um tópico novo:

Descanso para curar mana (Spell): https://tibiaking.com/forums/topic/94615-spell-descanso-para-curar-mana/

Peça sua spell (Suporte):                https://tibiaking.com/forums/topic/84162-peça-sua-spell/                        

Chuva de flechas (Spell):                https://tibiaking.com/forums/topic/72232-chuva-de-flechas-spell/

Doom (Spell):                                https://tibiaking.com/forums/topic/51622-doom-spell/

Utilização do VS Code (Infra)       https://tibiaking.com/forums/topic/94463-utilizando-o-visual-studio-code-notepad-nunca-mais/

SD com Combo (Spell):                 https://tibiaking.com/forums/topic/94520-sd-modificada/

Alteração attack speed (C++):        https://tibiaking.com/forums/topic/94714-c-attack-speed-spells-itens-e-onde-você-quiser/  

Bônus de Speed (NPC)                  https://tibiaking.com/forums/topic/94809-npc-concede-bônus-aos-players/
 

Link para o post
Compartilhar em outros sites

Cara, não entendi bem, poderia ser mais claro?
Tipo, quando tu usa o dodge adiciona ao nome do item "+ dodge", certo?
Como tu quer que fique? Porque o sistema tá adicionado uma descrição informando a porcentagem do Dodge entre colchetes...

Link para o post
Compartilhar em outros sites

Sim issu aparece

Na vdd era só issu que eu queria que aparecesse no sistema de Dodge mas aparece tbm o +1+2+3+4+5+6

Eu queria tirar esses +1+2+3+4+5.... 

E deixar só a porcentagem de dodge

2 horas atrás, FlavioHulk disse:

Cara, não entendi bem, poderia ser mais claro?
Tipo, quando tu usa o dodge adiciona ao nome do item "+ dodge", certo?
Como tu quer que fique? Porque o sistema tá adicionado uma descrição informando a porcentagem do Dodge entre colchetes...

..

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

remove essa linha

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

 

Link para o post
Compartilhar em outros sites
21 minutos atrás, FlavioHulk disse:

remove essa linha


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

 

Obrigado vou testar asim que chegar .....

Aki 

 

Teria como vc fazer um desses que add critical na arma.... Pq esse é de Dodge para set

Eu queria um de critical para armas vc poderia me ajudar??

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo