Ir para conteúdo
  • 0

Ganha Item A Party Que Tirar Mais Damage Do Monstro


dearthpoenix

Pergunta

Tipo do script: CreatureScripts

Protocolo (versão do Tibia): 8.60

Servidor utilizado: Mix War

Nível de experiência: Iniciante

Adicionais/Informações:

 

Eu queria um script que quando uma party fosse matar tal monstro ganhasse um item.

Mais tipo, tem duas ou mais party matando esse monstro. O item so vai para a party que tirar mais life do monstro, como se fosse uma disputa de pt's para ver quem tirar mais HP para ganhar o item. O item não vem como loot, mas como "AddItem" e tals.

 

Mesmo que um Player nao ataque esse monstro e ele esteja na party vencedora, ganhe o item.

 

Ajuda por favor!

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

6 respostass a esta questão

Posts Recomendados

  • 0

Vamo lá, não testei...

 

Cria um arquivo chamado boss script.lua em data/creaturescripts/scripts e coloque isso dentro:

 

 

local rewards = {
{id = 2160, count = 1},
{id = 2152, count = 20},
}

function onDeath(cid, corpse, killers)

   local partiesDamageRatio, mostDamage, winners = {}, {0, 0, false}, {}

   for _, player in pairs (killers) do
    local percentDealt = getPlayerStorageValue(cid, getPlayerGUID(player))
    if isInParty(player) then
	    partiesDamageRatio[getPlayerParty(player)] = (partiesDamageRatio[getPlayerParty(player)] or 0) + percentDealt
    elseif mostDamage[1] < percentDealt then
	    mostDamage = {percentDealt, player, false}
    end
   end

   for guildId, damageRatio in pairs (partiesDamageRatio) do
    if damageRatio > mostDamage[1] then
	    mostDamage = {damageRatio, guildId, true}
    end
   end

   if mostDamage[3] then
    winners = getPartyMembers(mostDamage[2])
   else
    winners = {mostDamage[2]}
   end

   for _, winId in pairs (winners) do
    for _, itemInfo in pairs (rewards) do
	    doPlayerAddItem(winId, itemInfo.id, itemInfo.count or 1)
    end
   end

return true
end

function onStatsChange(cid, attacker, type, combat, value)

   if not isCreature(attacker) or not isPlayer(attacker) or type ~= STATSCHANGE_HEALTHLOSS then return true end

   local percentToAdd = math.abs(value) / getCreatureMaxHealth(cid) * 100
   local currentPercent = math.max(getPlayerStorageValue(cid, getPlayerGUID(attacker)), 0)
   setPlayerStorageValue(cid, getPlayerGUID(attacker), currentPercent + percentToAdd)

return true
end

 

 

Abre o creaturescripts.xml e adicione essas duas tags:

 

	<event type="death" name="BossTriggerDeath" event="script" value="boss script.lua"/>
<event type="statschange" name="BossRegisterDamage" event="script" value="boss script.lua"/>

 

agora abra o XML do monstro que você quer que dê os itens, e antes do último "</monster>" adicione isso:

 

<script>
<event name="BossTriggerDeath"/>
<event name="BossRegisterDamage"/>
</script>

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

  • 0

ae brun uma duvida... nessa parte aki...

for _, player in pairs (killers) do
 local percentDealt = getPlayerStorageValue(cid, getPlayerGUID(player))
 if isInParty(cid) then
	partiesDamageRatio[getPlayerParty(cid)] = (partiesDamageRatio[getPlayerParty(cid)] or 0) + percentDealt
 elseif mostDamage[1] < percentDealt then
	mostDamage = {percentDealt, cid, false}
 end
end

o 'cid' n era pra ser o monstro? '--'

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

×
×
  • Criar Novo...