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
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
Meus Trabalhos
Scripts
mandar o id da chave
a storage quer vc quer!
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"/>
Yours Mkalo
Só que por exemplo, essa chave iria cair de monstros e quando ela dropa de monstros, vem sem actionID
Meus Trabalhos
Scripts
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.
Yours Mkalo
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>
OBS: quando eu uso a chave na porta, o actionid some, e ela volta a ser uma porta normal
Meus Trabalhos
Scripts
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
Yours Mkalo
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
Meus Trabalhos
Scripts