Jump to content

Olá Tibiano! Notamos que você está com um adblocker ligado... 

Nós promovemos servidores dentro da comunidade, para que eles tenham visibilidade.

Por favor, nos ajude a continuar promovendo esses servidores. Adicione nosso domínio na whitelist de seu adblocker, ok? :)

Tony Araujo

[ACTION] Auto Loot - Coletando ao abrir corpo

Recommended Posts

Eai galera do Eks, tudo bão? Quanto tempo que eu não venho por esses lados, saudades xD

Bom, sem muita enrolação, eu vim postar pra vocês o sistema de auto loot que eu fiz aqui rapidinho (literalmente, 10 mins), porém que ficou bem bacana. É aquele esquema, você coleta o loot quando abre o corpo do bicho morto. Está bem simples, porém funcional. Eu pesquisei a respeito, pra ter uma ideia e não encontrei nenhum que tivesse com um código legal, todos estavam bem antigos.

 

Eu não tive muito tempo testando, então caso encontrem qualquer bug, me avise pfv.

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getItemAttribute(item.uid, "corpseowner") ~= cid then
		return doPlayerSendCancel(cid, "You're not the owner.")
	end
	local items = {}
	for i = 0, getContainerSize(item.uid) do
		local it = getContainerItem(item.uid, i)
		if it.uid > 0 then
			table.insert(items, {it.itemid, it.type})
			doRemoveItem(it.uid)
		end
	end
	if #items > 0 then
		for k = 1, #items do
			local playerItem = getPlayerItemById(cid, true, items[k][1])
			if playerItem.uid > 0 then
				if (playerItem.type + items[k][2]) > 100 then
					doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100)
					doTransformItem(playerItem.uid, items[k][1], 100)
				else
					doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2])
				end
			else
				doPlayerAddItem(cid, items[k][1], items[k][2])
			end
		end
		return true
	end
	return false
end

 

Share this post


Link to post
Share on other sites
Em 09/02/2019 em 01:11, Tony Araujo disse:

Eai galera do Eks, tudo bão? Quanto tempo que eu não venho por esses lados, saudades xD

Bom, sem muita enrolação, eu vim postar pra vocês o sistema de auto loot que eu fiz aqui rapidinho (literalmente, 10 mins), porém que ficou bem bacana. É aquele esquema, você coleta o loot quando abre o corpo do bicho morto. Está bem simples, porém funcional. Eu pesquisei a respeito, pra ter uma ideia e não encontrei nenhum que tivesse com um código legal, todos estavam bem antigos.

 

Eu não tive muito tempo testando, então caso encontrem qualquer bug, me avise pfv.

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getItemAttribute(item.uid, "corpseowner") ~= cid then
		return doPlayerSendCancel(cid, "You're not the owner.")
	end
	local items = {}
	for i = 0, getContainerSize(item.uid) do
		local it = getContainerItem(item.uid, i)
		if it.uid > 0 then
			table.insert(items, {it.itemid, it.type})
			doRemoveItem(it.uid)
		end
	end
	if #items > 0 then
		for k = 1, #items do
			local playerItem = getPlayerItemById(cid, true, items[k][1])
			if playerItem.uid > 0 then
				if (playerItem.type + items[k][2]) > 100 then
					doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100)
					doTransformItem(playerItem.uid, items[k][1], 100)
				else
					doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2])
				end
			else
				doPlayerAddItem(cid, items[k][1], items[k][2])
			end
		end
		return true
	end
	return false
end

 

e onde coloca isso jovem

Share this post


Link to post
Share on other sites
53 minutos atrás, JulianoZN disse:

e onde coloca isso jovem

Aparentemente vc coloca em actions e seta o action ID no corpo do monstro quando ele morre, ai quando o player clicar os itens vem pra bag.

Share this post


Link to post
Share on other sites

Poderia fazer de outro modo, talvez fosse interessante também:

- Ao invés de pegar todo o loot automático... poderia fazer com que o loot fosse aberto e com o botão direito (como se fosse converter dinheiro) o mesmo fosse para a backpack.

Share this post


Link to post
Share on other sites

Assim, eu não estou usando este, mas fiquem atento quando derem auto loot pois tem possibilidades de dar bugs como vc jogar item dentro do corpo do pokemon morto e duplicar o item!

Share this post


Link to post
Share on other sites
47 minutos atrás, Walox disse:

Assim, eu não estou usando este, mas fiquem atento quando derem auto loot pois tem possibilidades de dar bugs como vc jogar item dentro do corpo do pokemon morto e duplicar o item!

