Ir para conteúdo
Close

REFORMULAMOS A SEÇÃO DE CLASSIFICADOS! - Crie grátis os seus anúncios de procura e oferta de serviços e produtos relacionados ao OTServ! - Acesse através do nosso menu ou clique aqui e confira já!

Mark Charlotte

Scripting Modificar Script

Posts Recomendados

este é um script que cria itens em aréa, onde os itens vão ficar depende da configuração do script. O problema é que os itens podem ser criados encima da água, ou até em lugares sem tile (como no print). Oque eu quero é que se o lugar onde o item for criado tiver água embaixo, ou não tiver algum tile o item não seja criado nesse local mas todos os outros seriam criados normalmente se não tivesse água ou nenhum tile embaixo do local, quem poder ajudar agradeço desde já.

 

Script:

Spoiler


local cfg = {
    items_area = {
        {
            itemid = 11497,
            area = {
                {0,0,0,0,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11498,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,1},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,1,0,0,0}
            }
        },
        {
            itemid = 11499,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,1},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11500,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {1,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11501,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,1,0,0,0,0},
                {0,0,0,0,0,0,0}
            }    
        }
    },
    remove_time = 10, -- tempo em segundos para remover
    onuse_message = "Uma area foi atingida pelo Genjutsu de %s" -- message ao usar
}

local combats = {}
for i, t in ipairs(cfg.items_area) do
    combats = createCombatObject()
    setCombatArea(combats, createCombatArea(t.area))
    function onTargetTile(cid, position)
        doCreateItem(t.itemid, 1, position)
        addEvent(function()
            local thing = getTileItemById(position, t.itemid).uid
            if(thing ~= 0) then
                doRemoveItem(thing)
            end
        end, cfg.remove_time * 1000)
    end
    setCombatCallback(combats, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
end

function onCastSpell(cid, var)

local outfit = {lookType = 90, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}
local time1 = 4000 -- segundos que ficará com a outfit
local position = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z}

    for i = 1, #combats do
        doCombat(cid, combats, var)
        doSetCreatureOutfit(cid, outfit, time1)
        doSendMagicEffect(position, 193)
    end

    doBroadcastMessage(cfg.onuse_message:format(getCreatureName(cid)), MESSAGE_STATUS_WARNING)
    return true
end

123996435_fuckfuckfuckfuckfuck.PNG.c1e1fd152cf2c35579b34fc989894dd7.PNG

646313217_fuckmylife.PNG.9e035539da195853ecdcca69eafb30b6.PNG


Editado por Mark Charlotte (veja o histórico de edições)

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mark Charlotte 

Spoiler

local cfg = {
    items_area = {
        {
            itemid = 11497,
            area = {
                {0,0,0,0,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11498,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,1},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,1,0,0,0}
            }
        },
        {
            itemid = 11499,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,1},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11500,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {1,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11501,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,1,0,0,0,0},
                {0,0,0,0,0,0,0}
            }    
        }
    },
    remove_time = 10, -- tempo em segundos para remover
    onuse_message = "Uma area foi atingida pelo Genjutsu de %s" -- message ao usar
}

function isWalkable(pos, creature, proj, pz)-- by Nord
    if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
    if getTopCreature(pos).uid > 0 and creature then return false end
    if getTileInfo(pos).protection and pz then return false, true end
    local n = not proj and 3 or 2
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.itemid ~= 0 and not isCreature(tile.uid) then
            if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
                return false
            end
        end
    end
    return true
end  

local combats = {}
for i, t in ipairs(cfg.items_area) do
    combats = createCombatObject()
    setCombatArea(combats, createCombatArea(t.area))
    function onTargetTile(cid, position)
        if isWalkable(position, true, true, true) then
            doCreateItem(t.itemid, 1, position)
            addEvent(function()
                local thing = getTileItemById(position, t.itemid).uid
                if(thing ~= 0) then
                    doRemoveItem(thing)
                end
            end, cfg.remove_time * 1000)
        end
    end
    setCombatCallback(combats, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
end

function onCastSpell(cid, var)

local outfit = {lookType = 90, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}
local time1 = 4000 -- segundos que ficará com a outfit
local position = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z}

    for i = 1, #combats do
        doCombat(cid, combats, var)
        doSetCreatureOutfit(cid, outfit, time1)
        doSendMagicEffect(position, 193)
    end

    doBroadcastMessage(cfg.onuse_message:format(getCreatureName(cid)), MESSAGE_STATUS_WARNING)
    return true
end

 

 



Não esqueçam de me marca quando eu responder em seu tópico, assim recebo a notificação e volto em seu tópico.
Não dou suporte em mensagem privada ou fora do fórum.
Não esqueça de reputa e agradecer a pessoa que lhe ajudou em algum tópico seu.
"Só ajudo quem eu vejo ajudando." xD                                                                                                                                                       Não esqueça de reputa alguém que lhe ajudou ou tentou lhe ajudar, e agradeça com suas palavras. Seja grato por alguém ter lhe ajudado ou tentado lhe ajudar!

