Ir para conteúdo

Sistema de recompensa por porcentagem ao matar boss


Posts Recomendados

Hail Xtibianos.

 

Esse script eu criei a pedido de um membro do fórum e resolvi posta-lo para vocês.

 

Ele serve para que ao matarem um determinado monstros, somente os players que tiverem uma certa quantidade de participação (em porcentagem) na morte do monstro é que receberam algo (configurável).

 

Em creaturescripts.xml adicione:

<event type="statschange" name="stats" script="statsMonster.lua"/>
<event type="death" name="deathMonster" script="deathMonster.lua"/>

 

Em creaturescripts/scripts crie um arquivo lua com o nome statsMonster e adicione:

--[[
	autor = Marcryzius
	data = sexta-feira, 05 de fevereiro de 2016
	tipo = 1 (um) é ataque, 0 (zero) é healing.
	
	query para ser adicionada no monstro:	
	<script>
		<event name = "stats"/>
		<event name = "deathMonster"/>
	</script>
]]

M = {}
function getDamageInMonster(monster,cid) 
local monster,cid,m_life,p_dano = tonumber(monster),tonumber(cid),0,0
if not(monster or cid)then return 0,error('function getDamageInMonster(): monster or cid, not number') end
if not(isCreature(monster))then return 0,error('function getDamageInMonster(): variavel monster nao e monstro.') end
	for k,v in pairs(M[monster]) do
		if(k == cid)then p_dano = v end
		m_life = m_life + v
	end
	return math.floor(p_dano/(m_life/100))
end

function onStatsChange(cid, attacker, tipo, combat, value)
if not(M[cid])then M[cid] = {} end
if not(tipo == 1)then return true end

	if(isPlayer(attacker))then 
		if not(M[cid][attacker])then M[cid][attacker] = 0	end
		M[cid][attacker] = M[cid][attacker] + value
	elseif(isMonster(attacker))then -- caso seja um monstro o atacante
	local get = getCreatureMaster(attacker) -- averigua se não é um summon que está atacando
		if(tonumber(get) and isPlayer(get))then -- caso o summon seja de um player, adiciona o dano como se fosse o player
			if not(M[cid][get])then M[cid][get] = 0	end
			M[cid][get] = M[cid][get] + value
		end
	end
	return true
end

 

Agora crie outro arquivo lua na mesma pasta e nomeie para deathMonster e adicione:

function onDeath(cid, corpse, deathList) --[[> Marcryzius <]]
  		for _,player in pairs(deathList) do
		local player = isCreature(player) and getCreatureMaster(player) or player
			if(isPlayer(player) and isPlayerOn(player))then 
				if(getDamageInMonster(cid,player) >= 50)then -- quantidade de danos em %
       			 --[[ aqui é a parte onde dar ao player seu premio por ter consegue tantos % de danos ao monstro ]]--
       			 -- exemplos de ações 
					doRemoveItem(getThingfromPos(Full_Items[getCreatureName(cid):lower()]).uid)
					doCreateItem(2283,1,getCreaturePosition(cid))
					doCreateItem(4810,1,Full_Items[getCreatureName(cid):lower()])
					setPlayerStorageValue(player,getStoreString('fullitems'),0)
				end
				if(M[player])then table.remove(M,player) end
			end
		end
  end

 

No monstro que tu queira usar esse sistema, adicione no xml dele essas duas tags:

	<script>		
      	<event name = "stats"/>		
        <event name = "deathMonster"/>	
	</script>

 

Pronto.

Qualquer duvida, erro e etc, deixe nos comentários. 

Editado por Poccnn
formatação
Link para o comentário
Compartilhar em outros sites

  • 3 years later...
16 horas atrás, Senju uchira disse:

enteressante serve pra tfs 0.4 ?

pelo o que eu saiba, sim. se tu se interessar em testar tal versão, faz favor de enviar um feedback para nós.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...