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 = 0talk_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') thenselfSay('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~~