Ir para conteúdo
  • Cadastre-se

(Resolvido)Limpando Sala


Ir para solução Resolvido por Wise,

Posts Recomendados

Tenho uma sala cheio de Corpos de Monstros mortos e sangue.

 

Como faço para o Player, ao passar pelo Tile, remove os Corpos e o Sangue do chão. Deixar tudo limpo para outro jogador usar?

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites

Atribua todas as coordenadas em uma variável, e use o doCleanTile():

 

 

 local pos = {{x = 0, y = 0, z = 0},
 {x = 0, y = 0, z = 0},
 {x = 0, y = 0, z = 0},
 {x = 0, y = 0, z = 0},
 {x = 0, y = 0, z = 0},
 {x = 0, y = 0, z = 0}}
 
 
 
   for _, s in pairs (pos) do
    doCleanTile(s)
   


spacer.png

 

 

Link para o post
Compartilhar em outros sites

tem um jeito específico de fazer isso usando a função getTileItemById (não lembro se é exatamente esse nome agr). Você vai alterando uma pos dentro de dois fors que vão ser responsáveis pelo range da área, e daí vc usa essa função pra pegar o uid do item que vc quer remover pra dps usar doRemoveItem. Eu to viajando agora (devo voltar lá pra fevereiro só :/) to no note do meu padrasto mas qnd eu chegar se ainda não tiver resolvido eu faço pra você um métodozinho pra remover itens em uma area

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Poxa, seria bom uma ajudinha agora. Tentei fazer mas não deu muito certo:

 

function onStepIn(cid)


for posx = 490,496 do -- checar posição X, começo e final da sala
for posy = 498,503 do -- checar posicao Y, começo e final da sala
local pos = {x=posx, y=posy, z=5, stackpos=255} 
local limpar = getTileItemById(pos, 1739)
                
doRemoveItem(limpar.uid)
end
end


return TRUE
end

Assim que passo pelo Tile, o objeto some, mas antes de sumir, aparece vários erros no servidor:

24/12/2014 17:18:36] [Error - MoveEvents Interface] 
[24/12/2014 17:18:36] data/movements/scripts/Quests/Teste.lua:onStepIn
[24/12/2014 17:18:36] Description: 
[24/12/2014 17:18:36] (luaDoRemoveItem) Item not found

 

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

cms1-pr%C3%AAmio.png

Link para o post
Compartilhar em outros sites

vamos analisar o erro que deu: 

[24/12/2014 17:18:36] (luaDoRemoveItem) Item not found

ele  tentou remover o item mas não havia item. Pra resolver isso vc precisa fazer duas coisas bem simples, pegar o uid do item coletado (não sei se a função já faz isso automaticamente) e fazer a checagem se aquele uid é válido.
ficaria assim sem o callback:

for posx = 490,496 do -- checar posição X, começo e final da sala
for posy = 498,503 do -- checar posicao Y, começo e final da sala
local pos = {x=posx, y=posy, z=5} 
local limpar = getTileItemById(pos, 1739)                
	if limpar > 0 then
		doRemoveItem(limpar.uid)
	end
end
end

se der erro só coloca ali na checagem if limpar.uid > 0 then

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Essa combinação aqui deu certo @White:

function onStepIn(cid)

for posx = 490,496 do -- checar posição X, começo e final da sala
for posy = 498,503 do -- checar posicao Y, começo e final da sala
local pos = {x=posx, y=posy, z=5} 
local limpar = getTileItemById(pos, 1903)                


if limpar.uid > 0 then
doRemoveItem(limpar.uid)
end
end
end

return TRUE
end

 

Mas acabei de perceber um detalhe adicional.
Como faço para remover vários itens selecionado.
Ex: Em uma sala tenho Itens 1, 2, 3, 4 e 5.

Quero remover apenas os Itens 1, 2, 3 e 5.
Queria uma tabela, onde eu possa adicionar os IDs dos itens que eu quero remover.

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

cms1-pr%C3%AAmio.png

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

Mas acabei de perceber um detalhe adicional. Como faço para remover vários itens selecionado.

Tente:

function onStepIn(cid)
    local items = {1903, 1904, 1905}
    for posx = 490, 496 do
        for posy = 498, 503 do
            local pos = {x=posx, y=posy, z=5}
            for i = 1, #items do
                local limpar = getTileItemById(pos, items[i])
                if limpar.uid > 0 then
                    doRemoveItem(limpar.uid)
                end
            end
        end
    end
    
    return true
end

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo