Ir para conteúdo

[ACTION] Auto Loot - Coletando ao abrir corpo


Tony Araujo

Posts Recomendados

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

 

Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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.

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

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.

Link para o comentário
Compartilhar em outros 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!

Link para o comentário
Compartilhar em outros 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

 

Link para o comentário
Compartilhar em outros 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ê

Link para o comentário
Compartilhar em outros sites

  • 5 weeks later...

@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.

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
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?

Link para o comentário
Compartilhar em outros 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...

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
  • 3 months later...
  • 1 year later...
Em 30/04/2019 em 12: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.

 

 

[21/02/2021 07:02:25] [Error - Action Interface] 
[21/02/2021 07:02:25] data/actions/scripts/AutoLoot.lua:onUse
[21/02/2021 07:02:25] Description: 
[21/02/2021 07:02:25] data/actions/scripts/AutoLoot.lua:29: attempt to call global 'doSetItemActionId' (a nil value)
[21/02/2021 07:02:25] stack traceback:
[21/02/2021 07:02:25]     data/actions/scripts/AutoLoot.lua:29: in function <data/actions/scripts/AutoLoot.lua:1>

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...