Ir para conteúdo
Entre para seguir isso  
Convidado Zeh'Piken0u

Tutorial Mosntrer , NPC e speel

Essa tutorial fikou legal?  

13 votos

  1. 1. Essa tutorial fikou legal?

    • Sim!
    • Não!
      0
    • Não, ja tem um sobre mesmo assunto "/


Recommended Posts

Convidado Zeh'Piken0u   
Convidado Zeh'Piken0u

:roll: Gente,peço que vcs postem o que acharam,porque realmente desanima fazer um tuto desse tamanho,separar,por cor,code,tudo bonitinho, e vcs só olharem e irem embora!

 

Aprenda a fazer seus próprios Monstros, Spells e NPC

 

Basicamente scripts sao o conjunto dos códigos que formam os arquivos de players, monster, spells, etc.

 

Nesse tutorial vou ensinar tudo, pra vc sair daqui fazendo monstros, spells e tudo mais. E se no final houver alguma duvida poste aqui que serei grato em ajudar. Neste Tutorial existem varios comandos básicos, bons para iniciantes, parte por parte é explicada, visando um maior entendimento sobre o assunto.

Vamos lá!

 

:arrow: SPELLS

Primeiro vamos falar sobre as spells

Existem as spells de instant e as spells de rune, as spells de instant sao aquelas em q o monstro usa nele, e as de runa ele vai usar em vc. Entao a primeira coisa que precisamos fazer é decidir se vamos fazer uma spell de runa ou de instant, vou mostrar aqui apenas um exemplo, se nao o topico ficara muito grande. Vamos começar, seguindo um exemplo de uma magia minha:

Primeiro, crie um arquivo chamado crossover.lua, na pasta Data>Spells>Instant

 

Começamos o script com isso:

 

area = {

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

{0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},

}

Essa é a area em que a magia ira pegar, o numero 0 simboliza os espaços que a magia nao pega e os numeros 1, os lugares onde acontecerá a magia, no exemplo acima, é uma magia em forma de cruz

Pulamos entao uma linha e acrescentamos isso:

 

 

attackType = ATTACK_PHYSICAL

needDirection = false

areaEffect = NM_ME_YELLOW_RINGS

animationEffect = NM_ANI_NONE



hitEffect = NM_ME_HIT_AREA

damageEffect = NM_ME_DRAW_BLOOD

animationColor = BLACK_WHITE

offensive = true

drawblood = true

 

Vamos às explicações:

attackType = o tipo de ataque que será, no exemplo será um ataque fisico, mas tbm poderia ser um ataque de fogo, ou de energy

needDirection = se o ataque precisa de direção, como as firewaves

areaEffect = o tipo de animação que saira na area na magia

animationEffect = a animação de quando o player sofrer dano da magia

damageEffect = o efeito que saira quando o player receber o dano

animationColor = a cor da animação da Magia

offensive = se a magia é de ataque ou nao

drawblood = se embaixo do player vai sair sangue quando ele receber a magia

 

 

Explicado, pulamos uma linha e adicionamos:


UltimateExplosionObject = MagicDamageObject(attackType, animationEffect, hitEffect, damageEffect, animationColor, offensive, drawblood, 0, 0)

 

 

Essa é a função que fara com q oq explicamos acima funcione, pulamos outra linha e acrescentamos:

 

 

function onCast(cid, creaturePos, level, maglv, var)

centerpos = {x=creaturePos.x, y=creaturePos.y, z=creaturePos.z}

n = tonumber(var)

if n ~= nil then

-- bugged

-- ultimateExplosionObject.minDmg = var+0

-- UltimateExplosionObject.maxDmg = var+0



UltimateExplosionObject.minDmg = 0

UltimateExplosionObject.maxDmg = 0

else

UltimateExplosionObject.minDmg = (level * 2 + maglv * 3) * 2.6 - 30

UltimateExplosionObject.maxDmg = (level * 2 + maglv * 3) * 3.0

end

Essa é a fórmula do Dano que o player irá tomar ao receber a magia, agora pra finalizar adiconamos:


return doAreaMagic(cid, centerpos, needDirection, areaEffect, area, UltimateExplosionObject:ordered())

end

 

 

Pronto ja terminamos nossa primeira spell, agora para faze-la funcionar precisamos acrescenta-la aou arquivo spells.xml

vamos lá, na pasta Data>Spells abra o arquivo spells.xml e na sessao de INSTANT, acrescente esta linha:

 

spell name="CrossOver" words="crossover" maglv="12" mana="160" enabled="1"><vocation id="2" /><vocation id="1" /></spell>

 

 

Explicando:

spell name = nome da magia (pode ser qualquer um)

words = as palavras magicas que terao que ser ditas pra magia funcionar (tem q ser igual ao nome do script da magia)

