Ir para conteúdo

Como Criar O The Oracle


Godely

Posts Recomendados

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~~

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • Respostas 45
  • Created
  • Última resposta

Top Posters In This Topic

  • 10 months later...
  • 2 weeks later...
  • 4 weeks later...

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

Link para o comentário
Compartilhar em outros sites

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:

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...