Postado Julho 3, 2023 2 anos 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 Julho 3, 2023 2 anos por Vortex (veja o histórico de edições)
Postado Julho 6, 2023 1 ano 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 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 Julho 10, 2023 1 ano 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.