Ir para conteúdo

Featured Replies

Postado

Por gentileza, alguém possui um script de NPC que permite a troca de uma vocação antiga pela nova? Por exemplo, preciso que o ID 5 de um Master Sorcerer seja alterado para o ID 9 de um Supreme Sorcerer. Tenho 4 vocações diferentes, com os IDs 9, 10, 11 e 12. Alguém poderia me ajudar?

 

Alguém pode me ajudar a tentar colocar uma tabela por vocação? Quero algo semelhante a essa tabela que eu coloquei, mas até agora nada está funcionando

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}

local vocations = {
    [5] = {id = 9, name = "Supreme Sorcerer"},
    [6] = {id = 10, name = "Supreme Druid"},
    [7] = {id = 11, name = "Supreme Paladin"},
    [8] = {id = 12, name = "Supreme Knight"},
}

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)
    local pid = getPlayerGUID(cid)

    if (not npcHandler:isFocused(cid)) then
        return false
    end

    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

    if (msgcontains(msg, 'supreme') or msgcontains(msg, 'voc')) then
         selfSay('Considering all the presented information, do you really want to perform a Master Reset? This process costs 100 vip coins and is irreversible! Say {yes} to confirm.', cid)
        talkState[talkUser] = 1
    elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
        if doPlayerRemoveItem(cid, 6527, 100) then
            -- Set health to 185
            doCreatureAddHealth(cid, -getCreatureHealth(cid) + 185)
            setCreatureMaxHealth(cid, 185)
            -- Set mana to 35
            doCreatureAddMana(cid, -getCreatureMana(cid) + 35)
            setCreatureMaxMana(cid, 35)
            doTeleportThing(cid, getTownTemplePosition(1))
            doRemoveCreature(cid)
            local reset_level = "UPDATE players SET level = 30 WHERE id = " .. pid .. ";"
            local reset_query = "UPDATE players SET reset = 0 WHERE id = " .. pid .. ";"
            local reset_exp = "UPDATE players SET experience = 4200 WHERE id = " .. pid .. ";"
            db.query(reset_exp)
            db.query(reset_query)
            db.query(reset_level)

            local newVocation = vocations[getPlayerVocation(cid)]
            if newVocation ~= nil then
                doPlayerSetVocation(cid, newVocation.id)
                selfSay("Congratulations! You have successfully reborn and your new vocation is " .. newVocation.name .. ".", cid)
            else
                selfSay("Congratulations! You have successfully reborn.", cid)
            end
        else
            selfSay("You don't have 100 event tokens", cid)
        end

        talkState[talkUser] = 0
    end

    return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Editado por Vortex (veja o histórico de edições)

Resolvido por Vortex

Ir para solução
Postado
13 horas atrás, Vortex disse:

Já está resolvido o problema. Pode encerrar este assunto.

Coloque a solução para ajudar outras pessoas se for possível 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Postado
  • Autor
  • Solução
Em 05/07/2023 em 21:06, L3K0T disse:

Coloque a solução para ajudar outras pessoas se for possível 

Apenas utilizei essa função e o problema foi resolvido. Deu certo, o Master Sorcerer se transformou em um Supreme Sorcerer e as outras vocações também funcionaram corretamente, sem bugs ou falhas. Está tudo correto e perfeito. Ok

local currentVocation = player:getVocation():getId()
player:setVocation(Vocation(currentVocation + 4))

 

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.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo