Jump to content

Oneshot

Recommended Posts

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

Edited by Garou
Link to comment
Share on other 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 to comment
Share on other 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

Edited by Aberos
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by Garou
Link to comment
Share on other 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.

Edited by OriGM
Link to comment
Share on other 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 to comment
Share on other sites

×
×
  • Create New...