Postado Agosto 21, 2016 8 anos Eae galera do TK, Hoje venho disponibilizar um NPC com a mesma função do NPC do Otpokemon, ele altera o nome do seu pokemon, para qualquer um que voce queira por tal quantia de HDs ou TDs (isso você que edita.). Bom primeiro vou dar um exemplo, e depois vamos partir ao que interessa. Exemplo:Voce possui um pokemon, digamos que seja um Shiny alakazam, voce quer mudar o seu Nick de Shiny alakazam para TibiaKing. Basta você ir falar com o NPC que estará em tal local, e ele irá lhe cobrar tal valor em dinheiro, durante toda a conversa com ele, seu pokemon deve permanecer na pokebola. Após acabar o papo com o NPC, você poderá usar o seu pokemon e ele já estará com o Nick escolhido. Agora vou deixar de enrolação e partir ao que interessa XD Um ultimo aviso, deixarei o Download do arquivo .lua e do .XML do NPC no fim do tópico para os mais preguiçosos XD. Bom, primeiramente vá na Pastadoseuserver/data/npc/scripts e crie um arquivo .lua, renomeie para Nick, abra-o coloque isso dentro. Spoiler local focus = 0 local talk_start = 0 local conv = 0 local target = 0 local following = false local attacking = false local talkState = {} local finalname = "" function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye sir!') 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, msge) local msg = string.lower(msge) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if focus == cid then talk_start = os.clock() end local auras = {"red aura", "blue aura", "green aura", "yellow aura", "white aura", "gray aura", "cyan aura", "purple aura", "orange aura"} if (msgcontains(msg, 'oi') and (focus == 0) and (getDistanceToCreature(cid) <= 4)) then focus = cid conv = 1 talk_start = os.clock() selfSay("Ola, "..getCreatureName(cid).."! Eu posso dar ao seu Pokémon um apelido ou eu posso colocar no seu pokemon uma aura elementar, se ele for Boost pelo menos +5") elseif (msgcontains(msg, "nao") or msgcontains(msg, "xau")) and focus == cid and conv ~= 3 then selfSay("Sem problema, então , senhor. Volte quando você quiser!") focus = 0 elseif (msgcontains(msg, "nome") or msgcontains(msg, "apelido")) and focus == cid and conv == 1 then if getPlayerSlotItem(cid, 8).uid <= 0 then selfSay("Desculpe, voce nao tem pokemon no slot principal") focus = 0 return true end selfSay("Coloque o seu pokemon no Slot principal e me diga, o apelido que gostaria de dar a seu pokemon ?") conv = 3 elseif msgcontains(msg, "aura") and focus == cid and conv == 1 then if getPlayerSlotItem(cid, 8).uid <= 0 then selfSay("Desculpe, você não tem um pokemon no Slot principal!") focus = 0 return true end local pb = getPlayerSlotItem(cid, 8).uid if not getItemAttribute(pb, "boost") or getItemAttribute(pb, "boost") < 5 then selfSay("Desculpe, seu pokemon tem que ter no minimo Boost +5!") focus = 0 return true end if getItemAttribute(pb, "aura") and getItemAttribute(pb, "aura") ~= "" then selfSay("Desculpe, seu pokemon já tem uma aura elementar !") focus = 0 return true end if #getCreatureSummons(cid) >= 1 then selfSay("Volte seu pokemon para a pokebola!") focus = 0 return true end selfSay("Escolha uma aura: red aura, blue aura, green aura, yellow aura, white aura, gray aura, cyan aura, purple aura, orange aura. Qual a sua preferida?") conv = 9 elseif isInArray(auras, msg) and focus == cid and conv == 9 then selfSay("Tem certeza que deseja colocar uma "..msg.." no seu pokemon?") conv = 11 local d, e = msg:find('(.-) aura') auraFinal = string.sub(msg, d -1, e - 5) elseif msgcontains(msg, "sim") and focus == cid and conv == 11 then if getPlayerSlotItem(cid, 8).uid <= 0 then selfSay("Desculpe, voce nao tem pokemon no slot principal!") focus = 0 return true end local pb = getPlayerSlotItem(cid, 8).uid if not getItemAttribute(pb, "boost") or getItemAttribute(pb, "boost") < 5 then selfSay("Desculpe, seu pokemon nao e boost +5!") focus = 0 return true end if #getCreatureSummons(cid) >= 1 then selfSay("Volte seu pokemon para a pokebola!") focus = 0 return true end doItemSetAttribute(pb, "aura", auraFinal) selfSay("Pronto! Agora seu pokemon tem uma aura elementar, aproveite!") focus = 0 conv = 0 elseif conv == 3 and focus == cid then local tablee = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "w", "y", "z", ".", ":", "'", '"', "~", "^", "@", "#", "$", "%", "&", "*", "(", ")", "-", "+", "_", "?", ">", "<", "•", ";", "°", "¹", "²", "³", "£", "¢", "¬", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"} local table = {"'", '"', "!", "ã", "õ", "ç", "´", "`", "á", "à", "ó", "ò", "é", "è", "í", "ì", "ú", "ù", "¹", "²", "³", "£", "¢", "¬", "§", "°", "º", "ª", "•", "|"} for a = 1, #table do if string.find(msg, table[a]) then selfSay("Desculpe, o nome possui simbolos invalidos.") return true end end if string.len(msg) <= 1 or string.len(msg) >= 19 then selfSay("Desculpe, o nome e muito grande ou muito pequeno.") return true end local pokename = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke") selfSay("Tem certeza que deseja mudar o nome do seu "..pokename.." para \""..msge.."\"? isso custara 10 hundred dollars.") conv = 5 finalname = msge elseif msgcontains(msg, "sim") and focus == cid and conv == 5 then if getPlayerSlotItem(cid, 8).uid <= 0 then selfSay("Onde esta seu pokemon? voce deve mante-lo no slot principal") focus = 0 return true end if doPlayerRemoveMoney(cid, 100000) == false then selfSay("Voce nao tem dinheiro para pagar o servico, volte mais tarde.") focus = 0 conv = 0 return true end local nick = ""..finalname.."" local description = "Contains a "..getItemAttribute(getPlayerSlotItem(cid, 8).uid, "poke").."." selfSay("Pronto! Seu pokemon agora possui um nome, aproveite!") doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "nick", nick) local newdes = description.."\nIt's nickname is: "..finalname.."." doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "description", newdes) local hp = getItemAttribute(getPlayerSlotItem(cid, 8).uid, "happy") doItemSetAttribute(getPlayerSlotItem(cid, 8).uid, "happy", hp + 25) if #getCreatureSummons(cid) >= 1 then adjustStatus(getCreatureSummons(cid)[1], getPlayerSlotItem(cid, 8).uid) end focus = 0 conv = 0 end end local intervalmin = 38 local intervalmax = 70 local delay = 25 local number = 1 local messages = {"Quer dar alguns apelidos para o seu pokemon ? Fale comigo!", "Voce pode por um nome legal em seu pokemon!", "Cada pokemon quer ter um apelido ! Venha falar comigo!", "Pokemons adoram nomes, de um para o seu agora.", } function onThink() if focus == 0 then selfTurn(1) delay = delay - 0.5 if delay <= 0 then selfSay(messages[number]) number = number + 1 if number > #messages then number = 1 end delay = math.random(intervalmin, intervalmax) end return true else if not isCreature(focus) then focus = 0 return true end local npcpos = getThingPos(getThis()) local focpos = getThingPos(focus) if npcpos.z ~= focpos.z then focus = 0 return true end if (os.clock() - talk_start) > 45 then focus = 0 selfSay("Volte outra hora!") end if getDistanceToCreature(focus) > 3 then selfSay("Ate logo!") focus = 0 return true end local dir = doDirectPos(npcpos, focpos) selfTurn(dir) end return true end Ok, feito isso, salve e feche. Agora vá na Pastadoseuserver/data/npc e crie um arquivo .XML, coloque o nome de Namer, abra-o e coloque isso dentro. Spoiler <?xml version="1.0" encoding="UTF-8"?> <npc name="Namer" script="nick.lua" walkinterval="350000" floorchange="0" speed="0" lookdir="2"> <health now="150" max="150"/> <look type="614" head="115" body="122" legs="0" feet="76"/> <parameters> </parameters> </npc> Feito isso, salve e feche. Pronto, seu NPC está criado, agora vamos a descobrir como editar o NPC. O NPC vem com uma função de Aura, ainda nao entendi como ela funciona, pois a Script não é minha, apenas traduzi as falas do NPC e compartilhei ela com vocês. Temos uma parte assim ... Citar local pb = getPlayerSlotItem(cid, 8).uid if not getItemAttribute(pb, "boost") or getItemAttribute(pb, "boost") < 5 then selfSay("Desculpe, seu pokemon tem que ter no minimo Boost +5!") focus = 0 return true end Onde está escrito: 5 then, é o boost necessario para por aura no pokemon, ali por exemplo, está que precisa de no minimo Boost +5, altere para a sua preferencia, caso seu server nao possua sistema de boost, coloque um 0 no lugar do 5 Logo em baixo, tem escrito:Desculpe, seu pokemon tem que ter no minimo Boost+5. Ali você edita o 5, para o número que voce colocou como boost minimo. Agora na parte de valor cobrado para por nick no pokemon. Citar if doPlayerRemoveMoney(cid, 100000) == false then selfSay("Voce nao tem dinheiro para pagar o servico, volte mais tarde.") focus = 0 conv = 0 return true end Onde está : if doPlayerRemoveMoney(cid, 100000) == false then << você altera o 100000 para o valor que voce deseja que seja cobrado, ali por exemplo, está cobrando 10HDs, aumentando mais um zero, ficaria 100HDs e assim sucessivamente. Simbolos validos e invalidos para por no nick. Citar local tablee = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "w", "y", "z", ".", ":", "'", '"', "~", "^", "@", "#", "$", "%", "&", "*", "(", ")", "-", "+", "_", "?", ">", "<", "•", ";", "°", "¹", "²", "³", "£", "¢", "¬", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"} local table = {"'", '"', "!", "ã", "õ", "ç", "´", "`", "á", "à", "ó", "ò", "é", "è", "í", "ì", "ú", "ù", "¹", "²", "³", "£", "¢", "¬", "§", "°", "º", "ª", "•", "|"} Onde está: local tablee, é os simbolos que podem ser usados no nick, e onde está : local table, sao os que não podem, para validar um simbolo, apague ele da linha de baixo, e adicione na linha de cima. Comandos aceitos: Spoiler O NPC atende pelos seguintes comandos: Oi Nao Xau Apelido Nome Aura Sim Segue Prints do antes e depois de renomear o Pokemon.( clique na imagem para ampliar e ver melhor.) Scan do Nick.lua Spoiler https://virustotal.com/pt/file/a7f477551d694f146afffa0966b8589be341330d5f115fd11de34940d6f92560/analysis/1471822177/ Scan do Namer.xml Spoiler https://virustotal.com/pt/file/a5be714bca647b2c77337d7875f81da42f7cf8233406dd755a31a2eae20223a4/analysis/1471822465/ Donwloads: se encontram no fim do tópico. Então galera é isso:D espero ter ajudado alguém e se ajudei, deixao o REP+ pra fortalecer :D OBS: Estou começando agora a postar no TK, este é o meu segundo Post, em nenhum de meus posts atuais e futuros, deixarei de por créditos por autoria, ediçao e etc... nestes não estou colocando, pois nao sei quem foi o verdadeiro autor da script, eu apenas a vi em meu server a traduzi e a fiz funcionar em meu servidor, caso o autor esteja no forum, comente que deixarei seus devidos créditos. Namer.xml nick.lua Editado Agosto 21, 2016 8 anos por IceDream (veja o histórico de edições)
Postado Agosto 23, 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.
Postado Novembro 1, 2016 8 anos não funcionou amigo!! fiz tudo certinho não deu nenhum erro no distro ao adicionar mais quando falo hi ou qualquer outra saudação ao NPC ele não responde!!
Postado Novembro 23, 2017 7 anos cara tava precisando de uma script dessa pro meu nto, vcs n teria ae n? eu queria q o npc trocasse o nome do player por 500 gold
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.