O coitadismo e o conformismo potencializado é a arte de sentir compaixão de si mesmo para você não utilize ferramentas capazes de transformar
sua história!!

-- Augusto Cury

 

                                                               ezgif-1-98aab239f3.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

@KotZletY [29/12/2018 09:37:20] [Error - Spell Interface] 
[29/12/2018 09:37:20] data/spells/scripts/itachi/genjutsu.lua:onCastSpell
[29/12/2018 09:37:20] Description: 
[29/12/2018 09:37:20] data/spells/scripts/itachi/genjutsu.lua:110: attempt to get length of upvalue 'combats' (a number value)
[29/12/2018 09:37:20] stack traceback:
[29/12/2018 09:37:20]     data/spells/scripts/itachi/genjutsu.lua:110: in function <data/spells/scripts/itachi/genjutsu.lua:104>


Compartilhar este post


Link para o post
Compartilhar em outros sites
Spoiler

local cfg = {
    items_area = {
        {
            itemid = 11497,
            area = {
                {0,0,0,0,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11498,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,1},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,1,0,0,0}
            }
        },
        {
            itemid = 11499,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,1},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11500,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {1,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11501,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,1,0,0,0,0},
                {0,0,0,0,0,0,0}
            }    
        }
    },
    remove_time = 10, -- tempo em segundos para remover
    onuse_message = "Uma area foi atingida pelo Genjutsu de %s" -- message ao usar
}

function isWalkable(pos) -- by Yan Liima
	local tile = getThingfromPos(pos)
	if hasProperty(tile.uid, 0) == true or hasProperty(tile.uid, 3) == true then 
    	return false
	end
	return true
end

local combats = {}
local pos = {x=math.random(fromPos.x,toPos.x), y=math.random(fromPos.y,toPos.y), z=math.random(fromPos.z,toPos.z)}
for i, t in ipairs(cfg.items_area) do
    combats = createCombatObject()
    setCombatArea(combats, createCombatArea(t.area))
    function onTargetTile(cid, position)
	if isWalkable(pos) then
        doCreateItem(t.itemid, 1, position)
        addEvent(function()
            local thing = getTileItemById(position, t.itemid).uid
            if(thing ~= 0) then
                doRemoveItem(thing)
            end
        end, cfg.remove_time * 1000)
    end
end	
    setCombatCallback(combats, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
end

function onCastSpell(cid, var)
local combats = {}
local outfit = {lookType = 90, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}
local time1 = 4000 -- segundos que ficará com a outfit
local position = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z}

    for i = 1, #combats do
        doCombat(cid, combats, var)
        doSetCreatureOutfit(cid, outfit, time1)
        doSendMagicEffect(position, 193)
    end

    doBroadcastMessage(cfg.onuse_message:format(getCreatureName(cid)), MESSAGE_STATUS_WARNING)
    return true
end

 

 


Compartilhar este post


Link para o post
Compartilhar em outros sites

@Yan Liima 

[12/01/2019 11:45:58] [Error - Spell Interface] 
[12/01/2019 11:45:58] data/spells/scripts/itachi/genjutsu.lua
[12/01/2019 11:45:58] Description: 
[12/01/2019 11:45:58] data/spells/scripts/itachi/genjutsu.lua:78: attempt to index global 'fromPos' (a nil value)
[12/01/2019 11:45:58] [Warning - Event::loadScript] Cannot load script (data/spells/scripts/itachi/genjutsu.lua)


Compartilhar este post


Link para o post
Compartilhar em outros sites

Nuus nada ver a pos que coloquei ksks

 

Spoiler

local cfg = {
    items_area = {
        {
            itemid = 11497,
            area = {
                {0,0,0,0,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11498,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,1},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,1,0,0,0}
            }
        },
        {
            itemid = 11499,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,1},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11500,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {1,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11501,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,1,0,0,0,0},
                {0,0,0,0,0,0,0}
            }    
        }
    },
    remove_time = 10, -- tempo em segundos para remover
    onuse_message = "Uma area foi atingida pelo Genjutsu de %s" -- message ao usar
}

function isWalkable(pos) -- by Yan Liima
	local tile = getThingfromPos(pos)
	if hasProperty(tile.uid, 0) == true or hasProperty(tile.uid, 3) == true then 
    	return false
	end
	return true
end

local combats = {}
local pos = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z}
for i, t in ipairs(cfg.items_area) do
    combats = createCombatObject()
    setCombatArea(combats, createCombatArea(t.area))
    function onTargetTile(cid, position)
	if isWalkable(pos) then
        doCreateItem(t.itemid, 1, position)
        addEvent(function()
            local thing = getTileItemById(position, t.itemid).uid
            if(thing ~= 0) then
                doRemoveItem(thing)
            end
        end, cfg.remove_time * 1000)
    end