magvl = maglv necessario para usar essa magia

mana = mana que será gasta

enabled = se a magia esta abilitada ou nao

vocation id = para quais vocações essa magia funcionará, no caso acima ela so funciona pra sorc e druid

------------------

 

:arrow: MONSTERS

Spell criada, vamos passar para o Monstro que usara esta spell

Crie um arquivo .xml com um nome qualquer na pasta Data>Monsters

 

<?xml version="1.0"?>

<monster name="The Flash" level="500" maglevel="70" experience="1000" pushable="0" armor="80" defense="90" canpushitems="1" staticattack="50" changetarget="200" speed="100000">

<health now="25000" max="25000"/>

<look type="134" head="94" body="94" legs="94" feet="79" corpse="4246"/>

<combat targetdistance="4" runonhealth="0"/>

<attacks>

<attack type="instant" name="flash_light" exhaustion="500" cycleticks="8000" probability="40"/>

</attacks>



<defenses>

<defense immunity="physical"/>

<defense immunity="paralyze"/>

</defenses>



<voices>

<voice sentence="HEHE Vem me pegar!!"/>

<voice sentence="Bah, ja dei 5 voltas e vc ai parado!"/>

</voices>



<summons maxSummons="2">

<summon name="Chicken" chance="5000"/>

</summons>



<loot>



</loot>

</monster>

 

Esse é um exemplo de um monstro que eu criei, escolhi ele pq ele apresenta quase todas as funções de um monster, vamos as explicações que realmente interessam

 

monster name = nome do monstro, esse nome é oq aparecerá quando vc sumonar ele

experience = a experiencia que ele dá, geralmente é um numero normal, parecido com o do Tibia, pois no config.lua é que a exp é multiplicada, portanto se vc colocar mto alto aqui, vai ficar absurda

canpushitems = se o monstro pode mover objetos

changetarget = dificuldade ou facilidade do monstro mudar de alvo

combat targetdistance = a distancia em sqm em que o monstro ficará do player

runonhealth = o life em que o monstro correrá do player

<summons> = comando para ele sumonar um monstro

<loot> = aqui vc ajusta os items e o dinheiro, com a chance (Vamos falar sobre isso mais a frente) e etc

<attacks> = sao os ataques que seu monstro usará, tem os attack do tipo meele (dano fisico), distance (arrows, bolts, etc), instant (magias de instant), rune (magias de rune)

<defenses> = aqui é pra vc colocar se o seu monstro vai ser imune a alguma coisa, exemplo: Demon é imune a fogo, entao vc poe lá: <defense immunity="fire"/>

<voices> = qual será a mensagem que ele dirá (aquela msg laranja)

</monster> = funciona como um end, finaliza o script

 

Vamos falar sobre o looktype e a lootchance:

"Ah eu quero criar um Boss dos orc, mas nao sei quais sao as roupinhas"

Abaixo a lista dos looktypes dos monstros mais comums

 

{["Orc Warlord"] = 2, ["War Wolf"] = 3, ["Orc Ridder"] = 4, ["Orc"] = 5, ["Orc Shaman"] =6, ["Orc Warrior"] = 7, ["Orc Berserker"] = 8, ["Necromancer"] = 9, ["Black Sheep"] = 13, ["Sheep"] = 14, ["Trol"] = 15, ["Bear"] = 16, ["Beholder"] = 17, ["Ghoul"] = 18, ["Slime"] = 19, ["Rat"]= 21, ["Cyclops"] = 22, ["Minotaur Mage"] = 23, ["Minotaur Archer"] = 24, ["Minotaur"] = 25, ["Rotworm"] = 26, ["Wolf"] = 27, ["Snake"] = 28, ["Minotaur Guard"] =29, ["Spider"] = 30, ["Deer"] = 31, ["Dog"] = 32, ["Skeleton"] = 33, ["Dragon"] = 34, ["Poison Spider"] = 36, ["Demon Skeleton"] = 37, ["Giant Spider"] = 38, ["Dragon Lord"] = 39, ["Fire Devil"] = 40, ["Lion"] = 41, ["Polar Bear"] = 42, ["Scorpion"] = 43, ["Wasp"]= 44, ["Bug"] = 45, ["Ghost"] = 48, ["Fire Elemental"] = 49, ["Orc Spearman"] = 50, ["Djinn"] =51, ["Winter Wolf"] = 52, ["Frost Troll"]=53, ["Witch"] = 54, ["Behemot"] =55, ["Cave Rat"] = 56, ["Monk"] = 57, ["Priestess"] = 58, ["Orc Leader"] = 59, ["Pig"] = 60, ["Goblin"] = 61, ["Elf"] = 62, ["Elf Arcanist"] = 63, ["Elf Scout"] = 64, ["Mummy"] = 65, ["Dwarf Geomancer"] = 66, ["Stone Golem"] = 67, ["Vampire"] = 68, ["Dwarf"] = 69, ["Dwarf Guard"] = 70, ["Dwarf Soldier"] = 71, ["Rabbit"] = 74, ["Swamp Troll"] = 76}

 

 

