mandar o id da chave
a storage quer vc quer!
info
Grupo: Artesão
Registrado: 08/10/15
Posts: 103
Reputação: +34

mandar o id da chave
a storage quer vc quer!
info
Grupo: Conde
Registrado: 09/09/09
Posts: 528
Reputação: +424
Char no Tibia: Emekalo Makalo

Door = {}
function Door:new(position, keyaid, openid, closedid)
return setmetatable({position=position, keyaid=keyaid, openid=openid, closedid=closedid, locked=true, id=closedid}, {__index = Door})
end
function Door:isLocked()
if self.id == self.closedid then
return self.locked
end
end
function Door:setUid(uid)
self.uid = uid
return true
end
function Door:unlock(keyaid)
if self.uid and keyaid == self.keyaid then
self.locked = false
self.id = self.openid
doTransformItem(self.uid, self.openid)
doItemSetAttribute(self.uid, "aid", 0)
return true
end
end
function Door:lock(keyaid)
if self.uid and keyaid == self.keyaid then
self.locked = true
self.id = self.closedid
doTransformItem(self.uid, self.closedid)
doItemSetAttribute(self.uid, "aid", keyaid)
return true
end
end
function getDoorByPosition(position, doors)
for _, door in ipairs(doors) do
if doComparePositions(door.position, position) then
return door
end
end
end
-- Door:new(posiçao, actionid, idportaabertam idportafechada)
local doors = {
[1] = Door:new({x=156, y=54, z=7}, 1230, 5100, 5099),
[2] = Door:new({x=152, y=54, z=7}, 1231, 5100, 5099),
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
local door = getDoorByPosition(toPosition, doors)
if door then
if itemEx.itemid == door.openid or itemEx.itemid == door.closedid then
door:setUid(itemEx.uid)
if item.uid == itemEx.uid then
if door:isLocked() then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "It is locked.")
end
else
if door:isLocked() then
local unlock = door:unlock(item.actionid)
if not unlock then
return doPlayerSendCancel(cid, "The key does not match.")
end
else
local lock = door:lock(item.actionid)
if not lock then
return doPlayerSendCancel(cid, "The key does not match.")
end
end
end
end
end
return true
end
Bota o mesmo action id na porta e na chave. Soh edite a tabela doors.
Tag:
<action actionid="1230-1231" event="script" value="test.lua"/>
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

Só que por exemplo, essa chave iria cair de monstros e quando ela dropa de monstros, vem sem actionID
info
Grupo: Conde
Registrado: 09/09/09
Posts: 528
Reputação: +424
Char no Tibia: Emekalo Makalo

Muda:
local unlock = door:unlock(item.actionid) ... ... local lock = door:lock(item.actionid)
Por:
local unlock = door:unlock(item.itemid) ... ... local lock = door:lock(item.itemid)
E bota o itemid dessa chave como actionid na porta e na tabela doors.
Só que por exemplo, essa chave iria cair de monstros e quando ela dropa de monstros, vem sem actionID
Coloca isso no montros.xml
<loot>
<item id="ID da chave" actionId="ACTIONID DA CHAVE" chance="140000"/><!-- chave -->
</loot>
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

OBS: quando eu uso a chave na porta, o actionid some, e ela volta a ser uma porta normal
info
Grupo: Conde
Registrado: 09/09/09
Posts: 528
Reputação: +424
Char no Tibia: Emekalo Makalo

OBS: quando eu uso a chave na porta, o actionid some, e ela volta a ser uma porta normal
Bem, não era pra ser desse jeito? ![]()
Voce abre a porta e o actionid some, se voce usar a chave denovo tranca a porta Oo
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino

Então, é que quando fecha a porta, da pra abrir ela sem chave
E eu queria assim, a porta só pode ser aberta com a chave, não precisa trancar de novo, toda vez que ela estiver fechada, só pode ser aberta com a chave
Editado Dezembro 13 por Farathor
info
Grupo: Visconde
Registrado: 02/10/13
Posts: 320
Reputação: +22
Gênero: Masculino
Então pessoal, gostaria de pedir um script que funciona da seguinte maneira, bem simples, só será possivel abrir uma determinada porta, se eu usar uma certa chave nela, ou seja, a porta só se abre, quando eu usar a chave nela