• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1

    Compartir:

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

    1default [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 el Miér Sep 13, 2017 1:06 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    Hola usuarios de tibiaface


    Bueno aqui les traigo el sistema de slot system para las tfs 1.x

    ejemplo de como quedaria el item:

    Código:

    07:39 You see a mastermind shield (Def:37).
    It weighs 57.00 oz.
    [shield.+5%] [mp.+10%] [melee.+2%]

    07:40 You see a crossbow (Range:5).
    It weighs 40.00 oz.
    [shield.+2%] [mp.+14%] [hp.+4%]

    Instalacion:

    nos vamos a data/actions/scripts copiamos cualquier archivo y renombramos por slot.lua

    Código:
    local conf = {
    maxSlotCount=3,
    ignoredIds={}
    }
     
    function choose(...)
      local arg = {...}
      return arg[math.random(1,#arg)]
    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(conf.ignoredIds, itemEx.itemid)
      then
      return false
      end
      if isCreature(itemEx.uid) then
      return false
      end
      local nam = Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
      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
     
      local number = math.random(0,100)
      doPlayerSendTextMessage(cid,20,' tu exito fue '..number..'%')
     
      if number <= 3 then
          Player:SendTextMessage(20,"Your item broke in the proccess.")
          doRemoveItem(item.uid,1)
          doRemoveItem(itemEx.uid,1)
          return false
      end
     
      if number <= 60 then
          doPlayerSendTextMessage(cid,20,"Fail to gain power.")
          doRemoveItem(item.uid,1)
          return false
      end
     
     
     
      if getSlotCount(nam) < conf.maxSlotCount then
        local l = choose('hp','mp','ml','melee','shield','dist')
        local p = getper()
        doSendMagicEffect(toPosition,30)
        nam = nam..' ['..l..'.+'..p..'%]'
        doPlayerSendTextMessage(cid, 20,l..'.+'..p..'%')
        doSetItemSpecialDescription(itemEx.uid, nam)
        doRemoveItem(item.uid,1)
        return false
      else
        doPlayerSendTextMessage(cid, 20,"Slot limit reached.")
      end
      return true
    end

    y en actions.xml agregamos esta tag:

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

    Ahora nos vamos a data/creaturescripts/scripts copiamos cualquier archivo y renombramos por slot.lua

    Código:
    local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}
    for i=1,20 do
      conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50)
      setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i)
     
      conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51)
      setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i)
     
      conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52)
      setConditionParam(conditionML[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 100+i)
     
     
      conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53)
      setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_MELEEPERCENT, 100+i)
     
     
      conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54)
      setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i)
     
      conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55)
      setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i)
    end
     
    function getSlotType(n)
      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 player = Player(cid)
    if not player then return false end
      local t = {}
      for slot=1,9 do
      t[slot] = ''
      local s = getPlayerSlotItem(player,slot).uid
      if s ~= 0 then
      t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
      end
      end
      return t
    end
     
    function chk(cid,f)
      local player = Player(cid)
      if not Player(cid) then return false end
      local t = loadSet(cid)
      if not t then return false end
     
      for i=1,#f do
      if f[i] ~= t[i] then
      equip(player,nil,slot)
      break
      end
      end
      addEvent(chk,2000,cid,t)
    end
     
    function check_slot(aab, i)
      if i == 5 or i == 6 then
      if isWeapon(aab) or isShield(aab) or isBow(aab) then
      return true
      end
      else
      return true
      end
    return false
    end
     
    function equip(cid,item,slot)
    local player = Player(cid)
      local t = {}
      if item then
      local mm,sinal,qto = getSlotType(Item(item.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION))
      t[mm] = tonumber(qto)
      end
      for i=1,9 do
      if i ~= slot then
      if getPlayerSlotItem(player,i).itemid ~= 0 then
      local aab = getPlayerSlotItem(player,i).uid
      if aab and check_slot(aab,i) then
      for _ in Item(aab):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):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] > 20 and 20 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
      player:addCondition(conditionHP[tonumber(n)])
      ca[50] = 1
      doSendTutorial(player,19)
      elseif sl == 'mp' then
      player:addCondition(conditionMP[tonumber(n)])
      ca[51] = 1
      doSendTutorial(player,19)
      elseif sl == 'ml' then
      player:addCondition(conditionML[tonumber(n)])
      ca[52] = 1
      elseif sl == 'melee' then
      player:addCondition(conditionCLUB[tonumber(n)])
      ca[53] = 1
      elseif sl == 'shield' then
      player:addCondition(conditionSHI[tonumber(n)])
      ca[54] = 1
      elseif sl == 'dist' then
      player:addCondition(conditionDIST[tonumber(n)])
      ca[55] = 1
      end
      end
      if fu > 0 then
      for i=50,55 do
      if not ca[i] then
      doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i)
      end
      end
      else
      for i=50,55 do
      doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i)
      end
      end
      return true
    end
     
    function onLogin(player)
      equip(player,nil,slot)
    local cid = player:getId()
      addEvent(chk,2000,cid,loadSet(cid))
      return true
    end

    y en creaturescript.xml agregamos esta tag:

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

    y en el archivo login.lua registramos el evento:

    algunos servidor se registra asi

    Código:
    player:registerEvent("SlotLogin")

    y en los nuevo tfs 1.3 asi

    Código:
    'SlotLogin',


    bueno ahora si ustedes quieren eliminar el slot agregado del item.

    nos vamos a data/actions/scripts copiamos cualquier archivo y renombramos por slotr.lua

    Código:
    function getSlotType_full(n)
       if not n then
         return false
       end
       if n:match('%[(.+)%]') then
         n = n:match('%[(.+)%]')
         if n == '?' then
           return 0,n
         else
           return n
         end
       else
         return false
       end
    end
     
    function onUse(cid, item, fromPosition, itemEx, toPosition)
    item_slots_a = 0
    item_slots_n = ""
    item_slots_t = {}
       for _ in Item(itemEx.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):gmatch('(%[.-%])') do
         item_slots_a = item_slots_a + 1
         item_slots_t[item_slots_a] = getSlotType_full(_)
       end
      
       if item_slots_t[1] == nil then
         return false
       end
     
       for i = 1, #item_slots_t - 1 do
       item_slots_n = item_slots_n .. "[" .. item_slots_t[i] .. "]"
       end
      
       doRemoveItem(item.uid,1)
       doSendMagicEffect(toPosition,CONST_ME_MAGIC_RED)
       doSetItemSpecialDescription(itemEx.uid, item_slots_n)
       doPlayerSendTextMessage(cid,20,"Attribute removed.")
    return true
    end

    y en actions.xml agregamos esta tag:
    Código:

    <action itemid="8299" script="slotr.lua"/>


    nota: el slot solo llega al 20% si necesitan que llegue al 100% con gusto le explicare como modificarlo



    Última edición por [Admin] God Maya el Lun Jul 30, 2018 1:15 am, editado 1 vez



    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    vine96

    vine96
    Nuevo Miembro
    Nuevo Miembro
    Not working in tfs 1.2 and tfs 1.3
    Código:
    Lua Script Error: [CreatureScript Interface]
    data/creaturescripts/scripts/slot.lua:onLogin
    data/creaturescripts/scripts/slot.lua:89: attempt to call global 'isWeapon' (a nil value)
    stack traceback:
    [C]: in function 'isWeapon'
    data/creaturescripts/scripts/slot.lua:89: in function 'check_slot'
    data/creaturescripts/scripts/slot.lua:109: in function 'equip'
    data/creaturescripts/scripts/slot.lua:167: in function

    Error solucionado: [Tienes que estar registrado y conectado para ver este vínculo]
    Faltaba la funcion isWeapon en mi global.lua



    Última edición por [Adm] SevuOT el Lun Jul 30, 2018 2:22 am, editado 1 vez (Razón : Mas claridad!)

    Ver perfil de usuario

    daneraots

    daneraots
    Miembro
    Miembro
    Hola no me funciono, agrega los atributos, pero no se refleja en los skill. ayuda porfabor es server 10.98

    Ver perfil de usuario http://imperio.servegame.com/

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:Hola no me funciono, agrega los atributos, pero no se refleja en los skill. ayuda porfabor es server 10.98

    es muy probable que el registro en el creaturescripts necesite un reset del servidor o este mal agregado



    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    daneraots

    daneraots
    Miembro
    Miembro
    no se si el error, sea porque lo estoy jalando en 11.47 aunque ya me avia salido pero no se que me salio mal.

    Ver perfil de usuario http://imperio.servegame.com/

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:no se si el error, sea porque lo estoy jalando en 11.47 aunque ya me avia salido pero no se que me salio mal.

    pero que error sale



    isWeapon

    Código:
    function isWeapon(uid)
       local item = Item(uid)
       return isInArray({1,2,3,4,5}, ItemType(item:getId()):getWeaponType())
    end



    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com
    Bueno aquí les dejo la traducción correcta del ACTION slot.lua para TFS 1.x+
    Luego lo haré con los demás scripts.
    Código:
    local conf = {
        maxSlotCount = 3,
        ignoredIds = {}
    }
     
    function choose(...)
      local arg = {...}
      return arg[math.random(1,#arg)]
    end

    local 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

    local function getSlotCount(nam)
        local c = 0
        for _ in nam:gmatch('%[(.-)%]') do
            c = c+1
        end
        return c
    end
     
    function onUse(player, item, fromPosition, target, toPosition, isHotkey)
        if not isInArray(conf.ignoredIds, Item.getId(target)) and not isCreature(target) then
            local nam = Item.getAttribute(target, ITEM_ATTRIBUTE_DESCRIPTION)
            local number = math.random(0, 100)
            Player.sendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, string.format('Tu exito fue de %u%', number))
            if number <= 3 then
                Player.sendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, 'Your item broke in the proccess.')
                Item.remove(target, 1)
                Item.remove(item, 1)
                return false
            end
            if number <= 60 then
                Player.sendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, 'Fail to gain power.')
                Item.remove(item, 1)
                return false
            end
            if getSlotCount(nam) < conf.maxSlotCount then
                local l = choose('hp','mp','ml','melee','shield','dist')
                local p = getper()
                Position.sendMagicEffect(toPosition, 30)
                nam = nam..' ['..l..'.+'..p..'%]'
                Player.sendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, l..'.+'..p..'%')
                Item.setAttribute(target, ITEM_ATTRIBUTE_DESCRIPTION, nam)
                Item.remove(item, 1)
                return false
            else
                Player.sendTextMessage(player, MESSAGE_STATUS_CONSOLE_ORANGE, 'Slot limit reached.')
            end
        end
        return true
    end



    Si necesitas hospedaje para tu servidor usa este enlace y mira los buenos planes de Windows y Linux:
    Si tu cuenta de PayPal no esta verificada no importara, igual aceptan pagos con cuentas no verificadas.


    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 TRJEB8aSRYK5IulEU6ilJw
    Ver perfil de usuario

    Pldgames11

    Pldgames11
    Nuevo Miembro
    Nuevo Miembro
    Very Happy Resuelto Gracias Very Happy

    Ver perfil de usuario

    Pldgames11

    Pldgames11
    Nuevo Miembro
    Nuevo Miembro
    <action itemid="8299" script="slot.lua"/>

    poner el id de una spell rune que no tenga ninguna funcion por que si ponen el de alguna quest como por ejemplo el id de un item de quest les dara duplicate y no les funcionara

    Ver perfil de usuario

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    aqui estan las funciones para que funcione perfctamente esto

    Código:
    function getItemAttack(uid) return ItemType(getThing(uid).itemid):getAttack() end
      function getItemDefense(uid) return ItemType(getThing(uid).itemid):getDefense() end
      function getItemArmor(uid) return ItemType(getThing(uid).itemid):getArmor() end
      function getItemWeaponType(uid) return ItemType(getThing(uid).itemid):getWeaponType() end
      function isArmor(uid) if (getItemArmor(uid) ~= 0 and getItemWeaponType(uid) == 0) then return true else return false end end
      function isWeapon(uid) return (getItemWeaponType(uid) > 0 and getItemWeaponType(uid) ~= 4) end
      function isShield(uid) return getItemWeaponType(uid) == 4 end
      function isBow(uid) return (getItemWeaponType(uid) == 5 and (not ItemType(getThing(uid).itemid):isStackable())) end
     



    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    TheFlariuz

    TheFlariuz
    Miembro
    Miembro
    ya agregue todo pero me di cuenta que faltan atributos que quisiera saber como ponerle mas atributos todos las skill etc

    Ver perfil de usuario

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:ya agregue todo pero me di cuenta que faltan atributos que quisiera saber como ponerle mas atributos todos las skill etc

    aqui tienes con los nuevos atributos

    Código:


    local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}
    local conditionCRITCHANCE, conditionCRITDMG, conditionLIFELEECH, conditionLIFELEECHAMM, conditionMANALEECH, conditionMANALEECHAMM = {},{},{},{},{},{}
    for i=1,20 do
      conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50)
      setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i)
     
      conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51)
      setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i)
     
      conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52)
      setConditionParam(conditionML[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 100+i)
     
     
      conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53)
      setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_MELEEPERCENT, 100+i)
     
     
      conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54)
      setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i)
     
      conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55)
      setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i)

      conditionCRITCHANCE[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionCRITCHANCE[i], CONDITION_PARAM_SUBID, 56)
      setConditionParam(conditionCRITCHANCE[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionCRITCHANCE[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionCRITCHANCE[i], CONDITION_PARAM_SKILL_CRITICAL_HIT_CHANCE, 100+i)

      conditionCRITDMG[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionCRITDMG[i], CONDITION_PARAM_SUBID, 57)
      setConditionParam(conditionCRITDMG[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionCRITDMG[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionCRITDMG[i], CONDITION_PARAM_SKILL_CRITICAL_HIT_DAMAGE, 100+i)

      conditionLIFELEECH[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionLIFELEECH[i], CONDITION_PARAM_SUBID, 58)
      setConditionParam(conditionLIFELEECH[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionLIFELEECH[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionLIFELEECH[i], CONDITION_PARAM_SKILL_LIFE_LEECH_CHANCE, 100+i)

      conditionLIFELEECHAMM[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionLIFELEECHAMM[i], CONDITION_PARAM_SUBID, 59)
      setConditionParam(conditionLIFELEECHAMM[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionLIFELEECHAMM[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionLIFELEECHAMM[i], CONDITION_PARAM_SKILL_LIFE_LEECH_AMOUNT, 100+i)

      conditionMANALEECH[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionMANALEECH[i], CONDITION_PARAM_SUBID, 60)
      setConditionParam(conditionMANALEECH[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionMANALEECH[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionMANALEECH[i], CONDITION_PARAM_SKILL_MANA_LEECH_CHANCE, 100+i)

      conditionMANALEECHAMM[i] = createConditionObject(CONDITION_ATTRIBUTES)
      setConditionParam(conditionMANALEECHAMM[i], CONDITION_PARAM_SUBID, 61)
      setConditionParam(conditionMANALEECHAMM[i], CONDITION_PARAM_BUFF_SPELL, 1)
      setConditionParam(conditionMANALEECHAMM[i], CONDITION_PARAM_TICKS, -1)
      setConditionParam(conditionMANALEECHAMM[i], CONDITION_PARAM_SKILL_MANA_LEECH_AMOUNT, 100+i)

    end
     
    function getSlotType(n)
         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 player = Player(cid)
       if not player then return false end
         local t = {}
         for slot=1, 9 do
            t[slot] = ''
            local s = getPlayerSlotItem(player,slot).uid
            if s ~= 0 then
               t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
            end
         end
         return t
    end

    function chk(cid, f)
         local player = Player(cid)
         if not Player(cid) then return false end
            local t = loadSet(cid)
            if not t then return false end
           for i=1, #f do
               if f[i] ~= t[i] then
                  equip(player, nil, slot)
                  break
               end
            end
         addEvent(chk, 2000, cid, t)
    end

    function check_slot(aab, i)
         if i == 5 or i == 6 then
            if isWeapon(aab) or isShield(aab) or isBow(aab) then
               return true
            end
         else
            return true
         end
       return false
    end
     
    function equip(cid, item, slot)
       local player = Player(cid)
         local t = {}
         if item then
            local mm,sinal,qto = getSlotType(Item(item.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION))
            t[mm] = tonumber(qto)
         end
         for i=1,9 do
            if i ~= slot then
               if getPlayerSlotItem(player,i).itemid ~= 0 then
                  local aab = getPlayerSlotItem(player,i).uid
                  if aab and check_slot(aab,i) then
                     for _ in Item(aab):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):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] > 20 and 20 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
               player:addCondition(conditionHP[tonumber(n)])
               ca[50] = 1
               doSendTutorial(player,19)
            elseif sl == 'mp' then
               player:addCondition(conditionMP[tonumber(n)])
               ca[51] = 1
               doSendTutorial(player,19)
            elseif sl == 'ml' then
               player:addCondition(conditionML[tonumber(n)])
               ca[52] = 1
            elseif sl == 'melee' then
               player:addCondition(conditionCLUB[tonumber(n)])
               ca[53] = 1
            elseif sl == 'shield' then
               player:addCondition(conditionSHI[tonumber(n)])
               ca[54] = 1
            elseif sl == 'dist' then
               player:addCondition(conditionDIST[tonumber(n)])
               ca[55] = 1
            elseif sl == 'critChance' then
               player:addCondition(conditionCRITCHANCE[tonumber(n)])
               ca[56] = 1
            elseif sl == 'critAmount' then
               player:addCondition(conditionCRITDMG[tonumber(n)])
               ca[57] = 1
            elseif sl == 'leechHp' then
               player:addCondition(conditionLIFELEECH[tonumber(n)])
               ca[58] = 1
            elseif sl == 'leechHpAm' then
               player:addCondition(conditionLIFELEECHAMM[tonumber(n)])
               ca[59] = 1
            elseif sl == 'leechMp' then
               player:addCondition(conditionMANALEECH[tonumber(n)])
               ca[60] = 1
            elseif sl == 'leechMpAm' then
               player:addCondition(conditionMANALEECHAMM[tonumber(n)])
               ca[61] = 1
            end
         end
         if fu > 0 then
            for i = 50, 61 do
               if not ca[i] then
                  doRemoveCondition(player:getId(), CONDITION_ATTRIBUTES, i)
               end
            end
         else
            for i = 50, 61 do
               doRemoveCondition(player:getId(), CONDITION_ATTRIBUTES, i)
            end
         end
         return true
    end
     
    function onLogin(player)
       equip(player, nil, slot)
       local cid = player:getId()
       addEvent(chk, 2000, cid, loadSet(cid))
       return true
    end


    y para el action, cambias las opciones: local l = choose('hp','mp','ml','melee','shield','dist', 'critChance', 'critAmount', 'leechHp', 'leechHpAm', 'leechMp', 'leechMpAm')

    [Tienes que estar registrado y conectado para ver este vínculo]

    modificas esta linea
    Código:

    local l = choose('hp','mp','ml','melee','shield','dist')

    por esta

    Código:

    local l = choose('hp','mp','ml','melee','shield','dist', 'critChance', 'critAmount', 'leechHp', 'leechHpAm', 'leechMp', 'leechMpAm')

    de igual amnera si usa el action del tema principal o de [Adm] SevuOT como te postee arriba modificas esa linea



    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    serodi

    serodi
    Nuevo Miembro
    Nuevo Miembro
    ayuda. sale este error al tratar de conectar al servidor.
    [14:18:24.923] Account Manager has logged in.

    [14:18:24.925] [Error - CreatureScript Interface]
    [14:18:24.926] data/creaturescripts/scripts/slot.lua:onLogin
    [14:18:24.927] Description:
    [14:18:24.928] data/creaturescripts/scripts/slot.lua:136: attempt to call global 'Player' (a nil value)
    [14:18:24.929] stack traceback:
    [14:18:24.930] data/creaturescripts/scripts/slot.lua:136: in function 'equip'
    [14:18:24.930] data/creaturescripts/scripts/slot.lua:222: in function <data/creaturescripts/scripts/slot.lua:221>
    [14:18:25.005] Account Manager has logged out.

    Ver perfil de usuario

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:ayuda. sale este error al tratar de conectar al servidor.
    [14:18:24.923] Account Manager has logged in.

    [14:18:24.925] [Error - CreatureScript Interface]
    [14:18:24.926] data/creaturescripts/scripts/slot.lua:onLogin
    [14:18:24.927] Description:
    [14:18:24.928] data/creaturescripts/scripts/slot.lua:136: attempt to call global 'Player' (a nil value)
    [14:18:24.929] stack traceback:
    [14:18:24.930] data/creaturescripts/scripts/slot.lua:136: in function 'equip'
    [14:18:24.930] data/creaturescripts/scripts/slot.lua:222: in function <data/creaturescripts/scripts/slot.lua:221>
    [14:18:25.005] Account Manager has logged out.


    pruebe asi

    Código:

            local conditionMP,conditionHP,conditionML,conditionCLUB,conditionSHI,conditionDIST,conditionAMP = {},{},{},{},{},{},{}
            for i=1,20 do
              conditionHP[i] = createConditionObject(CONDITION_ATTRIBUTES)
              setConditionParam(conditionHP[i], CONDITION_PARAM_SUBID, 50)
              setConditionParam(conditionHP[i], CONDITION_PARAM_BUFF_SPELL, 1)
              setConditionParam(conditionHP[i], CONDITION_PARAM_TICKS, -1)
              setConditionParam(conditionHP[i], CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+i)
           
              conditionMP[i] = createConditionObject(CONDITION_ATTRIBUTES)
              setConditionParam(conditionMP[i], CONDITION_PARAM_SUBID, 51)
              setConditionParam(conditionMP[i], CONDITION_PARAM_BUFF_SPELL, 1)
              setConditionParam(conditionMP[i], CONDITION_PARAM_TICKS, -1)
              setConditionParam(conditionMP[i], CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, 100+i)
           
              conditionML[i] = createConditionObject(CONDITION_ATTRIBUTES)
              setConditionParam(conditionML[i], CONDITION_PARAM_SUBID, 52)
              setConditionParam(conditionML[i], CONDITION_PARAM_BUFF_SPELL, 1)
              setConditionParam(conditionML[i], CONDITION_PARAM_TICKS, -1)
              setConditionParam(conditionML[i], CONDITION_PARAM_STAT_MAGICPOINTSPERCENT, 100+i)
           
           
              conditionCLUB[i] = createConditionObject(CONDITION_ATTRIBUTES)
              setConditionParam(conditionCLUB[i], CONDITION_PARAM_SUBID, 53)
              setConditionParam(conditionCLUB[i], CONDITION_PARAM_BUFF_SPELL, 1)
              setConditionParam(conditionCLUB[i], CONDITION_PARAM_TICKS, -1)
              setConditionParam(conditionCLUB[i], CONDITION_PARAM_SKILL_MELEEPERCENT, 100+i)
           
           
              conditionSHI[i] = createConditionObject(CONDITION_ATTRIBUTES)
              setConditionParam(conditionSHI[i], CONDITION_PARAM_SUBID, 54)
              setConditionParam(conditionSHI[i], CONDITION_PARAM_BUFF_SPELL, 1)
              setConditionParam(conditionSHI[i], CONDITION_PARAM_TICKS, -1)
              setConditionParam(conditionSHI[i], CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+i)
           
              conditionDIST[i] = createConditionObject(CONDITION_ATTRIBUTES)
              setConditionParam(conditionDIST[i], CONDITION_PARAM_SUBID, 55)
              setConditionParam(conditionDIST[i], CONDITION_PARAM_BUFF_SPELL, 1)
              setConditionParam(conditionDIST[i], CONDITION_PARAM_TICKS, -1)
              setConditionParam(conditionDIST[i], CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+i)
            end
           
            function getSlotType(n)
              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 player = Player(cid)
            if not player then return false end
              local t = {}
              for slot=1,9 do
              t[slot] = ''
              local s = getPlayerSlotItem(player,slot).uid
              if s ~= 0 then
              t[slot] = Item(s):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION)
              end
              end
              return t
            end
           
            function chk(cid,f)
              local player = Player(cid)
              if not Player(cid) then return false end
              local t = loadSet(cid)
              if not t then return false end
           
              for i=1,#f do
              if f[i] ~= t[i] then
              equip(player,nil,slot)
              break
              end
              end
              addEvent(chk,2000,cid,t)
            end
           
            function check_slot(aab, i)
              if i == 5 or i == 6 then
              if isWeapon(aab) or isShield(aab) or isBow(aab) then
              return true
              end
              else
              return true
              end
            return false
            end
           
            function equip(player,item,slot)
       
              local t = {}
              if item then
              local mm,sinal,qto = getSlotType(Item(item.uid):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION))
              t[mm] = tonumber(qto)
              end
              for i=1,9 do
              if i ~= slot then
              if getPlayerSlotItem(player,i).itemid ~= 0 then
              local aab = getPlayerSlotItem(player,i).uid
              if aab and check_slot(aab,i) then
              for _ in Item(aab):getAttribute(ITEM_ATTRIBUTE_DESCRIPTION):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] > 20 and 20 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
              player:addCondition(conditionHP[tonumber(n)])
              ca[50] = 1
              doSendTutorial(player,19)
              elseif sl == 'mp' then
              player:addCondition(conditionMP[tonumber(n)])
              ca[51] = 1
              doSendTutorial(player,19)
              elseif sl == 'ml' then
              player:addCondition(conditionML[tonumber(n)])
              ca[52] = 1
              elseif sl == 'melee' then
              player:addCondition(conditionCLUB[tonumber(n)])
              ca[53] = 1
              elseif sl == 'shield' then
              player:addCondition(conditionSHI[tonumber(n)])
              ca[54] = 1
              elseif sl == 'dist' then
              player:addCondition(conditionDIST[tonumber(n)])
              ca[55] = 1
              end
              end
              if fu > 0 then
              for i=50,55 do
              if not ca[i] then
              doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i)
              end
              end
              else
              for i=50,55 do
              doRemoveCondition(player:getId(),CONDITION_ATTRIBUTES,i)
              end
              end
              return true
            end
           
            function onLogin(player)
              equip(player,nil,slot)
            local cid = player:getId()
              addEvent(chk,2000,cid,loadSet(cid))
              return true
            end




    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    serodi

    serodi
    Nuevo Miembro
    Nuevo Miembro
    [18:22:06.281] Polioth has logged in.

    [18:22:06.284] [Error - CreatureScript Interface]
    [18:22:06.285] data/creaturescripts/scripts/slot.lua:onLogin
    [18:22:06.285] Description:
    [18:22:06.286] data/creaturescripts/scripts/slot.lua:111: attempt to call global 'Item' (a nil value)
    [18:22:06.287] stack traceback:
    [18:22:06.287]  data/creaturescripts/scripts/slot.lua:111: in function 'equip'
    [18:22:06.288]  data/creaturescripts/scripts/slot.lua:168: in function <data/creaturescripts/scripts/slot.lua:167>
    [18:22:06.350] Polioth has logged out.
    ahora me aparece asi



    este si me funciona lo consegui en otro lugar, pero quiero agregar el removerdor de slot y noc como hacerlo uso el tuyo y me da error igualmente
    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_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_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_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_SUBID, 53)
    --- 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_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 == '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,1000,cid,loadSet(cid)) -- Here we check!
           return TRUE
    end



    al usar removedor me aparece esto


    [18:29:58.691] [Error - Action Interface]
    [18:29:58.693] data/actions/scripts/slotremover.lua:onUse
    [18:29:58.696] Description:
    [18:29:58.697] data/actions/scripts/slotremover.lua:21: attempt to call global 'Item' (a nil value)
    [18:29:58.697] stack traceback:
    [18:29:58.698]  data/actions/scripts/slotremover.lua:21: in function <data/actions/scripts/slotremover.lua:17>

    Ver perfil de usuario

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:[18:22:06.281] Polioth has logged in.

    [18:22:06.284] [Error - CreatureScript Interface]
    [18:22:06.285] data/creaturescripts/scripts/slot.lua:onLogin
    [18:22:06.285] Description:
    [18:22:06.286] data/creaturescripts/scripts/slot.lua:111: attempt to call global 'Item' (a nil value)
    [18:22:06.287] stack traceback:
    [18:22:06.287]  data/creaturescripts/scripts/slot.lua:111: in function 'equip'
    [18:22:06.288]  data/creaturescripts/scripts/slot.lua:168: in function <data/creaturescripts/scripts/slot.lua:167>
    [18:22:06.350] Polioth has logged out.
    ahora me aparece asi



    este si me funciona lo consegui en otro lugar, pero quiero agregar el removerdor de slot y noc como hacerlo uso el tuyo y me da error igualmente
    Spoiler:
    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_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_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_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_SUBID, 53)
    --- 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_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 == '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,1000,cid,loadSet(cid)) -- Here we check!
           return TRUE
    end



    al usar removedor me aparece esto


    [18:29:58.691] [Error - Action Interface]
    [18:29:58.693] data/actions/scripts/slotremover.lua:onUse
    [18:29:58.696] Description:
    [18:29:58.697] data/actions/scripts/slotremover.lua:21: attempt to call global 'Item' (a nil value)
    [18:29:58.697] stack traceback:
    [18:29:58.698]  data/actions/scripts/slotremover.lua:21: in function <data/actions/scripts/slotremover.lua:17>

    creo que tu problema con el sistema es ue no tienes esto agregado a tu global.lua

    Código:

     function getItemAttack(uid) return ItemType(getThing(uid).itemid):getAttack() end
       function getItemDefense(uid) return ItemType(getThing(uid).itemid):getDefense() end
       function getItemArmor(uid) return ItemType(getThing(uid).itemid):getArmor() end
       function getItemWeaponType(uid) return ItemType(getThing(uid).itemid):getWeaponType() end
       function isArmor(uid) if (getItemArmor(uid) ~= 0 and getItemWeaponType(uid) == 0) then return true else return false end end
       function isWeapon(uid) return (getItemWeaponType(uid) > 0 and getItemWeaponType(uid) ~= 4) end
       function isShield(uid) return getItemWeaponType(uid) == 4 end
       function isBow(uid) return (getItemWeaponType(uid) == 5 and (not ItemType(getThing(uid).itemid):isStackable())) end



    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    serodi

    serodi
    Nuevo Miembro
    Nuevo Miembro
    nose donde lo debo colocar, creo q es otra version , es el mismo ot que publicaste aca [Tienes que estar registrado y conectado para ver este vínculo] solo que lo saque de otra pagina

    Ver perfil de usuario

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:nose donde lo debo colocar, creo q es otra version , es el mismo ot que publicaste aca [Tienes que estar registrado y conectado para ver este vínculo] solo que lo saque de otra pagina

    amigo este sistema es para tfs 1.3 protocolo 11++



    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    serodi

    serodi
    Nuevo Miembro
    Nuevo Miembro
    me pude modificar cada cosa y lo solucione xd hehe gracias igualmente

    de pronto no sabe de la script upgrade system por experiencia de monster? ejemplo matabas un monster y el item ganaba cierto % de exp hasta llegar un limite y subia de nivel

    asi me quedo la config pero el problema que me borra el nombre del item tambien de pronto sabes como solucionarlo?

    function getSlotType_full(n)
      if not n then
        return false
      end
      if n:match('%[(.+)%]') then
        n = n:match('%[(.+)%]')
        if n == '?' then
          return 0,n
        else
          return n
        end
      else
        return false
      end
    end

    function onUse(cid, item, fromPosition, itemEx, toPosition)
    item_slots_a = 0
    item_slots_n = ""
    item_slots_t = {}
      for _ in getItemName(itemEx.uid):gmatch('(%[.-%])') do
        item_slots_a = item_slots_a + 1
        item_slots_t[item_slots_a] = getSlotType_full(_)
      end
     
      if item_slots_t[1] == nil then
        return false
      end

      for i = 1, #item_slots_t - 1 do
      item_slots_n = item_slots_n .. "[" .. item_slots_t[i] .. "]"
      end
     
      doRemoveItem(item.uid,1)
      doSendMagicEffect(toPosition,CONST_ME_MAGIC_RED)
      doItemSetAttribute(itemEx.uid,'name', item_slots_n)
      doPlayerSendTextMessage(cid,20,"Attribute removed.")
    return true
    end



    Última edición por serodi el Sáb Mar 09, 2019 9:11 pm, editado 1 vez

    Ver perfil de usuario

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:me pude modificar cada cosa y lo solucione xd hehe gracias igualmente

    de pronto no sabe de la script upgrade system por experiencia de monster? ejemplo matabas un monster y el item ganaba cierto % de exp hasta llegar un limite y subia de nivel

    ese es el upgrade para tfs menores



    Última edición por [Admin] God Maya el Sáb Mar 09, 2019 9:50 pm, editado 1 vez



    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    serodi

    serodi
    Nuevo Miembro
    Nuevo Miembro
    me pide permiso para entrar a ese link,
    asi me quedo la config pero el problema que me borra el nombre del item tambien de pronto sabes como solucionarlo?

    function getSlotType_full(n)
    if not n then
    return false
    end
    if n:match('%[(.+)%]') then
    n = n:match('%[(.+)%]')
    if n == '?' then
    return 0,n
    else
    return n
    end
    else
    return false
    end
    end

    function onUse(cid, item, fromPosition, itemEx, toPosition)
    item_slots_a = 0
    item_slots_n = ""
    item_slots_t = {}
    for _ in getItemName(itemEx.uid):gmatch('(%[.-%])') do
    item_slots_a = item_slots_a + 1
    item_slots_t[item_slots_a] = getSlotType_full(_)
    end

    if item_slots_t[1] == nil then
    return false
    end

    for i = 1, #item_slots_t - 1 do
    item_slots_n = item_slots_n .. "[" .. item_slots_t[i] .. "]"
    end

    doRemoveItem(item.uid,1)
    doSendMagicEffect(toPosition,CONST_ME_MAGIC_RED)
    doItemSetAttribute(itemEx.uid,'name', item_slots_n)
    doPlayerSendTextMessage(cid,20,"Attribute removed.")
    return true
    end

    Ver perfil de usuario

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    [Tienes que estar registrado y conectado para ver este vínculo] escribió:me pide permiso para entrar a ese link,
    asi me quedo la config pero el problema que me borra el nombre del item tambien de pronto sabes como solucionarlo?

    function getSlotType_full(n)
    if not n then
    return false
    end
    if n:match('%[(.+)%]') then
    n = n:match('%[(.+)%]')
    if n == '?' then
    return 0,n
    else
    return n
    end
    else
    return false
    end
    end

    function onUse(cid, item, fromPosition, itemEx, toPosition)
    item_slots_a = 0
    item_slots_n = ""
    item_slots_t = {}
    for _ in getItemName(itemEx.uid):gmatch('(%[.-%])') do
    item_slots_a = item_slots_a + 1
    item_slots_t[item_slots_a] = getSlotType_full(_)
    end

    if item_slots_t[1] == nil then
    return false
    end

    for i = 1, #item_slots_t - 1 do
    item_slots_n = item_slots_n .. "[" .. item_slots_t[i] .. "]"
    end

    doRemoveItem(item.uid,1)
    doSendMagicEffect(toPosition,CONST_ME_MAGIC_RED)
    doItemSetAttribute(itemEx.uid,'name', item_slots_n)
    doPlayerSendTextMessage(cid,20,"Attribute removed.")
    return true
    end

    los siento no era ese link

    [Tienes que estar registrado y conectado para ver este vínculo]



    [Sistema] Slot System Tfs 1.3, Tfs 1.2, Tfs 1.1 YNU5B25
    Ver perfil de usuario https://www.tibiaface.com

    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.

    Temas Recomendados×+

       

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