BL
pedido

Add Item ao Player ao Matar Monstro

Por blaster_kid, 05 de jul. de 2015 em Scripts

script
resolvido
4
1.2k
blaster_kidB
05 de julho de 2015 às 12:59

Bom, gente se alguém puder me ajudar preciso de um script que ao matar um monstro o player receba um determinado item até atingir uma certa quantia.


Mas não pode ser em sequência tem de ser rândomico "as vezes vir o item vezes não".



Exemplo:



Matar um Troll e o player receba uma sword ou não recebe nada, quando atingir um total de 10 o char para de receber..



versão: 8.60



Agradeço desde já.


2 semanas depois...
BrunoB
15 de julho de 2015 às 11:21
Melhor resposta

@@blaster_kid,

 

Em data/creaturescripts/creaturescripts.xml adicione a seguinte tag:

<event type="kill" name="AwardKill" script="awardkill.lua"/>
Agora em data/creaturescripts/scripts crie um arquivo chamado awardkill.lua com o seguinte conteúdo:

local config = {
	["Demon"] =  {
		storage = 10530,
		chance = 30,
		items = {
			{id = 2160, count = 5},
			{id = 2400, count = 1}
		}
	},
	["Dragon"] =  {
		storage = 10531,
		chance = 60,
		items = {
			{id = 2160, count = 5},
			{id = 2400, count = 1}
		}
	},
	["Hero"] =  {
		storage = 10532,
		chance = 15,
		items = {
			{id = 2160, count = 5},
			{id = 2400, count = 1}
		}
	}
}

function onKill(cid, target)
	if isPlayer(target) then return true end
	local criatura = getCreatureName(target):lower()
	for i, j in pairs(config) do
		local nome = i:lower()
		if nome == criatura then
			local str = getPlayerStorageValue(cid, j.storage)
			if str < 10 then
				local rand = math.random(1, 100)
				if rand <= j.chance then
					local item = math.random(1, #j.items)
					doPlayerAddItem(cid, j.items[item].id, j.items[item].count)
					doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Parabens! Voce ganhou um premio por matar ' .. criatura .. '.')
					setPlayerStorageValue(cid, j.storage, str < 0 and 1 or str + 1)
				end
			end
		end
	end
	return true
end
Ainda em data/creaturescripts/scripts, abra o arquivo login.lua e adicione o seguinte conteúdo antes do último return true:

registerCreatureEvent(cid, "AwardKill")
Explicação:

["Demon"] -- nome da criatura
storage = 10530 -- uma storage livre para fazer a contagem para que o player receba apenas 10 vezes a recompensa
chance = 30 -- change em porcentagem para que ele receba o item

items = {
	{id = 2160, count = 5},
	{id = 2400, count = 1}
}
Aqui é uma tabela, onde cada linha será um item aleatório que ele poderá receber, basta colocar o id e a quantidade.
Att.

Editado Julho 15 por Bruno Minervino

blaster_kidB
21 de julho de 2015 às 12:45

@Bruno Minervino

 

É isso ai Amigo bem isso mesmo que preciso, vou ter de dar uma modificada para caber no que eu preciso. Mas funcionou perfeitamente.

 

Vlws mesmo.

BrunoB
21 de julho de 2015 às 13:12

Tópico movido para dúvidas / pedidos resolvidos.