Ir para conteúdo

Featured Replies

Postado

Olá galera do TibiaKing, venho aqui pedir a vocês que me ajudem em um scripting de verificar a posição de um Player, vou resumir abaixo.

 

 

Eu quero que o script cheque se tem um player ao redor do Player que executou x ação (qualquer ação), exemplo:

 

If playerpos.x=x-1 then

executar ação

end

 

Ele deveria checar se tem 1 Player na posx -1, mas não sei muito bem como funciona os checkin de Position

 

Resolvido por Storm

Ir para solução
  • Respostas 7
  • Visualizações 1.9k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • @Joaovettor  function checkPlayersAround(uid) local players = {} -- Deixe vazio local pos = getCreaturePosition(uid) local positions = { [1] = {x = pos.x -1, y = pos.y, z = po

  • @Joaovettor  function checkPlayersAround(uid) local players = {} -- Deixe vazio local pos = getCreaturePosition(uid) local positions = { [1] = {x = pos.x -1, y = pos.y, z = po

  • function onUse(cid, item, frompos, item2, topos) local pos = getCreaturePosition(cid) local t = getSpectators(pos, 2, 2, false) -- area 2x2 em volta do player if t then

Postado

@Joaovettor 

function checkPlayersAround(uid)
    local players = {} -- Deixe vazio
    local pos = getCreaturePosition(uid)
    local positions = { 
        [1] = {x = pos.x -1, y = pos.y, z = pos.z},
        [2] = {x = pos.x +1, y = pos.y, z = pos.z},
        [3] = {x = pos.x, y = pos.y +1, z = pos.z},
        [4] = {x = pos.x, y = pos.y -1, z = pos.z}
        
    }
    for _, var in pairs(positions) do
        for i = 0, 255 do
            var.stackpos = i
            tile = getTileThingByPos(var)
            if tile.uid > 0 and isPlayer(tile.uid) then
                table.insert(players, tile.uid)
            end
        end
    end
    if not players then return false end 
    return players
end

 

Postado
33 minutos atrás, Storm disse:

@Joaovettor 


function checkPlayersAround(uid)
    local players = {} -- Deixe vazio
    local pos = getCreaturePosition(uid)
    local positions = { 
        [1] = {x = pos.x -1, y = pos.y, z = pos.z},
        [2] = {x = pos.x +1, y = pos.y, z = pos.z},
        [3] = {x = pos.x, y = pos.y +1, z = pos.z},
        [4] = {x = pos.x, y = pos.y -1, z = pos.z}
        
    }
    for _, var in pairs(positions) do
        for i = 0, 255 do
            var.stackpos = i
            tile = getTileThingByPos(var)
            if tile.uid > 0 and isPlayer(tile.uid) then
                table.insert(players, tile.uid)
            end
        end
    end
    if not players then return false end 
    return players
end

 


Script show! Mas em minha opinião, caso esteja aberto para sugestões claro: uma boa prática seria invés de você colocar para retornar um booleano falso (please, sem one-line) seria você colocar para retornar uma tabela vazia - manter um padrão! Se o script retorna uma tabela, então retorna uma tabela vazia, caso não tenha nenhum valor.

discord.pngDiscord: vankk #7765

Precisando de ajuda? Entre em contato comigo via Discord.

 

Muitos vêm seus muitos dias de glória, mas poucos vêm seus muitos dias de luta.

Postado
  • Autor
2 horas atrás, Storm disse:

@Joaovettor 


function checkPlayersAround(uid)
    local players = {} -- Deixe vazio
    local pos = getCreaturePosition(uid)
    local positions = { 
        [1] = {x = pos.x -1, y = pos.y, z = pos.z},
        [2] = {x = pos.x +1, y = pos.y, z = pos.z},
        [3] = {x = pos.x, y = pos.y +1, z = pos.z},
        [4] = {x = pos.x, y = pos.y -1, z = pos.z}
        
    }
    for _, var in pairs(positions) do
        for i = 0, 255 do
            var.stackpos = i
            tile = getTileThingByPos(var)
            if tile.uid > 0 and isPlayer(tile.uid) then
                table.insert(players, tile.uid)
            end
        end
    end
    if not players then return false end 
    return players
end

 

 

Opa mano, obrigado pela ajuda, mas deu esse seguinte erro V

 

[29/1/2019 13:37:54] [Error - Action Interface] 
[29/1/2019 13:37:54] data/actions/scripts/testeitem.lua:onUse
[29/1/2019 13:37:54] Description: 
[29/1/2019 13:37:54] data/actions/scripts/testeitem.lua:5: attempt to index a boolean value
[29/1/2019 13:37:54] stack traceback:
[29/1/2019 13:37:54]     data/actions/scripts/testeitem.lua:5: in function 'checkPlayersAround'
[29/1/2019 13:37:54]     data/actions/scripts/testeitem.lua:27: in function <data/actions/scripts/testeitem.lua:26>

Eu deixei o script dessa maneira V

 

function checkPlayersAround(uid)
    local players = {} -- Deixe vazio
    local pos = getCreaturePosition(uid)
    local positions = { 
        [1] = {x = pos.x -1, y = pos.y, z = pos.z},
        [2] = {x = pos.x +1, y = pos.y, z = pos.z},
        [3] = {x = pos.x, y = pos.y +1, z = pos.z},
        [4] = {x = pos.x, y = pos.y -1, z = pos.z}
        
    }
    for _, var in pairs(positions) do
        for i = 0, 255 do
            var.stackpos = i
            tile = getTileThingByPos(var)
            if tile.uid > 0 and isPlayer(tile.uid) then
                table.insert(players, tile.uid)
            end
        end
    end
    if not players then return false end 
    return players
end



function onUse(cid, item, frompos, item2, topos)
if checkPlayersAround(uid) then
doSendMagicEffect(getCreaturePos(cid), 17)
end
return true
end

 

Postado

@vankk Obrigado pela dica!! 

@Joaovettor 

function checkPlayersAround(uid)
    local players = {} -- Deixe vazio
    local pos = getCreaturePosition(uid)
    local positions = { 
        [1] = {x = pos.x -1, y = pos.y, z = pos.z},
        [2] = {x = pos.x +1, y = pos.y, z = pos.z},
        [3] = {x = pos.x, y = pos.y +1, z = pos.z},
        [4] = {x = pos.x, y = pos.y -1, z = pos.z}
        
    }
    for _, var in pairs(positions) do
        for i = 0, 255 do
            var.stackpos = i
            tile = getTileThingByPos(var)
            if tile.uid > 0 and isPlayer(tile.uid) then
                table.insert(players, tile.uid)
            end
        end
    end
    return players
end

function onUse(cid, item, frompos, item2, topos)
    if checkPlayersAround(cid) then
        doSendMagicEffect(getCreaturePosition(cid), 17)
    end
    return true
end

 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo