XP

Npc Oracle

Por XPaulo, 04 de mar. de 2007 em NPCs, monsters e raids

script
11
4.6k
XPauloX
04 de março de 2007 às 04:24

Proucurei pelo Forum e não encontrei nenhum npc 7.92,

 

por isso fiz o tutorial, tentei deixar bem parecido com o do global,

 

dê sua nota(5 a 10), leve em consideração que e meu primeiro.

 

Crie um arquivo com nome de oracle.lua e coloque isso dentro dele:

data/npc/scripts/oracle.lua

 

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)

pos = {x=100, y=100, z=7}

 

-- greeting phrase

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

selfSay('Hello, young adventurer! Are you ready to face your destiny?')

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, 'yes') and talk_state ~= 458 then

if getPlayerLevel(cid) >= 8 then

selfSay('Great! What would you like to be? A sorcerer, a druid, a paladin or a knight?')

talk_state = 459

else

selfSay('Sorry, you need level 8 to leave rookgaard.')

talk_state = 0

end

 

elseif msgcontains(msg, 'no') then

selfSay('Come back when you are ready then.')

talk_state = 0

 

elseif talk_state == 459 then

vocationid = 0

talk_state = 458

 

if msgcontains(msg, 'sorcerer') then

selfSay('A mighty sorcerer! Are you sure?')

vocationid = 1

 

elseif msgcontains(msg, 'knight') then

selfSay('A valorous knight! Are you sure?')

vocationid = 4

 

elseif msgcontains(msg, 'paladin') then

selfSay('A nimble paladin! Are you sure?')

vocationid = 3

 

elseif msgcontains(msg, 'druid') then

selfSay('A mysterious druid! Are you sure?')

vocationid = 2

 

else

selfSay('Sorry, I can\'t understand that. Please type your vocation again.')

talk_state = 459

end

 

 

 

elseif talk_state == 458 then

if msgcontains(msg, 'yes') then

selfSay('Great! Where would you like to go? I can take you to NOME DA CIDADE.')

talk_state = 452

else

selfSay('What vocation do you want then?')

talk_state = 459

end

 

elseif talk_state == 452 then

if msgcontains(msg, 'now') then

doPlayerSetVocation(cid,vocationid)

doPlayerSetMasterPos(cid,pos)

selfSay('/send '.. creatureGetName(cid) ..', 100 100 7') - Troque para sua codernadas

end

end

talk_state = 0

talk_start = 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

 

 

 

Va em creatures.xml e adicione isso:

 

<creature look type="138" name="The Oracle" head="78" body="119" legs="119" feet="76" type="npc"/>

 

 

Va em data/npc e faça um novo .xml e coloque isso:

 

<?xml version="1.0"?>

<npc name="The Oracle" script="data/npc/scripts/oracle.lua" access="3">

<look type="138" head="78" body="119" legs="119" feet="76" />

</npc>

 

 

OBS:Para adicionar mas cidades basta duplica a que ja tem ai.

 

 

Lembrando sempre torque as coordenadas para que se adapte ao seu mapa.

 

Se encontrarem algum erro mim notifique que eu editarei.

 

 

Creditos: By Paulo.

 

 

 

Att

Editado Março 4 por XPaulo

NetBSDN
04 de março de 2007 às 11:52

o tuto tá até bom por ser seu primeiro^^mas isso aqui não existe em 7.8x pra cima

Va no spawn dos npc e coloque isso:

 

QUOTE

<spawn centerx="196" centery="216" centerz="6" radius="5">

<npc name="The Oracle" x="-1" y="0"/>

</spawn>

Nas versões 7.8x pra cima você adiciona os npcs pelo map editor ¬¬ corrija isso^^ Nota: 5

 

 

//Sasky

Editado Março 4 por Sasky

04 de março de 2007 às 15:38

Até que ficou bom, se eu pudesse dar uma nota maior.....

mas irei dar nota 6 pra vc =D

olha que estou sendo generoso =P

 

Atenciosamente: Guilherme

TylerT
05 de março de 2007 às 17:29

O Tutorial foi bom , da para aprender a editar e cria 1 novo oracule .. Nota 8,0 !^^

LordfireL
05 de março de 2007 às 17:39

nota 3

pelos dioversops erros que encontrei

1º que se add npcs pelo map editor né

2º explica como se deve fazer uma nova cidade

3º seu script está errado

Bl4NkB
05 de março de 2007 às 18:17

Bom, achei o tutorial mto bom,

dou nota 8,0.

4 semanas depois...
GOD ZéG
28 de março de 2007 às 21:08

@Sasky Òtimo Você Dar Sua Opinião :) ^^ bom os kra compartilhar idéias corrigir bugs :D

mas tah bom flws ótimo tópico

3 meses depois...
JvchequerJ
05 de junho de 2007 às 21:35

Isto, é 1 script, portanto movido para a seção correta.

 

Cya

1 mês depois...
DekoooD
29 de julho de 2007 às 01:27

esse oracle ae pra ot q tem tpw rook?

resposta plx

4 meses depois...
Rato_375R
15 de novembro de 2007 às 12:41

Cara vc poderia por ele em 8.0

3 anos depois...
coyotestarkC
19 de março de 2011 às 13:25

eu usei este oracle no wodbo by jao. imagino que seja um 8.50 ou 53. nao sei ao certo. e da um erro.

blablabla.lua: 122

"eof" expected near "end"