• 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!

lua support

Nokturno

Not a human
Joined
Aug 7, 2009
Messages
570
Solutions
2
Reaction score
403
i was trying to create this script that create a cage of energy walls in certain position using a lever but im getting some problems in the createItem line.
dont know if someone can give me a hand with this.


Lua:
local timeToReset = 30 -- Time to reset walls in seconds.

local wall1 = 5071 -- energywall
local wall2 = 5071 -- energywall
local wall3 = 5071 -- energywall
local wall4 = 5072 -- energywall
local wall5 = 5072 -- energywall
local wall6 = 5073 -- energywall
local wall7 = 5071 -- energywall
local wall8 = 5071 -- energywall


local wall9 = 5072 -- energywall
local wall10 = 5072 -- energywall
local wall11 = 5072 -- energywall


p = {   
    Position(4225, 4714, 3), -- position of energy wall
    Position(4226, 4714, 3), -- position of energy wall
    Position(4227, 4714, 3), -- position of energy wall
    Position(4227, 4715, 3), -- position of energy wall
    Position(4227, 4716, 3), -- position of energy wall
    Position(4227, 4717, 3), -- position of energy wall    
    Position(4226, 4717, 3), -- position of energy wall
    Position(4225, 4717, 3), -- position of energy wall    
    Position(4224, 4717, 3), -- position of energy wall
    Position(4224, 4716, 3), -- position of energy wall
    Position(4224, 4715, 3), -- position of energy wall
}
            
function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey) 

local energywall1 = Tile(p[1])  
local energywall2 = Tile(p[2]) 
local energywall3 = Tile(p[3]) 
local energywall4 = Tile(p[4]) 
local energywall5 = Tile(p[5]) 
local energywall6 = Tile(p[6])     
local energywall7 = Tile(p[7]) 
local energywall8 = Tile(p[8]) 
local energywall9 = Tile(p[9]) 
local energywall10 = Tile(p[10]) 
local energywall11 = Tile(p[11]) 
    
    
        if item.itemid == 1945 then 
        if not (energywall1:getItemById(wall1) ~= nil) then
            if timeToReset > 1 then     
                cid:sendTextMessage(MESSAGE_EVENT_ORANGE, 'the energy prison has been activated but it will reset in ' .. timeToReset .. ' seconds.') 
            else
                cid:sendTextMessage(MESSAGE_EVENT_ORANGE, 'the energy prison has been activated but it will reset in ' .. timeToReset .. ' second.')
            end

            Game.createItem(wall1, 1, energywall1Pos)
            Game.createItem(wall2, 1, energywall2Pos)
            Game.createItem(wall3, 1, energywall3Pos)
            Game.createItem(wall4, 1, energywall4Pos)
            Game.createItem(wall5, 1, energywall5Pos)
            Game.createItem(wall6, 1, energywall6Pos)
            Game.createItem(wall7, 1, energywall7Pos)
            Game.createItem(wall8, 1, energywall8Pos)
            Game.createItem(wall9, 1, energywall9Pos)
            Game.createItem(wall10, 1, energywall10Pos)
            Game.createItem(wall11, 1, energywall11Pos)
            Item(item.uid):transform(1946)
            
            
p[1]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[2]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)  
p[3]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)  
p[4]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)  
p[5]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)  
p[6]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)  
p[7]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)  
p[8]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)  
p[9]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)  
p[10]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)  
p[11]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)                          
                                    
            
            addEvent(function(energywall1Pos)
            energywall1:getItemById(wall1):remove()           
            energywall1Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall1:getPosition())  

            addEvent(function(energywall2Pos)
            energywall2:getItemById(wall2):remove()           
            energywall2Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall2:getPosition())  

            addEvent(function(energywall3Pos)
            energywall3:getItemById(wall3):remove()           
            energywall3Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall3:getPosition())  
            
            addEvent(function(energywall4Pos)
            energywall4:getItemById(wall4):remove()           
            energywall4Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall4:getPosition())  
            
            addEvent(function(energywall5Pos)
            energywall5:getItemById(wall5):remove()           
            energywall5Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall5:getPosition())  
            
            addEvent(function(energywall6Pos)
            energywall6:getItemById(wall6):remove()           
            energywall6Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall6:getPosition())  
            
            addEvent(function(energywall7Pos)
            energywall7:getItemById(wall7):remove()           
            energywall7Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall7:getPosition())  
            
            addEvent(function(energywall8Pos)
            energywall8:getItemById(wall8):remove()           
            energywall8Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall8:getPosition())  
            
            addEvent(function(energywall9Pos)
            energywall9:getItemById(wall9):remove()           
            energywall9Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall9:getPosition())  
            
            addEvent(function(energywall10Pos)
            energywall10:getItemById(wall10):remove()           
            energywall10Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall10:getPosition())  
            
            addEvent(function(energywall11Pos)
            energywall11:getItemById(wall11):remove()           
            energywall11Pos:sendMagicEffect(CONST_ME_TELEPORT)                     
            end, timeToReset * 1000, energywall11:getPosition())  
            
           elseif item.itemid == 1946 then       
            return false    
          end
