Ir para conteúdo
  • 0

[PEDIDO] Ao pisar no tile a parede muda (Não some)


KarlKalvin

Pergunta

Olá Xtibianos, queria um script movement que ao o player pisar em cima, ficar parado ali tanto faz a parede 1 muda de 1 para 2 e ao sair, ou não tiver mais ninguem em cima dela ela volta para parede 1, não precisa de mensagem nem level nada, só pisou mudou.


@up

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

acho melhor vc fazer esse script em global events
tente isso aki




local paredes = {
[itemid_parede1] = {wall = itemid_parede2,player_pos = {x = ,y =,z = },wall_pos = {x = ,y =,z = }},
}


function onThink(interval, lastExecution)
local hasplayer = 0
for _,a in pairs(paredes) do
local ppos = paredes[a].player_pos
local wpos = paredes[a].player_pos
if getSpectators(ppos, 1, 1,false) then
for _, cid in ipairs(getSpectators(ppos, 1, 1,false)) do
if isCreature(cid) then
if doComparePosition(getThingPos(cid), ppos) then
hasplayer = 1
end
end
end
end
for i = 1,253 do
local uidwall = getTileThingByPos({x = wpos.x, y = wpos.y, z = wpos.z, stackpos = i})
if hasplayer == 1 then
if uidwall.itemid == a then
doTransformItem(uidwall.uid, paredes[a].wall)
end
else
if uidwall.itemid == paredes[a].wall then
doTransformItem(uidwall.uid, a)
end
end
end
end
end


Link para o comentário
Compartilhar em outros sites

  • 0

 

 

local paredes = { [itemid_parede1] = {wall = itemid_parede2,player_pos = {x = ,y =,z = },wall_pos = {x = ,y =,z = }}, }

 

Explica como eu usaria isso... e oque eu faria se fosse pra colocar +1 parede de a para b de b para c

Link para o comentário
Compartilhar em outros sites

  • 0

eu pensei que dava para entender daquela forma
desculpa deveria ter feito uma legenda
vou criar uma para vc agora
itemid_parede1: vc substitui pelo id da parede que vc quer mudar
itemid_parede2: vc substitui pelo id da nova parede

player_pos: vc coloca a posição que o player tem que pisar para a parede mudar
wall_pos: vc coloca a posição da parede
=D

curta poke tournament

 

alias use esse script
vai ser melhor
antes vc n poderia repetir o mesmo id de porta

 

local paredes = {
{changewall = itemid_parede1, wall = itemid_parede2,player_pos = {x = ,y =,z = },wall_pos = {x = ,y =,z = }},
}


function onThink(interval, lastExecution)
local hasplayer = 0
for a = 1,#paredes do
local ppos = paredes[a].player_pos
local wpos = paredes[a].wall_pos
if getSpectators(ppos, 1, 1,false) then
for _, cid in ipairs(getSpectators(ppos, 1, 1,false)) do
if isCreature(cid) then
if doComparePosition(getThingPos(cid), ppos) then
hasplayer = 1
end
end
end
end
for i = 1,252 do
local uidwall = getTileThingByPos({x = wpos.x, y = wpos.y, z = wpos.z, stackpos = i})
if hasplayer == 1 then
if uidwall.itemid == paredes[a].changewall then
doTransformItem(uidwall.uid, paredes[a].wall)
end
else
if uidwall.itemid == paredes[a].wall then
doTransformItem(uidwall.uid, paredes[a].changewall)
end
end
end
end
end

 


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

  • 0

movements/script/open doorCP.lua

 

 

--<movevent type="StepIn" actionid="2700" event="script" value="open doorCP.lua"/>
--<movevent type="StepOut" actionid="2700" event="script" value="open doorCP.lua"/>
 
 
local config = {
    delay = 150,                                       --Intervalo de tempo entre as "transformações" da porta, em milésimos.
    doors = {
         {12877, 13650, 13648},                              --{ID da porta fechada, ID da porta aberta pela metade, ID da porta aberta},
    },                       
    ids = {
        [2700] = {                                        
            {x = 1021, y = 1027, z = 7},                  --[actionID do piso] = { pos da porta(s) que vai(sao) ser aberta(s), }
        },
    },
}
function onStepIn(cid, item, position)
    if config.ids[item.actionid] then
        for _, pos in pairs(config.ids[item.actionid]) do
            for i, door in ipairs(config.doors) do
                if getTileItemById(pos, door[1]).uid > 0 then
                    for i = 1, 2 do
                        addEvent(function()
                            local d = getTileItemById(pos, i == 1 and door[1] or door[2]).uid
                            if d > 0 then
                               doTransformItem(d, door[i + 1])
                            end
                        end, i * config.delay)
                    end
                end 
            end
        end
    end
    return true
end
function onStepOut(cid, item)
    if isMonster(cid) or isSummon(cid) then return true end
    if config.ids[item.actionid] then
        for _, pos in pairs(config.ids[item.actionid]) do
            for i, door in ipairs(config.doors) do
                if getTileItemById(pos, door[3]).uid > 0 then
                    local s = getSpectators(pos, 1, 1)
                    --print( s and s[0] or 'nil')
                    if s then
                        break
                    end
                    for i = 1, 2 do
                        addEvent(function()
                            local d = getTileItemById(pos, i == 1 and door[3] or door[2]).uid
                            if d > 0 then
                                doTransformItem(d, door[i == 1 and 2 or 1])
                            end
                        end, i * config.delay)
                    end
                end
            end
        end
    end
    return true
end

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...