Ir para conteúdo
Entre para seguir isso  
LuNaTiC

NPC para servers com RPG

Recommended Posts

LuNaTiC    0
LuNaTiC

Existem muitas formas de troca, que muita gente não sabe como colocar, geral as pessoas tentam colocar :

 

buy(cid,2455,1,0)
sell(cid,2455,1,0)

 

Mas sempre dava a mesma coisa, ele sempre pega o item sem devolver um....

 

O Script de troca é esse:

 

elseif talk_state == 1 then

if msgcontains(msg, 'yes') then

itemstatus = doPlayerRemoveItem(cid,2379,1)

if itemstatus == 0 then

selfSay('Sorry, you not have this item.')

else

doPlayerAddItem(cid,2148,2)

selfSay('Thanks for this item.')

end

end

talk_state = 0

 

Explicando:

 

Mensagem que o player irá dizer para a troca, no caso, eu fiz um exemplo de uma confirmação.

Esse comando serve para remover o item do player, no caso, uma dagger.

No caso, ai está o tal comando de se o player não tiver o item, ele não trocara o item.

Essa mensagem o NPC falará quando o player não tiver o item para a troca.

Esse comando server para adicionar um item ao player, no caço 2 gps pela dagger.

Essa mensagem o NPC irá falar quando vocês trocarem o item.

 

Importante¹: Se for para adicionar mais de 100 gold tenque colocar 2 comando, exemplo: doPlayerAddItem(cid,2148,43) e doPlayerAddItem(cid,2152,2), no caso o player ganhara 243 gps.

 

Aqui está um exemplo de um NPC de Troca:

 

local focus = 0

local talk_start = 0

local target = 0

local following = false

local attacking = false

 

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('Olá ' .. creatureGetName(cid) .. '! Eu te dou um Demon Shield por um Royal Helmet.')

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, 'troca') or msgcontains(msg,'trade') then

if queststatus == -1 then

selfSay('Você quer trocar um royal helmet por um demon shield?')

talk_state = 1

 

elseif msgcontains(msg, 'exemplo de quest') or msgcontains(msg,'exemplo de quest.') then

selfSay('Você quer trocar um royal helmet por um demon shield?')

talk_state = 2

 

elseif talk_state == 1 then

if msgcontains(msg, 'yes') then

itemstatus = doPlayerRemoveItem(cid,2498,1)

if itemstatus == 0 then

selfSay('Sorry, you not have items.')

else

doPlayerAddItem(cid,2520,2)

selfSay('Thanks for items.')

end

end

talk_state = 0

 

elseif talk_state == 2 then

if msgcontains(msg, 'yes') then

itemstatus = doPlayerRemoveItem(cid,2498,1)

if itemstatus == 0 then

selfSay('Sorry, you not have items.')

else

doPlayerAddItem(cid,2520,2)

selfSay('Thanks for items.')

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()

 

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[/b]

 

Agora é so configura como eu disse acima....

 

Agora vou ensinar como o NPC falará com você apenas se você tiver feito alguma quest.

 

Depois de:

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

 

Adicione:

and queststatus > 0 then

 

Ficando:

 

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

 

Emcima adicione:

queststatus = getPlayerStorageValue(cid,2520)[/b]

 

Esse é o StorageValue da quest, se você fez ela ou não...

 

Embaixo de:

 

          elseif string.find(msg, '(%a*)bye(%a*)')  and getDistanceToCreature(cid) < 4 then
              selfSay('Bye human.')
              focus = 0
              talk_start = 0
          end

 

Adicione:

else

 

selfSay('Você não pode conversar comigo sem fazer a quest')[/b]

 

Mensagem que irá aparecer se o player não tiver feito a quest

 

Pronto, estou acabando meu tutorial por aqui, espero ter ajudado as pessoas a fazerem seu server com mais RPG do que o normal.[/b]

Compartilhar este post


Link para o post
Compartilhar em outros sites
Magus    2
Magus

Aprovado.

 

Abraços,

Magus.

Compartilhar este post


Link para o post
Compartilhar em outros sites
matheusrp    0
matheusrp

Tutorial bom ....xD

mais tipu....to com uma duvida

sera que eu posso coloca o npc

pra vende bp de mana fluid

se você pude ajuda eu gradeço muito laugh.gif

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
LuNaTiC    0
LuNaTiC

@matheusrp

 

Tem como assim, apenas adicione mais coisas ao doPlayerAddItem, vou mostrar um exemplo a baixo com o script de bp of mf, se no seu server não possuir o comando buyContainer(cid,2003,2006,7,2000), não será possivel por compra nos NPC:

 

elseif talk_state == 1 then

if msgcontains(msg, 'yes') then

itemstatus = doPlayerRemoveItem(cid,2152,10)

if itemstatus == 0 then

selfSay('Sorry, you don't have money.')

else

buyContainer(cid,2003,2006,7,2000)

selfSay('Here are you.')

end

end

talk_state = 0[/b]

 

No caso dei um exemplo de uma confirmação:

 

Item que irá remover, no caso, 1k

Item que irá adicionar, no caso, 1 bp de mf

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites
matheusrp    0
matheusrp

Valeu cara

você me ajudo muito ^^

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
LOkaumz    0
LOkaumz

Ae meu!! vlw!!! biggrin.gifD fazia tempo q eu tava tentando acha um tuto assim... vlw mesmo smile.gif))

Compartilhar este post


Link para o post
Compartilhar em outros sites
Griloh    0
Griloh

Muito bom, tutorial explciadinho.

Parabéns! biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites
joaopedro07    0
joaopedro07

Ta de parabens

xD

Compartilhar este post


Link para o post
Compartilhar em outros sites
Arch    0
Arch

otimo

perfeito na vdd

tudo oq eu precisava

jah tinha pensado num npc assim

mas fazer

era outra coisa neh

ateh pq nao sou scripter

entao eh [Palavrão Censurado]a

vlws

ajudo pakas

^^

Compartilhar este post


Link para o post
Compartilhar em outros sites
Hug    0
Hug

muito bom brother

comprei jah uns 2 npc ki vi agora aqui e eh moh facil de fazer xD

parabéns pelo topico

Compartilhar este post


Link para o post
Compartilhar em outros sites
Convidado Sir of fanton   
Convidado Sir of fanton

boum parabens

agora as qest serao mais divertidas

Compartilhar este post


Link para o post
Compartilhar em outros sites
zerazy    0
zerazy

Estava precisandu desse npc...

Aprovado

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mush    0
Mush

Bom agora eu consigui intende direitinho apos o tuto

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.

×