Ir para conteúdo

[OTG][NPC][Storages][Rookgaard] Liberando os acessos das Quests e Missões pelo NPC Oracle

Featured Replies

Postado

otgskull.gif

otgking0.png

 

Open Source MMORPG emulador de Tibia escrito em C++.

Servidor Oficial do Tibiaking!

 

 

 

 

 

Spoiler

 

 

 

separador.png

 

[OTG][NPC][Storages][Rookgaard] Liberando os acessos das Quests e Missões pelo NPC Oracle

Tutorial explicado de como liberar as acessos, missões e quests para todos os jogadores!

 

separador.png

NPC Oracle

Abra o script do npc the_oracle.lua localizado na pasta data/npc/scripts/ e substitua todo o código pelo código abaixo:

 

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

local vocation = {}
local town = {}
local config = {
    towns = {
		["venore"] = 9,
		["thais"] = 8,
		["carlin"] = 6
    },

    vocations = {
        ["sorcerer"] = {
            text = "A SORCERER! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!",
            vocationId = 1,
            --equipment spellbook, wand of vortex, magician's robe, mage hat, studded legs, leather boots, scarf
            {{2175, 1}, {2190, 1}, {8819, 1}, {8820, 1}, {2468, 1}, {2643, 1}, {2661, 1}},
            --container rope, shovel, mana potion, adventurer's stone
            {{2120, 1}, {2554, 1}, {7620, 1}, {18559, 1}}
        },

        ["druid"] = {
            text = "A DRUID! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!",
            vocationId = 2,
            --equipment spellbook, snakebite rod, magician's robe, mage hat, studded legs, leather boots scarf
            {{2175, 1}, {2182, 1}, {8819, 1}, {8820, 1}, {2468, 1}, {2643, 1}, {2661, 1}},
            --container rope, shovel, mana potion, adventurer's stone
            {{2120, 1}, {2554, 1}, {7620, 1}, {18559, 1}}
        },

        ["paladin"] = {
            text = "A PALADIN! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!",
            vocationId = 3,
            --equipment dwrven shield, 5 spear, ranger's cloak, ranger legs scarf, legion helmet
            {{2525, 1}, {2389, 5}, {2660, 1}, {8923, 1}, {2643, 1}, {2661, 1}, {2480, 1}},
            --container rope, shovel, health potion, bow, 50 arrow, adventurer's stone
            {{2120, 1}, {2554, 1}, {7618, 1}, {2456, 1}, {2544, 50}, {18559, 1}}
        },

        ["knight"] = {
            text = "A KNIGHT! ARE YOU SURE? THIS DECISION IS IRREVERSIBLE!",
            vocationId = 4,
            --equipment dwarven shield, steel axe, brass armor, brass helmet, brass legs scarf
            {{2525, 1}, {8601, 1}, {2465, 1}, {2460, 1}, {2478, 1}, {2643, 1}, {2661, 1}},
            --container jagged sword, daramian mace, rope, shovel, health potion, adventurer's stone
            {{8602, 1}, {2439, 1}, {2120, 1}, {2554, 1}, {7618, 1}, {18559, 1}}
        }
    }
}

local function greetCallback(cid)
    local player = Player(cid)
    local level = player:getLevel()
    if level < 8 then
        npcHandler:say("CHILD! COME BACK WHEN YOU HAVE GROWN UP!", cid)
        npcHandler:resetNpc(cid)
        return false
    elseif level > 10 then
        npcHandler:say(player:getName() ..", I CAN'T LET YOU LEAVE - YOU ARE TOO STRONG ALREADY! YOU CAN ONLY LEAVE WITH LEVEL 9 OR LOWER.", cid)
        npcHandler:resetNpc(cid)
        return false
    elseif player:getVocation():getId() > 0 then
        npcHandler:say("YOU ALREADY HAVE A VOCATION!", cid)
        npcHandler:resetNpc(cid)
        return false
    else
        npcHandler:setMessage(MESSAGE_GREET, player:getName() ..", ARE YOU PREPARED TO FACE YOUR DESTINY?")
    end
    return true
