UR
pedido

Player em tal area ser teleportado!

Por UroTTa, 03 de mar. de 2014 em Scripts

resolvido
script
8
1.2k
UroTTaU
03 de março de 2014 às 20:28

Gostaria de um script que funciona da maneira seguinte:

 

Jogador em certa area (configuravel) sem estar com (X) storage toma teleport para o templo!

 

REP++

dyego2008D
03 de março de 2014 às 20:45

 

local t = {
[3950] = { -- Area
pos = {x=33182, y=32714, z=14},
done = {x=33231, y=32705, z=8},
storage = 82341
}
}

function onStepIn(cid, item, position, fromPosition)
local v = t[item.actionid]
doSendMagicEffect(position, CONST_ME_TELEPORT)
if getPlayerStorageValue(cid, v.storage) == -1 and doPlayerRemoveItem(cid, v.item, 1) then
doTeleportThing(cid, v.pos)
doSendMagicEffect(v.pos, CONST_ME_TELEPORT)
setPlayerStorageValue(cid, v.storage, 1)
else
doTeleportThing(cid, v.done)
doSendMagicEffect(v.done, CONST_ME_TELEPORT)
end
end

 

 

Testa ae não testei aqui, se der erro avisa aqui

 

tenho este que uso no meu server, teste ele também.

 

function onStepIn(cid, item, pos)
-- teleporte para a area desejada
teleport1 ={x=1024, y=1024, z=7}
if isPlayer(cid) then
if item.actionid == 3540 then
player = getPlayerStorageValue(cid,3540)
if player == -1 then
doPlayerSendCancel(cid,"Mensagem")
doTeleportThing(cid,teleport1)
else
end
end
end
end

Editado Março 3 por dyego2008

UroTTaU
04 de março de 2014 às 00:09

Não é isso, você não entendeu, o script funciona totalmente diferente, irei explicar:

 

Um jogador que esta caçando em uma area EXLUSIVA e perde seu acesso a essa area (storage) e gostaria que ele automaticamente tomase teleport para o templo.

zipter98Z
04 de março de 2014 às 13:48

Variáveis:

upperr = {x = x, y = y, z = z}    --Coordenadas da posição superior esquerda da área.
lowerr = {x = x, y = y, z = z}    --Coordenadas da posição inferior direita da área.
Função:
function getPlayersFromAreaWithoutSto(up, low, storage)
local players = {}
    for x = up.x, low.x do
        for y = up.y, low.y do
            for z = up.z, low.z do
                local pos = {x = x, y = y, z = z}
                local cid = getTopCreature(pos).uid
                if isPlayer(cid) then
                    if getPlayerStorageValue(cid, storage) < 1 then
                        table.insert(players, cid)
                    end
                end
            end
        end
    end
    return #players ~= 0 and players or false
end    
Modo de usar:
if getPlayersFromAreaWithoutSto(upperr, lowerr, sto) then
        for a, b in pairs(getPlayersFromAreaWithoutSto(upperr, lowerr, sto)) do
            doTeleportThing(b, getTownTemplePosition(getPlayerTown(b)))
        end
    end

Recomendo colocar a função e as variáveis em algum arquivo de data/lib.

PS: Recomendaria que a área fosse semelhante à uma "arena". Assim, as coordenadas definidas nas variáveis poderiam verificar todos os SQMs de lá.

Editado Março 4 por zipter98

UroTTaU
04 de março de 2014 às 16:53

Não entendi muito bem como instalar esse script, as funções e variaveis eu posso botar em data/lib/050-function, correto? O modo de usar onde eu ponho e como eu registro?

zipter98Z
04 de março de 2014 às 17:02

Você pode criar um arquivo em lib com um nome qualquer, e colocar a função junto com variáveis. Aquele modo de usar, você não precisa registrar em nada. Onde colocar, é no código referente à seu pedido (só fiz a função, não o código completo).

Editado Março 4 por zipter98

UroTTaU
04 de março de 2014 às 17:09

-- Edit --

 

Obrigado, consegui usar o script, funcionou perfeitamente.

 

REP++

Editado Março 4 por UroTTa

zipter98Z
04 de março de 2014 às 19:10

Tópico movido para a seção de dúvidas e pedidos resolvidos.