Como Criar O The Oracle

Godely
Por Godely
em Tutoriais de Scripting

Godely

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/11/05Posts: 26

Bem, para servers que contém rookgard e não sabem botar um The Oracle aqui está ensinando... lembrando que se você fizer esse The Oracle na mtk version n vai dar por que os comandos são diferentes ;]

Começando ...

Va na pasta "npc" , copie qualquer npc que já esteja la, cole, e renomeie para The Oracle. Dentro você coloca:

<?xml version="1.0"?>

<npc name="The Oracle" script="data/npc/scripts/oracle.lua" access="1" monster="1" speed="50" lookdir="2" pushable="0" level="100">

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

<look type="2010" head="57" body="59" legs="40" feet="76"/>

</npc>

Depois, entre na pasta Scripts dentro da pasta npc, copie de qualquer um, cole, e renomeie para "oracle".

Dentro você colocará o seguinte:

focus = 0

talk_start = 0

target = 0

following = false

attacking = false

talk_state = 0

cname = ''

vocation = 0

mainlevel = 8

function onThingMove(creature, thing, oldpos, oldstackpos)

end

function onCreatureAppear(creature)

end

function onCreatureDisappear(cid, pos)

  if focus == cid then

        selfSay('Tchau.')

        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)

  cname = creatureGetName(cid)

msg = string.lower(msg)

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

  selfSay('Ola ' .. cname .. '! Voce esta preparado para encarar o seu destino?')

  talk_state = 0

  focus = cid

  talk_start = os.clock()

elseif string.find(msg, '(%a*)hi(%a*)') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then

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

  elseif string.find(msg, '(%a*)bye(%a*)') and getDistanceToCreature(cid) < 4 then

  selfSay('Tchau, ' .. cname .. '!')

  talk_state = 0

  focus = 0

  talk_start = 0  elseif focus == cid then

  talk_start = os.clock()  if talk_state == 0 then

  if msgcontains(msg, 'sim') then  -- confirmando decisao

    level = getPlayerLevel(cname)

    if level >= mainlevel then

    selfSay('Otimo! O que voce quer ser? Um knight, um paladin, um sorcerer ou um druid?')

    talk_state = 1

    else

      selfSay('Lamento, voce precisa de level ' .. mainlevel .. ' para ir para mainland.')

    talk_state = 0

    end

  else

    selfSay('Entao volte quando estiver preparado.')

    talk_state = 0

  end

  elseif talk_state == 1 then  -- telling vocation

  talk_state = 2

  if msgcontains(msg, 'sorcerer') then

    selfSay('Um mistico sorcerer! Tem certeza?')

    vocation = 1

  elseif msgcontains(msg, 'druid') then

    selfSay('Um misterioso druid! Tem certeza?')

    vocation = 2

  elseif msgcontains(msg, 'paladin') then

    selfSay('Um certeiro paladin! Tem certeza?')

    vocation = 3

  elseif msgcontains(msg, 'knight') then

    selfSay('Um incrivel knight! Tem certeza?')

    vocation = 4

  else

    selfSay('Sorry, there is no such vocation.')

    vocation = 0

    talk_state = 1

  end

  elseif talk_state == 2 then  -- confirmando voc

  if msgcontains(msg, 'sim') then

    selfSay('Otimo! Posso te mandar pra City. Para onde voce quer ir?')

    talk_state = 3

  else

    selfSay('Que vocacao voce quer entao?')

    talk_state = 1

  end

  elseif talk_state == 3 then  -- telling city name

  if msgcontains(msg, 'city') then

    selfSay('Boa sorte, jovem aventureiro!')

    setPlayerVocation(cid,vocation)

    setPlayerMasterPos(cid,160,54,7)

    selfSay('/send ' .. cname .. ', 160 54 7')

    talk_state = 0

    focus = 0

    talk_start = 0

  else

    selfSay('Desculpe, nao existe essa cidade.')

    talk_state = 3

  end

  end

  end

