ME
dúvida

[Ajuda] Npc System

Por Mehahbr, 20 de jan. de 2012 em Resolvidos

8
1.8k
MehahbrM
20 de janeiro de 2012 às 11:22

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('Ola ' .. getCreatureName(cid) .. '! Eu vendo parcel, letter e ticket de viagem!')

focus = cid

talk_start = os.clock()

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

selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk with you in one minute.')

 

 

elseif msgcontains(msg, 'ticket city') then

selfSay('Voce tem os 1000 gold coin para comprar 1 ticket of city?')

talk_state = 1

talk_start = os.clock()

elseif talk_state == 1 and msgcontains(msg, 'yes') then

if doPlayerRemoveMoney(cid,1000) == TRUE then

selfSay('Parabens! Voce adquiriu um item!')

local item1 = doPlayerAddItem(cid,1969,1)

doItemSetAttribute(item1,"text","[Air Ticket]: Passaport\nDestination: GM Island.")

doItemSetAttribute(item1,"name","GM Island Passaport")

else

selfSay('Desculpe, voce nao tem dinheiro suficiente!')

end

 

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

selfSay('Bye ' .. getCreatureName(cid) .. ', Come back.')

focus = 0

talk_start = 0

elseif msgcontains(msg, 'kashsauahsuacuyio') then

selfSay('What?')

talk_state = 0

end

end

function onCreatureChangeOutfit(creature)

end

function onThink()

doNpcSetCreatureFocus(focus)

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

if focus > 0 then

selfSay('Next...')

end

focus = 0

talk_start = 0

end

if focus ~= 0 then

if getDistanceToCreature(focus) > 5 then

selfSay('Good Bye')

focus = 0

talk_start = 0

end

end

end

 

Como passo esse npc para versao 8.6? Obrigado...

TryllerT
20 de janeiro de 2012 às 15:48

Cara eu arurmei certinhu.

Mas esse forum nao tme uma tag que deixo o codigo certinhu ;x

Mas ta ai testei no Crystal Server e funcionou :)

Se funfa ai me da um rep xD

 

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.', cid)

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('Ola ' .. getCreatureName(cid) .. '! Eu vendo {parcel}, {letter} e {ticket city}!', cid)

focus = cid

talk_start = os.clock()

 

elseif msgcontains(msg, 'ticket city') or msgcontains(msg, 'ticket') then

selfSay('Voce tem os 1000 gold coin para comprar 1 ticket of city?', cid)

talk_state = 1

talk_start = os.clock()

elseif talk_state == 1 and msgcontains(msg, 'yes') then

 

if doPlayerRemoveMoney(cid, 1000) == TRUE then

selfSay('Parabens! Voce adquiriu um item!', cid)

local item1 = doPlayerAddItem(cid,1969,1)

doItemSetAttribute(item1,"text","[Air Ticket]: Passaport\nDestination: GM Island.")

doItemSetAttribute(item1,"name","GM Island Passaport")

else

selfSay('Desculpe, voce nao tem dinheiro suficiente!', cid)

end

 

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

selfSay('Bye ' .. getCreatureName(cid) .. ', Come back.', cid)

focus = 0

talk_start = 0

elseif msgcontains(msg, 'kashsauahsuacuyio') then

selfSay('What?', cid)

talk_state = 0

end

end

 

function onCreatureChangeOutfit(creature)end

function onThink()

doNpcSetCreatureFocus(focus)

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

if focus > 0 then

selfSay('Next...', cid)

end

focus = 0

talk_start = 0

end

 

if focus ~= 0 then

if getDistanceToCreature(focus) > 5 then

selfSay('Good Bye', cid)

focus = 0

talk_start = 0

end

end

end

MehahbrM
20 de janeiro de 2012 às 18:12

mano tipo eu sei que ele funciona so que ele nao fala no NPC Chat entende.? Queria por apra ele falar no NPC Chat .... AJudeemm... Thankss

TryllerT
20 de janeiro de 2012 às 19:02

Testou o script que eu puz? -.-

Primeiro teste antes de reclamar.

Alem de eu ajudar ainda saiu por mal u.u

TESTA ESSA BAGAÇA

MehahbrM
21 de janeiro de 2012 às 13:19

muito obrigado garoto... te agradeco de coracao

PoliarP
21 de janeiro de 2012 às 19:24

funcionou vlwss :D

Henrique MouraH
21 de janeiro de 2012 às 22:07

Galera estressada..hahaha

Movido :)

MehahbrM
23 de janeiro de 2012 às 14:15

Esta dando erro sempre quando 2 personagem tentam falar com o npc

 

Este e o erro sadac.jpg

 

Ajudeeee