NE
script

Script de item

Por Neymar Jr, 22 de jul. de 2015 em Scripts

3
897
Neymar JrN
22 de julho de 2015 às 15:22

Olá estou precisando de um script para uma porta, que só pode passar se tiver x item na bp do player

BrunoB
22 de julho de 2015 às 16:24
Melhor resposta

@@Neymar Jr,

Tente assim:

 

Vá em data/actions/actions.xml e adicione a tag:

<action actionid="2135" event="script" value="doorItem.lua"/>
Agora em data/actions/scripts crie um arquivo chamado doorItem.lua com o seguinte conteúdo:

 

 

local itemid = 2354 -- id do item

function onUse(cid, item, frompos, item2, topos)
	local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
	local item = getItemsInContainerById(bp.uid, itemid)
	if #item > 0 then
		doTransformItem(item.uid, item.itemid + 1)
		local playerpos = getPlayerPosition(cid)
		local doorpos = {x = frompos.x, y = frompos.y, z = frompos.z, stackpos = 253}
		if playerpos.y == doorpos.y + 1 and playerpos.x == doorpos.x then
			doMoveCreature(cid, 0)
		elseif playerpos.x == doorpos.x - 1 and playerpos.y == doorpos.y then
			doMoveCreature(cid, 1)
		elseif playerpos.y == doorpos.y - 1 and playerpos.x == doorpos.x then
			doMoveCreature(cid, 2)
		elseif playerpos.y == doorpos.y and playerpos.x == doorpos.x + 1 then
			doMoveCreature(cid, 3)
		elseif playerpos.x == doorpos.x + 1 and playerpos.y == doorpos.y - 1 then
			doMoveCreature(cid, 4)
		elseif playerpos.x == doorpos.x - 1 and playerpos.y == doorpos.y - 1 then
			doMoveCreature(cid, 5)
		elseif playerpos.x == doorpos.x + 1 and playerpos.y == doorpos.y + 1 then
			doMoveCreature(cid, 6)
		elseif playerpos.x == doorpos.x - 1 and playerpos.y == doorpos.y + 1 then
			doMoveCreature(cid, 7)
		end
		return true
	else
		doPlayerSendTextMessage(cid, 22, 'Voce precisa ter um ' .. getItemName(itemid) .. ' em sua backpack para entrar.')
	end
	return true
end

 

 

Agora basta colocar a action 2135 (ou outra que você configurou) na porta.

Editado Julho 22 por Bruno Minervino

Neymar JrN
23 de julho de 2015 às 16:56

@@Neymar Jr,

Tente assim:

 

Vá em data/actions/actions.xml e adicione a tag:

<action actionid="2135" event="script" value="doorItem.lua"/>
Agora em data/actions/scripts crie um arquivo chamado doorItem.lua com o seguinte conteúdo:

 

 

local itemid = 2354 -- id do item

function onUse(cid, item, frompos, item2, topos)
	local bp = getPlayerSlotItem(cid, CONST_SLOT_BACKPACK)
	local item = getItemsInContainerById(bp.uid, itemid)
	if #item > 0 then
		doTransformItem(item.uid, item.itemid + 1)
		local playerpos = getPlayerPosition(cid)
		local doorpos = {x = frompos.x, y = frompos.y, z = frompos.z, stackpos = 253}
		if playerpos.y == doorpos.y + 1 and playerpos.x == doorpos.x then
			doMoveCreature(cid, 0)
		elseif playerpos.x == doorpos.x - 1 and playerpos.y == doorpos.y then
			doMoveCreature(cid, 1)
		elseif playerpos.y == doorpos.y - 1 and playerpos.x == doorpos.x then
			doMoveCreature(cid, 2)
		elseif playerpos.y == doorpos.y and playerpos.x == doorpos.x + 1 then
			doMoveCreature(cid, 3)
		elseif playerpos.x == doorpos.x + 1 and playerpos.y == doorpos.y - 1 then
			doMoveCreature(cid, 4)
		elseif playerpos.x == doorpos.x - 1 and playerpos.y == doorpos.y - 1 then
			doMoveCreature(cid, 5)
		elseif playerpos.x == doorpos.x + 1 and playerpos.y == doorpos.y + 1 then
			doMoveCreature(cid, 6)
		elseif playerpos.x == doorpos.x - 1 and playerpos.y == doorpos.y + 1 then
			doMoveCreature(cid, 7)
		end
		return true
	else
		doPlayerSendTextMessage(cid, 22, 'Voce precisa ter um ' .. getItemName(itemid) .. ' em sua backpack para entrar.')
	end
	return true
end

 

 

Agora basta colocar a action 2135 (ou outra que você configurou) na porta.

 

 

Obrigado :D resolvido