end	
    setCombatCallback(combats, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
end

function onCastSpell(cid, var)
local combats = {}
local outfit = {lookType = 90, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}
local time1 = 4000 -- segundos que ficará com a outfit
local position = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z}

    for i = 1, #combats do
        doCombat(cid, combats, var)
        doSetCreatureOutfit(cid, outfit, time1)
        doSendMagicEffect(position, 193)
    end

    doBroadcastMessage(cfg.onuse_message:format(getCreatureName(cid)), MESSAGE_STATUS_WARNING)
    return true
end?

 

 


Editado por Yan Liima (veja o histórico de edições)

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Yan Liima 

[12/01/2019 13:07:12] [Error - Spell Interface] 
[12/01/2019 13:07:12] data/spells/scripts/itachi/genjutsu.lua
[12/01/2019 13:07:12] Description: 
[12/01/2019 13:07:12] (luaGetThingPosition) Thing not found

[12/01/2019 13:07:12] [Error - Spell Interface] 
[12/01/2019 13:07:12] data/spells/scripts/itachi/genjutsu.lua
[12/01/2019 13:07:12] Description: 
[12/01/2019 13:07:12] data/spells/scripts/itachi/genjutsu.lua:78: attempt to index a boolean value
[12/01/2019 13:07:12] [Warning - Event::loadScript] Cannot load script (data/spells/scripts/itachi/genjutsu.lua)


Compartilhar este post


Link para o post
Compartilhar em outros sites
39 minutos atrás, Mark Charlotte disse:

@Yan Liima 

[12/01/2019 13:07:12] [Error - Spell Interface] 
[12/01/2019 13:07:12] data/spells/scripts/itachi/genjutsu.lua
[12/01/2019 13:07:12] Description: 
[12/01/2019 13:07:12] (luaGetThingPosition) Thing not found

[12/01/2019 13:07:12] [Error - Spell Interface] 
[12/01/2019 13:07:12] data/spells/scripts/itachi/genjutsu.lua
[12/01/2019 13:07:12] Description: 
[12/01/2019 13:07:12] data/spells/scripts/itachi/genjutsu.lua:78: attempt to index a boolean value
[12/01/2019 13:07:12] [Warning - Event::loadScript] Cannot load script (data/spells/scripts/itachi/genjutsu.lua)

 

Spoiler

local cfg = {
    items_area = {
        {
            itemid = 11497,
            area = {
                {0,0,0,0,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11498,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,1},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,1,0,0,0}
            }
        },
        {
            itemid = 11499,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,1,0,0,0,0,0},
                {0,0,0,0,0,0,1},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11500,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {1,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0}
            }
        },
        {
            itemid = 11501,
            area = {
                {0,0,0,0,0,0,0},
                {0,0,0,0,1,0,0},
                {0,0,0,0,0,0,0},
                {0,0,0,2,0,0,0},
                {0,0,0,0,0,0,0},
                {0,0,1,0,0,0,0},
                {0,0,0,0,0,0,0}
            }    
        }
    },
    remove_time = 10, -- tempo em segundos para remover
    onuse_message = "Uma area foi atingida pelo Genjutsu de %s" -- message ao usar
}

function isWalkable(position) -- by Yan Liima
	local tile = getThingfromPos(position)
	if hasProperty(tile.uid, 0) == true or hasProperty(tile.uid, 3) == true then 
    	return false
	end
	return true
end

local combats = {}
for i, t in ipairs(cfg.items_area) do
    combats = createCombatObject()
    setCombatArea(combats, createCombatArea(t.area))
    function onTargetTile(cid, position)
	if isWalkable(position) then
        doCreateItem(t.itemid, 1, position)
        addEvent(function()
            local thing = getTileItemById(position, t.itemid).uid
            if(thing ~= 0) then
                doRemoveItem(thing)
            end
        end, cfg.remove_time * 1000)
    end
end	
    setCombatCallback(combats, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
end

function onCastSpell(cid, var)
local combats = {}
local outfit = {lookType = 90, lookHead = 0, lookBody = 0, lookLegs = 0, lookFeet = 0, lookTypeEx = 0, lookAddons = 0}
local time1 = 4000 -- segundos que ficará com a outfit
local position = {x=getCreaturePosition(cid).x+1, y=getCreaturePosition(cid).y+1, z=getCreaturePosition(cid).z}

    for i = 1, #combats do
        doCombat(cid, combats, var)
        doSetCreatureOutfit(cid, outfit, time1)
        doSendMagicEffect(position, 193)
    end

    doBroadcastMessage(cfg.onuse_message:format(getCreatureName(cid)), MESSAGE_STATUS_WARNING)
    return true
end

 

 


Compartilhar este post


Link para o post
Compartilhar em outros sites

@Yan Liima agora os itens não estão sendo criados, e também não fiquei com a outfit. Apenas a mensagem está sendo enviada

e não aparece nenhum erro na distro.

itenb.thumb.PNG.60deca62fbd47e589e9c4c03d736dc76.PNG


Editado por Mark Charlotte (veja o histórico de edições)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×