Ir para conteúdo
  • 0

[Pedido] Como Fazer O Summon Não Roubar A Experiencia Do Player.


Janmix

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

Faz assim:

Cria um script chamado summonhit.lua em data/creaturescripts/scripts e coloca isso dentro:

 

function onCombat(cid, target)
registerCreatureEvent(target, "SummonDamage")
return true
end
function onStatsChange(cid, attacker, type, combat, value)
if isMonster(attacker) and isPlayer(getCreatureMaster(attacker)) and
   isInArray({0, 1}, type) then
	local damage = math.abs(value) * (type == STATSCHANGE_HEALTHGAIN and 1 or -1)
	doTargetCombatHealth(getCreatureMaster(attacker), cid, combat, damage, damage, 255)
return false
end
return true
end

 

agora adicione essas tags no creaturescripts.xml:

 

<event type="combat" name="PlayerSummonCombat" event="script" value="summonhit.lua"/>
<event type="statschange" name="SummonDamage" event="script" value="summonhit.lua"/>

 

e adicione essa linha no seu login.lua:

 

registerCreatureEvent(cid, "PlayerSummonCombat")

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

  • 0

@Brun123, creio que você tenha errado, assim o summon não ganha a xp, mais o player ganha a xp só pela metade

 

ou seja se um bixo da 100 de xp o player ganha 50 se o summon atacar tb.

 

e sem contar que mesmo sem o summon atacar o player só ganha metade da xp.

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

  • 0

funcionou valew meia noite volto pra te dar thanks pq ja gastei 1 HJ sem querer cliquei em rep+ pra 1 cara.

 

Duvida sanada. já reportei.

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

  • 0

O único jeito de bugar isso seria se o summon tivesse alguma ataque em área, e em um lugar com mais de 1 monstro, o player ataque um monstro e a magia do summon pegue em outro monstro, ai a exp. vai novamente pro summon... isso acontece porque o summon consegue tirar hp do monstro antes de registrar o evento de stats change nele.

um jeito não prático pra evitar esse problema seria adicionar isso:

 

<script>
<event name="SummonDamage"/>
</script>

 

antes do </monster> no arquivo .xml de cada monstro do seu server... ia demorar um tempinho

 

o jeito prático de se fazer isso seria por meio do código fonte do seu server, editando uma única linha dá pra fazer que toda a exp vá para o player, inclusive há diversas formas de fazer isso pelas sources.

 

Eduardo, o que você falou só aconteceria se eu utilizasse a função doChangeHealth, mas como usei doTargetCombatHealth, a exp. vai toda pro player

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

×
×
  • Criar Novo...