end

function onCreatureChangeOutfit(creature)

end

function onThink()

  if (os.clock() - talk_start) > 45 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

~~explicando...

As coordenadas daonde eles vao assim que saem de rook e aonde eles irao nascer quando morrerem estao aki:

setPlayerMasterPos(cid,160,54,7)

selfSay('/send ' .. cname .. ', 160 54 7')

Basta mudar o x (que no caso eh o 160) o y (54) e o z (7)

Se no seu ot por acaso tiver + de uma vocaçao, como barbarian, assassin, etc..., acrescente embaixo de

elseif msgcontains(msg, 'knight') then

selfSay('Um incrivel knight! Tem certeza?')

vocation = 4

a vocation e o nome dela, ficando assim, por exemplo:

  if msgcontains(msg, 'sorcerer') then

    selfSay('Um mistico sorcerer! Tem certeza?')

    vocation = 1

  elseif msgcontains(msg, 'druid') then

    selfSay('Um misterioso druid! Tem certeza?')

    vocation = 2

  elseif msgcontains(msg, 'paladin') then

    selfSay('Um certeiro paladin! Tem certeza?')

    vocation = 3

  elseif msgcontains(msg, 'knight') then

    selfSay('Um incrivel knight! Tem certeza?')

    vocation = 4

  elseif msgcontains(msg, 'barbarian') then

    selfSay('Um incrivel barbarian! Tem certeza?')

    vocation = 6

  else

lembranco que se voce criar uma nova vocation, o numero dela tera de ser 6 pois 5 ja eh a dos gms e 0 eh no vocation!

Irei criar um topico falando sobre como botar na php para ir para rook quando criar um char e etc...

flws gente espero ter ajudado (Godely aqui)

xD~~

The shining light that shines upon every little shining piece of rock. Yammy.

Eigenlieb

Ex-Diretor
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 11/01/06Posts: 300Char no Tibia: Lippisch

Bom topico. Gostei :grin:

Interessante, o Oraculo é um recurso bem legal para melhorar o ot e deixar ele mais profissional e otimo para quem quer um com Rookguard

:grin:

Sou um ótimo avaliador de caráter! O meu, por exemplo, é péssimo.

ffssss

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 26/10/06Posts: 8

mto bom vlw eu que to fsnd uma versao de otserver isso vai me ajudar mto vlw!

Sou....

Mapper:
[||||||||||] 100%

Designer:
[||||||||||] 30%

Scripter:
[||||||||||] 10%

Spriter:
[||||||||||] 40%

------------------------------------------------------
user posted image

user posted image

user posted image

Lukituz

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 22/10/06Posts: 41

Muito bom mas eu acho que em quase todas as verçoes ja vem com The Oracle.

:bye:

Magodasabedoria

eternally alive
avatar
Barão
Barão

INFOS

Grupo: BarãoRegistrado: 04/01/06Posts: 239

:bigsmile: Legal vc ter postado... eu não sabia fazer e um amigo meu tava querendo :icon1:

Vlw por ajudar!

:bye::bye:

~~ ~~ Mago da Sabedoria ~~ ~~

jurotta

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 30/11/06Posts: 38

JÀ SABIA MAS VLW

Kenzo

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 08/10/06Posts: 131Char no Tibia: Kenzo Phoenix

Script pra quem não conheçe em complicado mais tirando issu é facil

Mais boa iniciativa ;)

//Kenzo

Visite a melhor parte do Fórum XTibia! Basta você apenas clicar aqui e deixar sua opinião sobre qualquer um dos assuntos!

Está com dúvidas no Tibia? Quer dicas de como melhorar seu character? Mande uma PM e lhe responderei a medida do possível.

"Tonight
I'm gonna have myself a real good time
I feel alive
And the world is turning inside out
Yeah!
And floating around in ecstasy

So don't stop me now
Don't stop me
'Cause I'm having a good time
I'm having a good time

