Bom rapaziada venho aqui compartilhar um sistema que finalizei ele ontem, não é 100% meu já que me baseei em um sistema de task do lordbaxx.
Esse module se trata de um sistema de Quest Log onde todas as quests disponiveis para o jogador são exibidas lá e com uma opção de marcar no mapa para o jogador encontrar facilmente.
como podem ver no print, ele exibe uma descrição, uma imagem e o botão de marcar, criando essa marcação no mapa do jogador e as opções que estão verdes são as quests concluidas, para adicionar uma quest novo é apenas pelo servidor, sem necessariamente editar e atualizar o cliente dos jogadores, apenas ficará sem imagem nesse caso, para adicionar uma quest nova com imagem é necessario uma adição da imagem no cliente
Antes de tudo já aviso que vai ser necessario opcodes caso sua base não tenha, e também é importante avisar que estou usando TFS 0.3.6 com OTCV8, caso o seu seja outra versão talvez precise de pequenas alterações
1. Faça o download dos arquivos e coloque todos em sua respectiva pasta(assim como tá organizado no zip)
[Hidden Content]
QUEST LOG by JB.zip
2. Agora vamos ligar o comando, vá em data/talkactions/talkactions.xml e adicione essas duas linhas:
<talkaction words="!marcar" event="script" value="marcar.lua" />
<talkaction words="!sendquestlog" event="script" value="sendquestlog.lua"/>
Pronto, já está funcional mas com as quests que eu adicionei, então agora vamos adicionar quests
3. Vá em data/lib/quest_system_lib.lua e adicione uma linha nesse padrão:
{ id = 18, name = "Nome da Quest", description = "Descrição", lvl = 1, storage = 0, successful = 1 }
vamo lá, o id é a ordem que será exibida essa quest, se for 18 vai ser exibida logo abaixo da 17 e acima da 19, o lvl será o lvl minimo para essa quest aparecer no log do player, se ela for lvl 50 e o player 49 ou menos a quest não será exibida, em storage é uma cobrança de storage, por exemplo se a Mewtwo Quest dependa que você termine a BOX+2 então ela não aparecerá enquanto não a BOX+2(o storage dela entregue ai) não for maior ou = a 1, por exemplo, quando você termina uma quest o baú vai te dar um storage para você nunca mais pegar essa recompensa, esse storage da BOX+2 você colocaria em storage, caso fique 0 então quer dizer que não tem dependencia de nenhuma outra quest, já em succesful você colocará o storage que é entregue no fim da quest, seguindo o mesmo exemplo seria do baú da Mewtwo Quest, assim você vai retornar pro log q vc terminou e a Mewtwo Quest ficará verde, o resto é auto explicativo.
obs: não esqueça de colocar a virgula em todas as linhas, exceto na ultima
4. Agora vá em data/talkactions/scripts/marcar.lua e adicione uma linha nesse padrão:
{mark = 2, pos = {x = 1288, y = 1034, z = 7}, desc = "Nome da Quest"}
utilize o exato nome da quest, pois o module vai chamar assim: !marcar nomedaquest e esse comando vai responder a isso marcando no seu mapa, {x,y,z} são as posições do mapa que vai aparecer a marcação, eu costumo usar sempre a altura 7 porquê fica mais facil do player identificar onde é a quest olhando pela camada 7, mark seria qual a flag que vai aparecer no mapa, se vc não souber quais são vai testando uma por uma(1,2,3,4...) lembre se de fazer no mesmo padrão da lib, sempre que adicionar a linha final deixe ela sem virgula e todas as outras com virgula.
Por fim já tá completamente funcional essa quest, mas exibirá essa imagem:
claro que da pra manter assim caso você não queira atualizar o cliente apenas para catalogar uma nova quest, mas quando possivel siga o proximo passo
5. Por fim, para adicionarmos a imagem é bastante simples em client/modules/questlog/imgs adicione uma nova imagem do mesmo tamanho das outras imagens nessa pasta, se tiver interesse também deixei um "modelo.pdn" que é um modelo dessas imagens que fiz, caso você queira criar algo semelhante, se n me engano esse formato de imagem só é editado pelo paint.net, então depois que tiver sua imagem pronta em mãos, coloque nessa pasta e renomeie para o exato nome da quest tipo "Bueiro Pt. 1.png" e pronto, seu module vai exibir corretamente dessa forma:
créditos:
JB(por editar o sistema de task até virar esse sistema de quest log e postar aqui)
Lordbaxx(pelo sistema de tasks que usei como base)
ot alissow(pelo sistema de marcações no mapa em creaturescripts que usei como base para criar o talkaction !marcar)
meu discord para contato: jb_087