• TibiaFace

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

    .
    demo menumenu

    Afiliados



    Votar:

    [Spells] Tabla de Storages

    Compartir:

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

    1default [Spells] Tabla de Storages el Miér Dic 09, 2020 9:35 pm

    Rha

    Rha
    Nuevo Miembro
    Nuevo Miembro
    Descripcion escribió:Buen día, utilizo un TFS 0.3.6 Criyim Damson. Tengo un problema estoy usando una spell que tiene en el function onCastSpell(cid, var)  lo siguiente

    Código:
    if getPlayerStorageValue(cid,6000) >= 1 then

    La spell funciona correctamente el problema es que con esta configuración esta spell solo funcionara con el storage 6000 y si el char no lo tiene no funcionara. Eso es correcto y era mas o menos lo que quería al poner esto en la spell. Mi pregunta es ahora. ¿Cómo creo una tabla en lib o en spell/lib que tenga una lista de storages y jalo el contenido de esta tabla a dicha linea de codigo arriba?.

    mas o menos así creo una tabla (que no se donde crearla)

    Código:
    storagestable= {
      [6000] = {10},
      [6001] = {22},
     [6002] = {31}
    }

    y luego dentro de la spell que diga algo así

    Código:
    "si tieneselstorage(player,storagestable) >=1 then"

    algo así, ósea quiero que la spell reconozca si el jugador tiene uno de los storages de la tabla. Sin crear la tabla dentro de la misma spell. También quisiera poder crear un local que llame al contenido de la tabla de igual forma.

    Código:
    local item = getPlayerStorageValue(cid,storagetable)

    usare esta tabla para muchas spells y no quisiera estar modificando una por una las spells al momento de modificar la tabla. Muchas Gracias Smile
    Captura del Error escribió:Imagen del error: [Spells] Tabla de Storages Empty
    El error radica en: Spells

    2default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 10:07 am

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    crea un aarchivo en data/lib con el nombre de spells.lua y pega esto dentro

    Código:
          _spell_config_str = {
      [1] = {storageID = 45645, value = 1},
      [2] = {storageID = 45089, value = 1},
      [3] = {storageID = 45088, value = 1},
      [4] = {storageID = 45086, value = 1}
    }



    ahora en tu seplls agregas esto


    Código:
    local configs = _spell_config_str

    if  getPlayerStorageValue(cid, configs[i].storageID) >= cofings[i].value then

    end



    [Spells] Tabla de Storages YNU5B25
    https://www.tibiaface.com

    3default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 12:37 pm

    Rha

    Rha
    Nuevo Miembro
    Nuevo Miembro
    hola! gracias por ayudarme. Tengo este problema, lo eh colocado así
    Código:

    function onCastSpell(cid, var)
       local configs = _spell_config_str
       local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat0 = combat0}   
       if getPlayerStorageValue(cid, configs[i].storageID) >= cofings[i].value then
          if getPlayerStorageValue(cid,70101) <= 10 then
             if getPlayerStorageValue(cid,70102) == 1000 then             
                setPlayerStorageValue(cid,70102,0)
                setPlayerStorageValue(cid,70101, getPlayerStorageValue(cid,70101)+1)
                onCastSpell1(parameters)
                onCastSpell0(parameters)
                addEvent(onCastSpell2, 700, parameters)
             elseif getPlayerStorageValue(cid,70102) <= 1000 then      
                onCastSpell1(parameters)
                onCastSpell0(parameters)
                addEvent(onCastSpell2, 700, parameters)
                setPlayerStorageValue(cid,70102, getPlayerStorageValue(cid,70102)+1)
             end
          else
             doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "No tienes esta Spell")
          end
       else
          doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Necesitas una espada")
       end   
    return true
    end

    Pero me tira el siguiente error.

    Código:

    [10/12/2020 11:35:06] [Error - Spell Interface]
    [10/12/2020 11:35:06] data/spells/scripts/pruebaspell.lua:onCastSpell
    [10/12/2020 11:35:06] Description:
    [10/12/2020 11:35:06] data/spells/scripts/pruebaspell.lua:74: attempt to index field '?' (a nil value)
    [10/12/2020 11:35:06] stack traceback:
    [10/12/2020 11:35:06]    data/spells/scripts/pruebaspell.lua:74: in function <data/spells/scripts/pruebaspell.lua:71>

    4default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 2:53 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    dice que tene un error en la linea pruebaspell.lua:74: 74 no puedo ver esa linea ya que la spells esta incompleta



    [Spells] Tabla de Storages YNU5B25
    https://www.tibiaface.com

    5default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 2:59 pm

    Rha

    Rha
    Nuevo Miembro
    Nuevo Miembro
    Bueno, esta es la spell completa, pero la linea q indica es en la, function onCastSpell(cid, var)

    Código:
    local combat1 = createCombatObject()
    setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
    setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE)

    local combat0 = createCombatObject()
    setCombatParam(combat0, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_BLUE)

    local combat2 = createCombatObject()
    setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
    setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
    setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

    function onGetFormulaValues(cid, level)
        local base = getPlayerStorageValue(cid,70110)
        local nspell = getPlayerStorageValue(cid,70111)
        local result = base + nspell
        return -result,-result
    end

    local arr1 = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 3, 0, 0},
    }

    local arr0 = {
    {0, 0, 0, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 2, 0, 0},
    }

    local arr2 = {
    {0, 0, 0, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 2, 0, 0},
    }

    local area1 = createCombatArea(arr1)
    local area0 = createCombatArea(arr0)
    local area2 = createCombatArea(arr2)

    setCombatArea(combat1, area1)
    setCombatArea(combat0, area0)
    setCombatArea(combat2, area2)

    local function onCastSpell1(parameters)
        doCombat(parameters.cid, parameters.combat1, parameters.var)
    end

    local function onCastSpell0(parameters)
        doCombat(parameters.cid, parameters.combat0, parameters.var)
    end

    local function onCastSpell2(parameters)
        doCombat(parameters.cid, parameters.combat2, parameters.var)
    end

    setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

    function onCastSpell(cid, var)
       local configs = _spell_config_str
       local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat0 = combat0}   
       if getPlayerStorageValue(cid, configs[i].storageID) >= cofings[i].value then
          if getPlayerStorageValue(cid,70101) <= 10 then
             if getPlayerStorageValue(cid,70102) == 1000 then             
                setPlayerStorageValue(cid,70102,0)
                setPlayerStorageValue(cid,70101, getPlayerStorageValue(cid,70101)+1)
                onCastSpell1(parameters)
                onCastSpell0(parameters)
                addEvent(onCastSpell2, 700, parameters)
             elseif getPlayerStorageValue(cid,70102) <= 1000 then      
                onCastSpell1(parameters)
                onCastSpell0(parameters)
                addEvent(onCastSpell2, 700, parameters)
                setPlayerStorageValue(cid,70102, getPlayerStorageValue(cid,70102)+1)
             end
          else
             doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "No tienes esta Spell")
          end
       else
          doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Necesitas una espada")
       end   
    return true
    end

    6default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 3:04 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    coloca

    local configs = _spell_config_str

    fuera de la function onCastSpell(cid, var)



    [Spells] Tabla de Storages YNU5B25
    https://www.tibiaface.com

    7default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 3:33 pm

    Rha

    Rha
    Nuevo Miembro
    Nuevo Miembro
    sale este error en consola:
    Código:
    [10/12/2020 14:32:16] [Error - Spell Interface]
    [10/12/2020 14:32:16] data/spells/scripts/pruebaspell.lua:onCastSpell
    [10/12/2020 14:32:16] Description:
    [10/12/2020 14:32:16] data/spells/scripts/pruebaspell.lua:75: attempt to index field '?' (a nil value)
    [10/12/2020 14:32:16] stack traceback:
    [10/12/2020 14:32:16]    data/spells/scripts/pruebaspell.lua:75: in function <data/spells/scripts/pruebaspell.lua:73>

    aquí la spell:

    Código:
    local combat1 = createCombatObject()
    setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
    setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
    setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE)

    local combat0 = createCombatObject()
    setCombatParam(combat0, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_BLUE)

    local combat2 = createCombatObject()
    setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
    setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
    setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

    function onGetFormulaValues(cid, level)
        local base = getPlayerStorageValue(cid,70110)
        local nspell = getPlayerStorageValue(cid,70111)
       local configs = _spell_config_str
        local result = base + nspell + configs
        return -result,-result
    end

    local arr1 = {
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 3, 0, 0},
    }

    local arr0 = {
    {0, 0, 0, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 2, 0, 0},
    }

    local arr2 = {
    {0, 0, 0, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 1, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0, 0},
    {0, 0, 2, 0, 0},
    }

    local area1 = createCombatArea(arr1)
    local area0 = createCombatArea(arr0)
    local area2 = createCombatArea(arr2)

    setCombatArea(combat1, area1)
    setCombatArea(combat0, area0)
    setCombatArea(combat2, area2)

    local function onCastSpell1(parameters)
        doCombat(parameters.cid, parameters.combat1, parameters.var)
    end

    local function onCastSpell0(parameters)
        doCombat(parameters.cid, parameters.combat0, parameters.var)
    end

    local function onCastSpell2(parameters)
        doCombat(parameters.cid, parameters.combat2, parameters.var)
    end

    setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

    local configs = _spell_config_str

    function onCastSpell(cid, var)
       local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat0 = combat0}   
       if getPlayerStorageValue(cid, configs[i].storageID) >= cofings[i].value then
          if getPlayerStorageValue(cid,70101) <= 10 then
             if getPlayerStorageValue(cid,70102) == 1000 then             
                setPlayerStorageValue(cid,70102,0)
                setPlayerStorageValue(cid,70101, getPlayerStorageValue(cid,70101)+1)
                onCastSpell1(parameters)
                onCastSpell0(parameters)
                addEvent(onCastSpell2, 700, parameters)
             elseif getPlayerStorageValue(cid,70102) <= 1000 then      
                onCastSpell1(parameters)
                onCastSpell0(parameters)
                addEvent(onCastSpell2, 700, parameters)
                setPlayerStorageValue(cid,70102, getPlayerStorageValue(cid,70102)+1)
             end
          else
             doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "No tienes esta Spell")
          end
       else
          doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Necesitas una espada")
       end   
    return true
    end

    8default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 6:22 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    attempt to index field '?' (a nil value)

    esto es procupante ya que no reconoce o no esta leyendo desde la posicion dice que no encuentra valor para comparar pues parece que no existiera o quisas usted coloco el archivo en lib y no reinicio el servidor



    [Spells] Tabla de Storages YNU5B25
    https://www.tibiaface.com

    9default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 7:30 pm

    Rha

    Rha
    Nuevo Miembro
    Nuevo Miembro
    Si coloque el archivo en data/lib como se me indico, además cada que usted responde el mensaje, yo vuelvo a prender todo el servidor para probar el nuevo cambio sugerido.

    [Spells] Tabla de Storages Arch10

    y el contenido:
    Código:
    _spell_config_str = {
      [1] = {storageID = 6000, value = 1},
      [2] = {storageID = 6001, value = 1},
      [3] = {storageID = 45088, value = 1},
      [4] = {storageID = 45086, value = 1}
    }

    10default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 8:30 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    prueba asi

    Código:

            local combat1 = createCombatObject()
            setCombatParam(combat1, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
            setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
            setCombatParam(combat1, COMBAT_PARAM_HITCOLOR, COLOR_ORANGE)

            local combat0 = createCombatObject()
            setCombatParam(combat0, COMBAT_PARAM_EFFECT, CONST_ME_SOUND_BLUE)

            local combat2 = createCombatObject()
            setCombatParam(combat2, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
            setCombatParam(combat2, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
            setCombatParam(combat2, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)

            function onGetFormulaValues(cid, level)
                local base = getPlayerStorageValue(cid,70110)
                local nspell = getPlayerStorageValue(cid,70111)
              local configs = _spell_config_str
                local result = base + nspell + configs
                return -result,-result
            end

            local arr1 = {
            {0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0},
            {0, 0, 3, 0, 0},
            }

            local arr0 = {
            {0, 0, 0, 0, 0},
            {0, 0, 1, 0, 0},
            {0, 0, 1, 0, 0},
            {0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0},
            {0, 0, 2, 0, 0},
            }

            local arr2 = {
            {0, 0, 0, 0, 0},
            {0, 0, 1, 0, 0},
            {0, 0, 1, 0, 0},
            {0, 0, 0, 0, 0},
            {0, 0, 0, 0, 0},
            {0, 0, 2, 0, 0},
            }

            local area1 = createCombatArea(arr1)
            local area0 = createCombatArea(arr0)
            local area2 = createCombatArea(arr2)

            setCombatArea(combat1, area1)
            setCombatArea(combat0, area0)
            setCombatArea(combat2, area2)

            local function onCastSpell1(parameters)
                doCombat(parameters.cid, parameters.combat1, parameters.var)
            end

            local function onCastSpell0(parameters)
                doCombat(parameters.cid, parameters.combat0, parameters.var)
            end

            local function onCastSpell2(parameters)
                doCombat(parameters.cid, parameters.combat2, parameters.var)
            end

            setCombatCallback(combat2, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")

            local configs = _spell_config_str

            function onCastSpell(cid, var)
              local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat0 = combat0} 
       

    for i = 1, #configs do
      if getPlayerStorageValue(cid, configs[i].storageID) >= cofings[i].value then
          if getPlayerStorageValue(cid,70101) <= 10 then
            if getPlayerStorageValue(cid,70102) == 1000 then           
                setPlayerStorageValue(cid,70102,0)
                setPlayerStorageValue(cid,70101, getPlayerStorageValue(cid,70101)+1)
                onCastSpell1(parameters)
                onCastSpell0(parameters)
                addEvent(onCastSpell2, 700, parameters)
            elseif getPlayerStorageValue(cid,70102) <= 1000 then     
                onCastSpell1(parameters)
                onCastSpell0(parameters)
                addEvent(onCastSpell2, 700, parameters)
                setPlayerStorageValue(cid,70102, getPlayerStorageValue(cid,70102)+1)
            end
          else
            doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "No tienes esta Spell")
          end
      else
          doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Necesitas una espada")
      end
    end

            return true
            end



    [Spells] Tabla de Storages YNU5B25
    https://www.tibiaface.com

    11default Re: [Spells] Tabla de Storages el Jue Dic 10, 2020 9:42 pm

    Rha

    Rha
    Nuevo Miembro
    Nuevo Miembro
    Así sale en la consola D:
    Código:
    [10/12/2020 20:41:41] [Error - Spell Interface]
    [10/12/2020 20:41:41] data/spells/scripts/pruebaspell.lua:onCastSpell
    [10/12/2020 20:41:41] Description:
    [10/12/2020 20:41:41] data/spells/scripts/pruebaspell.lua:78: attempt to index global 'cofings' (a nil value)
    [10/12/2020 20:41:41] stack traceback:
    [10/12/2020 20:41:41]    data/spells/scripts/pruebaspell.lua:78: in function <data/spells/scripts/pruebaspell.lua:73>



    Hola buen día! eh probado esto:

    Código:
    function onStepIn(cid, item, position, fromPosition)
    local posicion = {x=1360, y=2917, z=7}
    local configs = _spell_config_str

    if item.actionid == 1001 then   
       if getPlayerStorageValue(cid,30000) == 1 then
       if getPlayerStorageValue(cid, configs[i].storageID) >= cofings[i].value then
          print "pepe"
          doTeleportThing(cid, posicion, false)
             if getPlayerStorageValue(cid,300000) == 100 then
                doCreatureSay(cid, "Outside it looks different from how I remember, maybe I should talk to the girl next to me first!", TALKTYPE_ORANGE_1)
             elseif getPlayerStorageValue(cid,300000) == 101 then
                doCreatureSay(cid, "Afuera se ve diferente a como lo recuerdo, tal vez deberia hablar primero con la chica a mi lado!", TALKTYPE_ORANGE_1)
             elseif getPlayerStorageValue(cid,300000) == 102 then
                doCreatureSay(cid, "Por fora parece diferente de como eu me lembro, talvez eu deva falar com a garota ao meu lado primeiro!", TALKTYPE_ORANGE_1)
             end
       elseif getPlayerStorageValue(cid,30000) == 2 then
          setPlayerStorageValue(cid,30000,3)
          setPlayerStorageValue(cid,30001,1) --Jefe de Guardia - Torin
          setPlayerStorageValue(cid,30002,0) --Comida
          setPlayerStorageValue(cid,30003,0) --Recursos
          setPlayerStorageValue(cid,30004,0) --Ropa
          setPlayerStorageValue(cid,30005,0) --Defensa
          setPlayerStorageValue(cid,30006,0) --Escuela
          doSendMagicEffect(position, CONST_ME_MAGIC_BLUE)
          doSendMagicEffect(position, CONST_ME_YALAHARIGHOST)
             if getPlayerStorageValue(cid,300000) == 100 then
                doCreatureSay(cid, "ISOLFENA ACI - CHAPTER ONE.", TALKTYPE_ORANGE_1)
             elseif getPlayerStorageValue(cid,300000) == 101 then
                doCreatureSay(cid, "ISOLFENA ACI - CAPITULO UNO.", TALKTYPE_ORANGE_1)
             elseif getPlayerStorageValue(cid,300000) == 102 then
                doCreatureSay(cid, "ISOLFENA ACI - CAPITULINHO UNO.", TALKTYPE_ORANGE_1)
             end
       end
    end
    return true
    end
    end

    el char tiene el storage 30000(1) y debería imprimir "pepe" este es un movement ya no es una spell. tira el siguiente error:

    Código:
    [11/12/2020 05:08:33] [Error - MoveEvents Interface]
    [11/12/2020 05:08:33] data/movements/scripts/3 iso-entradas/inicio-elf.lua:onStepIn
    [11/12/2020 05:08:33] Description:
    [11/12/2020 05:08:33] data/movements/scripts/3 iso-entradas/inicio-elf.lua:7: attempt to index field '?' (a nil value)
    [11/12/2020 05:08:33] stack traceback:
    [11/12/2020 05:08:33]    data/movements/scripts/3 iso-entradas/inicio-elf.lua:7: in function <data/movements/scripts/3 iso-entradas/inicio-elf.lua:1>

    He probado esto aquí no por que lo vaya a utilizar en un movements, sino para ver si es por que era una spell que no lo reconocía, pero al parecer el servidor no reconoce de esta manera la tabla. Por otro lado y talvez esto sea ya muy pesado, tengo sistemas de tablas en el servidor que funcionan correctamente. la siguiente es una tabla de crafteo

    Código:
    _FORGESYSTEMyukoro = {
      useMagicEffect = true, -- Mostrar efeitos animados no sistema?
      useSkill = false, -- Usar sistema de skill Forging
      storages = { -- Storages usados no sistema de skill
          level = 99902,
          tries = 99903
      },
      promptyukoro = { -- Mexa aqui apenas se souber o que está fazendo
          invalidRecipe = "This recipe is not valid.",
          needSkill = "You need skill level %L to make this recipe.",
          createdItem = "You have created %a %N."
      }
    }

    _FORGERECIPESyukoro = {
      [15559] = {
          items = {
              {14973, 5},
              {4112, 1},
            {13207, 10},
            {11716, 10}
          },
          skill = 1
      },
      [15554] = {
          items = {
              {14977, 5},
              {12213, 5},
            {13403, 5},
            {11826, 10}
          },
          skill = 1
      }
    }

    ----------********************----------
    ----      GENERAL FUNCTIONS        ----
    ----------********************----------

    function RecipeFromPositionyukoro(position)
      local ret, match = {}
      local obj = nil
      for itemid, parameter in pairs(_FORGERECIPESyukoro) do
          for i = 1, #parameter.items do
              local thing = getTileItemById(position, parameter.items[i][1])
              if thing.uid > 0 and math.max(1, thing.type) >= parameter.items[i][2] then
                  table.insert(ret, {thing.itemid, parameter.items[i][2]})
                  if i == #parameter.items then
                      match = itemid
                      obj = Recipeyukoro:new()
                      obj:setResult(match)
                      obj:setItems(ret)
                      obj:setSkill(parameter.skill)
                  end
              else
                  ret = {}
                  break
              end
          end
          if match then break end
      end
      return obj
    end

    function getForgeLevelyukoro(cid)
      return (getPlayerStorageValue(cid, _FORGESYSTEMyukoro.storages.level) <= 0 and 1 or getPlayerStorageValue(cid, _FORGESYSTEMyukoro.storages.level))
    end

    function setForgeLevelyukoro(cid, value)
      setPlayerStorageValue(cid, _FORGESYSTEMyukoro.storages.level, value)
    end

    function getForgeTriesyukoro(cid)
      return getPlayerStorageValue(cid, _FORGESYSTEMyukoro.storages.tries)
    end

    function addForgeTryyukoro(cid)
      local level = getForgeLevelyukoro(cid)
      local tries = getForgeTriesyukoro(cid)

      if tries + 1 >= (level + (level + 1) * 2) * 3 then
          doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You have advanced from level ".. level .." to level ".. level + 1 .." in Forging")
          setForgeLevel(cid, level + 1)
          setPlayerStorageValue(cid, _FORGESYSTEMyukoro.storages.tries, 0)
      else
          setPlayerStorageValue(cid, _FORGESYSTEMyukoro.storages.tries, tries + 1)
      end
    end

    RecipeListyukoro = {}

    Recipeyukoro = {
      itemid = 0,
      items = {},
      skill = 0
    }

    function Recipeyukoro:new(obj)
      return setmetatable(obj or {}, { __index = self })
    end

    function Recipeyukoro:setResult(id)
      id = id or 0
      self.itemid = id
    end

    function Recipeyukoro:setItems(...)
      self.items = ...
    end

    function Recipeyukoro:setSkill(value)
      self.skill = value
    end

    function Recipeyukoro:addItem(item, count)
      if not item or not count then
          return false
      end
      table.insert(self.items, {item, count})
    end

    function Recipeyukoro:forgeyukoro(cid, position)
      if getForgeLevelyukoro(cid) >= self.skill or _FORGESYSTEMyukoro.useSkill == false then
          for i = 1, #self.items do
              local thing = getTileItemById(position, self.items[i][1])
              doRemoveItem(thing.uid, self.items[i][2])
          end
          if _FORGESYSTEMyukoro.useMagicEffect == true then doSendMagicEffect(position, CONST_ME_POFF) end
          doCreateItem(self.itemid, position)
          if cid then
              doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, (_FORGESYSTEMyukoro.promptyukoro.createdItem:gsub("%%N", getItemNameById(self.itemid)):gsub("%%a", getItemInfo(self.itemid).article)))
          end
      else
          doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, (_FORGESYSTEMyukoro.promptyukoro.needSkill:gsub("%%L", self.skill)))
          if _FORGESYSTEMyukoro.useMagicEffect == true then doSendMagicEffect(position, CONST_ME_POFF) end
          for i = 1, #self.items do
              local thing = getTileItemById(position, self.items[i][1])
              doRemoveItem(thing.uid, self.items[i][2])
              doPlayerAddItem(cid, thing.itemid, self.items[i][2])
          end
      end
      return true
    end

    luego en los actions va esto

    Código:
    function onUse(cid, item, fromPosition, itemEx, toPosition)
    local Translate = {
          [ENG_VALUE] = {
             imposible = "this is not possible.",
             herramienta = "you must put things on a oricalco anvil.",
          },
          [ESP_VALUE] = {
             imposible = "esto no es posible.",
             herramienta = "debes poner las cosas en un yunque de oricalco.",
          },
          [POR_VALUE] = {
             imposible = "isso nao e possivel.",
             herramienta = "voce deve colocar as coisas em uma bigorna de oricalco.",
          }}
     local sms = Translate[getPlayerStorageValue(cid, LENGUAGE_STORAGE)]
     
     if sms then
      if isInArray({0, 65536}, toPosition.x) then
          return doPlayerSendCancel(cid, sms.imposible)
      elseif getTileItemById(toPosition, 15626).uid == 0 then
          return doPlayerSendCancel(cid, sms.herramienta)
      end

      local obj = RecipeFromPositionyukoro(toPosition)
      if obj then
          obj:forgeyukoro(cid, toPosition)
          if _FORGESYSTEMyukoro.useSkill == true then addForgeTry(cid) end
      else
          doPlayerSendCancel(cid, _FORGESYSTEMyukoro.promptyukoro.invalidRecipeyukoro)
      end
      return true
      end
      return true
    end

    Yo soy novato con esto de los scripts así q no entiendo muchas cosas de las que ponen xD pensé entonces que talvez como hay diferentes códigos por servers, debido a que el mío es una versión vieja no usa los mismos que otros, pero el script que acabo de poner es de un yunke que crea items a partir de una tabla que se encuentra en Lib. Talvez allí este la respuesta aunque yo no pueda verla.

    12default Re: [Spells] Tabla de Storages el Vie Dic 11, 2020 5:16 pm

    [Admin] God Maya

    [Admin] God Maya
    Administrador
    Administrador
    el movevents para que funcion esto

    configs[i].storageID)tiene que tener un for i de otra manera no arranca y marca error tendras que ver como esta implentado aquello en la spells



    [Spells] Tabla de Storages YNU5B25
    https://www.tibiaface.com

    13default Re: [Spells] Tabla de Storages el Vie Dic 11, 2020 6:46 pm

    Rha

    Rha
    Nuevo Miembro
    Nuevo Miembro
    em.. decía q probé la tabla esta que es para spells, en un movement para ver si jalaba, allí. Pero el resultado fue que no jalaba tampoco. SIN EMBARGO, tengo ese archivo que puse, que usa una tabla en lib, y luego por medio de un action jala el contenido de la tabla para crear objetos y pensé que talvez la respuesta de por que no jala esta en ese archivo que si jala.

    en resumen, colocándole el for que le pusiste en spell, tampoco jala sale el error que indique que es este.

    Código:
    [10/12/2020 20:41:41] [Error - Spell Interface]
    [10/12/2020 20:41:41] data/spells/scripts/pruebaspell.lua:onCastSpell
    [10/12/2020 20:41:41] Description:
    [10/12/2020 20:41:41] data/spells/scripts/pruebaspell.lua:78: attempt to index global 'cofings' (a nil value)
    [10/12/2020 20:41:41] stack traceback:
    [10/12/2020 20:41:41]    data/spells/scripts/pruebaspell.lua:78: in function <data/spells/scripts/pruebaspell.lua:73>

    14default Re: [Spells] Tabla de Storages el Jue Dic 17, 2020 7:29 am

    [Adm] SevuOT

    [Adm] SevuOT
    Miembro
    Miembro
    [Tienes que estar registrado y conectado para ver este vínculo] cree la tabla en el entorno global y ya puedes usarla en cualquier lugar, un ejemplo seria crear una tabla en data/lib/constant.lua o data/lib/<archive.lua>, la tabla debe de estar en las librerias del server



    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.


    [Spells] Tabla de Storages TRJEB8aSRYK5IulEU6ilJw

    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).