end        
    return true
end

also i dont dont if this is correct
Lua:
if not (energywall1:getItemById(objectId) ~= nil) then


35671
 
Last edited:
Solution
I do know this isn't request section, but oh well.
Lua:
local c = {
    [1] = {itemId = 5071, pos = {x = 4225, y = 4714, z = 3}},
    [2] = {itemId = 5071, pos = {x = 4226, y = 4714, z = 3}},
    [3] = {itemId = 5071, pos = {x = 4227, y = 4714, z = 3}},
    [4] = {itemId = 5072, pos = {x = 4227, y = 4715, z = 3}},
    [5] = {itemId = 5072, pos = {x = 4227, y = 4716, z = 3}},
    [6] = {itemId = 5073, pos = {x = 4227, y = 4717, z = 3}},
    [7] = {itemId = 5071, pos = {x = 4226, y = 4717, z = 3}},
    [8] = {itemId = 5071, pos = {x = 4225, y = 4717, z = 3}},
    [9] = {itemId = 5072, pos = {x = 4224, y = 4717, z = 3}},
    [10] = {itemId = 5072, pos = {x = 4224, y = 4716, z = 3}},
    [11] = {itemId = 5072, pos = {x = 4224, y = 4715, z =...
i was trying to create this script that create a cage of energy walls in certain position using a lever but im getting some problems in the createItem line.
dont know if someone can give me a hand with this.


Lua:
local timeToReset = 30 -- Time to reset walls in seconds.

local wall1 = 5071 -- energywall
local wall2 = 5071 -- energywall
local wall3 = 5071 -- energywall
local wall4 = 5072 -- energywall
local wall5 = 5072 -- energywall
local wall6 = 5073 -- energywall
local wall7 = 5071 -- energywall
local wall8 = 5071 -- energywall


local wall9 = 5072 -- energywall
local wall10 = 5072 -- energywall
local wall11 = 5072 -- energywall


p = { 
    Position(4225, 4714, 3), -- position of energy wall
    Position(4226, 4714, 3), -- position of energy wall
    Position(4227, 4714, 3), -- position of energy wall
    Position(4227, 4715, 3), -- position of energy wall
    Position(4227, 4716, 3), -- position of energy wall
    Position(4227, 4717, 3), -- position of energy wall 
    Position(4226, 4717, 3), -- position of energy wall
    Position(4225, 4717, 3), -- position of energy wall 
    Position(4224, 4717, 3), -- position of energy wall
    Position(4224, 4716, 3), -- position of energy wall
    Position(4224, 4715, 3), -- position of energy wall
}
          
function onUse(cid, item, fromPosition, itemEx, toPosition, isHotkey)

local energywall1 = Tile(p[1])
local energywall2 = Tile(p[2])
local energywall3 = Tile(p[3])
local energywall4 = Tile(p[4])
local energywall5 = Tile(p[5])
local energywall6 = Tile(p[6])   
local energywall7 = Tile(p[7])
local energywall8 = Tile(p[8])
local energywall9 = Tile(p[9])
local energywall10 = Tile(p[10])
local energywall11 = Tile(p[11])
  
  
        if item.itemid == 1945 then
        if not (energywall1:getItemById(objectId) ~= nil) then
            if timeToReset > 1 then   
                cid:sendTextMessage(MESSAGE_EVENT_ORANGE, 'the energy prison has been activated but it will reset in ' .. timeToReset .. ' seconds.')
            else
                cid:sendTextMessage(MESSAGE_EVENT_ORANGE, 'the energy prison has been activated but it will reset in ' .. timeToReset .. ' second.')
            end

            Game.createItem(wall1, 1, energywall1Pos)
            Game.createItem(wall2, 1, energywall2Pos)
            Game.createItem(wall3, 1, energywall3Pos)
            Game.createItem(wall4, 1, energywall4Pos)
            Game.createItem(wall5, 1, energywall5Pos)
            Game.createItem(wall6, 1, energywall6Pos)
            Game.createItem(wall7, 1, energywall7Pos)
            Game.createItem(wall8, 1, energywall8Pos)
            Game.createItem(wall9, 1, energywall9Pos)
            Game.createItem(wall10, 1, energywall10Pos)
            Game.createItem(wall11, 1, energywall11Pos)
            Item(item.uid):transform(1946)
          
          
p[1]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[2]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[3]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[4]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[5]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[6]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[7]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[8]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[9]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[10]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
p[11]:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)                       
                                  
          
            addEvent(function(energywall1Pos)
            energywall1:getItemById(objectId):remove()         
            energywall1Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall1:getPosition())

            addEvent(function(energywall2Pos)
            energywall2:getItemById(objectId):remove()         
            energywall2Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall2:getPosition())

            addEvent(function(energywall3Pos)
            energywall3:getItemById(objectId):remove()         
            energywall3Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall3:getPosition())
          
            addEvent(function(energywall4Pos)
            energywall4:getItemById(objectId):remove()         
            energywall4Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall4:getPosition())
          
            addEvent(function(energywall5Pos)
            energywall5:getItemById(objectId):remove()         
            energywall5Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall5:getPosition())
          
            addEvent(function(energywall6Pos)
            energywall6:getItemById(objectId):remove()         
            energywall6Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall6:getPosition())
          
            addEvent(function(energywall7Pos)
            energywall7:getItemById(objectId):remove()         
            energywall7Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall7:getPosition())
          
            addEvent(function(energywall8Pos)
            energywall8:getItemById(objectId):remove()         
            energywall8Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall8:getPosition())
          
            addEvent(function(energywall9Pos)
            energywall9:getItemById(objectId):remove()         
            energywall9Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall9:getPosition())
          
            addEvent(function(energywall10Pos)
            energywall10:getItemById(objectId):remove()         
            energywall10Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall10:getPosition())
          
            addEvent(function(energywall11Pos)
            energywall11:getItemById(objectId):remove()         
            energywall11Pos:sendMagicEffect(CONST_ME_TELEPORT)                   
            end, timeToReset * 1000, energywall11:getPosition())
          
           elseif item.itemid == 1946 then     
            return false 
          end
end     
    return true
end

also i dont dont if this is correct
Lua:
if not (energywall1:getItemById(objectId) ~= nil) then



objectId has no set up value yet.
You should put a line at the beginning like:
local objectId = 7777
 
I do know this isn't request section, but oh well.
Lua:
local c = {
    [1] = {itemId = 5071, pos = {x = 4225, y = 4714, z = 3}},
    [2] = {itemId = 5071, pos = {x = 4226, y = 4714, z = 3}},
    [3] = {itemId = 5071, pos = {x = 4227, y = 4714, z = 3}},
    [4] = {itemId = 5072, pos = {x = 4227, y = 4715, z = 3}},
    [5] = {itemId = 5072, pos = {x = 4227, y = 4716, z = 3}},
    [6] = {itemId = 5073, pos = {x = 4227, y = 4717, z = 3}},
    [7] = {itemId = 5071, pos = {x = 4226, y = 4717, z = 3}},
    [8] = {itemId = 5071, pos = {x = 4225, y = 4717, z = 3}},
    [9] = {itemId = 5072, pos = {x = 4224, y = 4717, z = 3}},
    [10] = {itemId = 5072, pos = {x = 4224, y = 4716, z = 3}},
    [11] = {itemId = 5072, pos = {x = 4224, y = 4715, z = 3}}
}

local timeToReset = 30 -- Time to reset walls in seconds.

local function removeWalls(position)
    local i = Tile(position):getItemById(1946).uid
    for _, info in pairs(c) do
        local item = Tile(info.pos):getItemById(info.itemId)
        if item.itemid == info.itemId then
            item:remove()
            Position(info.pos):sendMagicEffect(CONST_ME_TELEPORT) 
        end
    end
    Item(i):transform(1945)
end

function onUse(player, item, fromPosition, itemEx, toPosition, isHotkey)
    if item.itemid == 1945 then
        for _, info in pairs(c) do
            local pos = Position(info.pos)
            local wall = Tile(info.pos):getItemById(info.itemId)
            if wall == nil then
                Game.createItem(info.itemId, 1, pos)
                pos:sendMagicEffect(CONST_ME_SKULLHORIZONTAL)
            end
        end

        Item(item.uid):transform(1946)
        addEvent(removeWalls, timeToReset * 1000, item:getPosition())
        player:sendTextMessage(MESSAGE_EVENT_ORANGE, 'The energy prison has been activated but it will reset in ' .. timeToReset .. ' seconds.')

    elseif item.itemid == 1946 then
        player:sendTextMessage(MESSAGE_EVENT_ORANGE, 'The lever has already been pulled.')
        return false
    end
    return true
end
 
Solution
Back
Top