end

local function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end

    local player = Player(cid)
    if npcHandler.topic[cid] == 0 then
        if msgcontains(msg, "yes") then
			npcHandler:say("IN WHICH TOWN DO YOU WANT TO LIVE: {CARLIN}, {THAIS}, OR {VENORE}?", cid)
            npcHandler.topic[cid] = 1
        end
    elseif npcHandler.topic[cid] == 1 then
        local cityTable = config.towns[msg:lower()]
        if cityTable then
            town[cid] = cityTable
            npcHandler:say("IN ".. string.upper(msg) .."! AND WHAT PROFESSION HAVE YOU CHOSEN: {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            npcHandler.topic[cid] = 2
        else
			npcHandler:say("IN WHICH TOWN DO YOU WANT TO LIVE: {CARLIN}, {THAIS}, OR {VENORE}?", cid)
        end
    elseif npcHandler.topic[cid] == 2 then
        local vocationTable = config.vocations[msg:lower()]
        if vocationTable then
            npcHandler:say(vocationTable.text, cid)
            npcHandler.topic[cid] = 3
            vocation[cid] = vocationTable.vocationId
        else
            npcHandler:say("{KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
        end
    elseif npcHandler.topic[cid] == 3 then
        if msgcontains(msg, "yes") then
            npcHandler:say("SO BE IT!", cid)
            player:setVocation(Vocation(vocation[cid]))
            player:setTown(Town(town[cid]))

            -- The Mermaid Marina
            player:setStorageValue(Storage.FriendsandTraders.DefaultStart, 1)
            player:setStorageValue(Storage.FriendsandTraders.TheMermaidMarina, 2)

            -- Forgotten Knowledge
            player:setStorageValue(Storage.ForgottenKnowledge.Tomes, 1)
            player:setStorageValue(Storage.ForgottenKnowledge.LastLoreKilled, 1)
            player:setStorageValue(Storage.ForgottenKnowledge.TimeGuardianKilled, 1)
            player:setStorageValue(Storage.ForgottenKnowledge.HorrorKilled, 1)
            player:setStorageValue(Storage.ForgottenKnowledge.DragonkingKilled, 1)
            player:setStorageValue(Storage.ForgottenKnowledge.ThornKnightKilled, 1)
            player:setStorageValue(Storage.ForgottenKnowledge.LloydKilled, 1)
            player:setStorageValue(Storage.ForgottenKnowledge.LadyTenebrisKilled, 1)
            player:setStorageValue(Storage.ForgottenKnowledge.AccessMachine, 1)

            -- The Explorer Society Quest
            player:setStorageValue(Storage.ExplorerSociety.QuestLine, 61)
            player:setStorageValue(Storage.ExplorerSociety.JoiningtheExplorers, 4)
            player:setStorageValue(Storage.ExplorerSociety.TheIceDelivery, 7)
            player:setStorageValue(Storage.ExplorerSociety.TheButterflyHunt, 16)
            player:setStorageValue(Storage.ExplorerSociety.ThePlantCollection, 26)
            player:setStorageValue(Storage.ExplorerSociety.TheLizardUrn, 29)
            player:setStorageValue(Storage.ExplorerSociety.TheBonelordSecret, 32)
            player:setStorageValue(Storage.ExplorerSociety.TheOrcPowder, 35)
            player:setStorageValue(Storage.ExplorerSociety.TheElvenPoetry, 38)
            player:setStorageValue(Storage.ExplorerSociety.TheMemoryStone, 41)
            player:setStorageValue(Storage.ExplorerSociety.TheRuneWritings, 44)
            player:setStorageValue(Storage.ExplorerSociety.TheEctoplasm, 47)
            player:setStorageValue(Storage.ExplorerSociety.TheSpectralDress, 50)
            player:setStorageValue(Storage.ExplorerSociety.TheSpectralStone, 55)
            player:setStorageValue(Storage.ExplorerSociety.TheAstralPortals, 56)
            player:setStorageValue(Storage.ExplorerSociety.TheIslandofDragons, 59)
            player:setStorageValue(Storage.ExplorerSociety.TheIceMusic, 62)
            player:setStorageValue(Storage.ExplorerSociety.CalassaQuest, 3)

            -- In Service Of Yalahar
            player:setStorageValue(Storage.InServiceofYalahar.Questline, 48)
            player:setStorageValue(Storage.InServiceofYalahar.Mission01, 6)
            player:setStorageValue(Storage.InServiceofYalahar.Mission02, 8)
            player:setStorageValue(Storage.InServiceofYalahar.Mission03, 6)
            player:setStorageValue(Storage.InServiceofYalahar.Mission04, 6)
            player:setStorageValue(Storage.InServiceofYalahar.Mission05, 8)
            player:setStorageValue(Storage.InServiceofYalahar.Mission06, 5)
            player:setStorageValue(Storage.InServiceofYalahar.Mission07, 5)
            player:setStorageValue(Storage.InServiceofYalahar.Mission08, 4)
            player:setStorageValue(Storage.TheWayToYalahar.QuestLine, 30)

            -- Searoutes Around Yalahar
            player:setStorageValue(Storage.SearoutesAroundYalahar.TownsCounter, 8)
            player:setStorageValue(Storage.SearoutesAroundYalahar.AbDendriel, 1)
            player:setStorageValue(Storage.SearoutesAroundYalahar.Darashia, 1)
            player:setStorageValue(Storage.SearoutesAroundYalahar.Venore, 1)
            player:setStorageValue(Storage.SearoutesAroundYalahar.Ankrahmun, 1)
            player:setStorageValue(Storage.SearoutesAroundYalahar.PortHope, 1)
            player:setStorageValue(Storage.SearoutesAroundYalahar.Thais, 1)
            player:setStorageValue(Storage.SearoutesAroundYalahar.LibertyBay, 1)
            player:setStorageValue(Storage.SearoutesAroundYalahar.Carlin, 1)

            -- Children Of The Revolution
            player:setStorageValue(Storage.ChildrenoftheRevolution.Questline, 18)
            player:setStorageValue(Storage.ChildrenoftheRevolution.Mission00, 2)
            player:setStorageValue(Storage.ChildrenoftheRevolution.Mission01, 3)
            player:setStorageValue(Storage.ChildrenoftheRevolution.Mission02, 5)
            player:setStorageValue(Storage.ChildrenoftheRevolution.Mission04, 3)
            player:setStorageValue(Storage.ChildrenoftheRevolution.Mission05, 6)

            -- The Travelling Trader
            player:setStorageValue(Storage.TravellingTrader.Mission01, 2)
            player:setStorageValue(Storage.TravellingTrader.Mission02, 5)
            player:setStorageValue(Storage.TravellingTrader.Mission03, 3)
            player:setStorageValue(Storage.TravellingTrader.Mission04, 3)
            player:setStorageValue(Storage.TravellingTrader.Mission05, 3)
            player:setStorageValue(Storage.TravellingTrader.Mission06, 2)
            player:setStorageValue(Storage.TravellingTrader.Mission07, 1)
            player:setStorageValue(Storage.TravellingTrader.packageDoor, 1)

            -- The Inquisition
            player:setStorageValue(Storage.TheInquisition.Questline, 14)
            player:setStorageValue(Storage.TheInquisition.Mission01, 7)
            player:setStorageValue(Storage.TheInquisition.Mission02, 3)
            player:setStorageValue(Storage.TheInquisition.Mission03, 6)
            player:setStorageValue(Storage.TheInquisition.Mission04, 3)
            player:setStorageValue(Storage.PitsOfInferno.ThronePumin, 1)

            -- The New Frontier
            player:setStorageValue(Storage.TheNewFrontier.Questline, 24)
            player:setStorageValue(Storage.TheNewFrontier.Mission01, 3)
            player:setStorageValue(Storage.TheNewFrontier.Mission02, 6)
            player:setStorageValue(Storage.TheNewFrontier.Mission03, 3)
            player:setStorageValue(Storage.TheNewFrontier.Mission04, 2)
            player:setStorageValue(Storage.TheNewFrontier.Mission05, 7)
            player:setStorageValue(Storage.TheNewFrontier.Mission06, 3)
            player:setStorageValue(Storage.TheNewFrontier.Mission07, 3)
            player:setStorageValue(Storage.TheNewFrontier.Mission08, 2)
            player:setStorageValue(Storage.TheNewFrontier.TomeofKnowledge, 12)

            -- Barbarian Test
            player:setStorageValue(Storage.BarbarianTest.Questline, 8)
            player:setStorageValue(Storage.BarbarianTest.Mission01, 3)
            player:setStorageValue(Storage.BarbarianTest.Mission02, 3)
            player:setStorageValue(Storage.BarbarianTest.Mission03, 3)

            -- Wrath Of The Emperor
            player:setStorageValue(Storage.WrathoftheEmperor.Questline, 24)
            player:setStorageValue(Storage.WrathoftheEmperor.Mission01, 3)
            player:setStorageValue(Storage.WrathoftheEmperor.Mission02, 3)
            player:setStorageValue(Storage.WrathoftheEmperor.Mission03, 3)
            player:setStorageValue(Storage.WrathoftheEmperor.Mission04, 3)
            player:setStorageValue(Storage.WrathoftheEmperor.Mission05, 3)
            player:setStorageValue(Storage.WrathoftheEmperor.Mission06, 4)
            player:setStorageValue(Storage.WrathoftheEmperor.Mission07, 6)

            -- Djinn War Factions
            player:setStorageValue(Storage.DjinnWar.EfreetFaction.Start, 1)
            player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission01, 3)
            player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission02, 3)
            player:setStorageValue(Storage.DjinnWar.EfreetFaction.Mission03, 3)
            player:setStorageValue(Storage.DjinnWar.MaridFaction.Start, 1)
            player:setStorageValue(Storage.DjinnWar.MaridFaction.Mission01, 2)
            player:setStorageValue(Storage.DjinnWar.MaridFaction.Mission02, 2)
            player:setStorageValue(Storage.DjinnWar.MaridFaction.Mission03, 3)
            player:setStorageValue(Storage.DjinnWar.MaridFaction.RataMari, 2)

            -- Big Foot Burden
            player:setStorageValue(Storage.BigfootBurden.QuestLine, 30)
            player:setStorageValue(Storage.BigfootBurden.Rank, 30)
            player:setStorageValue(Storage.BigfootBurden.Warzone1Access, 2)
            player:setStorageValue(Storage.BigfootBurden.Warzone2Access, 2)
            player:setStorageValue(Storage.BigfootBurden.Warzone3Access, 2)
            player:setStorageValue(Storage.BigfootBurden.WarzoneStatus, 1)

            -- The Shattered Isles
            player:setStorageValue(Storage.TheShatteredIsles.DefaultStart, 1)
            player:setStorageValue(Storage.TheShatteredIsles.ADjinnInLove, 5)
            player:setStorageValue(Storage.TheShatteredIsles.APoemForTheMermaid, 3)
            player:setStorageValue(Storage.TheShatteredIsles.AccessToGoroma, 1)
            player:setStorageValue(Storage.TheShatteredIsles.AccessToLagunaIsland, 1)
            player:setStorageValue(Storage.TheShatteredIsles.AccessToMeriana, 1)
            player:setStorageValue(Storage.TheShatteredIsles.TheCounterspell, 4)
            player:setStorageValue(Storage.TheShatteredIsles.TheErrand, 2)
            player:setStorageValue(Storage.TheShatteredIsles.TheGovernorDaughter, 3)

            -- Cults of Tibia
            player:setStorageValue(Storage.CultsOfTibia.Questline, 1)
            player:setStorageValue(Storage.CultsOfTibia.Minotaurs.Mission, 1)
            player:setStorageValue(Storage.CultsOfTibia.MotA.Mission, 1)
            player:setStorageValue(Storage.CultsOfTibia.Barkless.Mission, 1)
            player:setStorageValue(Storage.CultsOfTibia.Misguided.Mission, 1)
            player:setStorageValue(Storage.CultsOfTibia.Orcs.Mission, 1)
            player:setStorageValue(Storage.CultsOfTibia.Life.Mission, 1)
            player:setStorageValue(Storage.CultsOfTibia.Humans.Mission, 1)

            -- The First Dragon
            player:setStorageValue(Storage.FirstDragon.tamorilTasks, 1)
            player:setStorageValue(Storage.FirstDragon.tamorilTasksPower, 0)
            player:setStorageValue(Storage.FirstDragon.tamorilTasksKnowledge, 0)
            player:setStorageValue(Storage.FirstDragon.tamorilTasksLife, 0)
            player:setStorageValue(Storage.FirstDragon.tamorilTasksTreasure, 0)
            player:setStorageValue(Storage.FirstDragon.tamorilTasksTreasure, 0)

            -- Achievements
            player:addAchievement("Just in Time")
            player:addAchievement("Recognised Trader")
            player:addAchievement("Bearhugger")
            player:addAchievement("Honorary Barbarian")
            player:addAchievement("Ghostwhisperer")
            player:addAchievement("Efreet Ally")
            player:addAchievement("Marid Ally")
            player:addAchievement("Explorer")
            player:addAchievement("Sea Scout")

            -- Effects And Teleport
            player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
            player:teleportTo(Town(town[cid]):getTemplePosition())
            player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You have received a backpack with starting items for reaching the mainlands.")

            local targetVocation = config.vocations[Vocation(vocation[cid]):getName():lower()]
            for i = 1, #targetVocation[1] do
                player:addItem(targetVocation[1][i][1], targetVocation[1][i][2])
            end

            local backpack = player:addItem(1988)
            for i = 1, #targetVocation[2] do
                backpack:addItem(targetVocation[2][i][1], targetVocation[2][i][2])
            end
        else
            npcHandler:say("THEN WHAT? {KNIGHT}, {PALADIN}, {SORCERER}, OR {DRUID}?", cid)
            npcHandler.topic[cid] = 2
        end
    end
    return true
end

local function onAddFocus(cid)
    town[cid] = 0
    vocation[cid] = 0
end

local function onReleaseFocus(cid)
    town[cid] = nil
    vocation[cid] = nil
end

npcHandler:setCallback(CALLBACK_ONADDFOCUS, onAddFocus)
npcHandler:setCallback(CALLBACK_ONRELEASEFOCUS, onReleaseFocus)
npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:setMessage(MESSAGE_FAREWELL, "COME BACK WHEN YOU ARE PREPARED TO FACE YOUR DESTINY!")
npcHandler:setMessage(MESSAGE_WALKAWAY, "COME BACK WHEN YOU ARE PREPARED TO FACE YOUR DESTINY!")
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

separador.png

CRÉDITOS:

@EddyHavoc

@Marco Oliveira

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

  • EddyHavoc mudou o título para [OTG][NPC][Storages] Liberando os acessos das Quests e Missões pelo NPC Oracle
  • EddyHavoc mudou o título para [OTG][NPC][Storages][Rookgaard] Liberando os acessos das Quests e Missões pelo NPC Oracle

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