Gente,peço que vcs postem o que acharam,porque realmente desanima
trazer um tuto desse tamanho,separar,por cor,code,tudo bonitinho, e vcs
só olharem e irem embora!
Tutorial meu basiado no tutor do lucas, creditos a mim e a ele.
--------------------------------------
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á!
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:
CODE
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:
CODE
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:
CODE
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:
CODE
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:
CODE
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:
CODE
spell
name="CrossOver" words="crossover" maglv="12" mana="160"
enabled="1"> />
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
------------------
MONSTERS
Spell criada, vamos passar para o Monstro que usara esta spell
Crie um arquivo .xml com um nome qualquer na pasta Data>Monsters
CODE
name="The Flash" level="500" maglevel="70" experience="1000"
pushable="0" armor="80" defense="90" canpushitems="1" staticattack="50"
changetarget="200" speed="100000">
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
= comando para ele sumonar um monstro
= aqui vc ajusta os items e o dinheiro, com a chance (Vamos falar sobre isso mais a frente) e etc
= 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)
= aqui é pra vc colocar se o seu monstro vai ser imune a alguma coisa,
exemplo: Demon é imune a fogo, entao vc poe lá: immunity="fire"/>
= qual será a mensagem que ele dirá (aquela msg laranja)
= 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
CODE
{["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:
CODE
--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--
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
CODE
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:
CODE
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:
CODE
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:
CODE
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:
CODE
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
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
trazer um tuto desse tamanho,separar,por cor,code,tudo bonitinho, e vcs
só olharem e irem embora!
Tutorial meu basiado no tutor do lucas, creditos a mim e a ele.
--------------------------------------
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á!
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:
CODE
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:
CODE
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:
CODE
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:
CODE
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:
CODE
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:
CODE
spell
name="CrossOver" words="crossover" maglv="12" mana="160"
enabled="1">
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
------------------
MONSTERS
Spell criada, vamos passar para o Monstro que usara esta spell
Crie um arquivo .xml com um nome qualquer na pasta Data>Monsters
CODE
pushable="0" armor="80" defense="90" canpushitems="1" staticattack="50"
changetarget="200" speed="100000">
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
= 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)
= aqui é pra vc colocar se o seu monstro vai ser imune a alguma coisa,
exemplo: Demon é imune a fogo, entao vc poe lá:
= 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
CODE
{["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:
CODE
--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--
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
CODE
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:
CODE
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:
CODE
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:
CODE
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:
CODE
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
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