Ir para conteúdo

Script Elevador


NathanAmaro

Posts Recomendados

Olá galera :)

 

 

Vim aqui pedir uma ajuda a vocês. Um script de elevador, que fará o seguinte:

 

 

2wc4inr.png

 

Basicamente o número "1" seria a posição que o jogador deveria estar para subir.

O número "2" é a alavanca (troquei a sprite pra ficar mais bonito), que ao clicar iria subir para o andar 2, e lá teria outra alavanca que ao clicar subiria pro andar 3, e assim por diante, são 7 andares, então quando chegar no sétimo andar quando o player clicar na alavanca novamente iria descer para o 6, depois o 5, e assim por diante. Se for preciso pode usar duas alavancas também.

 

Quem quiser melhorar a ideia como por exemplo, escolher o número do andar que queira ir, seria uma boa também.

 

Obrigado a todos!

Link para o comentário
Compartilhar em outros sites

fiz esse bem simples nem testei, to ocupado .

ta ae...

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local idAlavanca = XX
local posPlayer = getCreaturePosition(cid)
local efeitoSubi = 1
local efeitoDescer = 2

if itemEx.itemid == idAlavanca then
 local pos1 = posPlayer.x and posPlayer.y and posPlayer.z + 1
 local pos2 = posPlayer.x and posPlayer.y and posPlayer.z - 1
   if (posPlayer.x == posPlayer.x) and (posPlayer.y == posPlayer.y) and (posPlayer.z >= 1) then
     doTeleportThing(cid, pos1)
      doSendMagicEffect(pos1, efeitoSubi)
   elseif (posPlayer.x == posPlayer.x) and (posPlayer.y == posPlayer.y) and (posPlayer.z == 7) then
     doTeleportThing(cid, pos2)
       doSendMagicEffect(pos2, efeitoDescer)
   end
end

 return true
end      
Link para o comentário
Compartilhar em outros sites

Ok, vou testar e já digo se funcionou. Obrigado! #DuuhCarvalho

 

--------------------Editado----------------

 

Desculpe a demora, eu testei e não funcionou :/

Deu esse error:

 

18ovba.png

Editado por NathanAmaro
Link para o comentário
Compartilhar em outros sites

Hm, fiz uma coisa meio estranha, mas deve funcionar. Configure o quê foi indicado.

local floors = {
    [1] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},    --[andar] = {posição que o jogador deve ficar, posição para onde será teleportado},
    [2] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [3] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [4] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [5] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [6] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [7] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
}
local storage = 918281
function onUse(cid, item, frompos, item2, topos)
    local position = getThingPos(cid)
    local function getFloor(cid)
        for _, p in pairs(floors) do
            if position.x == p[1].x and position.y == p[1].y and position.z == p[1].z then
                return _
            end
        end
        return false
    end
    if not getFloor(cid) then
        return true
    end
    local floor = getFloor(cid)
    local function getNextFloor(cid)
        if getPlayerStorageValue(cid, storage) < 1 then
            return floor + 1
        else
            return floor - 1
        end
    end
    if not floors[getNextFloor(cid)] then
        return true
    end
    if getNextFloor(cid) == 7 then
        setPlayerStorageValue(cid, storage, 1)
    elseif getNextFloor(cid) == 1 then
        setPlayerStorageValue(cid, storage, -1)
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "*Plim* Now you're on the "..getNextFloor(cid).." floor.")
    doTeleportThing(cid, floors[getNextFloor(cid)][2])
    return true
end
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

 

Hm, fiz uma coisa meio estranha, mas deve funcionar. Configure o quê foi indicado.

local floors = {
    [1] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},    --[andar] = {posição que o jogador deve ficar, posição para onde será teleportado},
    [2] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [3] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [4] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [5] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [6] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [7] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
}
local storage = 918281
function onUse(cid, item, frompos, item2, topos)
    local position = getThingPos(cid)
    local function getFloor(cid)
        for _, p in pairs(floors) do
            if position.x == p[1].x and position.y == p[1].y and position.z == p[1].z then
                return _
            end
        end
        return false
    end
    if not getFloor(cid) then
        return true
    end
    local floor = getFloor(cid)
    local function getNextFloor(cid)
        if getPlayerStorageValue(cid, storage) < 1 then
            return floor + 1
        else
            return floor - 1
        end
    end
    if not floors[getNextFloor(cid)] then
        return true
    end
    if getNextFloor(cid) == 7 then
        setPlayerStorageValue(cid, storage, 1)
    elseif getNextFloor(cid) == 1 then
        setPlayerStorageValue(cid, storage, -1)
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "*Plim* Now you're on the "..getNextFloor(cid).." floor.")
    doTeleportThing(cid, floors[getNextFloor(cid)][2])
    return true
end

Cara, eu testei e não funcionou :/

Link para o comentário
Compartilhar em outros sites

Cara, eu testei e não funcionou :/

 

Vc editou a tabela?

local floors = {
    [1] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},    --[andar] = {posição que o jogador deve ficar, posição para onde será teleportado},
    [2] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [3] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [4] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [5] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [6] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
    [7] = {{x = x, y = y, z = z}, {x = x, y = y, z = z}},
}

Edit

Fiz de uma maneira mais simples...


local maxFloor = 7
local minFloor = 2

function onUse(cid, item, fromPosition, itemEx, toPosition)
    local pos_ = getThingPos(cid)
    if pos_.z < maxFloor and pos_.z < minFloor then
        if item.actionid == 4912 then
            doTeleportThing(cid, {x = pos_.x, y = pos_.y, z = pos_.z + 1})
            doSendMagicEffect({x = pos_.x, y = pos_.y, z = pos_.z + 1}, 28)
            doPlayerSendTextMessage(cid, 25, "Voce desceu um andar.")
        elseif item.actionid == 4913 then
            doTeleportThing(cid, {x = pos_.x, y = pos_.y, z = pos_.z - 1})
            doSendMagicEffect({x = pos_.x, y = pos_.y, z = pos_.z - 1}, 28)        
            doPlayerSendTextMessage(cid, 25, "Voce subiu um andar.")
        end
    else
        doPlayerSendCancel(cid, "Voce ja esta no andar maximo!")
    end
    return true
end

Registra no actions.xml os actionIDs 4912 e 4913. Na alavanca de subir andar vc bota 4913 e na de descer vc bota 4912.

 

maxFloor é o andar máximo q o cara pode ir

minFloor é o andar mínimo q o cara pode ir

Editado por Killua
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...