Ir para conteúdo

Criando Npc De 3º Vocaçao E Junto Podendo Cria Um Npc Q Da Mais Dias De Premmy


leo_itachi

Posts Recomendados

E aew galera bom esse topico eu nunca vi aki no xtibia

 

e como eu montei 4 vocaçoes novas no meu ot caseiro xD

resolvi posta como cria um npc para dar a 3º vocaçao pra algum player

e tbm vo mostra como almenta o dia de premmy q o npc vende

 

isso pode tira mtas duvidas ^^

 

bom se vc abri a pasta data/npc/scripts do seu ot e abri o promote.lua vai v q ele e assim

 

local focus = 0

local talk_start = 0

local target = 0

local days = 0

 

function onThingMove(creature, thing, oldpos, oldstackpos)

 

end

 

 

function onCreatureAppear(creature)

 

end

 

 

function onCreatureDisappear(cid, pos)

if focus == cid then

selfSay('Good bye then.')

focus = 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)

 

if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then

selfSay('Hello ' .. creatureGetName(cid) .. '! I sell premiums andpromotions.')

focus = cid

talk_start = os.clock()

 

elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then

selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.')

 

elseif focus == cid then

talk_start = os.clock()

 

if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then

if getPlayerVocation(cid) > 4 then

selfSay('Sorry, you are already promoted.')

talk_state = 0

elseif getPlayerLevel(cid) < 20 then

selfSay('Sorry, you need level 20 to buy promotion.')

talk_state = 0

elseif not isPremium(cid) then

selfSay('Sorry, you must be premium to buy promotion.')

talk_state = 0

else

selfSay('Do you want to buy promotion for 20k?')

talk_state = 1

end

 

elseif msgcontains(msg, 'premium') or msgcontains(msg, 'premmy') then

selfSay('Do you want to buy 7 days of premium for 7k?')

talk_state = 2

 

elseif talk_state == 1 then

if msgcontains(msg, 'yes') then

if pay(cid,20000) then

doPlayerSetVocation(cid, getPlayerVocation(cid)+4)

selfSay('You are now promoted!')

else

selfSay('Sorry, you do not have enough money.')

end

end

talk_state = 0

 

elseif talk_state == 2 then

if msgcontains(msg, 'yes') then

if pay(cid,7000) then

selfSay('/premium '.. creatureGetName(cid) ..', 7')

selfSay('You have 7 days of premium more!')

else

selfSay('Sorry, you do not have enough money.')

end

end

talk_state = 0

 

elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then

selfSay('Good bye, ' .. creatureGetName(cid) .. '!')

focus = 0

talk_start = 0

end

end

end

 

 

function onCreatureChangeOutfit(creature)

 

end

 

 

function onThink()

doNpcSetCreatureFocus(focus)

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

if focus > 0 then

selfSay('Next Please...')

end

focus = 0

end

if focus ~= 0 then

if getDistanceToCreature(focus) > 5 then

selfSay('Good bye then.')

focus = 0

end

end

end

 

bom explicando

 

tudo que esta em vermelho e oq iremos muda da p.a

e tudo q estive em azul e sobre a promoted

 

como por exemplo no meu eu coloquei a parte do lvl assim

selfSay('Sorry, you need level 80 to buy second promotion.')

mais isso vai do gosto de cada um

 

agora eu vo coloca como fico o meu e vo explica onde muda pra vcs colocarem a gosto

 

local focus = 0

local talk_start = 0

local target = 0

local days = 0

 

function onThingMove(creature, thing, oldpos, oldstackpos)

 

end

 

 

function onCreatureAppear(creature)

 

end

 

 

function onCreatureDisappear(cid, pos)

if focus == cid then

selfSay('Good bye then.')

focus = 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)

 

if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then

selfSay('Hello ' .. creatureGetName(cid) .. '! I sell second promotions and premmy.')

focus = cid

talk_start = os.clock()

 

elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then

selfSay('Sorry, ' .. creatureGetName(cid) .. '! I talk to you in a minute.')

 

elseif focus == cid then

talk_start = os.clock()

 

if msgcontains(msg, 'promotion') or msgcontains(msg, 'promote') then

if getPlayerVocation(cid) > 8 then

selfSay('Sorry, you are already second promoted.')

talk_state = 0

elseif getPlayerLevel(cid) < 150 then

selfSay('Sorry, you need level 150 to buy promotion.')

talk_state = 0

elseif not isPremium(cid) then

selfSay('Sorry, you must be premium to buy promotion.')

talk_state = 0

else

selfSay('Do you want to buy promotion for 100k?')

talk_state = 1

end

 

elseif msgcontains(msg, 'premium') or msgcontains(msg, 'premmy') then

selfSay('Do you want to buy 200 days of premium for 80k?')

