Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Clean em uma certa coordenada


Ir para solução Resolvido por Dwarfer,

Posts Recomendados

Olá pessoal

Preciso de um script de "clean"

que dê clean somente em uma coordenada específica , ou em várias coordenadas específicas , e que soltasse um efeito "poff" se possível..

Mas ficarei grato de qualquer forma , com , ou sem efeito , e presumo estar trazendo uma idéia que pode funcionar para mais pessoas

 

Minha distro: 0.3.6

Versão: 8.60

Remere's: 2.2

 

Tentei fazer um , não consegui

Spoiler

local config = {
        positions = { x = 150, y = 55, z = 7 },
}

function executeClean()
        doClean(positions)
    doBroadcastMessage("ms2")
    return true
end

function onThink(interval, lastExecution, thinkInterval)
    doBroadcastMessage("ms2")
    addEvent(executeClean, 0)
    return true
end

rs , eu não consegui , mas antes de pedir resolvi tentar :D

 

Enfim , obrigado á quem leu até aqui..

Quem trazer a solução ganha rep+

Sucesso!

Link para o post
Compartilhar em outros sites
  • Solução

Em globalevents/scripts crie um arquivo:

 

cleanplaces.lua

 

local areas = {
[1] = {{x = 1, y = 1, z = 1}, 2, 2},
[2] = {{x = 1, y = 1, z = 1}, 1, 1},
[3] = {{x = 1, y = 1, z = 1}, 3, 3},
[4] = {{x = 1, y = 1, z = 1}, 3, 3}
}

function onThink(interval)
for i, v in pairs(areas) do
    for _, pos in ipairs(getArea(unpack(v))) do
        doCleanTile(pos)
        doSendMagicEffect(pos, CONST_ME_POFF)
    end
end
return true
end

 

Em globalevents.xml, adicione a tag: <globalevent name="CleanPlaces" interval="30000" event="script" value="cleanplaces.lua"/>

 

Edite o interval para o tempo que você quer que o clean seja executado. Coloquei como exemplo 30 segundos.

 

Para configurar o script:

 

{{x = 1, y = 1, z = 1}, 2, 2}, --> {{posição do centro da sua área}, variação para a posição X a partir do centro, variação para a posição Y a partir do centro}

 

Neste caso, está cobrindo uma área de 5x5 sqms. Caso fosse 1,1 seria uma área de 3x3 e por aí vai. É só configurar para a sua área.

 

 

Contato:

 

Link para o post
Compartilhar em outros sites
  • 2 weeks later...
Em 03/09/2017 em 20:45, Dwarfer disse:

Em globalevents/scripts crie um arquivo:

 

cleanplaces.lua

 


local areas = {
[1] = {{x = 1, y = 1, z = 1}, 2, 2},
[2] = {{x = 1, y = 1, z = 1}, 1, 1},
[3] = {{x = 1, y = 1, z = 1}, 3, 3},
[4] = {{x = 1, y = 1, z = 1}, 3, 3}
}

function onThink(interval)
for i, v in pairs(areas) do
    for _, pos in ipairs(getArea(unpack(v))) do
        doCleanTile(pos)
        doSendMagicEffect(pos, CONST_ME_POFF)
    end
end
return true
end

 

Em globalevents.xml, adicione a tag: <globalevent name="CleanPlaces" interval="30000" event="script" value="cleanplaces.lua"/>

 

Edite o interval para o tempo que você quer que o clean seja executado. Coloquei como exemplo 30 segundos.

 

Para configurar o script:

 

{{x = 1, y = 1, z = 1}, 2, 2}, --> {{posição do centro da sua área}, variação para a posição X a partir do centro, variação para a posição Y a partir do centro}

 

Neste caso, está cobrindo uma área de 5x5 sqms. Caso fosse 1,1 seria uma área de 3x3 e por aí vai. É só configurar para a sua área.

 

 

Teria como fazer pra não da clean em certo item? por exemplo não da clean no gold!

Link para o post
Compartilhar em outros sites
8 horas atrás, FearWar disse:

Teria como fazer pra não da clean em certo item? por exemplo não da clean no gold!

 

Spoiler

local areas = {
[1] = {{x = 1, y = 1, z = 1}, 2, 2},
[2] = {{x = 1, y = 1, z = 1}, 1, 1},
[3] = {{x = 1, y = 1, z = 1}, 3, 3},
[4] = {{x = 1, y = 1, z = 1}, 3, 3}
}

local ignoredList = {2152, 2148, 2160} -- itens ignorados

