Ir para conteúdo

Oneshot

Posts Recomendados

Spread Loot

Este é um pedido feito no tópico A Fábrica

Boa noite, galera.

 

Este é o primeiro pedido atendido no meu tópico A Fábrica, foi um pedido feito pelo usuário OriGM.

 

Consiste em um sistema de "espalhar" o loot do monstro em uma área delimitada de 1 sqm, torna o jogo bem real, afinal muitos MMORPGs, como Mu Online, Ragnarok, entre outros, "espalham" seu loot.

 

Não tive como fazer diferentes testes, mas acho que funciona muito bem e não tem bugs severos, como criar itens em tiles bloqueados.

 

A instalação é fácil como qualquer creaturescript.

 

spreadloot.lua

local function doSpreadLoot(fromPosition, toPosition, container)
	for slot = (getContainerSize(container.uid) - 1), 0, -1 do
		local item = getContainerItem(container.uid, slot)
		if not isContainer(item.uid) then
			local position = {
				x = math.random(fromPosition.x, toPosition.x),
				y = math.random(fromPosition.y, toPosition.y),
				z = fromPosition.z,
			}
			local itemEx = doCreateItemEx(item.itemid, item.type)
			if doTileAddItemEx(position, itemEx) then
				doRemoveItem(item.uid)
			end
		else
			doSpreadLoot(fromPosition, toPosition, item)
			doRemoveItem(item.uid)
		end
	end	
	return true
end

function onKill(cid, target)
	if isMonster(target) then
		local position = getCreaturePosition(target)
		local name = getCreatureName(target)
		
		local fromPosition = {x = position.x - 1, y = position.y - 1, z = position.z}
		local toPosition = {x = position.x + 1, y = position.y + 1, z = position.z}
		
		addEvent(function()
			local container = getTileItemById(position, getMonsterInfo(name).lookCorpse)
			if container.uid > 0 then
				doSpreadLoot(fromPosition, toPosition, container)
			end
		end, 100)
	end
	return true
end

login.lua

registerCreatureEvent(cid, "SpreadLoot")

creaturescripts.xml

<event type="kill" name="SpreadLoot" event="script" value="lootsystem.lua"/>

Bom, isso é tudo, minha galera.

 

Att,

Oneshot Garou

Editado por Garou
Link para o comentário
Compartilhar em outros sites

Muito bom cara ;), gostaria de Saber aplicando esse código ira acontecer isso apenas com monstros, gostei muito do código mas ele poderia ser usado principalmente para Boss colocando em seu .xml ou uma tabela dentro do código com os possíveis monstros.

Link para o comentário
Compartilhar em outros sites

mas ai outro player que tiver na hunt pode roubar seu loot , seria mas elgal se so o player que amtou pudesse pegar o loot

Editado por Aberos
Link para o comentário
Compartilhar em outros sites

Não dá para fazer isso e desconfio que nem modificando todas as sources. É legal, porque alimenta a discórdia no servidor, quem nunca dropou uma Jewel of Bless no MU e foi roubado? haha

Link para o comentário
Compartilhar em outros sites

o mu se o kara roubar meu bless , life ou soul ele nunca mais joga na vida dele kkkkkkkkkkkkkk !! se ele loga eu mato ele kkkkkkkkkkkkk


@Garou Voce podia Fzer uma Modificação nesse system de loot e fazer ele ir pra bag ? ao inves de ir pro chao , no xtibia tem um que vai pra bag mas tem q fikar adicionando os itens por talk e só pode add 5 ai é ruim

Link para o comentário
Compartilhar em outros sites

não seria :

registerCreatureEvent(cid, "SpreadLoot")

-

enquanto a somente o player q matou poder pegar o loot, iria precisar da função onMove, que executa toda vez q vc move um item, tem na otland, ai vc coloca pra adicionar um atributo com o nome ou id do char q mato, sendo q somente este char possa mover os items, seria legal tbem , gravar o tempo q o item foi dropado,e depois de 30 segundos qualquer um possa pegar os items !

Link para o comentário
Compartilhar em outros sites

não seria :

registerCreatureEvent(cid, "SpreadLoot")

-

enquanto a somente o player q matou poder pegar o loot, iria precisar da função onMove, que executa toda vez q vc move um item, tem na otland, ai vc coloca pra adicionar um atributo com o nome ou id do char q mato, sendo q somente este char possa mover os items, seria legal tbem , gravar o tempo q o item foi dropado,e depois de 30 segundos qualquer um possa pegar os items !

 

Eu tinha registrado diferente aqui no meu computador, obrigado pela observação.

 

De fato, esqueci do onMove, com ele dá para fazer o que a galera quer, mas não estou afim, já me agrada como está. Sinta-se livre para fazer isso, xotservx.

Editado por Garou
Link para o comentário
Compartilhar em outros sites

Garou estou no trabalho agora e nao testei.

Mas acredito que só funcione para monstro correto? Tem como colocar para players tambem? Que no caso eu havia pedido isso na Fabrica. Os players droparão todos os itens do corpo,com exceção de alguns slots(esqueci de mencionar isso no pedido). Se nao der tudo bem.

E pra quem está falando que vão roubar loot bla bla bla,a intenção é exatamente essa. Fica ridiculo,só quem matou saber o loot de um monstro.

Editado por OriGM
Link para o comentário
Compartilhar em outros sites

Garou estou no trabalho agora e nao testei.

Mas acredito que só funcione para monstro correto? Tem como colocar para players tambem? Que no caso eu havia pedido isso na Fabrica. Os players droparão todos os itens do corpo,com exceção de alguns slots(esqueci de mencionar isso no pedido). Se nao der tudo bem.

E pra quem está falando que vão roubar loot bla bla bla,a intenção é exatamente essa. Fica ridiculo,só quem matou saber o loot de um monstro.

 

Vou fazer essa alteração mais tarde, valeu a sugestão.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...