Ir para conteúdo

Featured Replies

Postado

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.)

tk.pngtk2.jpg

Scan do Nick.lua

Scan do Namer.xml

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 por IceDream (veja o histórico de edições)

Postado

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.

 

  • 2 months later...
Postado

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!!

  • 1 year later...

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo