[Pedido] Key Door

Farathor
em Scripts

Farathor

Farathor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/13Posts: 320Gê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

 

Meus Trabalhos

Scripts

luizmachado1

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 08/10/15Posts: 103

mandar o id da chave

a storage quer vc quer!

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char 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"/>

Yours Mkalo :)

Farathor

Farathor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/13Posts: 320Gênero: Masculino

Só que por exemplo, essa chave iria cair de monstros e quando ela dropa de monstros, vem sem actionID

Meus Trabalhos

Scripts

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char 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.

 

Yours Mkalo :)

Lucas CP

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/04/15Posts: 54

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>

Farathor

Farathor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/13Posts: 320Gênero: Masculino

OBS: quando eu uso a chave na porta, o actionid some, e ela volta a ser uma porta normal

Meus Trabalhos

Scripts

MatheusGlad

<~~> Scripter <~~>
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 09/09/09Posts: 528Char 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? :p

 

Voce abre a porta e o actionid some, se voce usar a chave denovo tranca a porta Oo

Yours Mkalo :)

Farathor

Farathor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 03/10/13Posts: 320Gê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

Meus Trabalhos

Scripts