MO
pedido

Script De Hp E Mana Por Level

Por MonsterOt, 10 de set. de 2012 em Scripts

script
8
1.2k
MonsterOtM
10 de setembro de 2012 às 11:04

Tem como Fazer A cada 2 lv, o player ganhar 1 de hp e cada 3 lv ganha 1 de mana?

 

MT grato se alguem conseguir isso =)

Editado Setembro 10 por MonsterOt

brun123B
10 de setembro de 2012 às 11:57

tem sim, basta mudar pro player ganhar 2 hp por level no vocations.xml e 0 de mana por level...

 

aí você cria um script chamado levelup.lua em data/creaturescripts/scripts e coloca isso dentro:

 

function onAdvance(cid, skill, oldLevel, newLevel)
if skill == 8 and newLevel % 3 == 0 then
setCreatureMaxMana(cid, getCreatureMaxMana(cid) + 1)
end
return true
end

 

Aí você coloca essa tag no seu creature scripts:

 

<event type="advance" name="IncreaseManaOnLevelUp" event="script" value="levelup.lua"/>

 

agora abra seu login.lua (data/creaturescripts/scripts) e adicione essa linha:

 

registerCreatureEvent(cid, "IncreaseManaOnLevelUp")

 

é só adicionar embaixo das outras vezes que essa função foi utilizada (registerCreatureEvent)

 

Só um detalhe:

Essa script faz com que o player ao atiginr level 3, 6, 9, 12, 15... 30... 60... ganha mais 1 de mana (máximo), ou seja, se o player começar no level 8, ao chegar no level 9 ele já ganha a mana extra... se quiser fazer com que o player ganhe a mana nos leveis 11, 14, 17, 20, 23... você tem que modificar essa linha do script:

 

if skill == 8 and newLevel % 3 == 0 then

 

por essa:

 

if skill == 8 and (newLevel + 1) % 3 == 0 then

 

Agora se o player começar no level 1, ele vai ganhar mana no level 3, ou seja, após upar 2 leveis, e só depois começa a ganhar de 3 em 3 leveis, se quiser que ele ganhe apenas no level 4, depois no 7, aí 10, 13, 16 etc... é só modificar aquela mesma linha por essa:

 

if skill == 8 and (newLevel - 1) % 3 == 0 then

 

qualquer dúvida só perguntar

MonsterOtM
10 de setembro de 2012 às 19:38

EDIT: eu falei errado!!

queria isso na verdade:

cada 2 lv, o player ganhar 1 de hp

 

 

Obrigado pela atenção =)

 

vou dar o rep+ assim que eu puder denovo

Editado Setembro 10 por MonsterOt

brun123B
10 de setembro de 2012 às 20:36

Aqui:

 

function onAdvance(cid, skill, oldLevel, newLevel)

   if skill == 8 then
    if newLevel % 3 == 0 then -- vai ganhar mp nos leveis 3, 6, 9, 12, 15, 18, 21...
	    setCreatureMaxMana(cid, getCreatureMaxMana(cid) + 1)
    elseif newLevel % 2 == 0 then -- vai ganhar hp nos leveis 2, 4, 6, 8, 10, 12...
	    setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + 1)
    end
   end

return true
end

MonsterOtM
10 de setembro de 2012 às 20:40

Valeu =)

 

Rep+

quando tiver eu ja dou

notle2012N
11 de setembro de 2012 às 00:28

pedido atendido reportando aqui

MonsterOtM
11 de setembro de 2012 às 23:16

Testei aqui, no arquivo vocations deixei 0 hp e mana por level..

 

e o seu script quando pego lv 9..12..15.. nao aumenta nada de hp

e tambem nada de mana '-'

brun123B
12 de setembro de 2012 às 12:34

Tem que registrar o evento, lê o meu post la em cima que explica certinho como registrar e atualiza sua script com essa:

 

function onAdvance(cid, skill, oldLevel, newLevel)

   if skill == 8 then
       if newLevel % 3 == 0 then -- vai ganhar mp nos leveis 3, 6, 9, 12, 15, 18, 21...
           setCreatureMaxMana(cid, getCreatureMaxMana(cid) + 1)
       end   	  
       if newLevel % 2 == 0 then -- vai ganhar hp nos leveis 2, 4, 6, 8, 10, 12...
           setCreatureMaxHealth(cid, getCreatureMaxHealth(cid) + 1)
       end
   end

return true
end

 

Só percebi agora que usando elseif fica errado, vai chegar alguns leveis que o player deveria ganhar mana e hp junto, mas só ia ganhar mana devido ao uso do elseif.

Editado Setembro 12 por brun123