• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Error in console when in console when try to fill pot

Jeyci

Banned User
Joined
May 6, 2023
Messages
289
Solutions
3
Reaction score
36
Hello im editing my potion.lua this function was not working or causing nothing now when i want to fill a pot with a fluid from the floor or from a potion, get this error in console
Lua:
Lua Script Error: [Action Interface]
data/actions/scripts/Other/fluids/potions.lua:onUse
data/actions/scripts/Other/fluids/potions.lua:211: attempt to index local 'potion' (a nil value)
stack traceback:
        data/actions/scripts/Other/fluids/potions.lua:211: in function <data/actions/scripts/Other/fluids/potions.lua:196>

can somebody tell me how to edit the script to make fluids fills pot?
Code:
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
   local potion = potions[item:getId()]
  
   local tile = Tile(toPosition)
   local items = tile:getItems()
   if items then
      for i, item in ipairs(items) do
         local targetItemType = ItemType(item:getId())
         if targetItemType and targetItemType:getType() == ITEM_TYPE_TELEPORT then
            return false
         end
      end
   end
  
   if type(target) == "userdata" and not target:isPlayer() then
      if potion.health and potion.mana then
         Game.createItem(2025, 35, toPosition)
      elseif potion.health then
         Game.createItem(2025, 10, toPosition)
      elseif potion.mana then
         Game.createItem(2025, 7, toPosition)
      end
      if configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
         item:remove(1)
         if potion.flask and potion.flask > 0 then
            player:addItem(potion.flask)
         end
      end
      return true
   end
  
   if not player:getGroup():getAccess() and (potion.level and player:getLevel() < potion.level or potion.vocations and not table.contains(potion.vocations, player:getVocation():getId())) then
      player:say(potion.description, TALKTYPE_POTION)
      return true
   end

   if potion.condition then
      if potion.capacity then
         potion.capacity(player)
      end
      player:addCondition(potion.condition)
      player:say(potion.text, TALKTYPE_POTION)
      player:getPosition():sendMagicEffect(potion.effect)
   elseif potion.transform then
      local reward = potion.transform[math.random(#potion.transform)]
      if fromPosition.x == CONTAINER_POSITION then
         local targetContainer = Container(item:getParent().uid)
         targetContainer:addItem(reward, 1)
      else
         Game.createItem(reward, 1, fromPosition)
      end

      item:getPosition():sendMagicEffect(potion.effect)
      item:remove(1)
      return true
   else
      if potion.health then
         doTargetCombat(player, target, COMBAT_HEALING, potion.health[1], potion.health[2])
      end

      if potion.mana then
         doTargetCombat(player, target, COMBAT_MANADRAIN, potion.mana[1], potion.mana[2])
      end

      if potion.antidote then
         target:removeCondition(CONDITION_POISON)
      end

      player:addAchievementProgress("Potion Addict", 100000)
      player:addItem(potion.flask)
      target:say("Aaaah...", TALKTYPE_POTION)
      target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
   end

   if not configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
      return true
   end

   item:remove(1)
   return true
end

this is part of the script tell me if you need the full version
 
Hello im editing my potion.lua this function was not working or causing nothing now when i want to fill a pot with a fluid from the floor or from a potion, get this error in console
Lua:
Lua Script Error: [Action Interface]
data/actions/scripts/Other/fluids/potions.lua:onUse
data/actions/scripts/Other/fluids/potions.lua:211: attempt to index local 'potion' (a nil value)
stack traceback:
        data/actions/scripts/Other/fluids/potions.lua:211: in function <data/actions/scripts/Other/fluids/potions.lua:196>

can somebody tell me how to edit the script to make fluids fills pot?
Code:
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
   local potion = potions[item:getId()]
 
   local tile = Tile(toPosition)
   local items = tile:getItems()
   if items then
      for i, item in ipairs(items) do
         local targetItemType = ItemType(item:getId())
         if targetItemType and targetItemType:getType() == ITEM_TYPE_TELEPORT then
            return false
         end
      end
   end
 
   if type(target) == "userdata" and not target:isPlayer() then
      if potion.health and potion.mana then
         Game.createItem(2025, 35, toPosition)
      elseif potion.health then
         Game.createItem(2025, 10, toPosition)
      elseif potion.mana then
         Game.createItem(2025, 7, toPosition)
      end
      if configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
         item:remove(1)
         if potion.flask and potion.flask > 0 then
            player:addItem(potion.flask)
         end
      end
      return true
   end
 
   if not player:getGroup():getAccess() and (potion.level and player:getLevel() < potion.level or potion.vocations and not table.contains(potion.vocations, player:getVocation():getId())) then
      player:say(potion.description, TALKTYPE_POTION)
      return true
   end

   if potion.condition then
      if potion.capacity then
         potion.capacity(player)
      end
      player:addCondition(potion.condition)
      player:say(potion.text, TALKTYPE_POTION)
      player:getPosition():sendMagicEffect(potion.effect)
   elseif potion.transform then
      local reward = potion.transform[math.random(#potion.transform)]
      if fromPosition.x == CONTAINER_POSITION then
         local targetContainer = Container(item:getParent().uid)
         targetContainer:addItem(reward, 1)
      else
         Game.createItem(reward, 1, fromPosition)
      end

      item:getPosition():sendMagicEffect(potion.effect)
      item:remove(1)
      return true
   else
      if potion.health then
         doTargetCombat(player, target, COMBAT_HEALING, potion.health[1], potion.health[2])
      end

      if potion.mana then
         doTargetCombat(player, target, COMBAT_MANADRAIN, potion.mana[1], potion.mana[2])
      end

      if potion.antidote then
         target:removeCondition(CONDITION_POISON)
      end

      player:addAchievementProgress("Potion Addict", 100000)
      player:addItem(potion.flask)
      target:say("Aaaah...", TALKTYPE_POTION)
      target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
   end

   if not configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
      return true
   end

   item:remove(1)
   return true
end

this is part of the script tell me if you need the full version
before this function, you must have a table called 'potions', and in this table, there's no index with the item id u are using.
 
i have it
this is the full script
Lua:
local berserk = Condition(CONDITION_ATTRIBUTES)
berserk:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
berserk:setParameter(CONDITION_PARAM_SKILL_MELEE, 5)
berserk:setParameter(CONDITION_PARAM_SKILL_SHIELD, -10)
berserk:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local mastermind = Condition(CONDITION_ATTRIBUTES)
mastermind:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
mastermind:setParameter(CONDITION_PARAM_STAT_MAGICPOINTS, 3)
mastermind:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local bullseye = Condition(CONDITION_ATTRIBUTES)
bullseye:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
bullseye:setParameter(CONDITION_PARAM_SKILL_DISTANCE, 5)
bullseye:setParameter(CONDITION_PARAM_SKILL_SHIELD, -10)
bullseye:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

--local manaShield = Condition(CONDITION_MANASHIELD_BREAKABLE)
--manaShield:setParameter(CONDITION_PARAM_TICKS, 3 * 60 * 1000)

--local function magicShieldCapacity(player)
--    manaShield:setParameter(CONDITION_PARAM_MANASHIELD_BREAKABLE, math.min(player:getMaxMana(), 300 + 7.6 * player:getLevel() + 7 * player:getMagicLevel()))
--end

local potions = {
    [6558] = { -- flask of demonic blood
        transform = {7588, 7589},
        effect = CONST_ME_DRAWBLOOD
    },
    [7439] = { -- berserk potion
        condition = berserk,
        vocations = {
            VOCATION_KNIGHT,
            VOCATION_ELITE_KNIGHT
        },
        effect = CONST_ME_MAGIC_RED,
        description = "Only knights may drink this potion.",
        text = "You feel stronger."
    },
    [7440] = { -- mastermind potion
        condition = mastermind,
        vocations = {
            VOCATION_SORCERER,
            VOCATION_DRUID,
            VOCATION_MASTER_SORCERER,
            VOCATION_ELDER_DRUID
        },
        effect = CONST_ME_MAGIC_BLUE,
        description = "Only sorcerers and druids may drink this potion.",
        text = "You feel smarter."
    },
    [7443] = { -- bullseye potion
        condition = bullseye,
        vocations = {
            VOCATION_PALADIN,
            VOCATION_ROYAL_PALADIN
        },
        effect = CONST_ME_MAGIC_GREEN,
        description = "Only paladins may drink this potion.",
        text = "You feel more accurate."
    },
    --[38219] = { -- magic shield potion
    --    condition = manaShield,
    --    vocations = {
    --        VOCATION_SORCERER,
    ---        VOCATION_DRUID,
        --    VOCATION_MASTER_SORCERER,
        --    VOCATION_ELDER_DRUID
        --},
        --level = 14,
        --effect = CONST_ME_ENERGYAREA,
        --description = "Only sorcerers and druids of level 14 or above may drink this potion.",
        --capacity = magicShieldCapacity
    --},
    [7588] = { -- strong health potion
        health = {250, 350},
        vocations = {
            VOCATION_PALADIN,
            VOCATION_KNIGHT,
            VOCATION_ROYAL_PALADIN,
            VOCATION_ELITE_KNIGHT
        },
        level = 50,
        flask = 7634,
        description = "Only knights and paladins of level 50 or above may drink this fluid."
    },
    [7589] = { -- strong mana potion
        mana = {115, 185},
        vocations = {
            VOCATION_SORCERER,
            VOCATION_DRUID,
            VOCATION_PALADIN,
            VOCATION_MASTER_SORCERER,
            VOCATION_ELDER_DRUID,
            VOCATION_ROYAL_PALADIN
            },
        level = 50,
        flask = 7634,
        description = "Only sorcerers, druids and paladins of level 50 or above may drink this fluid."
    },
    [7590] = { -- great mana potion
        mana = {150, 250},
        vocations = {
            VOCATION_SORCERER,
            VOCATION_DRUID,
            VOCATION_PALADIN,
            VOCATION_MASTER_SORCERER,
            VOCATION_ELDER_DRUID,
            VOCATION_ROYAL_PALADIN
        },
        level = 80,
        flask = 7635,
        description = "Only sorcerers, druids and paladins of level 80 or above may drink this fluid."
    },
    [7591] = { -- great health potion
        health = {425, 575},
        vocations = {
            VOCATION_KNIGHT,
            VOCATION_ELITE_KNIGHT
        },
        level = 80,
        flask = 7635,
        description = "Only knights of level 80 or above may drink this fluid."
    },
    [7618] = { -- health potion
        health = {125, 175},
        flask = 7636
    },
    [7620] = { -- mana potion
        mana = {75, 125},
        flask = 7636
    },
    [8472] = { -- great spirit potion
        health = {250, 350},
        mana = {100, 200},
        vocations = {
            VOCATION_PALADIN,
            VOCATION_ROYAL_PALADIN
        },
        level = 80,
        flask = 7635,
        description = "Only paladins of level 80 or above may drink this fluid."
    },
    [8473] = { -- ultimate health potion
        health = {650, 850},
        vocations = {
            VOCATION_KNIGHT,
            VOCATION_ELITE_KNIGHT
        },
        level = 130,
        flask = 7635,
        description = "Only knights of level 130 or above may drink this fluid."
    },
    [8474] = { -- antidote potion
        antidote = true,
        flask = 7636
    },
    [8704] = { -- small health potion
        health = {60, 90},
        flask = 7636
    },
    [26029] = { -- ultimate mana potion
        mana = {425, 575},
        vocations = {
            VOCATION_SORCERER,
            VOCATION_DRUID,
            VOCATION_MASTER_SORCERER,
            VOCATION_ELDER_DRUID
        },
        level = 130,
        flask = 7635,
        description = "Only druids and sorcerers of level 130 or above may drink this fluid."
    },
    [26030] = { -- ultimate spirit potion
        health = {410, 580},
        mana = {150, 250},
        vocations = {
            VOCATION_PALADIN,
            VOCATION_ROYAL_PALADIN
        },
        level = 130,
        flask = 7635,
        description = "Only paladins of level 130 or above may drink this fluid."
    },
    [26031] = { -- supreme health potion
        health = {875, 1125},
        vocations = {
            VOCATION_KNIGHT,
            VOCATION_ELITE_KNIGHT
        },
        level = 200,
        flask = 7635,
        description = "Only knights of level 200 or above may drink this fluid."
    }
}
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
   local potion = potions[item:getId()]
  
   local tile = Tile(toPosition)
   local items = tile:getItems()
   if items then
      for i, item in ipairs(items) do
         local targetItemType = ItemType(item:getId())
         if targetItemType and targetItemType:getType() == ITEM_TYPE_TELEPORT then
            return false
         end
      end
   end
  
   if type(target) == "userdata" and not target:isPlayer() then
      if potion.health and potion.mana then
         Game.createItem(2025, 35, toPosition):decay()
      elseif potion.health then
         Game.createItem(2025, 10, toPosition):decay()
      elseif potion.mana then
         Game.createItem(2025, 7, toPosition):decay()
      end
      if configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
         item:remove(1)
         if potion.flask and potion.flask > 0 then
            player:addItem(potion.flask)
         end
      end
      return true
   end
  
   if not player:getGroup():getAccess() and (potion.level and player:getLevel() < potion.level or potion.vocations and not table.contains(potion.vocations, player:getVocation():getId())) then
      player:say(potion.description, TALKTYPE_POTION)
      return true
   end

   if potion.condition then
      if potion.capacity then
         potion.capacity(player)
      end
      player:addCondition(potion.condition)
      player:say(potion.text, TALKTYPE_POTION)
      player:getPosition():sendMagicEffect(potion.effect)
   elseif potion.transform then
      local reward = potion.transform[math.random(#potion.transform)]
      if fromPosition.x == CONTAINER_POSITION then
         local targetContainer = Container(item:getParent().uid)
         targetContainer:addItem(reward, 1)
      else
         Game.createItem(reward, 1, fromPosition)
      end

      item:getPosition():sendMagicEffect(potion.effect)
      item:remove(1)
      return true
   else
      if potion.health then
         doTargetCombat(player, target, COMBAT_HEALING, potion.health[1], potion.health[2])
      end

      if potion.mana then
         doTargetCombat(player, target, COMBAT_MANADRAIN, potion.mana[1], potion.mana[2])
      end

      if potion.antidote then
         target:removeCondition(CONDITION_POISON)
      end

      player:addAchievementProgress("Potion Addict", 100000)
      player:addItem(potion.flask)
      target:say("Aaaah...", TALKTYPE_POTION)
      target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
   end

   if not configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
      return true
   end

   item:remove(1)
   return true
end
 
i have it
this is the full script
Lua:
local berserk = Condition(CONDITION_ATTRIBUTES)
berserk:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
berserk:setParameter(CONDITION_PARAM_SKILL_MELEE, 5)
berserk:setParameter(CONDITION_PARAM_SKILL_SHIELD, -10)
berserk:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local mastermind = Condition(CONDITION_ATTRIBUTES)
mastermind:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
mastermind:setParameter(CONDITION_PARAM_STAT_MAGICPOINTS, 3)
mastermind:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

local bullseye = Condition(CONDITION_ATTRIBUTES)
bullseye:setParameter(CONDITION_PARAM_TICKS, 10 * 60 * 1000)
bullseye:setParameter(CONDITION_PARAM_SKILL_DISTANCE, 5)
bullseye:setParameter(CONDITION_PARAM_SKILL_SHIELD, -10)
bullseye:setParameter(CONDITION_PARAM_BUFF_SPELL, true)

--local manaShield = Condition(CONDITION_MANASHIELD_BREAKABLE)
--manaShield:setParameter(CONDITION_PARAM_TICKS, 3 * 60 * 1000)

--local function magicShieldCapacity(player)
--    manaShield:setParameter(CONDITION_PARAM_MANASHIELD_BREAKABLE, math.min(player:getMaxMana(), 300 + 7.6 * player:getLevel() + 7 * player:getMagicLevel()))
--end

local potions = {
    [6558] = { -- flask of demonic blood
        transform = {7588, 7589},
        effect = CONST_ME_DRAWBLOOD
    },
    [7439] = { -- berserk potion
        condition = berserk,
        vocations = {
            VOCATION_KNIGHT,
            VOCATION_ELITE_KNIGHT
        },
        effect = CONST_ME_MAGIC_RED,
        description = "Only knights may drink this potion.",
        text = "You feel stronger."
    },
    [7440] = { -- mastermind potion
        condition = mastermind,
        vocations = {
            VOCATION_SORCERER,
            VOCATION_DRUID,
            VOCATION_MASTER_SORCERER,
            VOCATION_ELDER_DRUID
        },
        effect = CONST_ME_MAGIC_BLUE,
        description = "Only sorcerers and druids may drink this potion.",
        text = "You feel smarter."
    },
    [7443] = { -- bullseye potion
        condition = bullseye,
        vocations = {
            VOCATION_PALADIN,
            VOCATION_ROYAL_PALADIN
        },
        effect = CONST_ME_MAGIC_GREEN,
        description = "Only paladins may drink this potion.",
        text = "You feel more accurate."
    },
    --[38219] = { -- magic shield potion
    --    condition = manaShield,
    --    vocations = {
    --        VOCATION_SORCERER,
    ---        VOCATION_DRUID,
        --    VOCATION_MASTER_SORCERER,
        --    VOCATION_ELDER_DRUID
        --},
        --level = 14,
        --effect = CONST_ME_ENERGYAREA,
        --description = "Only sorcerers and druids of level 14 or above may drink this potion.",
        --capacity = magicShieldCapacity
    --},
    [7588] = { -- strong health potion
        health = {250, 350},
        vocations = {
            VOCATION_PALADIN,
            VOCATION_KNIGHT,
            VOCATION_ROYAL_PALADIN,
            VOCATION_ELITE_KNIGHT
        },
        level = 50,
        flask = 7634,
        description = "Only knights and paladins of level 50 or above may drink this fluid."
    },
    [7589] = { -- strong mana potion
        mana = {115, 185},
        vocations = {
            VOCATION_SORCERER,
            VOCATION_DRUID,
            VOCATION_PALADIN,
            VOCATION_MASTER_SORCERER,
            VOCATION_ELDER_DRUID,
            VOCATION_ROYAL_PALADIN
            },
        level = 50,
        flask = 7634,
        description = "Only sorcerers, druids and paladins of level 50 or above may drink this fluid."
    },
    [7590] = { -- great mana potion
        mana = {150, 250},
        vocations = {
            VOCATION_SORCERER,
            VOCATION_DRUID,
            VOCATION_PALADIN,
            VOCATION_MASTER_SORCERER,
            VOCATION_ELDER_DRUID,
            VOCATION_ROYAL_PALADIN
        },
        level = 80,
        flask = 7635,
        description = "Only sorcerers, druids and paladins of level 80 or above may drink this fluid."
    },
    [7591] = { -- great health potion
        health = {425, 575},
        vocations = {
            VOCATION_KNIGHT,
            VOCATION_ELITE_KNIGHT
        },
        level = 80,
        flask = 7635,
        description = "Only knights of level 80 or above may drink this fluid."
    },
    [7618] = { -- health potion
        health = {125, 175},
        flask = 7636
    },
    [7620] = { -- mana potion
        mana = {75, 125},
        flask = 7636
    },
    [8472] = { -- great spirit potion
        health = {250, 350},
        mana = {100, 200},
        vocations = {
            VOCATION_PALADIN,
            VOCATION_ROYAL_PALADIN
        },
        level = 80,
        flask = 7635,
        description = "Only paladins of level 80 or above may drink this fluid."
    },
    [8473] = { -- ultimate health potion
        health = {650, 850},
        vocations = {
            VOCATION_KNIGHT,
            VOCATION_ELITE_KNIGHT
        },
        level = 130,
        flask = 7635,
        description = "Only knights of level 130 or above may drink this fluid."
    },
    [8474] = { -- antidote potion
        antidote = true,
        flask = 7636
    },
    [8704] = { -- small health potion
        health = {60, 90},
        flask = 7636
    },
    [26029] = { -- ultimate mana potion
        mana = {425, 575},
        vocations = {
            VOCATION_SORCERER,
            VOCATION_DRUID,
            VOCATION_MASTER_SORCERER,
            VOCATION_ELDER_DRUID
        },
        level = 130,
        flask = 7635,
        description = "Only druids and sorcerers of level 130 or above may drink this fluid."
    },
    [26030] = { -- ultimate spirit potion
        health = {410, 580},
        mana = {150, 250},
        vocations = {
            VOCATION_PALADIN,
            VOCATION_ROYAL_PALADIN
        },
        level = 130,
        flask = 7635,
        description = "Only paladins of level 130 or above may drink this fluid."
    },
    [26031] = { -- supreme health potion
        health = {875, 1125},
        vocations = {
            VOCATION_KNIGHT,
            VOCATION_ELITE_KNIGHT
        },
        level = 200,
        flask = 7635,
        description = "Only knights of level 200 or above may drink this fluid."
    }
}
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
   local potion = potions[item:getId()]
 
   local tile = Tile(toPosition)
   local items = tile:getItems()
   if items then
      for i, item in ipairs(items) do
         local targetItemType = ItemType(item:getId())
         if targetItemType and targetItemType:getType() == ITEM_TYPE_TELEPORT then
            return false
         end
      end
   end
 
   if type(target) == "userdata" and not target:isPlayer() then
      if potion.health and potion.mana then
         Game.createItem(2025, 35, toPosition):decay()
      elseif potion.health then
         Game.createItem(2025, 10, toPosition):decay()
      elseif potion.mana then
         Game.createItem(2025, 7, toPosition):decay()
      end
      if configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
         item:remove(1)
         if potion.flask and potion.flask > 0 then
            player:addItem(potion.flask)
         end
      end
      return true
   end
 
   if not player:getGroup():getAccess() and (potion.level and player:getLevel() < potion.level or potion.vocations and not table.contains(potion.vocations, player:getVocation():getId())) then
      player:say(potion.description, TALKTYPE_POTION)
      return true
   end

   if potion.condition then
      if potion.capacity then
         potion.capacity(player)
      end
      player:addCondition(potion.condition)
      player:say(potion.text, TALKTYPE_POTION)
      player:getPosition():sendMagicEffect(potion.effect)
   elseif potion.transform then
      local reward = potion.transform[math.random(#potion.transform)]
      if fromPosition.x == CONTAINER_POSITION then
         local targetContainer = Container(item:getParent().uid)
         targetContainer:addItem(reward, 1)
      else
         Game.createItem(reward, 1, fromPosition)
      end

      item:getPosition():sendMagicEffect(potion.effect)
      item:remove(1)
      return true
   else
      if potion.health then
         doTargetCombat(player, target, COMBAT_HEALING, potion.health[1], potion.health[2])
      end

      if potion.mana then
         doTargetCombat(player, target, COMBAT_MANADRAIN, potion.mana[1], potion.mana[2])
      end

      if potion.antidote then
         target:removeCondition(CONDITION_POISON)
      end

      player:addAchievementProgress("Potion Addict", 100000)
      player:addItem(potion.flask)
      target:say("Aaaah...", TALKTYPE_POTION)
      target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)
   end

   if not configManager.getBoolean(configKeys.REMOVE_POTION_CHARGES) then
      return true
   end

   item:remove(1)
   return true
end
and what item id u are using to get this error?
 
don't know what i did but the error does not appears anymore, but i can not fill pot yet. fluids falls to the floor
 
right, my bad. added this
Lua:
f toPosition.x == CONTAINER_POSITION then
                toPosition = player:getPosition()
            end
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
still no works, no errors in console. don't know why is so hard to get errors in console in tfs 1.x
 
right, my bad. added this
Lua:
f toPosition.x == CONTAINER_POSITION then
                toPosition = player:getPosition()
            end
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
still no works, no errors in console. don't know why is so hard to get errors in console in tfs 1.x
 
i use 8.6
Lua:
local drunk = Condition(CONDITION_DRUNK)
drunk:setParameter(CONDITION_PARAM_TICKS, 60000)

local poison = Condition(CONDITION_POISON)
poison:setParameter(CONDITION_PARAM_DELAYED, true)
poison:setParameter(CONDITION_PARAM_MINVALUE, -50)
poison:setParameter(CONDITION_PARAM_MAXVALUE, -120)
poison:setParameter(CONDITION_PARAM_STARTVALUE, -5)
poison:setParameter(CONDITION_PARAM_TICKINTERVAL, 4000)
poison:setParameter(CONDITION_PARAM_FORCEUPDATE, true)

local fluidMessage = {
    [FLUID_BEER] = "Aah...",
    [FLUID_SLIME] = "Urgh!",
    [FLUID_LEMONADE] = "Mmmh.",
    [FLUID_MANA] = "Aaaah...",
    [FLUID_LIFE] = "Aaaah...",
    [FLUID_OIL] = "Urgh!",
    [FLUID_URINE] = "Urgh!",
    [FLUID_WINE] = "Aah...",
    [FLUID_MUD] = "Urgh!",
    [FLUID_RUM] = "Aah...",
    [FLUID_MEAD] = "Aaaah..."
}

local function graveStoneTeleport(cid, fromPosition, toPosition)
    local player = Player(cid)
    if not player then
        return true
    end

    player:teleportTo(toPosition)
    player:say("Muahahahaha..", TALKTYPE_MONSTER_SAY, false, player)
    fromPosition:sendMagicEffect(CONST_ME_DRAWBLOOD)
    toPosition:sendMagicEffect(CONST_ME_MORTAREA)
end

local distillery = {[5513] = 5469, [5514] = 5470}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local targetItemType = ItemType(target.itemid)
    if targetItemType and targetItemType:isFluidContainer() then
        if target.type == FLUID_NONE and item.type ~= FLUID_NONE then
            target:transform(target:getId(), item.type)
            item:transform(item:getId(), FLUID_NONE)
            return true
        elseif target.type ~= FLUID_NONE and item.type == FLUID_NONE then
            item:transform(item:getId(), target.type)
            target:transform(target:getId(), FLUID_NONE)
            return true
        end
    end

    if target.itemid == 1 then
        if item.type == FLUID_NONE then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")
        elseif target.uid == player.uid then
            if table.contains({FLUID_BEER, FLUID_WINE, FLUID_MEAD}, item.type) then
                player:addCondition(drunk)
            elseif item.type == FLUID_SLIME then
                player:addCondition(poison)
            elseif item.type == FLUID_MANA then
                player:addMana(math.random(50, 150))
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            elseif item.type == FLUID_LIFE then
                player:addHealth(60)
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            end
            player:say(fluidMessage[item.type] or "Gulp.", TALKTYPE_MONSTER_SAY)
            item:transform(item:getId(), FLUID_NONE)
        else
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
    else
        local fluidSource = targetItemType and targetItemType:getFluidSource() or FLUID_NONE
        if fluidSource ~= FLUID_NONE then
            item:transform(item:getId(), fluidSource)
        elseif table.contains(distillery, target.itemid) then
            local tmp = distillery[target.itemid]
            if tmp then
                item:transform(item:getId(), FLUID_NONE)
            else
                player:sendCancelMessage("You have to process the bunch into the distillery to get rum.")
            end
        elseif item.type == FLUID_NONE then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")
        else
            if item.type == FLUID_BLOOD and target.actionid == 2023 then
                toPosition.y = toPosition.y + 1
                local creatures, destination = Tile(toPosition):getCreatures(), Position(32791, 32332, 10)
                if #creatures == 0 then
                    graveStoneTeleport(player.uid, fromPosition, destination)
                else
                    local creature
                    for i = 1, #creatures do
                        creature = creatures[i]
                        if creature and creature:isPlayer() then
                            graveStoneTeleport(creature.uid, toPosition, destination)
                        end
                    end
                end
            end

            if toPosition.x == CONTAINER_POSITION then
                toPosition = player:getPosition()
            end
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
    end
    return true
end
Code:
<action itemid="2562" script="Other/fluids/fluids.lua"/>  pot id

added this but nothing changed
Code:
       if toPosition.x == CONTAINER_POSITION then

                toPosition = player:getPosition()

            end

            Game.createItem(2016, item.type, toPosition):decay()

            item:transform(item:getId(), FLUID_NONE)

        end

    end
 
i use 8.6
Lua:
local drunk = Condition(CONDITION_DRUNK)
drunk:setParameter(CONDITION_PARAM_TICKS, 60000)

local poison = Condition(CONDITION_POISON)
poison:setParameter(CONDITION_PARAM_DELAYED, true)
poison:setParameter(CONDITION_PARAM_MINVALUE, -50)
poison:setParameter(CONDITION_PARAM_MAXVALUE, -120)
poison:setParameter(CONDITION_PARAM_STARTVALUE, -5)
poison:setParameter(CONDITION_PARAM_TICKINTERVAL, 4000)
poison:setParameter(CONDITION_PARAM_FORCEUPDATE, true)

local fluidMessage = {
    [FLUID_BEER] = "Aah...",
    [FLUID_SLIME] = "Urgh!",
    [FLUID_LEMONADE] = "Mmmh.",
    [FLUID_MANA] = "Aaaah...",
    [FLUID_LIFE] = "Aaaah...",
    [FLUID_OIL] = "Urgh!",
    [FLUID_URINE] = "Urgh!",
    [FLUID_WINE] = "Aah...",
    [FLUID_MUD] = "Urgh!",
    [FLUID_RUM] = "Aah...",
    [FLUID_MEAD] = "Aaaah..."
}

local function graveStoneTeleport(cid, fromPosition, toPosition)
    local player = Player(cid)
    if not player then
        return true
    end

    player:teleportTo(toPosition)
    player:say("Muahahahaha..", TALKTYPE_MONSTER_SAY, false, player)
    fromPosition:sendMagicEffect(CONST_ME_DRAWBLOOD)
    toPosition:sendMagicEffect(CONST_ME_MORTAREA)
end

local distillery = {[5513] = 5469, [5514] = 5470}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local targetItemType = ItemType(target.itemid)
    if targetItemType and targetItemType:isFluidContainer() then
        if target.type == FLUID_NONE and item.type ~= FLUID_NONE then
            target:transform(target:getId(), item.type)
            item:transform(item:getId(), FLUID_NONE)
            return true
        elseif target.type ~= FLUID_NONE and item.type == FLUID_NONE then
            item:transform(item:getId(), target.type)
            target:transform(target:getId(), FLUID_NONE)
            return true
        end
    end

    if target.itemid == 1 then
        if item.type == FLUID_NONE then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")
        elseif target.uid == player.uid then
            if table.contains({FLUID_BEER, FLUID_WINE, FLUID_MEAD}, item.type) then
                player:addCondition(drunk)
            elseif item.type == FLUID_SLIME then
                player:addCondition(poison)
            elseif item.type == FLUID_MANA then
                player:addMana(math.random(50, 150))
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            elseif item.type == FLUID_LIFE then
                player:addHealth(60)
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            end
            player:say(fluidMessage[item.type] or "Gulp.", TALKTYPE_MONSTER_SAY)
            item:transform(item:getId(), FLUID_NONE)
        else
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
    else
        local fluidSource = targetItemType and targetItemType:getFluidSource() or FLUID_NONE
        if fluidSource ~= FLUID_NONE then
            item:transform(item:getId(), fluidSource)
        elseif table.contains(distillery, target.itemid) then
            local tmp = distillery[target.itemid]
            if tmp then
                item:transform(item:getId(), FLUID_NONE)
            else
                player:sendCancelMessage("You have to process the bunch into the distillery to get rum.")
            end
        elseif item.type == FLUID_NONE then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")
        else
            if item.type == FLUID_BLOOD and target.actionid == 2023 then
                toPosition.y = toPosition.y + 1
                local creatures, destination = Tile(toPosition):getCreatures(), Position(32791, 32332, 10)
                if #creatures == 0 then
                    graveStoneTeleport(player.uid, fromPosition, destination)
                else
                    local creature
                    for i = 1, #creatures do
                        creature = creatures[i]
                        if creature and creature:isPlayer() then
                            graveStoneTeleport(creature.uid, toPosition, destination)
                        end
                    end
                end
            end

            if toPosition.x == CONTAINER_POSITION then
                toPosition = player:getPosition()
            end
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
    end
    return true
end
Code:
<action itemid="2562" script="Other/fluids/fluids.lua"/>  pot id

added this but nothing changed
Code:
       if toPosition.x == CONTAINER_POSITION then

                toPosition = player:getPosition()

            end

            Game.createItem(2016, item.type, toPosition):decay()

            item:transform(item:getId(), FLUID_NONE)

        end

    end
and what error are u getting now?
if no errors, start debugging your code, it's basic.
insert some prints along the code and see if its been executed and where it stops if so.
then u come here and ask for help with some information about it.
the first error u've sent was about another code, now that u are using the correct one, only posting it here doesnt tell us nothing
 
The script is giant bro
get no prints anywhere
Lua:
local drunk = Condition(CONDITION_DRUNK)
drunk:setParameter(CONDITION_PARAM_TICKS, 60000)

local poison = Condition(CONDITION_POISON)
poison:setParameter(CONDITION_PARAM_DELAYED, true)
poison:setParameter(CONDITION_PARAM_MINVALUE, -50)
poison:setParameter(CONDITION_PARAM_MAXVALUE, -120)
poison:setParameter(CONDITION_PARAM_STARTVALUE, -5)
poison:setParameter(CONDITION_PARAM_TICKINTERVAL, 4000)
poison:setParameter(CONDITION_PARAM_FORCEUPDATE, true)

local fluidMessage = {
    [FLUID_BEER] = "Aah...",
    [FLUID_SLIME] = "Urgh!",
    [FLUID_LEMONADE] = "Mmmh.",
    [FLUID_MANA] = "Aaaah...",
    [FLUID_LIFE] = "Aaaah...",
    [FLUID_OIL] = "Urgh!",
    [FLUID_URINE] = "Urgh!",
    [FLUID_WINE] = "Aah...",
    [FLUID_MUD] = "Urgh!",
    [FLUID_RUM] = "Aah...",
    [FLUID_MEAD] = "Aaaah..."
}

local function graveStoneTeleport(cid, fromPosition, toPosition)
    print("X")
    local player = Player(cid)
    if not player then
        return true
    end

    player:teleportTo(toPosition)
    player:say("Muahahahaha..", TALKTYPE_MONSTER_SAY, false, player)
    fromPosition:sendMagicEffect(CONST_ME_DRAWBLOOD)
    toPosition:sendMagicEffect(CONST_ME_MORTAREA)
end

local distillery = {[5513] = 5469, [5514] = 5470}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    print("1")
    local targetItemType = ItemType(target.itemid)
    if targetItemType and targetItemType:isFluidContainer() then
        if target.type == FLUID_NONE and item.type ~= FLUID_NONE then
            target:transform(target:getId(), item.type)
            item:transform(item:getId(), FLUID_NONE)
            return true
        elseif target.type ~= FLUID_NONE and item.type == FLUID_NONE then
            item:transform(item:getId(), target.type)
            target:transform(target:getId(), FLUID_NONE)
            return true
        end
    end
print("1")
    if target.itemid == 1 then
        if item.type == FLUID_NONE then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")
        elseif target.uid == player.uid then
            if table.contains({FLUID_BEER, FLUID_WINE, FLUID_MEAD}, item.type) then
                player:addCondition(drunk)
            elseif item.type == FLUID_SLIME then
                player:addCondition(poison)
            elseif item.type == FLUID_MANA then
                player:addMana(math.random(50, 150))
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            elseif item.type == FLUID_LIFE then
                player:addHealth(60)
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            end
            player:say(fluidMessage[item.type] or "Gulp.", TALKTYPE_MONSTER_SAY)
            item:transform(item:getId(), FLUID_NONE)
        else
            if toPosition.x == CONTAINER_POSITION then
                toPosition = player:getPosition()
            end
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
    else
        print("1")
        local fluidSource = targetItemType and targetItemType:getFluidSource() or FLUID_NONE
        if fluidSource ~= FLUID_NONE then
            item:transform(item:getId(), fluidSource)
        elseif table.contains(distillery, target.itemid) then
            local tmp = distillery[target.itemid]
            if tmp then
                item:transform(item:getId(), FLUID_NONE)
            else
                player:sendCancelMessage("You have to process the bunch into the distillery to get rum.")
            end
        elseif item.type == FLUID_NONE then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")
        else
            if item.type == FLUID_BLOOD and target.actionid == 2023 then
                toPosition.y = toPosition.y + 1
                local creatures, destination = Tile(toPosition):getCreatures(), Position(32791, 32332, 10)
                if #creatures == 0 then
                    graveStoneTeleport(player.uid, fromPosition, destination)
                else
                    local creature
                    for i = 1, #creatures do
                        creature = creatures[i]
                        if creature and creature:isPlayer() then
                            graveStoneTeleport(creature.uid, toPosition, destination)
                        end
                    end
                end
            end

print("WORKS?")
            if toPosition.x == CONTAINER_POSITION then
                toPosition = player:getPosition()
            end
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
        print("WORKD?2")
    end
    return true
end
 
The script is giant bro

get no prints anywhere
Lua:
local drunk = Condition(CONDITION_DRUNK)
drunk:setParameter(CONDITION_PARAM_TICKS, 60000)

local poison = Condition(CONDITION_POISON)
poison:setParameter(CONDITION_PARAM_DELAYED, true)
poison:setParameter(CONDITION_PARAM_MINVALUE, -50)
poison:setParameter(CONDITION_PARAM_MAXVALUE, -120)
poison:setParameter(CONDITION_PARAM_STARTVALUE, -5)
poison:setParameter(CONDITION_PARAM_TICKINTERVAL, 4000)
poison:setParameter(CONDITION_PARAM_FORCEUPDATE, true)

local fluidMessage = {
    [FLUID_BEER] = "Aah...",
    [FLUID_SLIME] = "Urgh!",
    [FLUID_LEMONADE] = "Mmmh.",
    [FLUID_MANA] = "Aaaah...",
    [FLUID_LIFE] = "Aaaah...",
    [FLUID_OIL] = "Urgh!",
    [FLUID_URINE] = "Urgh!",
    [FLUID_WINE] = "Aah...",
    [FLUID_MUD] = "Urgh!",
    [FLUID_RUM] = "Aah...",
    [FLUID_MEAD] = "Aaaah..."
}

local function graveStoneTeleport(cid, fromPosition, toPosition)
    print("X")
    local player = Player(cid)
    if not player then
        return true
    end

    player:teleportTo(toPosition)
    player:say("Muahahahaha..", TALKTYPE_MONSTER_SAY, false, player)
    fromPosition:sendMagicEffect(CONST_ME_DRAWBLOOD)
    toPosition:sendMagicEffect(CONST_ME_MORTAREA)
end

local distillery = {[5513] = 5469, [5514] = 5470}

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    print("1")
    local targetItemType = ItemType(target.itemid)
    if targetItemType and targetItemType:isFluidContainer() then
        if target.type == FLUID_NONE and item.type ~= FLUID_NONE then
            target:transform(target:getId(), item.type)
            item:transform(item:getId(), FLUID_NONE)
            return true
        elseif target.type ~= FLUID_NONE and item.type == FLUID_NONE then
            item:transform(item:getId(), target.type)
            target:transform(target:getId(), FLUID_NONE)
            return true
        end
    end
print("1")
    if target.itemid == 1 then
        if item.type == FLUID_NONE then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")
        elseif target.uid == player.uid then
            if table.contains({FLUID_BEER, FLUID_WINE, FLUID_MEAD}, item.type) then
                player:addCondition(drunk)
            elseif item.type == FLUID_SLIME then
                player:addCondition(poison)
            elseif item.type == FLUID_MANA then
                player:addMana(math.random(50, 150))
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            elseif item.type == FLUID_LIFE then
                player:addHealth(60)
                fromPosition:sendMagicEffect(CONST_ME_MAGIC_BLUE)
            end
            player:say(fluidMessage[item.type] or "Gulp.", TALKTYPE_MONSTER_SAY)
            item:transform(item:getId(), FLUID_NONE)
        else
            if toPosition.x == CONTAINER_POSITION then
                toPosition = player:getPosition()
            end
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
    else
        print("1")
        local fluidSource = targetItemType and targetItemType:getFluidSource() or FLUID_NONE
        if fluidSource ~= FLUID_NONE then
            item:transform(item:getId(), fluidSource)
        elseif table.contains(distillery, target.itemid) then
            local tmp = distillery[target.itemid]
            if tmp then
                item:transform(item:getId(), FLUID_NONE)
            else
                player:sendCancelMessage("You have to process the bunch into the distillery to get rum.")
            end
        elseif item.type == FLUID_NONE then
            player:sendTextMessage(MESSAGE_STATUS_SMALL, "It is empty.")
        else
            if item.type == FLUID_BLOOD and target.actionid == 2023 then
                toPosition.y = toPosition.y + 1
                local creatures, destination = Tile(toPosition):getCreatures(), Position(32791, 32332, 10)
                if #creatures == 0 then
                    graveStoneTeleport(player.uid, fromPosition, destination)
                else
                    local creature
                    for i = 1, #creatures do
                        creature = creatures[i]
                        if creature and creature:isPlayer() then
                            graveStoneTeleport(creature.uid, toPosition, destination)
                        end
                    end
                end
            end

print("WORKS?")
            if toPosition.x == CONTAINER_POSITION then
                toPosition = player:getPosition()
            end
            Game.createItem(2016, item.type, toPosition):decay()
            item:transform(item:getId(), FLUID_NONE)
        end
        print("WORKD?2")
    end
    return true
end
if the script is not been executed, is because you did not registered the item id to this script in the actions.xml
 
Back
Top