Verdade, eu tive que refazer, e coloquei um modulo no otclient para quando coletar mostrar a imagem

 

Share this post


Link to post
Share on other sites
1 minuto atrás, JulianoZN disse:

Verdade, eu tive que refazer, e coloquei um modulo no otclient para quando coletar mostrar a imagem

 

Fiz Basicamente o mesmo que você

Share this post


Link to post
Share on other sites

@Walox neste caso, no script do Tony basta coloca isso depois do penultimo end:

 

doSetItemActionId(item.uid, 0)

Ficando assim: 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getItemAttribute(item.uid, "corpseowner") ~= cid then
		return doPlayerSendCancel(cid, "You're not the owner.")
	end
	local items = {}
	for i = 0, getContainerSize(item.uid) do
		local it = getContainerItem(item.uid, i)
		if it.uid > 0 then
			table.insert(items, {it.itemid, it.type})
			doRemoveItem(it.uid)
		end
	end
	if #items > 0 then
		for k = 1, #items do
			local playerItem = getPlayerItemById(cid, true, items[k][1])
			if playerItem.uid > 0 then
				if (playerItem.type + items[k][2]) > 100 then
					doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100)
					doTransformItem(playerItem.uid, items[k][1], 100)
				else
					doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2])
				end
			else
				doPlayerAddItem(cid, items[k][1], items[k][2])
			end
		end
		return true
	end
	doSetItemActionId(item.uid, 0)
	return false
end

Depois que o player coletar uma vez o corpse deixa de ter a ActionID, assim impossibilitando de o player tentar trollar o sistema.

Share this post


Link to post
Share on other sites
Em 30/04/2019 em 14:10, gabrielzika disse:

@Walox neste caso, no script do Tony basta coloca isso depois do penultimo end:

 

doSetItemActionId(item.uid, 0)

Ficando assim: 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getItemAttribute(item.uid, "corpseowner") ~= cid then
		return doPlayerSendCancel(cid, "You're not the owner.")
	end
	local items = {}
	for i = 0, getContainerSize(item.uid) do
		local it = getContainerItem(item.uid, i)
		if it.uid > 0 then
			table.insert(items, {it.itemid, it.type})
			doRemoveItem(it.uid)
		end
	end
	if #items > 0 then
		for k = 1, #items do
			local playerItem = getPlayerItemById(cid, true, items[k][1])
			if playerItem.uid > 0 then
				if (playerItem.type + items[k][2]) > 100 then
					doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100)
					doTransformItem(playerItem.uid, items[k][1], 100)
				else
					doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2])
				end
			else
				doPlayerAddItem(cid, items[k][1], items[k][2])
			end
		end
		return true
	end
	doSetItemActionId(item.uid, 0)
	return false
end

Depois que o player coletar uma vez o corpse deixa de ter a ActionID, assim impossibilitando de o player tentar trollar o sistema.

Quando vou tentar abrir o corpo aparece que não sou o dono (You're not the owner), sabe resolver?

Share this post


Link to post
Share on other sites
Em 30/04/2019 em 14:10, gabrielzika disse:

@Walox neste caso, no script do Tony basta coloca isso depois do penultimo end:

 

doSetItemActionId(item.uid, 0)

Ficando assim: 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)
	if getItemAttribute(item.uid, "corpseowner") ~= cid then
		return doPlayerSendCancel(cid, "You're not the owner.")
	end
	local items = {}
	for i = 0, getContainerSize(item.uid) do
		local it = getContainerItem(item.uid, i)
		if it.uid > 0 then
			table.insert(items, {it.itemid, it.type})
			doRemoveItem(it.uid)
		end
	end
	if #items > 0 then
		for k = 1, #items do
			local playerItem = getPlayerItemById(cid, true, items[k][1])
			if playerItem.uid > 0 then
				if (playerItem.type + items[k][2]) > 100 then
					doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100)
					doTransformItem(playerItem.uid, items[k][1], 100)
				else
					doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2])
				end
			else
				doPlayerAddItem(cid, items[k][1], items[k][2])
			end
		end
		return true
	end
	doSetItemActionId(item.uid, 0)
	return false
end

Depois que o player coletar uma vez o corpse deixa de ter a ActionID, assim impossibilitando de o player tentar trollar o sistema.

Não vejo necessidade em fazer uma gambiarra dessas, para resolver isso é coisa de 2 linhas...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...