Eventide 7 #1 Postado 13 Junho, 2009 (editado) Nome do NPC: The Oracle Protocolo: 8.2+ Servidor testado: TFS 0.3.3 (modificado por mim, mas isso não importa nesse caso) Autor: Evesys Descrição: NPC oraculo igual o de rook, que muda vocação/town ID e teleporta o personagem, alem disso apresenta uma feature ainda não completa, que permite que o personagem recomesse a converça de onde parou caso o servidor caia ou o char seja kikado. na pasta data/npc crie um arquivo chamado oracle.xml, e coloque isso dentro dele: <?xml version="1.0" encoding="UTF-8"?> <npc name="The Oracle" floorchange="0" walkinterval="0" script="data/npc/scripts/oracle.lua"> <health now="150" max="150"/> <look typeex="1448"/> </npc> na pasta data/npc/scripts/, crie um arquivo chamado oracle.lua, e coloque isso dentro dele: -- area editavel Oracle = { Cities = { -- {id, 'nome', x, y, z, 'premium/free'} {1, 'inittria', 5033, 5122, 7, 'free'}, {2,'excazian',5300,5268,7,'free'}, {3,'frizzo',5676,4883,7,'premium'} }, Vocations = { -- {[id] = 'nome'} [1] = 'sorcerer', [2] = 'druid', [3] = 'paladin', [4] = 'knight' }, frases = { noLevel = 'CHILDREN! COME BACK WHEN YOU\'VE GROWN UP!', hi = 'HELLO, CHILDREN. ARE YOU PREPARED TO FACE YOUR DESTINY?', askVoc = 'WHAT VOCATION YOU WANT TO BE? ', confirmVoc = 'ARE YOU SURE? THIS DECISION IS IRREVERSIBLE.', askCity = 'DO YOU WANT TO LIVE IN ', final = 'GOOD LUCK IN YOUR JOURNEY!', bye = 'COME BACK WHEN YOU FEEL PREPARED' }, talkStorage = 7897, choos = {}, citiesLiberadas = {} } -- fim da area editavel local function getVocations() local ret = "" for id,it in pairs(Oracle.Vocations) do if((id ~= #Oracle.Vocations - 1) and (id ~= #Oracle.Vocations)) then ret = ret.. it ..", " end if(id == #Oracle.Vocations) then ret = ret.. it .."?" elseif(id == #Oracle.Vocations - 1) then ret = ret.. it .." or " end end return ret end --[[> npc por Evesys/Eventide <------------------------------------- \m/ <[------]> \m/ -------------------------------------------> <----> CONSERVE OS CREDITOS <----> <--> 100% por Eventide, use e abuse deste NPC, mas não de seu dono! <-->-> <---> www.otserv.com.br <----><]]-- local focuses = {} local function isFocused(cid) for i, v in pairs(focuses) do if(v == cid) then return true end end return false end local function addFocus(cid) if(not isFocused(cid)) then table.insert(focuses, cid) end end local function removeFocus(cid) for i, v in pairs(focuses) do if(v == cid) then table.remove(focuses, i) break end end end local function lookAtFocus() for i, v in pairs(focuses) do if(isPlayer(v) == TRUE) then doNpcSetCreatureFocus(v) return end end doNpcSetCreatureFocus(0) end function onCreatureAppear(cid) end function onCreatureDisappear(cid) if(isFocused(cid)) then selfSay(Oracle.frases.bye, cid) removeFocus(cid) end end function onCreatureSay(cid, type, msg) talkstate = getPlayerStorageValue(cid, Oracle.talkStorage) if((msg == "hi") and not (isFocused(cid))) then addFocus(cid) if(getPlayerLevel(cid) > 7) then selfSay(Oracle.frases.hi, cid) else selfSay(Oracle.frases.nolevel, cid) end setPlayerStorageValue(cid, Oracle.talkStorage, 1) end talkstate = getPlayerStorageValue(cid, Oracle.talkStorage) if((talkstate == 1) and (msg == "yes") and (isFocused(cid))) then selfSay(" ".. Oracle.frases.askVoc .." ".. getVocations(), cid) setPlayerStorageValue(cid, Oracle.talkStorage, 2) end talkstate = getPlayerStorageValue(cid, Oracle.talkStorage) if((talkstate == 2) and (isFocused(cid))) then for it = 1, #Oracle.Vocations do if(msg == Oracle.Vocations[it]) then selfSay(Oracle.frases.confirmVoc, cid) Oracle.choos.voc = it setPlayerStorageValue(cid, Oracle.talkStorage, 3) break end end end talkstate = getPlayerStorageValue(cid, Oracle.talkStorage) if((talkstate == 3) and (isFocused(cid)) and (msg == "yes")) then for _,it in pairs(Oracle.Cities) do if((isPremium(cid)) and (it[6] == "premium")) then table.insert(Oracle.citiesLiberadas, it) elseif(it[6] == "free") then table.insert(Oracle.citiesLiberadas, it) end end ret = "" for id,it in pairs(Oracle.citiesLiberadas) do if((id ~= #Oracle.citiesLiberadas - 1) and (id ~= #Oracle.citiesLiberadas)) then ret = ret.. it[2] ..", " elseif(id == #Oracle.citiesLiberadas) then ret = ret.. it[2] .."?" elseif(id == #Oracle.citiesLiberadas - 1) then ret = ret.. it[2] .." or " end end selfSay(" ".. Oracle.frases.askCity .. ret .." ", cid) setPlayerStorageValue(cid, Oracle.talkStorage, 4) end talkstate = getPlayerStorageValue(cid, Oracle.talkStorage) if((talkstate == 4) and (isFocused(cid)))then for id,it in pairs(Oracle.citiesLiberadas) do if(msg == it[2]) then Oracle.choos.city = it break end end selfSay("DO YOU CHOOSED TO BE A ".. Oracle.Vocations[Oracle.choos.voc] ..", AND TO BORN IN ".. Oracle.choos.city[2] ..". IT'S CORRECT?", cid) setPlayerStorageValue(cid, Oracle.talkStorage, 5) end talkstate = getPlayerStorageValue(cid, Oracle.talkStorage) if((talkstate == 5) and (isFocused(cid)) and (msg == "yes")) then selfSay(Oracle.frases.final, cid) local goto = {x = Oracle.choos.city[3], y = Oracle.choos.city[4], z = Oracle.choos.city[5]} doTeleportThing(cid, goto) doPlayerSetTown(cid, Oracle.choos.city[1]) doPlayerSetVocation(cid, Oracle.choos.voc) setPlayerStorageValue(cid, Oracle.talkStorage, -1) choos.city = 0 choos.voc = 0 removeFocus(cid) end talkstate = getPlayerStorageValue(cid, Oracle.talkStorage) if((isFocused(cid)) and (msg == "bye") or not(isFocused(cid)) and (talkstate ~= -1) and (msg == bye)) then selfSay(Oracle.frases.bye, cid) setPlayerStorageValue(cid, Oracle.talkStorage, -1) Oracle.choos.city = 0 Oracle.choos.voc = 0 removeFocus(cid) end end function onPlayerCloseChannel(cid) if(isFocused(cid)) then selfSay(frases.bye, cid) setPlayerStorageValue(cid, Oracle.talkStorage, -1) removeFocus(cid) end end function onThink() for i, focus in pairs(focuses) do if(isCreature(focus) == FALSE) then removeFocus(focus) else local distance = getDistanceTo(focus) or -1 if((distance > 4) or (distance == -1)) then selfSay(Oracle.frases.bye, cid) removeFocus(focus) end end end lookAtFocus() end siga os comentários para editar. espero ter ajudado, flws! Editado 24 Janeiro, 2011 por Eventide Compartilhar este post Link para o post
Gpwjhlkdcf 21 #2 Postado 13 Junho, 2009 Aprovado e Movido para Download de NPCs. Observação: Já temos um NPC assim, mas o seu está melhorado, então vou aprovar. Compartilhar este post Link para o post
kevens1 0 #4 Postado 16 Junho, 2009 Very good =D ficou ótimo evesys,continue a ssim =D Compartilhar este post Link para o post
Zephiroth. 0 #5 Postado 16 Junho, 2009 Perfeito, Evesys. Apesar de que hoje em dia não se vê muito rookgaard em OTs. Compartilhar este post Link para o post
ocaraal 0 #6 Postado 23 Julho, 2009 coloquei esse no meu serv TFS 0.3.4 so que ta dando uns erros primeiro player lv 1 ja pode teleportar e mudar de classe fica dando uns erros de scipt no serv tem que deslogar e logar novamente acho que por causa dos itens que vai para o player pois quando deslogo e logo apos ter mudado os itens fica no chao Compartilhar este post Link para o post
rivcdrigo 0 #7 Postado 26 Julho, 2009 8.5... [25/07/2009 22:04:09] Lua Script Error: [Npc interface] [25/07/2009 22:04:09] data/npc/scripts/oracle.lua:onCreatureSay [25/07/2009 22:04:09] data/npc/scripts/oracle.lua:158: attempt to index global 'choos' (a nil value) [25/07/2009 22:04:09] stack traceback: [25/07/2009 22:04:09] data/npc/scripts/oracle.lua:158: in function <data/npc/scripts/oracle.lua:92> [25/07/2009 22:04:09] Lua Script Error: [Npc interface] [25/07/2009 22:04:09] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:09] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:09] stack traceback: [25/07/2009 22:04:09] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:10] Lua Script Error: [Npc interface] [25/07/2009 22:04:10] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:10] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:10] stack traceback: [25/07/2009 22:04:10] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:10] Lua Script Error: [Npc interface] [25/07/2009 22:04:10] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:10] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:10] stack traceback: [25/07/2009 22:04:10] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:11] Lua Script Error: [Npc interface] [25/07/2009 22:04:11] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:11] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:11] stack traceback: [25/07/2009 22:04:11] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:12] Lua Script Error: [Npc interface] [25/07/2009 22:04:12] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:12] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:12] stack traceback: [25/07/2009 22:04:12] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:12] Lua Script Error: [Npc interface] [25/07/2009 22:04:12] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:12] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:12] stack traceback: [25/07/2009 22:04:12] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:13] Lua Script Error: [Npc interface] [25/07/2009 22:04:13] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:13] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:13] stack traceback: [25/07/2009 22:04:13] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:13] Lua Script Error: [Npc interface] [25/07/2009 22:04:13] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:13] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:13] stack traceback: [25/07/2009 22:04:13] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:14] Lua Script Error: [Npc interface] [25/07/2009 22:04:14] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:14] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:14] stack traceback: [25/07/2009 22:04:14] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:14] Lua Script Error: [Npc interface] [25/07/2009 22:04:14] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:14] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:14] stack traceback: [25/07/2009 22:04:14] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:15] Lua Script Error: [Npc interface] [25/07/2009 22:04:15] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:15] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:15] stack traceback: [25/07/2009 22:04:15] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:16] Lua Script Error: [Npc interface] [25/07/2009 22:04:16] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:16] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:16] stack traceback: [25/07/2009 22:04:16] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:16] Lua Script Error: [Npc interface] [25/07/2009 22:04:16] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:16] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:16] stack traceback: [25/07/2009 22:04:16] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:17] Lua Script Error: [Npc interface] [25/07/2009 22:04:17] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:17] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:17] stack traceback: [25/07/2009 22:04:17] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:17] Lua Script Error: [Npc interface] [25/07/2009 22:04:17] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:17] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:17] stack traceback: [25/07/2009 22:04:17] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:18] Lua Script Error: [Npc interface] [25/07/2009 22:04:18] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:18] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:18] stack traceback: [25/07/2009 22:04:18] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:18] Lua Script Error: [Npc interface] [25/07/2009 22:04:18] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:18] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:18] stack traceback: [25/07/2009 22:04:19] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> [25/07/2009 22:04:19] Lua Script Error: [Npc interface] [25/07/2009 22:04:19] data/npc/scripts/oracle.lua:onThink [25/07/2009 22:04:19] data/npc/scripts/oracle.lua:187: attempt to index global 'frases' (a nil value) [25/07/2009 22:04:19] stack traceback: [25/07/2009 22:04:19] data/npc/scripts/oracle.lua:187: in function <data/npc/scripts/oracle.lua:180> como resolve?? Compartilhar este post Link para o post
Eventide 7 #8 Postado 26 Julho, 2009 você deve ter copiado algo errado, as linhas que está acusando ai não batem com o script.. Compartilhar este post Link para o post
Mock 32 #9 Postado 26 Julho, 2009 Quanto tempo nao vejo um npc tão bem fieto assim, evesys achei estranho usar as falas em tabelas ._.' Compartilhar este post Link para o post
rivcdrigo 0 #10 Postado 26 Julho, 2009 (editado) REFIZ TUDO, AGORA APARECEU ISSO [25/07/2009 22:43:33] Lua Script Error: [Npc interface] [25/07/2009 22:43:33] data/npc/scripts/oracle.lua:onCreatureSay [25/07/2009 22:43:33] data/npc/scripts/oracle.lua:162: attempt to index global 'choos' (a nil value) [25/07/2009 22:43:33] stack traceback: [25/07/2009 22:43:33] data/npc/scripts/oracle.lua:162: in function <data/npc/scripts/oracle.lua:96> igual ao q vc mandou.. ele mudou a voc, mas nao teleportou para onde eu queria! e depois eu fui tentar refazer completamente o passo, daí agora ele faz tudo certo, porem no log do server fica aparecendo sem parar (isso sem ninguem falar com o oraculo) [26/07/2009 14:15:33] Lua Script Error: [Npc interface] [26/07/2009 14:15:33] data/npc/scripts/oracle.lua:onCreatureSay [26/07/2009 14:15:33] data/npc/scripts/oracle.lua:155: attempt to index global 'choos' (a nil value) [26/07/2009 14:15:33] stack traceback: [26/07/2009 14:15:33] data/npc/scripts/oracle.lua:155: in function <data/npc/scripts/oracle.lua:89> [26/07/2009 14:15:33] Lua Script Error: [Npc interface] [26/07/2009 14:15:33] data/npc/scripts/oracle.lua:onThink [26/07/2009 14:15:33] data/npc/scripts/oracle.lua:184: attempt to index global 'frases' (a nil value) [26/07/2009 14:15:33] stack traceback: [26/07/2009 14:15:33] data/npc/scripts/oracle.lua:184: in function <data/npc/scripts/oracle.lua:177> [26/07/2009 14:15:34] Lua Script Error: [Npc interface] [26/07/2009 14:15:34] data/npc/scripts/oracle.lua:onThink [26/07/2009 14:15:34] data/npc/scripts/oracle.lua:184: attempt to index global 'frases' (a nil value) [26/07/2009 14:15:34] stack traceback: [26/07/2009 14:15:34] data/npc/scripts/oracle.lua:184: in function <data/npc/scripts/oracle.lua:177> [26/07/2009 14:15:35] Lua Script Error: [Npc interface] [26/07/2009 14:15:35] data/npc/scripts/oracle.lua:onThink [26/07/2009 14:15:35] data/npc/scripts/oracle.lua:184: attempt to index global 'frases' (a nil value) [26/07/2009 14:15:35] stack traceback: [26/07/2009 14:15:35] data/npc/scripts/oracle.lua:184: in function <data/npc/scripts/oracle.lua:177> [26/07/2009 14:15:35] Lua Script Error: [Npc interface] [26/07/2009 14:15:35] data/npc/scripts/oracle.lua:onThink e uma dúvida bônus, como eu faço para só poderem sair de lá lvl 10? valeu Editado 26 Julho, 2009 por rivcdrigo adicionado Compartilhar este post Link para o post
Kuma Bear 33 #11 Postado 4 Janeiro, 2011 (editado) Parabéns. Mais tem um grande erro. Players level 8- Conseguem escolher sua Voc. Tem como arrumar? Editado 4 Janeiro, 2011 por bolotabunito Compartilhar este post Link para o post