Postado Novembro 4, 2016 8 anos Este é um post popular. Salve Galera, bom o Titulo já diz tudo, recentemente vir um Membro pedindo algo que muitos querem, e o nunca encontrei, pelo menos não aqui, vir vários Tópicos de pessoas pedindo esse NPC e nenhum resolvido. Bem o que ele faz exatamente ? Ele vende Vocações por Pontos Diretamente do Site, hehe. Muito bem, passei a noite toda ontem testando e montando ele, então está 100%, a baixo informações dele e como instalar ele. Informações Gerais: Spoiler Criado em TFS: 0.4 porém pode e acho que funcione em 0.3.6 Protocolo: 8.60 - Mas como dito a cima, funciona em 8.54 também. Testei na Database usada em Modern AAC. Esse NPC é diferente, o Player tem que ter em mente a Vocação que ele já irá comprar, pois no momento que ele falar Hi o NPC já irá falar as vocações que vende, e então o Player vai escolher qual, e na hora que ele digitar o nome da vocação, a Mágica acontece, coloquei direto assim evitando qualquer forma de repeti o nome da vocação para bugar de alguma forma. Instalando o NPC: Muito bem vamos instalar ele agora: data/lib e abra o arquivo 050-function.lua e adicione essas duas funções nele: Spoiler function getPoints(cid) local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return 0 end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function doPlayerRemovePoints(cid, pontos) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getPoints(cid) - pontos .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end Essas duas funções, a primeira irá verificar se você tem pontos no Site, no caso, na sua conta, e a segunda vai remover a quantidade de pontos que você irá declarar no Script a baixo. Feito isso vamos em, data/npc/scripts e crie um arquivo chamado sell_voc.lua e adicione esse script dentro: Spoiler local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local tempo = 20 -- Tempo para falar com o NPC e evitar Spam, caso não tenha os pontos. local storage = 115818 -- Não mude essa Storage local pontos = 25 -- Quantidade de pontos no site que precisa para comprar a vocação, essa quantidade vale para todas vocações serem compradas local vocs = { ["minato"] = 16, -- nome e id da vocação, lembrando sempre em letra minuscúla o nome ["madara"] = 21, ["obito"] = 15 } if exhaustion.check(cid, storage) then doPlayerSendCancel(cid, "Aguarde " .. exhaustion.get(cid, storage) .. " segundos para falar com o NPC novamente.") return false end for voc, id in pairs(vocs) do if msgcontains(msg, voc) then if getPoints(cid) < pontos then doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Você não tem a quantidade de Pontos para comprar uma Vocação vip") exhaustion.set(cid, storage, tempo) return false else doPlayerSetVocation(cid, id) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabens, voce agora e um ".. voc:gsub("^%l", string.upper)..", relogue seu Char e Bom Jogo! xD") doPlayerRemovePoints(cid, pontos) addEvent(doRemoveCreature, 1000, cid) end return true end end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) E pra finalizar, você deve ir em, data/npc e criar um arquivo chamado shopvoc.xml, e dentro da Script você edita o nome verdadeiro do NPC. Vamos lá: Spoiler <?xml version="1.0" encoding="UTF-8"?> <npc name="Vocacoes" script="data/npc/scripts/sell_voc.lua" walkinterval="2000" speed="0" floorchange="0"> <health now="100" max="100"/> <look type="167" head="38" body="79" legs="107" feet="114"/> <parameters> <parameter key="message_greet" value="Então, eu vendo Vocações Vip Poderosas, elas são {Minato}, {Madara} e {Obito}, qual deseja comprar ?. "/> <parameter key="message_farewell" value="Até mais!" /> <parameter key="message_walkaway" value="Até mais!" /> </parameters></npc> Bom para configurar basta adicionar as vocações no Shop, o nome dela e o ID dela, e fim, e mais nada. ["nome da vocação"] = id da vocação Obs: nome da vocação em minusculo! Os pontos das vocações, geralmente são o mesmo valor de pontos para todas as vocações, e então fiz dessa maneira. Para editar quantos pontos as vocações irá custar, basta editar aqui nessa linha: local pontos = 25 E não se esqueça de coloca o nome das vocações para o NPC mostrar aos players, aqui: <parameter key="message_greet" value="Então, eu vendo Vocações Vip Poderosas, elas são {Minato}, {Madara} e {Obito}, qual deseja comprar ?. "/> com a chave {} abrindo e fechando o nome da vocação, ela fica em destaque, azul forte para destaca o nome da vocação. Qualquer duvida, erro na hora da instalação, estarei dando Suporte, qualquer duvida na hora de instalar só deixa nos Comentários, qualquer erro que você encontrar, bug, é só falar. Créditos: Breno Neves = (KotZletY) Euzinho, criador do Sistema! @xWhiteWolf - Por me ajudar na ultima att do sistema. É proibido publicar esse Sistema em outro site, blog ou fórum, afinal fiz exclusivamente para o Tk. Bye Bye! xD
Postado Novembro 7, 2016 8 anos Parabéns, seu tópico de conteúdo foi aprovado! Muito obrigado pela sua contribuição, nós do Tibia King agradecemos. Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP. Spoiler Congratulations, your content has been approved! Thank you for your contribution, we of Tibia King we are grateful. Your content will help many other users, you received +1 REP. ➥ Regras | Seções OTServ | Seções BOT
Postado Novembro 7, 2016 8 anos 26 minutos atrás, KotZletY disse: @dissolima Você pediu, está ae! xD Muito bom. Uma coisa que eu mudaria nesse script seria a adição somente de uma função com AddEvent fazendo o character deslogar alguns segundos depois de ter trocado de vocação. Mas isso só pra personalizar e talvez só talvez evitar alguma dor de cabeça como tipo: Se o você mudar a vocação, e o servidor der rollback de alguma forma (crash), e quando voltasse você estivesse na vocação passada, porém, perdido os pontos. Então fica essa dica, eu acho hehe. Todavia parabéns! @This life is filled with hurt When happiness doesn't work Trust me and take my hand When the lights go out you will understand
Postado Novembro 7, 2016 8 anos Autor 1 minuto atrás, login12 disse: Mais é exatamente pra isso, deslogar para salvar o Char. Esse evento de deslogar, não muda em nada, é só pra isso mesmo, e talvez um enfeite. Obrigado pelo comentário! xD
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.