mandar o id da chave
a storage quer vc quer!
info
Group: Artesão
Joined: 08/10/15
Posts: 103
Reputation: +34

mandar o id da chave
a storage quer vc quer!
info
Group: Conde
Joined: 09/09/09
Posts: 528
Reputation: +424
Tibia Character: 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
Group: Visconde
Joined: 02/10/13
Posts: 320
Reputation: +22
Gender: Masculino

Só que por exemplo, essa chave iria cair de monstros e quando ela dropa de monstros, vem sem actionID
info
Group: Conde
Joined: 09/09/09
Posts: 528
Reputation: +424
Tibia Character: 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
Group: Visconde
Joined: 02/10/13
Posts: 320
Reputation: +22
Gender: Masculino

OBS: quando eu uso a chave na porta, o actionid some, e ela volta a ser uma porta normal
info
Group: Conde
Joined: 09/09/09
Posts: 528
Reputation: +424
Tibia Character: 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
Group: Visconde
Joined: 02/10/13
Posts: 320
Reputation: +22
Gender: 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
Edited Dezembro 13 by Farathor
info
Group: Visconde
Joined: 02/10/13
Posts: 320
Reputation: +22
Gender: 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