Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Falaa galera do tibiaking, desculpe ta pedindo ajuda de vcs em pleno feriado, mais estou com dificuldades de adicionar novas conditions nesse scripts

eu queria adicionar essas conditions abaixo e um condition que aumente 50% de speed do player

 

CONDITION_PARAM_HEALTHGAIN 
CONDITION_PARAM_HEALTHTICKS 
CONDITION_PARAM_MANAGAIN 
CONDITION_PARAM_MANATICKS 

 

---Script by mock the bear!
local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}
for i=1,100 do ---Carrega as conditions
    --- HP
    conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 100+i)
    setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF, true)
    setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50)
    --MANA
    conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANAPERCENT, 100+i)
    setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF, true)
    setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51)
    --Magic level
    conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICLEVEL, i)
    setConditionParam(conditionML[i], CONDITION_PARAM_BUFF, true)
    setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52)
    --club axe sword
    conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_CLUB, i)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_SWORD, i)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_AXE, i)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF, true)
    setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53)
    --- shield
    conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELD, i)
    setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF, true)
    setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54)
    --- dist
    conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1)
    setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCE, i)
    setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF, true)
    setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55)
end
function getSlotType(n) --By mock the bear
    if not n then
        return false
    end
    if n:match('%[(.+)%]') then
        n = n:match('%[(.+)%]')
        if n == '?' then
            return 0,n
        else
            return n:match('(.-)%.([+-])(%d+)%%')
        end
    else
        return false
    end
 
end
local function loadSet(cid)
    local t = {}
    for slot=1,9 do
        t[slot] = ''
 
        local s = getPlayerSlotItem(cid,slot).uid
        if s ~= 0 then
            t[slot] = getItemName(s)
        end
    end
    return t
end
function isInArray2(arr,var) -- Because in some servers it return 1 and 0 and others true and false
    for i,b in pairs(arr) do
        if var == b then
            return true
        end
    end
    return false
end
function check2(cid,i)
    if i == 5 or i == 6 then
        if isInArray({'head','necklace','backpack','body','legs','feet','ring'},getItemValue(getPlayerSlotItem(cid,i).itemid,'slotType') or '') then
            return false
        end
    end
    return true
end
function chk(cid,f)
    if not isPlayer(cid) then return end
    local t = loadSet(cid)
    for i=1,#f do
        if f[i] ~= t[i] then
            equip(cid,nil,slot)
            break
        end
    end
    addEvent(chk,100,cid,t)
end
items = { ---- Only to get attr: slotType because getItemName dont return it -.-'
    _VERSION='1.0 By mock',
    XML_DIR='data/items/items.xml',
    }
do
    local ia = os.clock()
    io.write('Loading items')
    local i = io.open(items.XML_DIR,'r')
    local u = i:read(-1)
    i:close()
    local u = u:match('<items>(.+)</items>')
    for mi,id,mid,name,data,me in u:gmatch('<(%a-)%s*id%s*=%s*"(%d+)"%s*(.-)%s*name%s*=%s*"(.-)"%s*>(.-)</(%a*)>') do
        if mi == 'item' and me == 'item' then
            local td = {name=name,id=id,type=1}
            for key,value in data:gmatch('<attribute key="(.-)" value="(.-)"/>') do
                td[key] = value
            end
            for key,value in mid:gmatch('(.-)="(.-)"') do
                td[key] = value
            end
            items[tonumber(id)] = td
 
            items[name] = td
        end
    end
    for mi,id,mid,name,data in u:gmatch('<(%a-)%s*id%s*=%s*"(%d*)"%s*(.-)%s*name%s*=%s*"(%a+)"%s*/>') do
        if mi == 'item' then
            local td = {name=name,id=id,type=2}
            for key,value in mid:gmatch('(.-)="(.-)"') do
                td[key] = value
            end
            items[tonumber(id)] = td
            items[name] = td
        end
    end
    io.write('[done '..os.clock()-ia..']\n')
end
function getItemValue(item,value)
    return items[item] and items[item][value]
end
function equip(cid,item,slot) --By mock the bear
    local HP = getCreatureHealth(cid)
    local MP = getCreatureMana(cid)
    local t = {}
    if item then
        local mm,sinal,qto = getSlotType(getItemName(item.uid))
        t[mm] = tonumber(qto)
    end
    
for i=1,9 do 
   if i ~= 5 and i ~= 6 then
        if i ~= slot then
            if getPlayerSlotItem(cid,i).itemid ~= 0 then
                local aab = getPlayerSlotItem(cid,i).uid
                if aab and check2(cid,i) then
                    for _ in getItemName(aab):gmatch('(%[.-%])') do
                        local mm,sinal,qto2 = getSlotType(_)
                        if mm then
                            if not t[mm] then
                                t[mm] = 0
                            end
                            t[mm] = t[mm]+tonumber(qto2)
 
                            t[mm] = t[mm] > 100 and 100 or t[mm]
                        end
                    end
                end
            end
        end
    end
  end
    local fu = 0
    local ca = {}
    local s = ''
    for sl,n in pairs(t) do
        fu = fu+1
        s = s..''..n..'% more of '..sl..'\n'
        if sl == 'Health'  then
            doAddCondition(cid,conditionHP[tonumber(n)])
            ca[50] = 1
        elseif sl == 'Mana' then
            doAddCondition(cid,conditionMP[tonumber(n)])
            ca[51] = 1
        elseif sl == 'Magically' and getPlayerVocation(cid) == 1 or getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 5 or getPlayerVocation(cid) == 6 or getPlayerVocation(cid) == 11 or getPlayerVocation(cid) == 12 then
            doAddCondition(cid,conditionML[tonumber(n)])
            ca[52] = 1
        elseif sl == 'cas' and getPlayerVocation(cid) == 3 or getPlayerVocation(cid) == 4 or getPlayerVocation(cid) == 7 or getPlayerVocation(cid) == 8 or getPlayerVocation(cid) == 13 or getPlayerVocation(cid) == 14  then
            doAddCondition(cid,conditionCLUB[tonumber(n)])
            doAddCondition(cid,conditionDIST[tonumber(n)])
            doAddCondition(cid,conditionSHI[tonumber(n)])
            ca[53] = 1
            ca[55] = 1
            ca[54] = 1
        elseif sl == 'shield' then
            doAddCondition(cid,conditionSHI[tonumber(n)])
            ca[54] = 1
        elseif sl == 'Distance' and getPlayerVocation(cid) == 3 then
            doAddCondition(cid,conditionDIST[tonumber(n)])
            ca[55] = 1
        end
    end
    if fu > 0 then
        for i=50,55 do
            if not ca[i] then
                doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
            end
        end
    else
        for i=50,55 do
            doRemoveCondition(cid,CONDITION_ATTRIBUTES,i)
        end
    end
    return true
end
function onLogin(cid) ---Script by mock the bear!
        equip(cid,nil,slot)
        addEvent(chk,100,cid,loadSet(cid)) -- Here we check!
        return TRUE
end

 

Link para o post
Compartilhar em outros sites

Esta é uma mensagem automática! Este tópico foi movido para a área correta.
Pedimos que você leia as regras do fórum.

  Mostrar conteúdo oculto

 

                              _
                          .-'` `}
                  _./)   /       }
                .'o   \ |       }
                '.___.'`.\    {`
                /`\_/  , `.    }                                      ME DA UMA NOZ!
                \=' .-'   _`\  {
                 `'`;/      `,  }
                    _\   @   ;  }
                   /__`;-...'--'

Cluck!

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.

  • Estatísticas dos Fóruns

    96842
    Tópicos
    519603
    Posts
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo