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

Janmix
Por Janmix
em Scripts

Janmix

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 27/10/08Posts: 152

Como titulo diz, eu queria que o summon não ganha-se exp.

se isso puder ser feito por script seria melhor pq pesquisei e não achei nada 100%.

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

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")

5303fg1.png

eduardo190696

Força de vontade ensina até os mortos
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 22/09/10Posts: 474

@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.

Janmix

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 27/10/08Posts: 152

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.

SkyLigh

User X
avatar
Lorde
Lorde

INFOS

Grupo: LordeRegistrado: 23/07/12Posts: 2183Char no Tibia: Kissy

Duvida sanada

reportado

Att,
Kissy

brun123

vash
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 24/09/06Posts: 512

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

5303fg1.png