I'm a shooting star leaping through the sky
Like a tiger defying the laws of gravity
I'm a racing car passing by like Lady Godiva
I'm gonna go go go
There's no stopping me...
"

Dont Stop me Now - McFly

sepito

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 20/12/06Posts: 5

Por favor preciso mto da ajuda de qualker pessoa... nenhum npc meu.. nem de barco nem o oracle manda nenhum player... no evolutions parece q nao existe o comando /send -.- como q eu faco pra adicionar o comando /send no evolutions? nenhum npc meu funciona... por favor preciso mto da ajuda d qualker pessoa q saiba como fazer isso

kakashy

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 15/06/06Posts: 1

aew brown pode me ajudar por favor eu fiz tudo que vc disse mas quando eu chgo no final e digo "SIM" o oracle diz Boa aventura! mas o player nao sai de rookgaard por que eu ja ediei o local pra onde ele vao quando falan "sim" e tals manow pq isu?

:mad::mad::mad:

Felipe Moraes

Java Developer
avatar
Grão-Duque
Grão-Duque

INFOS

Grupo: Grão-DuqueRegistrado: 02/10/06Posts: 3285Gênero: Masculino

bom tuto,parabens

~A nossa maior glória não reside no fato de nunca cairmos, mas sim em levantarmo-nos sempre depois de cada queda.~

 

 

 

 

Clique aqui para ver meus tutoriais !

 

 

 

Gamertag: cpmoraes

 

 

demonmaster

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 24/10/06Posts: 2

tipo não da pra fazer varios templos para o o player sair do rook se de posta aq e legal que nem tibia rl xD!!!

Godely

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/11/05Posts: 26

Se ele fala "Boa Aventura" e o player não é teleportado, quer dizer que o comando utilizado para mandar alguem é outro. Procure saber qual comando da sua versão, no commands.xml, isso ajudaria muito.

Bom pessoal, como vocês podem ver, o tópico é bastante velho, na época que eu não era da equipe de nenhum outro servidor. Mas, visto que hoje eu estou na Empire Team, irei parar de postar tutoriais. Eu sei que para fazer o The Oracle é muito simples, qualquer scripter sabe fazer, e não adianta ler tutoriais "Como fazer scripts" que nunca se aprende sem ter uma base. Você precisa treinar bastante para conseguir chegar ao ponto de fazer um sem olhar tutorial nenhum.

Isso é o que realmente importa, o aprendizado, sendo na vida real ou na computação.

See ya guys :)

The shining light that shines upon every little shining piece of rock. Yammy.

Godely

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/11/05Posts: 26

Se ele fala "Boa Aventura" e o player não é teleportado, quer dizer que o comando utilizado para mandar alguem é outro. Procure saber qual comando da sua versão, no commands.xml, isso ajudaria muito.

Bom pessoal, como vocês podem ver, o tópico é bastante velho, na época que eu não era da equipe de nenhum outro servidor. Mas, visto que hoje eu estou na Empire Team, irei parar de postar tutoriais. Eu sei que para fazer o The Oracle é muito simples, qualquer scripter sabe fazer, e não adianta ler tutoriais "Como fazer scripts" que nunca se aprende sem ter uma base. Você precisa treinar bastante para conseguir chegar ao ponto de fazer um sem olhar tutorial nenhum.

Isso é o que realmente importa, o aprendizado, sendo na vida real ou na computação.

See ya guys :)

The shining light that shines upon every little shining piece of rock. Yammy.

zingrift

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 21/09/05Posts: 129

bom simples e rapido =]

ajuda mt gente so q o script vem com o servidor ne -=]

mais o q vale é a intençao =]

zig7sj.jpg

zingbar3ni.jpg

colexfangif9ts8xj.gif

barrinhavk6.png

TE AJUDEI?? POSTEI ALGO QUE TE IMPRESSIONO? ENTAO AGRADEÇA COLOQUE MINHA FAN BAR EM SEU PERFIL