Jump to content

Search the Community

Showing results for tags 'QuestLog'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
    • Divulgação de Servidores
    • Projetos e Formações de Equipes
  • Outros
    • Design

Found 2 results

  1. Informações: Protocolo12, TFS 1.3.10, Npc Angus (mapa real) NPC: Olá, estou tentando criar uma nova missão copiando um NPC do mapa RL. Consegui criar um resumo do npc para uma nova missão, funcionou, mas está usando dados de "The Explorer Society Quest" Npc custom linha: 20, 35, 36 "Storage.ExplorerSociety.JoiningtheExplorers" "Storage.ExplorerSociety.QuestLine" Eu tentei mudar para "Storage.Custom.Join" "Storage.Custom.QuestLine". Não funcionou dizendo "join" não disse nada QuestLog: Eu tentei criar um novo questlog, isso fez com que o servidor não funcionasse QuestLog? linha: 3373-3385
  2. MINI TUTORIALZIN SOBRE QUESTS E QUEST LOG. Vamos chamar de QUEST a missão como um todo e de MISSÃO as missões que são advindas das QUESTS. Por exemplo, para concluir o acesso de Yalahar (QUEST) é necessário que o jogador conclua várias missões, sacou? Agora vamos entender como funcionam as quests. Primeiro procure por 'data/lib/miscellaneous/051-storages.lua' ; Talvez os nomes dos arquivos/pastas mudem de acordo com o servidor que foi baixado; Caso não encontre o arquivo acima, procure algum .LUA relacionado a STORAGE. Se mesmo assim não encontrar, poste abaixo nos comentários que tentarei ajudar assim que for possível, belezura? O que é Storage? Storage é um tabela que usamos para guardar certos tipos de informações do jogador enviando para o banco uma key numérica (serve como identificador ID) e seu value (valor), para entendermos seu funcionamento, supondo que você tenha uma noção básica sobre programação, precisamos de um objeto da classe Player que não seja nulo, digamos que temos este objeto e seu nome seja player e precisamos acessar sua quantidade de horas jogadas, supondo que o ID da quantidade de horas seja 10777, fazemos assim: player:getStorageValue(10777). PUFT! Assim teremos de retorno o valor de ID dentro do Storage, se ficar confuso, pode perguntar bro. O que são esses números no 051-storages.lua? Se pegarmos a quest InServiceofYalahar como exemplo (mete um CTRL+F aí), temos os identificadores de cada missão e também da quest em si (questline), vejamos: Questline é basicamente a inicialização da QUEST, para iniciar as missões, você primeiro precisa inicializar a quest (questline). Não adianta você criar um NPC com a função de inicializar a missão de id 12241 (Mission01) se o Questline ainda não foi iniciado!! Para que eu irei utilizar esse 051-storages.lua? Bom, aqui a ideia é padronizar e também facilitar, ao criar uma quest, primeiro crie suas etapas neste arquivo, vamos ver um exemplo: QuestDoGryllao = { Questline = 999, Mission01 = 1000, Mission02 = 1001, Mission03 = 1002 } Agora como dito acima, para verificarmos se o player tem ou está em alguma etapa da Mission02 da QuestDoGryllao, fazemos o seguinte: player:getStorageValue(Storage.QuestDoGryllao.Mission02) Ué? Mas de onde saiu esse Storage? Storage é apenas um aviso para o código de que você quer pegar um valor de dentro do 051-storages.lua, entrando em Storage temos QuestDoGryllao e dentro temos as missões, ficando assim (Storage.QuestDoGryllao.Mission01). A ideia de utilizar o 051-storages.lua é facilitar na hora de buscar um STORAGE específico. Você poderia fazer assim também: player:getStorageValue(1001) Assim fica mais simples, cê tem demência GryLLo? Não, calma lá, imagina se você tiver uma nova quest BOLADÍSSIMA com 18 missões, você vai querer decorar todos os identificadores criados? E no futuro como fica se esquecer? Colocar tudo no 051-storages.lua é uma forma de deixar as tuas PARADAS mais organizadas e simples de entender até para outros programadores! Agora vamos procurar por 'data/XML/quests.xml', utilizaremos ainda a quest In Service of Yalahar como base de explicação; <quest name="In Service of Yalahar" startstorageid="12240" startstoragevalue="5"> <mission name="Mission 01: Something Rotten" storageid="12241" startvalue="1" endvalue="6"> <missionstate id="1" description="Palimuth asked you to help with some sewer malfunctions. You will need a Crowbar, there are 4 places where you need to go marked with an X on your map." /> <missionstate id="2" description="You cleaned 1 pipe of 4 from the garbage." /> <missionstate id="3" description="You cleaned 2 pipes of 4 from the garbage." /> <missionstate id="4" description="You cleaned 3 pipes of 4 from the garbage." /> <missionstate id="5" description="You cleaned 4 pipes of 4 from the garbage. Go back to Palimuth and report your mission" /> <missionstate id="6" description="You cleaned all pipes from the garbage! Go back to Palimuth and ask for mission." /> </mission> </quest> Entramos em <quest vamos ver o que temos aqui dentro O que é o atributo NAME? É onde fica o nome da QUEST que será mostrado no Quest Log E o atributo STARTSTORAGEID? Esse é o identificador da sua quest (QUESTLINE), não irei entrar muito em detalhes, mas é a partir desse identificador que o OTZÃO BOLADO identifica que é a "Quest X" que deve ser ou foi iniciada; Tá, e esse STARTSTORAGEVALUE? Esse aqui diz qual valor é necessário para se iniciar a quest, como padrão é 1, mas nesse caso em especial está em 5. Aqui é uma das coisas que fazem a galera se perder ao tentar forçar o início de algumas quests diretamente pelo código ou por algum npc novo. Se você quer inicializar a Quest pelo código, inicialize o QUESTLINE com o valor de STARTSTORAGEVALUE, após isso, você pode ir inicializando as missões dela. Agora em <mission, bora ver! Atributo NAME, de novo? Calma jovem, esse é nome da MISSÃO, será mostrado no Quest Log E o STORAGEID? Assim como o startstorageid é um identificador, porém, de cada missão dentro da quest; STARTVALUE? Esse atributo é parecido com o startstoragevalue é o valor para se inicializar a MISSÃO ENDVALUE? Esse atributo diz em que momento a MISSÃO será finalizada, nesse exemplo nós temos 6 sub-missões dentro dessa missão para que ela seja concluída. Simbora pro <missionstate Atributo ID? Este atributo é apenas o identificador da missão, provavelmente ele quem ordena as missões dentro do QUEST LOG e faz mais umas paradas si pá. E finalmente, o último DESCRIPTION!? Aqui é a descrição da missão, normalmente diz o que o player tem que fazer para concluir essa etapa, veja abaixo: Beleza, agora que tu sabe as paradas, vamos utilizar a QuestDoGryllao como exemplo e criaremos algo simples, vamos lá: Em 051-storage.lua coloque: QuestDoGryllao = { Questline = 999, Mission01 = 1000, Mission02 = 1001, Mission03 = 1002 } DEPENDENDO DE ONDE VOCÊ COLE ISTO, NÃO ESQUEÇA DE VERIFICAR SE FALTARAM VÍRGULAS OU OUTRAS PARADAS Agora em quests.xml fazemos uma parada assim: <quest name="Quest do Gryllao" startstorageid="999" startstoragevalue="1"> <mission name="Mission 01: Empregadinho" storageid="1000" startvalue="1" endvalue="2"> <missionstate id="1" description="De um oi para o Gryllao" /> <missionstate id="2" description="Leve um cafezin pro Gryllo" /> </mission> <mission name="Mission 02: Ajude a enfrentar inimigos" storageid="1001" startvalue="1" endvalue="2"> <missionstate id="1" description="Ajude Gryllo a matar 40 rotworms" /> <missionstate id="2" description="Ajude Gryllots a matar 40 bugs" /> </mission> <mission name="Mission 03: A Procura" storageid="1002" startvalue="1" endvalue="3"> <missionstate id="1" description="Procure o cachorrinho do Gryllo" /> <missionstate id="2" description="Fale com Godofredo para pedir informacoes" /> <missionstate id="3" description="Devolva o dogao ao Gryllo" /> </mission> </quest> Vocês entenderam a ideia? Vocês já sabem como verificar o status de uma Quest: player:getStorageValue(<id_da_quest>) -- ou player:getStorageValue(Storage.<nome_da_quest_no_storage>.<missao>) Irei apenas passar mais uma funçãozinha, que é para inserir dados no Storage, serve para avançar o jogador em missões ou gravar outras informações, seria assim ó: player:setStorageValue(<id_da_quest>, <value>) -- id da quest é o startstorageid ou storageid da quest/missao que quer atualizar -- value é basicamente o progresso da quest/missao, na Mission01 do gryllo por exemplo, poderia por 1 ou 2 #EDIT 28/12/2018 Falei sobre o Storage ser uma referência as variáveis dentro de 051-storages.lua e esqueci de uma parada, na verdade, notei recentemente. Observe dentro de 051-storages.lua dentro de QUAL ARRAY você está colocando sua quest ou está a quest que você quer mexer, dentro dele há o Storage que foi explicado acima e o GlobalStorage (tem basicamente a mesma função só que com outros IDs) Acho que o básico sobre as Quests e também como mostrá-las no Quest Log já está aí. Por hoje é só pessoal, fiquem bem e sonhem com Batman! Uns abraços, GryLLo
×