Spread Loot

Oneshot
em Globalevents e Spells

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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

libanori

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 28/04/13Posts: 39Char no Tibia: [ADM]Smoker

Como assim espalhar?

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

Como assim espalhar?

 

Ele remove o item do corpo do monstro e o coloca no chão aos lados do corpo, entendeu agora?

Nil Value

Scripting Iniciante
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/01/14Posts: 75

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.

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

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

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm

Lolksky

avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 29/07/10Posts: 211

Concordo com o Aberos. O loot deveria aparecer somene para o player que matar o bicho, ou aparecer para todos da party.

signtodos.png ~~ HaiL ~~

Incur

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 22/12/12Posts: 90

^ Isso já precisaria se muita modificação nas sources...

 

--

 

Ótimo script! Levou meu rep+

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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

Aberos

A dor é inevitável e o sofrimento é opcional
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 23/02/13Posts: 437Gênero: Masculino

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

"Cê quer a resposta do porquê de ainda tá vivo?
Respondo com a própria vida, pois viver já é um bom motivo!"

                              ― Gigante - Atentado Napalm

meubk

@miillerdomingues
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 21/04/08Posts: 311

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 !

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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.

meubk

@miillerdomingues
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 21/04/08Posts: 311

nem todos tem a função, e não estou afim de ficar ensinando ninguém a editar as sources , ehuehueheu !

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

Bom, arrumei um erro básico, que estava executando o Spread Loot para jogadores, dando erro na função getMonsterInfo.

OriGM

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 24/09/13Posts: 199

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.

Oneshot

avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 05/07/09Posts: 1347

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.