Ir para conteúdo
  • Cadastre-se

(Resolvido)slot system dúvida


Ir para solução Resolvido por xWhiteWolf,

Posts Recomendados

alguém da uma mãozinha aí, queria tirar as % do slot e colocar fixo

ao invés de hp +5% que é o caso aí, queria colocar hp+50 porém não entendi muito bem as fórmulas de add

 

creaturescripts:

 

---Script by mock the bear!
local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}
for i=1,100 do ---Carrega as conditions
        --- HP
        conditionHP = createConditionObject(CONDITION_ATTRIBUTES)
        setConditionParam(conditionHP, CONDITION_PARAM_TICKS, -1)
        setConditionParam(conditionHP, CONDITION_PARAM_STAT_MAXHEALTHPERCENT, 100+i)
        setConditionParam(conditionHP, CONDITION_PARAM_BUFF, true)
        setConditionParam(conditionHP, CONDITION_PARAM_SUBID, 50)
        --MANA
        conditionMP = createConditionObject(CONDITION_ATTRIBUTES)
        setConditionParam(conditionMP, CONDITION_PARAM_TICKS, -1)
        setConditionParam(conditionMP, CONDITION_PARAM_STAT_MAXMANAPERCENT, 100+i)
        setConditionParam(conditionMP, CONDITION_PARAM_BUFF, true)
        setConditionParam(conditionMP, CONDITION_PARAM_SUBID, 51)
        --Magic level
        conditionML = createConditionObject(CONDITION_ATTRIBUTES)
        setConditionParam(conditionML, CONDITION_PARAM_TICKS, -1)
        setConditionParam(conditionML, CONDITION_PARAM_STAT_MAGICLEVELPERCENT, 100+i)
        setConditionParam(conditionML, CONDITION_PARAM_BUFF, true)
        setConditionParam(conditionML, CONDITION_PARAM_SUBID, 52)
        --club axe sword
        conditionCLUB = createConditionObject(CONDITION_ATTRIBUTES)
        setConditionParam(conditionCLUB, CONDITION_PARAM_TICKS, -1)
        setConditionParam(conditionCLUB, CONDITION_PARAM_SKILL_CLUBPERCENT, 100+i)
        setConditionParam(conditionCLUB, CONDITION_PARAM_SKILL_SWORDPERCENT, 100+i)
        setConditionParam(conditionCLUB, CONDITION_PARAM_SKILL_AXEPERCENT, 100+i)
        setConditionParam(conditionCLUB, CONDITION_PARAM_BUFF, true)
        setConditionParam(conditionCLUB, CONDITION_PARAM_SUBID, 53)
        --- shield
        conditionSHI = createConditionObject(CONDITION_ATTRIBUTES)
        setConditionParam(conditionSHI, CONDITION_PARAM_TICKS, -1)
        setConditionParam(conditionSHI, CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i)
        setConditionParam(conditionSHI, CONDITION_PARAM_BUFF, true)
        setConditionParam(conditionSHI, CONDITION_PARAM_SUBID, 54)
        --- dist
        conditionDIST = createConditionObject(CONDITION_ATTRIBUTES)
        setConditionParam(conditionDIST, CONDITION_PARAM_TICKS, -1)
        setConditionParam(conditionDIST, CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i)
        setConditionParam(conditionDIST, CONDITION_PARAM_BUFF, true)
        setConditionParam(conditionDIST, 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 ~= t then
                        equip(cid,nil,slot)
                        break
                end
        end
        addEvent(chk,200,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 -- Not on slot 10 > arrow
                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
        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 == 'hp' then
                        doAddCondition(cid,conditionHP[tonumber(n)])
                        doCreatureAddHealth(cid,HP-getCreatureHealth(cid))
                        ca[50] = 1
                        doPlayerSendTutorial(cid,19)
                elseif sl == 'mp' then
                        doAddCondition(cid,conditionMP[tonumber(n)])
                        doCreatureAddMana(cid,HP-getCreatureMana(cid))
                        ca[51] = 1
                        doPlayerSendTutorial(cid,19)
                elseif sl == 'ml' then
                        doAddCondition(cid,conditionML[tonumber(n)])
                        ca[52] = 1
                elseif sl == 'cas' then
                        doAddCondition(cid,conditionCLUB[tonumber(n)])
                        ca[53] = 1
                elseif sl == 'shield' then
                        doAddCondition(cid,conditionSHI[tonumber(n)])
                        ca[54] = 1
                elseif sl == 'dist' then
                        doAddCondition(cid,conditionDIST[tonumber(n)])
                        ca[55] = 1
                end
        end
        if fu > 0 then
                addEvent(doPlayerSendTextMessage,100,cid,24,'You have:\n'..s)
                for i=50,55 do
                        if not ca 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,200,cid,loadSet(cid)) -- Here we check!
        return TRUE
end 
 
--------------------------
 
actions
 
 --[[
Slot system 100% by mock \o
]]
---Config
local conf = {
maxSlotCount=2,
ignoredIds={}
}
--End
function choose(...) --- Function by mock.
        local arg = {...}
        return arg[math.random(1,#arg)]
end
if not getItemAttack then
        function getItemAttack(uid)
                return getItemAttribute(uid,'attack')
        end
        function getItemDefense(uid)
                return getItemAttribute(uid,'defense')
        end
end
local function isArmor(uid) -- Function by Mock the bear.
    if (getItemInfo(uid.itemid).armor ~= 0) and (getItemWeaponType(uid.uid) == 0) then
                return true
        end
        return false
end
local 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
local function isShield(uid) -- Function by Mock the bear.
        uid = uid or 0
        if getItemWeaponType(uid) == 4 then
                return true
        end
        return false
end
local function isBow(uid) -- Function by Mock the bear.
        uid = uid or 0
        if getItemWeaponType(uid) == 5 and not isItemStackable(uid) then
                return true
        end
        return false
end
function onUse(cid, item, fromPosition, itemEx, toPosition) -- Script by mock the bear (MTB)
        if item.uid == 0 or item.itemid == 0 then return false end
        toPosition.stackpos = 255
        if item.uid == 0 or item.itemid == 0 then return false end
        toPosition.stackpos = 255
    if isInArray(conf.ignoredIds, 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
        doPlayerSendCancel(cid, "You cant open a slot on this item.")
        return TRUE
    end
    if isCreature(itemEx.uid) then
        return FALSE
    end
        local nam = getItemName(itemEx.uid)
        function getper()
                local n = 50
                for i=1,10 do
                        n = 50
                        if n < 8000*i then
                                break
                        end
                end
                return n
        end
        function getSlotCount(nam)
                local c = 0
                for _ in nam:gmatch('%[(.-)%]') do
                        c = c+1
                end
                return c
        end
        if getSlotCount(nam) < conf.maxSlotCount then
                local l = choose('hp')
                local p = getper()
 
                doSendMagicEffect(toPosition,30)
                nam = nam..' ['..l..'.+'..p..'%]'
                doItemSetAttribute(itemEx.uid,'name',nam)
                doRemoveItem(item.uid,1)
        else
                doPlayerSendCancel(cid, "You cant open a slot on this item.")
        end
        return true
end  
 
--------------------------
 
script por MockTheBear
Editado por roach95 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução
---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_MAXHEALTH, 0+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_MAXMANA, 0+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_MAGICLEVELPERCENT, 100+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_CLUBPERCENT, 100+i)
        setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_SWORDPERCENT, 100+i)
        setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_AXEPERCENT, 100+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_SHIELDPERCENT, 100+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_DISTANCEPERCENT, 100+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,200,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 -- Not on slot 10 > arrow
                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
        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 == 'hp' then
                        doAddCondition(cid,conditionHP[tonumber(n)])
                        doCreatureAddHealth(cid,HP-getCreatureHealth(cid))
                        ca[50] = 1
                        doPlayerSendTutorial(cid,19)
                elseif sl == 'mp' then
                        doAddCondition(cid,conditionMP[tonumber(n)])
                        doCreatureAddMana(cid,HP-getCreatureMana(cid))
                        ca[51] = 1
                        doPlayerSendTutorial(cid,19)
                elseif sl == 'ml' then
                        doAddCondition(cid,conditionML[tonumber(n)])
                        ca[52] = 1
                elseif sl == 'cas' then
                        doAddCondition(cid,conditionCLUB[tonumber(n)])
                        ca[53] = 1
                elseif sl == 'shield' then
                        doAddCondition(cid,conditionSHI[tonumber(n)])
                        ca[54] = 1
                elseif sl == 'dist' then
                        doAddCondition(cid,conditionDIST[tonumber(n)])
                        ca[55] = 1
                end
        end
        if fu > 0 then
                addEvent(doPlayerSendTextMessage,100,cid,24,'You have:\n'..s)
                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,200,cid,loadSet(cid)) -- Here we check!
        return TRUE
end 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  • 1 month later...

como não fui eu que fiz o script eu não posso te falar as limitações dele mas acredito que seja algum problema de incompatibilidade da sua versão com as funções presentes no script

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

qual o erro?

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  • 2 years later...
Em 10/07/2014 ás 00:05, xWhiteWolf disse:

---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_MAXHEALTH, 0+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_MAXMANA, 0+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_MAGICLEVELPERCENT, 100+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_CLUBPERCENT, 100+i)
        setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_SWORDPERCENT, 100+i)
        setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_AXEPERCENT, 100+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_SHIELDPERCENT, 100+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_DISTANCEPERCENT, 100+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,200,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 -- Not on slot 10 > arrow
                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
        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 == 'hp' then
                        doAddCondition(cid,conditionHP[tonumber(n)])
                        doCreatureAddHealth(cid,HP-getCreatureHealth(cid))
                        ca[50] = 1
                        doPlayerSendTutorial(cid,19)
                elseif sl == 'mp' then
                        doAddCondition(cid,conditionMP[tonumber(n)])
                        doCreatureAddMana(cid,HP-getCreatureMana(cid))
                        ca[51] = 1
                        doPlayerSendTutorial(cid,19)
                elseif sl == 'ml' then
                        doAddCondition(cid,conditionML[tonumber(n)])
                        ca[52] = 1
                elseif sl == 'cas' then
                        doAddCondition(cid,conditionCLUB[tonumber(n)])
                        ca[53] = 1
                elseif sl == 'shield' then
                        doAddCondition(cid,conditionSHI[tonumber(n)])
                        ca[54] = 1
                elseif sl == 'dist' then
                        doAddCondition(cid,conditionDIST[tonumber(n)])
                        ca[55] = 1
                end
        end
        if fu > 0 then
                addEvent(doPlayerSendTextMessage,100,cid,24,'You have:\n'..s)
                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,200,cid,loadSet(cid)) -- Here we check!
        return TRUE
end 

Nao sei mecher muto bem, mas ja tentei de toas as formas... Mas teria como vc botar a % fixa xWhiteWolf ?? (% Fixa 5)

Editado por Jinx (veja o histórico de edições)
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