function onThink(interval)
for k, v in pairs(areas) do
    for _, pos in ipairs(getArea(unpack(v))) do
        for i = 0, 255 do
            pos.stackpos = i
            local tile = getTileThingByPos(pos)
            if tile.uid > 0 and isMovable(tile.uid) then
                if not hasIgnoredItem(pos, ignoredList) then
                    doRemoveItem(getThingFromPos(pos).uid)
                end
            end
        end
        doSendMagicEffect(pos, CONST_ME_POFF)
    end
end
return true
end

function hasIgnoredItem(pos, ignoredList)
    for i = 1, #ignoredList do
        if getThingFromPos(pos).itemid == ignoredList[i] then
            return true
        end
    end
    return false
end

 

 

 

Contato:

 

Link para o post
Compartilhar em outros sites
2 horas atrás, Dwarfer disse:

 

  Ocultar conteúdo


local areas = {
[1] = {{x = 1, y = 1, z = 1}, 2, 2},
[2] = {{x = 1, y = 1, z = 1}, 1, 1},
[3] = {{x = 1, y = 1, z = 1}, 3, 3},
[4] = {{x = 1, y = 1, z = 1}, 3, 3}
}

local ignoredList = {2152, 2148, 2160} -- itens ignorados

function onThink(interval)
for k, v in pairs(areas) do
    for _, pos in ipairs(getArea(unpack(v))) do
        for i = 0, 255 do
            pos.stackpos = i
            local tile = getTileThingByPos(pos)
            if tile.uid > 0 and isMovable(tile.uid) then
                if not hasIgnoredItem(pos, ignoredList) then
                    doRemoveItem(getThingFromPos(pos).uid)
                end
            end
        end
        doSendMagicEffect(pos, CONST_ME_POFF)
    end
end
return true
end

function hasIgnoredItem(pos, ignoredList)
    for i = 1, #ignoredList do
        if getThingFromPos(pos).itemid == ignoredList[i] then
            return true
        end
    end
    return false
end

 

 

 

Muito obrigado @Dwarfer, REP+

@Dwarfer Outra dúvida, se no caso eu quiser só colocar as cordenadas, sem essa area 2x2 ou 5x5;

 

Por exemplo eu tenho essa cordenada:

[1] = {{x = 1008, y = 1011, z = }, 2, 2},

Esse código acima é o centro, e eu quero que de clean 1SCM para a direita e 1SCM para esquerda, e não em área como o código está propondo!

 

Seria só eu tirar a parte:

 2, 2},

E colocar novas coordenadas?

 

Obrigado!

 

Link para o post
Compartilhar em outros sites

@FearWar

 

Spoiler

local positions = {
[1] = {x = 1, y = 1, z = 1}, -- adicione as posições que deseja limpar
[2] = {x = 1, y = 1, z = 1},
[3] = {x = 1, y = 1, z = 1},
[4] = {x = 1, y = 1, z = 1}
}

local ignoredList = {2152, 2148, 2160} -- itens ignorados

function onThink(interval)
for k, pos in pairs(positions) do
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.uid > 0 and isMovable(tile.uid) then
            if not hasIgnoredItem(pos, ignoredList) then
                doRemoveItem(getThingFromPos(pos).uid)
            end
        end
    end
    doSendMagicEffect(pos, CONST_ME_POFF)
end
return true
end

function hasIgnoredItem(pos, ignoredList)
    for i = 1, #ignoredList do
        if getThingFromPos(pos).itemid == ignoredList[i] then
            return true
        end
    end
    return false
end

 

 

Contato:

 

Link para o post
Compartilhar em outros sites
8 horas atrás, Dwarfer disse:

@FearWar

 

  Ocultar conteúdo


local positions = {
[1] = {x = 1, y = 1, z = 1}, -- adicione as posições que deseja limpar
[2] = {x = 1, y = 1, z = 1},
[3] = {x = 1, y = 1, z = 1},
[4] = {x = 1, y = 1, z = 1}
}

local ignoredList = {2152, 2148, 2160} -- itens ignorados

function onThink(interval)
for k, pos in pairs(positions) do
    for i = 0, 255 do
        pos.stackpos = i
        local tile = getTileThingByPos(pos)
        if tile.uid > 0 and isMovable(tile.uid) then
            if not hasIgnoredItem(pos, ignoredList) then
                doRemoveItem(getThingFromPos(pos).uid)
            end
        end
    end
    doSendMagicEffect(pos, CONST_ME_POFF)
end
return true
end

function hasIgnoredItem(pos, ignoredList)
    for i = 1, #ignoredList do
        if getThingFromPos(pos).itemid == ignoredList[i] then
            return true
        end
    end
    return false
end

 

 

Valeu REP+!

Link para o post
Compartilhar em outros sites
  • 7 months later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo