Criando The Oracle

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Criando The Oracle

Mensagem  ADM_Fox em Dom Fev 24, 2008 5:07 pm

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:
Citação:
<?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:
Citação:
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:
Citação:
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
By Netto[center] afro

ADM_Fox

Mensagens : 16
Data de inscrição : 24/02/2008
Idade : 22

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum