• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    [Actions] Ponerle un slot a un item o magic item

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    Hola amigos de TibiaFace
    vengo a perdirles una ayuda
    quisiera montarle un script como el de estas imagen a mi server

    CUANDO TENGO ECHANT MELEE - DIST - ML TANBIEM ASI ES IGUAL EL DE HP, MP Y SHIELD:





    FALTO AQUI LA IMAGEN DE DIST PERO LA PAGINA PARA SUBIRLO SE CAYO :S

    CLARO HAY SOLO MOSTRE ARROW Y BOLTS PERO QUISIERA UNO QUE SE UTILIZE EN:
    HELMET
    ARMOR
    LEGS
    BOOTS
    RING
    AMULET
    ROD/WAND
    BOW/CROSSBOW
    AXE/CLUB/SWORD


    bueno amigos asi quiero un script alguien que me pueda ayudar en eso porfavor......

    Ver perfil de usuario

    2Sưu tầm atributos 10.9 el Lun Mayo 08, 2017 3:25 pm

    zer0strong

    avatar
    Nuevo Miembro
    Nuevo Miembro
    <attribute key="description" value=""/>
    <attribute key="speed" value="30" />
    <attribute key="armor" value="11" />
    <attribute key="defense" value=""/>
    <attribute key="extraDef" value=""/>
    <attribute key="skillDist" value=""/>
    <attribute key="skillAxe" value=""/>
    <attribute key="skillSword" value=""/> ->
    <attribute key="skillClub" value=""/>
    <attribute key="skillShield" value=""/> >
    <attribute key="skillFist" value=""/> -->
    <attribute key="magiclevelpoints" value="2" />
    <attribute key="skillFish" value=""/>


    <attribute key="elementphysical" value=""/>
    <attribute key="elementEnergy" value=""/>
    <attribute key="elementEarth" value=""/>
    <attribute key="elementFire" value=""/>
    <attribute key="elementIce" value=""/>
    <attribute key="elementholy" value=""/>
    <attribute key="elementdeath" value=""/>
    <attribute key="absorbPercentDeath" value=""/>
    <attribute key="absorbPercentHoly" value=""/>
    <attribute key="absorbPercentEarth" value=""/>
    <attribute key="absorbPercentFire" value=""/>
    <attribute key="absorbPercentIce" value=""/>
    <attribute key="absorbPercentPhysical" value=""/>
    <attribute key="absorbPercentEnergy" value=""/>
    <attribute key="absorbPercentAll" value="" />
    <attribute key="absorbpercentmagic" value=""/>
    <attribute key="healthGain" value=""/>
    <attribute key="healthTicks" value="6000"/>
    <attribute key="manaGain" value="24"/>
    <attribute key="manaTicks" value="6000"/>

    Ver perfil de usuario
    Lo que digo yo no es de eso
    sino que lo que dice de bajo lo ultimo

    [Melee.+10%][Melee.+15%]
    quiero un script de eso encontre uno
    pero esta dañado cuando pongo el script
    en la consola sale Creaturescript error name algo asi

    y de paso el echante lo cambio y pasa de 15% sale asta de 100%
    y yo solo quiero uno de mayor echant sea 15%


    AQUI LES DEJARE OTRA IMAGEN PARA QUE SE FIJE
    LOS SKILL PROTECTIONY COSAS ASI LOS SE PONER YO PERO QUIERO COMO ESTE SERVER
    QUE CON UNA RUNA EL ITEM GANE  1 SLOT Y LE PUEDA ECHAR MAS DE 3 SLOT POR ITEM

    Ver perfil de usuario

    [Admin] God Maya

    avatar
    Administrador
    Administrador
    eso lo que quieres se llama slots yo estoy desarrollando uno por palanca pero aqui te dejo el scripts original
    en actions:
    Código:
    --[[
    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
           
           
           
           
            doPlayerSendTextMessage(cid, 24,"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 = 1
            for i=1,10 do
                n = n+math.random(0,10)
                if n < 8*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','mp','ml','cas','shield','dist')
            local p = getper()
     
            doSendMagicEffect(toPosition,30)
            nam = nam..' ['..l..'.+'..p..'%]'
            doSendAnimatedText(toPosition,l..' '..p..'%',120)
            doItemSetAttribute(itemEx.uid,'name',nam)
            doRemoveItem(item.uid,1)
        else
            doPlayerSendTextMessage(cid, 24,"You cant open a slot on this item.")
        end
        return true
    end


    Código:
    <action itemid="8300" event="script" value="slot.lua"/>


    en creaturescripts:


    Código:

        ---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_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,2000,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,2000,cid,loadSet(cid)) -- Here we check!
                return TRUE
        end

    Código:
    registerCreatureEvent(cid, "SlotLogin")

    Código:
    <event type="login" name="SlotLogin" event="script" value="slot.lua"/>


    fue testeado en otx y funcion al 100% sin crash del servidor




    Ver perfil de usuario http://www.tibiaface.com

    5Sưu tầm teste el Mar Mayo 09, 2017 7:52 am

    Bueno al llegar a mi honorable casa lo testeo

    y si en el TITULO dice

    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Ponerle un slot a un item o magic item


    Agregado y para modificar el % de cada echant
    le cambie
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:for i=1,100 do
    y igual tiro mas del % que puse

    Ver perfil de usuario

    Contenido patrocinado


    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.

     

    BienvenidosTibiaFace es una comunidad de Open Tibia. Para participar debes estar registrado (click para Regístrate).