E a lootchance

"Eu quero fazer um faraó, mas quero que item fulano caia toda hora e que item ciclano caia mto raramente", entao ai vai a lista da loot chance:

 

--100000= all time--

--50000= each 2 time--

--33333= each 3 time--

--20000= each 5 time--

--10000= each 10 time--

--6666= each 15 time--

--5000 = each 20 time--

--4000 = each 25 time--

--3333 = each 30 time--

--2857 = each 35 time--

--2500 = each 40 time--

--2222 = each 45 time--

--2000 = each 50 time--

--1818 = each 55 time--

--1666 = each 60 time--

--1538 = each 65 time--

--1428 = each 70 time--

--1333 = each 75 time--

--1000 = each 100 time--

--909 = each 110 time--

--833 = each 120 time--

--800 = each 125 time

--666 = each 150 time--

--588 = each 170 time--

--555 = each 180 time--

--500 = each 200 time--

--400 = each 250 time--

--333 = each 300 time--

 

:arrow: NPC

Bom ja criamos uma spell, um monstro, vamos criar um NPC, que quando vc pedir ele sumone um monstro pra vc

Começamos a função de um NPC com isso

 

focus = 0

contador = 0

talk_start = 0

target = 0

following = false

attacking = false



function onThingMove(creature, thing, oldpos, oldstackpos)



end





function onCreatureAppear(creature)



end





function onCreatureDisappear(cid, pos)

if focus == cid then

selfSay('Ate breve.')

focus = 0

contador = 0

talk_start = 0

end

end





function onCreatureTurn(creature)



end





function msgcontains(txt, str)

return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))

end





function onCreatureSay(cid, type, msg)

msg = string.lower(msg)

 

Bom, depois disso acrescentamos:

 

if ((string.find(msg, '(%a*)hi(%a*)')) and (focus == 0)) and getDistanceToCreature(cid) < 3 then

selfSay('Hail ' .. creatureGetName(cid) .. '! Voce gostaria de treinar com algum de meus monstros?')

focus = cid

contador = 1

talk_start = os.clock()

end

 

Quando vc falar HI pra ele ele vai te dizer:

selfSay('Hail ' .. creatureGetName(cid) .. '! Voce gostaria de treinar com algum de meus monstros?')

Dai pulamos uma linha e acrescentamos:

 

if string.find(msg, '(%a*)hi(%a*)') and (focus ~= cid) and getDistanceToCreature(cid) < 3 then

selfSay('Espere ' .. creatureGetName(cid) .. '!')

end

 

Isso é, se alguem chegar e falar Hi e ele estiver falando com vc, ele vai dizer para o outro:

selfSay('Espere ' .. creatureGetName(cid) .. '!')

Entao agora para responder a pergunta que o Npc nos fez, pulamos uma linha e colocamos:


if msgcontains(msg, 'yes') and focus == cid and contador == 1 then

selfSay('/m trainer')

talk_start = os.clock()

end

 

 

No caso, quando vc falar yes, ele vai sumonar um trainer,aqui vc poderia substituir por qualquer outro bixo, entao fechamos o script com isso:

 

if string.find(msg, '(%a*)bye(%a*)') and focus == cid and getDistanceToCreature(cid) < 3 then

selfSay('Ate Breve jovem ' .. creatureGetName(cid) .. '!')

focus = 0

talk_start = 0

end



end





function onCreatureChangeOutfit(creature)



end





function onThink()

if (os.clock() - talk_start) > 30 then

if focus > 0 then

selfSay('Próximo Por favor...')

end

focus = 0

contador = 0

end

end

 

Que nada mais é do q, oq ele fala e faz depois que vc fala BYE, e oq ele fala e faz depois que vc se afasta muito dele.

Vamos explicar algumas funções dos NPCs:

 

selfSay = oq ele irá falar em resposta a algo q vc disse

buy(cid,itemid,qtd,price) = mto usada para Npcs que compram e vendem, esta função serve para vc comprar algo de um Npc

sell(cid,itemid,qtd,price) = igual ao explicado acima, so que serve para vc vender algo para o npc

 

:arrow: DICAS

* Nunca faça monstros fortes demais, primeiro avalie a força dos jogadores do seu server e faça um monstro que eles consigam matar, mesmo que para isso ralem bastante, ninguem gosta de ver um monstro ignorante matando todo mundo, isso acaba com a graça

