Ae, nao sei se ja existe um tutorial de make runes mais o pouco que proucurei nao encontrei entao decidi postar um q eu fiz agora a pouco.
ele se baseia em 5 etapas e é bem simples.
antes umas dicas Basicas.
-LEMBRE-SE DE FAZER BOAS FORMULAS DE ATAQUE
-LEMBRE-SE SEMPRE DE EDITAR A COR DO DANO, O ATK DA RUNE (se é uma bolinha de sd, uma powerbolt, um fogo)
-LEMBRE-SE DE EDITAR A ANIMAÇÂO QUE APAREÇE QUANDO A RUNE ATINGE O ALVO
-AGORA Q VC VAI APRENDER A CRIAR RUNES CRIE RUNES EXCLUSIVAS PRA MONSTERS PARA DAR UNS ASPECTO MAIS REAL AO JOGO.
Para editar tudo isso, fique sempre com o arquivo spell.lua aberto. ele esta localizado em data/spells/lib.
Os ids de runes começam em 2260 (blank rune).. teste novos ids para criar suas runes exclusivas.
agora vamos ao que interessa.
nos exemplos abaixo serao usados o ID, CARGA, ML do FIREFIELD do meu server.
1- você tem que ir no spells.xml e criar a tag da rune.
<rune name="rune" id="2301" charges="9" maglv="1" mana="0" enabled="1"></rune>
2- ainda no spells.xml crie a tag pra fazer a rune.
<spell name="rune" words="palavra magica" maglv="3" mana="60" enabled="1"><vocation id="1" /><vocation id="2" /></spell>
3- vai nos items.xml vc adiciona a tag do item id da rune.
<item id="2301" name="palavra magica" type="rune" maglevel="1" weight="0.1" />
4- vai na pasta INSTANT dentro de SPELLS e cria um arquivo chamado palavra magica.lua
em seguida escreve isso nele
attackType = ATTACK_NONEanimationEffect = NM_ANI_NONE
hitEffect = NM_ME_NONE
damageEffect = NM_ME_MAGIC_BLOOD
animationColor = BLUE
offensive = false
drawblood = false
function onCast(cid, creaturePos, level, maglv, var)
n = makeRune(cid,2301,9);
return n
end
5- vai na pasta RUNES dentro de SPELLS e cria um arquivo chamado rune.lua
agora se divide em duas partes. se for rune q nao precisa a mira acertar o alvo (tipo explosion) é um script se precisar (tipo sd) é outro.
5.1 Rune Sem Mira
area = {{0, 1, 0},
{1, 1, 1}, // <-------- edite a area a seu gosto.
{0, 1, 0}
}
attackType = ATTACK_PHYSICAL // <- tipo do atk, se é energy, fire, poison, physical, burst etc.
needDirection = false // <----- "false" para sem mira(explo) e "true" para com mira (sd)
areaEffect = NM_ME_EXPLOSION_AREA // <----- animação q vai apareçer onde tem 1 no desenho da area
animationEffect = NM_ANI_FIRE // <--- animação do caminho do atk (bolinha preta da sd, fogo da explo, entre outros (veja o spell.lua na pasta data/spells/lib para mais detalhes)
hitEffect = NM_ME_EXPLOSION_DAMAGE // <-- animação quando a rune atinge o chao/alvo
damageEffect = NM_ME_DRAW_BLOOD // <-- animação quando causa dano no alvo (no caso sangue)
animationColor = RED // <-- Cor do dano
offensive = true
drawblood = true
ExplosionObject = MagicDamageObject(attackType, animationEffect, hitEffect, damageEffect, animationColor, offensive, drawblood, 0, 0)
function onCast(cid, creaturePos, level, maglv, var)
centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}
ExplosionObject.minDmg = (level * 2 + maglv *3) * 0.6 - 50 // <-- formulas de atk
ExplosionObject.maxDmg = (level * 2 + maglv *3) * 0.9 + 25
return doAreaMagic(cid, centerpos, needDirection, areaEffect, area, ExplosionObject:ordered())
end
5.2 Runes Com Mira
-- doTargetMagic-- attackType: tipo do ataque (energy, poison, fire)
-- cid: id do alvo
-- Targetpos: posição do alvo
-- animationEffect: animação do projetil (powerbolt, bolinha preta da sd, etc)
-- damageEffect: efeito mostrado quando rune causa dano ao player
-- animationColor: cor do dano
-- offensive: indica se a magia é de atk ou de cura
-- drawblood: determina se o ataque deixa poça de sangue.
-- minDmg: dano minimo
-- maxDmg: dano maximo
-- returns true if the spell was casted.
attackType = ATTACK_PHYSICAL
animationEffect = NM_ANI_SUDDENDEATH
hitEffect = NM_ME_MORT_AREA
damageEffect = NM_ME_DRAW_BLOOD
animationColor = GREY
offensive = true
drawblood = true
SuddenDeathObject = MagicDamageObject(attackType, animationEffect, hitEffect, damageEffect, animationColor, offensive, drawblood, 0, 0)
function onCast(cid, creaturePos, level, maglv, var)
centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}
SuddenDeathObject.minDmg = (level * 2 + maglv *3) * 1.3 - 30 //<-- edita as formulas a seu gosto
SuddenDeathObject.maxDmg = (level * 2 + maglv *3) * 1.7
return doTargetMagic(cid, centerpos, SuddenDeathObject:ordered())
end
Aew galera
Rune Pronta
Se Estiver Com Duvida Poste Que De Noite Qdo Xegar Do Meu Trabalho Eu Entro No Forum e Vejo As Dúvida e Se Possivel Esclarecerei
Comente Do Que Axaram,Bom Ou Ruim Comenta..Isso Incentiva a Pessoa a Continuar Postando
~\Pedrow