Ir para conteúdo
Entre para seguir isso  
tibiafanmaster

NPC The Oracle, V.Tibiafanmaster

Recommended Posts

tibiafanmaster    0
tibiafanmaster

Nome do NPC: The Oracle

Protocolo: 8.1+

Servidor testado: TFS 0.3.3

Autor: Tibiafanmaster

Descrição: NPC The Oracle, mais muito mais eficiênte e criativo que os demais, ele teleporta para a cidade que você escolher, muda o town id e ja te deixa com os equips, dependendo da vocação, fis para o meu OT, e axei muito egoismo nao postar aqui na OTNet!

 

Dentro da pasta data/npc crie um arquivo chamado The Oracle.xml e cole isso dentro do arquivo:

<?xml version="1.0" encoding="UTF-8"?>

<npc name="The Oracle" floorchange="0" walkinterval="0" script="data/npc/scripts/oracle.lua">

<look typeex="1448"/>

</npc>

Salve e feche.

 

Agora na pasta data/npc/scripts crie um arquivo chamado oracle.lua e cole isso dentro:

-- Não mude nada aqui

 

focus = 0

talk_start = 0

target = 0

following = false

attacking = false

talk_state = 0

cname = ''

vocation = 0

 

function onThingMove(creature, thing, oldpos, oldstackpos)

 

end

 

 

function onCreatureAppear(creature)

 

end

 

 

function onCreatureDisappear(cid, pos)

if focus == cid then

selfSay('Mais?...')

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 = getCreatureName(cid)

msg = string.lower(msg)

 

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

selfSay('Saudações ' .. cname .. '! Você está 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('Paciência, ' .. cname .. 'Paciência.')

 

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

selfSay('Adeus, ' .. 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, 'yes') then

if getPlayerLevel(cid) >= 8 then -- aqui você muda o lvl nescessário

selfSay('Magnífico! O que você quer ser? um Knight, um Paladin, um Sorcerer ou um Druid?')

talk_state = 1

else

selfSay('Lamento, voce precisa de level 8 para sair de Rook.')

talk_state = 0

end

else

selfSay('Então volte quando estiver preparado.')

talk_state = 0

end

 

elseif talk_state == 1 then

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 rápido Paladin! Tem certeza?')

vocation = 3

elseif msgcontains(msg, 'knight') then

selfSay('Um incrível Knight! Tem certeza?')

vocation = 4

else

selfSay('Desculpe, esta vocação não existe.')

vocation = 0

talk_state = 1

end

elseif talk_state == 2 then

if msgcontains(msg, 'CITY') then

selfSay('Explendido! você quer mesmo ir para CITY?')

talk_state = 3

else

selfSay('Certo... qual vocação você deseja?')

talk_state = 1

end

elseif talk_state == 3 then

if msgcontains(msg, 'yes') then

doPlayerSetTown(cid, 1)

doPlayerSetVocation(cid,vocation)

selfSay('Boa sorte, jovem aventureiro!')

doTeleportThing(cid,{x=000, y=000, z=0}) COLOR="Lime"]-- coordenadas do templo[/color]

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Parabéns agora você está em CITY.')

doPlayerRemoveItem(cid,2397,1) -- items a remover do player

doPlayerRemoveItem(cid,2511,1)

doPlayerRemoveItem(cid,2125,1)

doPlayerRemoveItem(cid,2458,1)

doPlayerRemoveItem(cid,2464,1)

doPlayerRemoveItem(cid,2648,1)

doPlayerRemoveItem(cid,2643,1)

doPlayerRemoveItem(cid,2398,1)

doPlayerRemoveItem(cid,2376,1)

doPlayerRemoveItem(cid,2412,1)

doPlayerRemoveItem(cid,2388,1)

doPlayerRemoveItem(cid,2473,1)

doPlayerRemoveItem(cid,2050,1)

doPlayerRemoveItem(cid,2480,1)

doPlayerRemoveItem(cid,2530,1)

doPlayerAddItem(cid,2152,50) -- 50 platinum coins o player recebe

if getPlayerVocation(cid) == 4 then

doPlayerAddItem(cid,2532,1) -- Items que o knight irá receber

doPlayerAddItem(cid,2661,1)

doPlayerAddItem(cid,2457,1)

doPlayerAddItem(cid,2463,1)

doPlayerAddItem(cid,2647,1)

doPlayerAddItem(cid,2641,1)

elseif getPlayerVocation(cid) == 3 then

doPlayerAddItem(cid,2532,1) -- Items que o paladin irá receber

doPlayerAddItem(cid,2661,1)

doPlayerAddItem(cid,8923,1)

doPlayerAddItem(cid,2664,1)

doPlayerAddItem(cid,8872,1)

doPlayerAddItem(cid,2641,1)

elseif getPlayerVocation(cid) == 2 or getPlayerVocation(cid) == 1 then

doPlayerAddItem(cid,2532,1) -- Items que o druid ou sorcerer irá receber

doPlayerAddItem(cid,2661,1)

doPlayerAddItem(cid,2663,1)

doPlayerAddItem(cid,8870,1)

doPlayerAddItem(cid,7730,1)