talk_state = 2

 

elseif talk_state == 1 then

if msgcontains(msg, 'yes') then

if pay(cid,100000) then

doPlayerSetVocation(cid, getPlayerVocation(cid)+4)

selfSay('You are now second promoted!')

else

selfSay('Sorry, you do not have enough money.')

end

end

talk_state = 0

 

elseif talk_state == 2 then

if msgcontains(msg, 'yes') then

if pay(cid,80000) then

selfSay('/premium '.. creatureGetName(cid) ..', 200')

selfSay('You have 200 days of premium more!')

else

selfSay('Sorry, you do not have enough money.')

end

end

talk_state = 0

 

elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then

selfSay('Good bye, ' .. creatureGetName(cid) .. '!')

focus = 0

talk_start = 0

end

end

end

 

 

function onCreatureChangeOutfit(creature)

 

end

 

 

function onThink()

doNpcSetCreatureFocus(focus)

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

if focus > 0 then

selfSay('Next Please...')

end

focus = 0

end

if focus ~= 0 then

if getDistanceToCreature(focus) > 5 then

selfSay('Good bye then.')

focus = 0

end

end

end

 

id das vocaçoes se decha 4 ele so vai ir ate a promote e nao ate a second promote

oq o npc vai fla quando o player fla hi

o lvl q vc vai quere q o player tenha pra pode se promove

o preço da second promote ponha o tanto q o player tera q pagar ;)

o q vc que q o npc fale quando o player ja for second promoted

o tanto de dia de premmy e o custo dela q vc quer q o npc fle se o player fla premmy ow premium

onde vc muda para o tando de dia de p.a q vc vai quere q o npc venda

o preço que o player tera que paga pelos dias de p.a

 

bom creiu que aki coloquei tudo agora salve isso com suas modificaçoes e o nome do npc

 

agora volte uma pasta e da ctrl +c e ctrl +v em uma pasta apague conteudo dela e ponha

 

<?xml version="1.0"?>

 

<npc name="Grand johnny" script="data/npc/scripts/promote 2.lua" access="3" lookdir="2">

<mana now="800" max="800"/>

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

<look type="133" head="114" body="119" legs="132" feet="114"/>

</npc>

 

no lugar do Grand Johnny ponha o nome do seu npc e

aki script="data/npc/scripts/promote 2.lua ponha o nome da onde vc salvo

 

e so isso comentem plz ;)

ah nao esquecendo q o nome q tive .xml por exemplo joao.xml vc vai usa o /s joao pra faze o npc caso ele n tenha um respawn fixo ^^

 

Credito 100% by me =)

Editado por cavaleiro jedy
Link para o comentário
Compartilhar em outros sites

  • 4 weeks later...

Parabéns, seu tutorial foi aprovado.

 

Estarei movendo ele para a área de tutoriais.

 

Obrigado por trazer conteúdo para o Xtibia.com e espero que continue com o ótimo trabalho.

 

 

 



Atenciosamente,

JV Chequer *Diretor de Fórum Xtibia.com*

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

sim, ou se nao aqui nessa parte

 

selfSay('Hello ' .. creatureGetName(cid) .. '! I sell second promotions and premmy.')

 

e so decha

 

selfSay('Hello ' .. creatureGetName(cid) .. '! I sell second promotions.')

 

xD ai nem todos os player vao sabe que ele vende premmy

Link para o comentário
Compartilhar em outros sites

n gostei asim vc acaba tirando a primeira promotion e isso eu ja sabia lol

tava achando q alem de pega promotion ia da de pega a 3°

mesmo assim n fico tao ruim pelo menos ta organizado

Link para o comentário
Compartilhar em outros sites

ae vo testa no meu serv e jaja ponho o edit

 

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

 

 

 

 

 

 

 

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

Metas~*

[x]10Posts

[x]20Posts

[x]30Posts

[x]40Posts

[x]50Posts

 

Uff Metade já se foi mais elas aumentarao as metas

[ ]60Posts

[ ]70Posts

[ ]80Posts

[ ]90Posts

[ ]100Posts

[ ]150Posts

[ ]200Posts

 

[x]Aprendiz:

[x]Servo

[x]Caçador

[x]Cavaleiro

[ ]Sabio:

[ ]Sacerdote:

[ ]Aristocrata:

[ ]Imperador:

 

 

[ ]Ter um Tuturial aprovado

[ ]Terminar meu ot

Um Dia eu chego la

Link para o comentário
Compartilhar em outros sites

nem tem nda mtu a ver com esse tuto mais ok ^^

 

seria aqui

 

<vocation id="1" name="Sorcerer" description="a sorcerer"

 

por exemplo e se a classe chamasse end? ficaria assim

 

<vocation id="1" name="End" description="an end"

 

cya

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...