*Faça spells balanceadas para todas as vocações, fazer uma spell onde so o druida é beneficiado, fica ruim, se fizer uma spell forte para o druida, tente fazer uma para o pally, o kina e o sorc, ou de a eles algum beneficio que o druida nao tem

*Existem várias funções q podem ser usadas nos Npcs, tente tirar o máximo de proveito disso para fazer quests, eventos, etc.

 

isso aew duvidas postem aew =)

 

preto.gif

A dançinha do Calton eh manera ! HAUHAiuAHUAhIUAHAIA

OBS: Se alguem quizer me dar OT$ pelo meu trabalho eu aceito quailquer doação ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
Smallvile    0
Smallvile
ohmy.gif TUTORIAL SHOW MTO BOM MESMO TA DE PARABENS

Compartilhar este post


Link para o post
Compartilhar em outros sites
imported_chunin_lee    0
imported_chunin_lee

LoL!! Já vi esse tutorial a quase muito tempo em outro Forum!! Verdade ou não!! Ta muito bom!! Mas:

 

Gente,peço que vcs postem o que acharam,porque realmente desanima fazer um tuto desse tamanho,separar,por cor,code,tudo bonitinho, e vcs só olharem e irem embora![/b]

Não vi nenhuma cor angry.gif !!

Compartilhar este post


Link para o post
Compartilhar em outros sites
!Cre!    0
!Cre!

Brother muito doidooooo

 

 

 

APROVADO

APROVADO

APROVADO

APROVADO

APROVADO laugh.gif

laugh.gif

laugh.gif

 

laugh.gif

 

laugh.gif

laugh.gif

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
krinKrin    0
krinKrin

aprovado com certeza

Compartilhar este post


Link para o post
Compartilhar em outros sites
demonamera    0
demonamera

q loko veio pra qm num sab ajuda mto boa continue assim

Compartilhar este post


Link para o post
Compartilhar em outros sites
DuDz    0
DuDz

Eu me pergunto...

 

O que este tutorial estaria fazendo aqui, em Download de Scripts??

 

Só estou postando e movendo, para avisar as pessoas que procurarem por tal tópico, poderem encontrá-lo. ;]

 

Movido para Tutoriais de Scripting.

 

Abraços,

 

//DuD

Compartilhar este post


Link para o post
Compartilhar em outros sites
Martios    0
Martios

bom tuto

ajuda bastante ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
rodrigofox    0
rodrigofox

Sem duvida perfeitO!

Compartilhar este post


Link para o post
Compartilhar em outros sites
bananinhao    0
bananinhao

ótimo tuto, bom que vc junto os 3 tuto em 1 soh senao ia fika moh sem sentido

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Lugano The Fakke    0
Lugano The Fakke

otimo tuto!!

 

MT bem APROVADO

Compartilhar este post


Link para o post
Compartilhar em outros sites
alanaxD    0
alanaxD

AFF vc consegue me ajuda faze um exori tipow assim um X grande e uma bolinha

 

laugh.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites
dinodede    0
dinodede

Otimo Tutorial.... mas tipo quando eu crio a spell e tals, entro no serv e falo o nome da spell e n acontece nd...

tem como me ajuda com isso???

 

ah... eu to tentando fazer spells pro meu OT 8.0...

Compartilhar este post


Link para o post
Compartilhar em outros sites
BazukeroMaster    0
BazukeroMaster

blink.gifohmy.gif

mt bem explikadu e tals

to doidu

um dos melhores que jah vi

mt rox

deve ter dadu um trabalhaum

laugh.gif vlws

flws~~

Compartilhar este post


Link para o post
Compartilhar em outros sites
Fuzion    0
Fuzion

Tutorial muito bom muito bem explicado da pra entede tudo sem nenhum erro

 

 

 

Aprovado

Compartilhar este post


Link para o post
Compartilhar em outros sites
heit0r    0
heit0r

q legal cara pra qm num sabe ajuda muito boa continue assim

Compartilhar este post


Link para o post
Compartilhar em outros sites
Kenadon    0
Kenadon

MUITO BOM!!!Muito bom mesmo!!!Ótimos tutoriais, criar monstros eu sei muito bem, mas spells e NPC's pra mim é novidade...Vou criar muitos, muito legal o tutorial!

Compartilhar este post


Link para o post
Compartilhar em outros sites
mulamboo    0
mulamboo

Como fais para o npc vender bp de mf ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Fadi    0
Fadi

mto bom, apenas complementando q pra spells eh sempre bom aprender funções como "setCombatParam" e "setCombatFormula", se vc usar yurots por exemplo. isso porque certas animãções soh podem ser conseguidas através do combatparam, e combatformula se liberado através de certos métodos acaba sendo usado em actions, movements e talks sem problemas, oq à torna uma função realmente útil. mas parabéns pelo tutorial ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×