doPlayerAddItem(cid,2641,1)

end

talk_state = 0

focus = 0

talk_start = 0

else

selfSay('Desculpe, por enquanto apenas posso te mandar a uma city.')

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('Alguem mais?')

end

focus = 0

end

if focus ~= 0 then

if getDistanceToCreature(focus) > 5 then

selfSay('Até logo... então')

focus = 0

end

end

end

Salve e feche.

Explicação: doPlayerXItem(cid,2641,1) os doRemove e doAdd é obvio, lá vc configura os ids e quantos do itens serão adds e removeds

ID

Quantidade

Mude o templo, no meu caso o Oraculo remove:

Chain Armor, Chain Legs, Chain Helmet, Brass Shield, Longsword, Crystal Necklace e Leather Boots.

E Loots dos bixos de Rook EX:

Katana, Mace e Hatchet.

E Adiciona conforme as Vocações:

Knight:

Plate Armor, Plate Legs, Steel Helmet, Ancient Shield, Trapper Boots e Scarf.

Paladin:

Belted Cape, Cowl, Ranger Legs, Trapper Boots, Ancient Shield e Scarf.

Druid e Sorc:

Mystic Truban, Spirit Cloak, Blue Legs, Trapper Boots, Ancient Shield e Scarf.

Os Weapons no meu ot copiei a AnihhiChest mudei os uids os storages os Items etc e fiz um bau com o item de cada vocação no templo.

ATENÇÃO: MUDE OS ITEMS QUE IRÃO COMEÇAR COM SEU PLAYER NA PASTA DATA/CREATURESCRIPTS/FIRSTITEMS.LUA

Obrigado pela atenção! (Y)

Compartilhar este post


Link para o post
Gpwjhlkdcf    21
Gpwjhlkdcf

  • Aprovado e Movido para Download de NPCs.

 

Observação: Só estarei aprovando porque o seu NPC tem coisas a mais, mas já temos varios NPCs como esse.

Compartilhar este post


Link para o post
KwiiBy~    0
KwiiBy~

Valew tava a um bom tempo procurando isto!

Compartilhar este post


Link para o post
2585120000    0
2585120000

Não funciona cara...

TFS 90% dos NPCs em .lua não funcionam, mais valeu!

Compartilhar este post


Link para o post
tibiafanmaster    0
tibiafanmaster

Aqui funcionou, perfeitamente, use configure direito, teste e depois comente aqui.

NPCs em LUA funcionam como antes nos tfs, as vezes algumas das funções ficam ultrapassadas EX: Lua; creatureGetName, (Ultrapassada deve ser substituida por: getCreatureName) no caso do meu npc, ele usa as mais atuais funções.

Sem Mais:

Tibiafanmaster

Editado por tibiafanmaster

Compartilhar este post


Link para o post
Eventide    7
Eventide

Eu lembro quando creatureGetName era obsoleto em 8.0 e passou a não existir em 8.1 se não me engano.. ;o~

Ai alguns sub-distros mais fraquinhos continuavam usando isso, e quando nego ia usar o NPC tinha que substituir as funções tudo, e não era só essa que nego deixava pra traz, era um tanto, mo trabalheira!

 

mas enfim, faltou uma identação nesse NPC ai eim, e se poderia fazer uma configuração bem fácil pra quem for instalar também. ;]~

E curti a ideia de já colocar os items pro jogador pelo Oracle!

 

old times... IUEHUAIEAIUEH

 

@numeros estranhos

se você falar o erro que da talvez agente possa ajudar, não acha? ;/

Compartilhar este post


Link para o post
Mock    32
Mock

quanto tempo nao vejo um npc da forma antiga.

você desenterrou isso o.o'

Compartilhar este post


Link para o post
rivcdrigo    0
rivcdrigo

Ei aqui tá aparecendo isso..

 

[26/07/2009 15:45:54] Lua Script Error: [Npc interface]

[26/07/2009 15:45:54] data/npc/scripts/oracle.lua:onCreatureSay

 

[26/07/2009 15:45:54] data/npc/scripts/oracle.lua:44: attempt to compare nil with number

[26/07/2009 15:45:54] stack traceback:

[26/07/2009 15:45:54] data/npc/scripts/oracle.lua:44: in function <data/npc/scripts/oracle.lua:40>

 

como resolvo?

vlw

Compartilhar este post


Link para o post
kako_loko    0
kako_loko

muito bom...Bom pra queles que Curtem Mapa Full e Tenha RookGuard aii é uma boa idéia colocar o The Oracle para passar de city e de Voc

Compartilhar este post


Link para o post
Elys Zarox    0
Elys Zarox

Nossa deve ser o milesimo oracle que vejo aqui...qual a diferença desse pros outros? Só vi o negocio de dar itens dependendo da voc =p

Compartilhar este post


Link para o post
crywolf    0
crywolf

Parabens !!! Muito bom

Compartilhar este post


Link para o post
xKrauzer    0
xKrauzer

serve para 8.50 tbm?

Compartilhar este post


Link para o post
Gorgulf    0
Gorgulf

isso é bom que n precisa fik enchendo de bau pros cara pega os itens :P

muito bom!

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×