Notorious 1 #1 Postado 22 Outubro, 2010 (editado) Nome: NPC de viagem diferente Autor: Notorious Versão Testada: 8.54 - TFS 0.3.6 Normalmente pra você viajar em um OTServer, você vai lá, conversa com o npc, ele te dá as cidades, voce escolhe, digita, digita 'yes', é tudo uma chatice né? Esse NPC eu criei há um tempinho atrás pro Pandek a pedido dos antigos donos, mas eu resolvi postar, já que está parado aqui ... Nesse NPC é só voce dizer, 'hi', 'destinations' e inesperadamente ele vai abrir uma janelinha de trade, com todos os destinos, é só voce clicar e ser feliz :pirate: Infelizmente tem um contra, esses destinos são controlados por um ID de controle, que precisa ser um item e existir, portanto é bem provavel que apareça alguns itens non-sense na imagem do item, mas isso é o de menos Antes de tudo vá em data/npcs/lib/npc.lua e adicione o seguinte no final: function isFocused(cid, t) for i, v in pairs(t) do if(v == cid) then return true end end return false end function addFocus(cid, t) if(not isFocused(cid, t)) then table.insert(t, cid) end end function removeFocus(cid, t) for i, v in pairs(t) do if(v == cid) then table.remove(t, i) break end end end function lookAtFocus(t) for i, v in pairs(t) do if(isPlayer(v)) then doNpcSetCreatureFocus(v) return end end doNpcSetCreatureFocus(0) end function msgcontains(msg, ...) local function checkstring(msg, key) return (" " .. msg .. " "):find("%s+" .. key .. "[%s%p]+") and true or false end for _, key in ipairs(arg) do if checkstring(tostring(msg):lower(), tostring(key):lower()) then return true end end return false end Após isso vá em data/npc, crie um novo arquivo xml, cole o seguinte e configure seu NPC: <?xml version="1.0" encoding="UTF-8"?> <npc name="NOMEDOSEUNPC" script="difftravel.lua" walkinterval="3000" floorchange="0"> <health now="150" max="150"/> <look type="129" head="114" body="119" legs="114" feet="114" corpse="2212"/> </npc> Em seguida vá em data/npc/scripts crie um arquivo .lua chamado difftravel.lua e adicione o seguinte: -- Different Travel NPC by Notorious (OTBR) local focuses, controlId = {}, 3586 local cities = { {name = "Carlin", pos = {x=1024, y=1033, z=7}, price = 100, requirePremium = false}, {name = "Venore", pos = {x=1035, y=1021, z=3}, price = 120, requirePremium = false} } function onCreatureDisappear(cid) if isFocused(cid, focuses) then removeFocus(cid, focuses) if isPlayer(cid) then closeShopWindow(cid) end end end local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) local info = cities[item-controlId] if getPlayerMoney(cid) >= info.price then doTeleportThing(cid, info.pos, false) doPlayerRemoveMoney(cid, info.price) selfSay("Here we are!", cid) closeShopWindow(cid) removeFocus(cid, focuses) lookAtFocus(focuses) end end function onCreatureSay(cid, type, msg) local travelWindow = {} if msgcontains(msg, "hi", "hello") and not isFocused(cid, focuses) and getDistanceToCreature(cid) < 4 then selfSay("Hiho " .. getCreatureName(cid) .. ", I can take you to many {destinations} for just a little fee.", cid) addFocus(cid, focuses) selfFocus(cid) elseif msgcontains(msg, "destinations") and isFocused(cid, focuses) then selfSay("Here are the places that I can take you.", cid) for index, info in pairs(cities) do if not info.requirePremium or isPremium(cid) and info.requirePremium then table.insert(travelWindow, {id=controlId+index, subType=0, buy=info.price, sell=0, name=info.name}) end end openShopWindow(cid, travelWindow, onBuy, onSell) elseif msgcontains(msg, "bye", "goodbye") and isFocused(cid, focuses) then selfSay("Goodbye!", cid) closeShopWindow(cid) removeFocus(cid, focuses) lookAtFocus(focuses) end end function onThink() for _, focus in pairs(focuses) do if not isCreature(focus) then removeFocus(focus, focuses) else local distance = getDistanceTo(focus) or 5 if distance > 4 then selfSay("Hmpf!", focus) closeShopWindow(focus) removeFocus(focus, focuses) end end end lookAtFocus(focuses) end Pronto, seu npc está criado ... Para configurar, apenas edite a tabela cities e vá adicionando mais campos nesse formato: {name = "Nome da Cidade", pos = {x=Posição X, y=Posição Y, z=Posição Z}, price = Preço, requirePremium = Bool} name: Nome da cidade que apareça na janela de trade pos: Posição x, y, z para aonde o player será teleportado ao escolher essa cidade price: Preço em GPs requirePremium: Se a cidade requere premium ou não (true para sim ou false para não) Só mude outras configurações se você souber o que está fazendo! Gostou? Matenha os créditos e agradeça (: Editado 24 Janeiro, 2011 por Mickfern Compartilhar este post Link para o post
Antharaz 4 #2 Postado 23 Outubro, 2010 Acho que nem precisa falar muito... Ótimo script. Aprovadíssimo Compartilhar este post Link para o post
Jack Frost 0 #3 Postado 23 Outubro, 2010 caraca que legal Oo mas pra ser mais rápido o uso dele, teria como fazer assim: assim que dissesse 'hi', já abrisse o menu de trade e colocar o nome das cities para Go to 'city'? ficando assim (só modelo) local cities: Go to carlin, Go to venore hi openshopwindow info = cities Compartilhar este post Link para o post
josejunior23 2 #4 Postado 23 Outubro, 2010 Parabéns, otima ideia! Compartilhar este post Link para o post
Saymon14 0 #5 Postado 23 Outubro, 2010 Representa mais um dos grandes avanços em ot serv, mais seria bom muudar aqueles items que aparece la no trade, um item bom pra colocar seria o Model Ship. ID 2113 Compartilhar este post Link para o post
Notorious 1 #6 Postado 23 Outubro, 2010 (editado) Representa mais um dos grandes avanços em ot serv, mais seria bom muudar aqueles items que aparece la no trade, um item bom pra colocar seria o Model Ship. ID 2113 É que precisa ser uma série de itens ... Tipo, 2113, 2114, 2115, em diante, daí eu achei melhor colocar os pedaços de bote hehe Editado 23 Outubro, 2010 por Notorious Compartilhar este post Link para o post
TaiChiMaster 0 #7 Postado 23 Outubro, 2010 Muito bom cara ^^! ótimo script! e ótima ideia também! O modo "tradicional" de viagem é muito chato mesmo uhAuhau.... vou usar com certeza... Compartilhar este post Link para o post
Elwyn 106 #8 Postado 23 Outubro, 2010 Muito bem bolado, um dia tentarei fazer uma coisa mais inovadora que isso! *-* Compartilhar este post Link para o post
Roku 0 #9 Postado 23 Outubro, 2010 cara, vc troco 6 por meia duzia, nao sei qual a emoção a mais em ter a opção de clicar agora Compartilhar este post Link para o post
Elwyn 106 #10 Postado 23 Outubro, 2010 cara, vc troco 6 por meia duzia,nao sei qual a emoção a mais em ter a opção de clicar agora Isso tudo é inveja? Tente trocar esses 6 por meia-dúzia. :} Te falta humildade. Compartilhar este post Link para o post
Antharaz 4 #11 Postado 23 Outubro, 2010 (editado) cara, vc troco 6 por meia duzia,nao sei qual a emoção a mais em ter a opção de clicar agora Faz o seguinte... ao invés de ficar postando inutilidades, faz um melhor e posta aí. Este npc possui uma forma nova de escolher o destino para viajar e ao invés dele guardar o script com ele(o que a maioria faz), o Notorious resolveu compartillhar. Se você achou inútil ou não gostou, simplesmente não poste... ah é, esqueci que você tem que postar este tipo de coisa para ganhar seus V$ ¬¬ :palm: Mais uma vez, obrigado por postar para a gente Notorious!! OiaeuMae Editado 23 Outubro, 2010 por Antharaz Compartilhar este post Link para o post
Criticoo 4 #12 Postado 23 Outubro, 2010 (editado) @tópico ótima ideia,acho que desse jeito fica mais interressante também,foje das mesmisse dos servidores ta aprovado,em breve o script poderá ser mais sofisticado,podendo ser melhor desenvolvido. Parabéns Notorious, abraços Editado 27 Outubro, 2010 por Pedro Compartilhar este post Link para o post
ADM MaX DE 0 #13 Postado 23 Outubro, 2010 Boa, muito legal o script, realmente é mais inovador para viajar! ^^' Tem/teria como escolher um Item para cada cidade ? Não cheguei á ler o script inteiro ainda, se tiver tenho umas idéias legais aqui... -.^ Abraços! Att~ MaX Compartilhar este post Link para o post
Saymon14 0 #14 Postado 23 Outubro, 2010 Boa, muito legal o script, realmente é mais inovador para viajar! ^^' Tem/teria como escolher um Item para cada cidade ? Não cheguei á ler o script inteiro ainda, se tiver tenho umas idéias legais aqui... -.^ Abraços! Att~ MaX Nem tem cara como ele propio me respondeu, a partir de um certo id, vai aparecer os itens Ex. ID 2212 2213 2214 2215 Mais acredito que esse script vai ser aperfeiçoado por outro scripter :whistle: Compartilhar este post Link para o post
Notorious 1 #15 Postado 24 Outubro, 2010 Nem tem cara como ele propio me respondeu, a partir de um certo id, vai aparecer os itens Ex. ID 2212 2213 2214 2215 Mais acredito que esse script vai ser aperfeiçoado por outro scripter :whistle: Se eu fizesse de outra maneira, teria sim, mas ai voce teria que determinar um item pra cada cidade, e nao poderia repetir, ia ser bem inconveniente, acho que assim fica mais prático E não tem outro jeito de fazer, eu tentei inumeras coisas antes de chegar nisso, sem mudar NADA no seu OTServer não há outro jeito Compartilhar este post Link para o post
Saymon14 0 #16 Postado 25 Outubro, 2010 @Roku a imagem que voce ta passando nao é essa, e voce nem conhece o criticoo, como pode falar assim dele, te garanto que ele entende mais sobre open tibia do que voce e com extrema certeza é bem mais maduro do que voce. se voce quer respeito, der respeito aos outros. Compartilhar este post Link para o post
Conde2 0 #17 Postado 26 Outubro, 2010 Se eu fizesse de outra maneira, teria sim, mas ai voce teria que determinar um item pra cada cidade, e nao poderia repetir, ia ser bem inconveniente, acho que assim fica mais prático E não tem outro jeito de fazer, eu tentei inumeras coisas antes de chegar nisso, sem mudar NADA no seu OTServer não há outro jeito Correção: existem sim outro jeito de se fazer isso usando apenas 1 item. eu mesmo criei um sistema parecido só que para teleports e usei apenas 1 item. De qualquer forma isso não desmerece seu script bom trabalho Notorius Compartilhar este post Link para o post
Vítor Amaral 1 #18 Postado 26 Outubro, 2010 criar itens com diferentes id tb não é nada difícil. já que ninguém postou uma solução para isso é bem fácil de resolver. além do mais que não precisa de um novo dat e spr para isso, já que pode ser utilizado um item que já existe, como um mapa ou barquinho. gostei pra caramba da idéia! parabéns ae! Compartilhar este post Link para o post
Pedro 1 #19 Postado 27 Outubro, 2010 (editado) A briguinha acaba por aqui, se não quiserem levar (mais) alertas. Uma dica para você Roku, quem decide se vai ou não alertar os dois, se vai ou não deletar os posts, são aqueles que tem poder para isso. O botão "denunciar" serve para pedir uma avaliação das pessoas que tem entendimento das regras. Espero que tenha compreendido. Se não gostar das decisões dos moderadores, ainda existe a Ouvidoria Editado 27 Outubro, 2010 por Pedro Compartilhar este post Link para o post
Notorious 1 #20 Postado 27 Outubro, 2010 Correção: existem sim outro jeito de se fazer isso usando apenas 1 item. eu mesmo criei um sistema parecido só que para teleports e usei apenas 1 item. De qualquer forma isso não desmerece seu script bom trabalho Notorius Desconheço Então posta aí, vai ser uma ótima contribuição :] Compartilhar este post Link para o post