AVENGERS OF BALDURAN
  JOGOS NEVERWINTER NIGHTS 2 TUTORIAIS CRIANDO UMA QUEST

Traduzido por Nasher.

As quests, missões ou tarefas que o jogador pode ou deve cumprir para os NPCs, são eventos que gratificam os personagens, seja através de experiência, seja através de itens ou outras riquezas. As quests adicionam vitalidade a um módulo, sendo os componentes principais de uma boa estória e responsáveis pela motivação dos jogadores. Como exemplo, utilizaremos a quest principal do módulo de exemplo “Uninvited Guests”.

 

Conteúdo
. Qual é a quest?
. Criando o diálogo, aceitação e entrada no diário
. Conclusão

 

Qual é a quest?
A quest, se aceita, é matar 2 homens-lagartos que se apossaram da pobre casa de Pitney. Se a quest for aceita, Pitney lhe dará um porrete para ajudar a acabar com os homens-lagartos, a chave de sua casa e, se o jogador obtiver sucesso, 150 pontos de experiência e uma garrafa de cerveja da última colheita.

Primeiramente, se fossemos construir este módulo do início, precisaríamos criar uma nova área e adicionar os placeables e NPCs necessários (especialmente Pitney e Ginni, neste caso).

 

Criando o diálogo, aceitação e entrada no diário
Agora precisamos criar um diálogo para Pitney para que ele possa ao menos ter a oportunidade de dar a quest ao jogador. Para maiores informações sobre este passo, consulte o guia “Escrevendo Diálogo”.

Se você abrir o módulo de exemplo, verá que o diálogo de Pitney é o mesmo como mostrado abaixo:

Abra o diálogo “01_pitney” para ler em mais detalhes. Se você rodar o módulo, Pitney virá correndo até você e iniciará o seguinte diálogo:

Como você pode ver, o jogador tem uma chance de dizer a Pitney, “Stay Here, I’ll deal with the Scaly Folk.”. Se o jogador escolher esta opção, os seguintes nós serão apresentados ao diálogo:

A figura acima pode ser um pouco diferente da sua, pois as colunas de condições foram removidas pois não são necessárias neste ponto do guia (clique com o botão direito em qualquer cabeçalho da tabela e então com o botão direito em “Columns”, e então selecione para desmarcar a coluna “Conditions”). Como você pode ver, uma vez que você escolha “Stay Here, I’ll deal with the Scaly Folk.”, Pitney dirá duas linhas. A primeira: "You mean it? That's mighty good of you. More than I deserve no doubt" não possui ações além do jogador ter de escolher 1 para continuar. A próxima linha: Here, take this. It’s not much of a weapon, but my old Dad swore there wasn’t nothin’ better for crackin’ lizard skulls.” tem uma ação ligada a ela. Antes de mencionarmos como adicionar uma ação, você notará que alguns dos diálogos possuem “barras” ( | ) cercando o texto; por exemplo: | Give cudgel |. Isto não é mostrado ao jogador durante o jogo, servindo apenas como lembrete ao construtor (builder) o que acontece neste nó de diálogo.

Para adicionar uma ação, você deve primeiro adicionar sua linha ao texto. Neste exemplo, "Here, take this. It's not much of a weapon, but my old Dad swore there wasn't nothin' better for crackin' lizard skulls.". Quando está linha estiver selecionada, clique na tabela “Actions”:

Agora clique no botão “Add”:

Você verá uma linha adicionada embaixo, e onde ela indicar “Scripts”, clique na flecha e selecione o script “ga_give_item”, e então clique no botão “Refresh”. Você verá o seguinte:

Veja que agora temos 3 parâmetros: sTemplate (String), nQuantity (Int) e bAllPCs (Int). Se você olhar o script ga_give_item mais a fundo, verá que ele menciona o que os parâmetros querem dizer:

Parameters:
string sTemplate = Item blueprint ResRef [A blueprint do item]
int nQuantity = Stack size for item (default: 1) [A quantidade do item]
int bAllPCs = If =1 create item on all player characters (MP) [Se 1, o item será criado em todos os personagens-jogadores]

Como eles são auto-explicativos, tudo o que precisamos fazer é deixar o script saber qual item dar ao jogador e sua quantidade.

Como vemos, o script dará ao jogador um item com a Blueprint ResRef de “Cudgel”. Ao jogador caberá a decisão de clicar ou apertar 1 para continuar o diálogo, e então você o diário sendo atualizado, além do jogador receber outro item (uma chave – seguindo a mesma forma do primeiro item dado). Sabemos como dar um item ao jogador, mas como adicionamos uma entrada no diário?

Você notará que uma nova tabela aparecerá.

Como você pode ver, há alguns botões relativamente auto-explicativos. A primeira coisa que precisamos fazer é adicionar uma categoria; para tanto, clique no botão “Add Category” e você verá uma categoria de diário como à seguir:

1. Comment: Usado para comentários sobre esta quest em particular;

2 . Name: Este é o nome da quest que será apresentada como título ao diário dos jogadores;

3. Priority: Concede um nível de urgência a quest, permitindo aos jogadores ver quais são as quests com prioridade quando eles selecionarem “Priority” no diário;

4. Tag: Especifica o texto usado para identificar e referir a quest;

5. XP: Determina quantos pontos de experiência o jogador receberá quando ele completar a quest.

Clicando em “Add Entry” você verá o seguinte:

1. ID: Específica o valor numérico usado para identificar e se referir a esta entrada de quest;

2. Endpoint? Determina se o estado da quest a completa. Colocar este valor para “True” significa que a quest é considerada completa ao atingir esta entrada. “False” mantém aquela quest como ativa ao atingir esta entrada.

Você verá também uma String Ref:

Como você pode ver acima, se esta ID do diário for disparada, então a String Ref é o que a entrada no diário mostrará ao jogador:

Como vemos na figura acima, a categoria é chamada de Uninvited Guests, e possui 4 possíveis entradas no diário. A coluna mais a direita tem uma ID diferente para cada linha.

Agora que adicionamos nossas entradas no diário, ainda teremos de adicionar scripts e diálogos para engatilhar todas essas entradas no diário. A próxima parte do diálogo de Pitney diz: "And, ah... best of luck, stranger.", e então o diário é atualizado e o jogador recebe a chave da casa. Para ver como isso foi feito, clique naquela linha de diálogo e você verá que na coluna de quest nós temos um valor de “01_lizardfolk (20)”, o qual foi adicionado através da tabela Node:

Na tabela Node você verá o seguinte:

Embaixo de “Behaviour” você verá que temos um campo de Quest com o valor 01_lizardfolk (20), o qual corresponde a entrada no diário de mesma ID. Logo, o texto "Pitney Lannon and his family have been evicted from their home by a pair of lizardfolk. The creatures are still in his house, happily ransacking the place. You agreed to get rid of Pitney's unwelcome guests... by whatever means necessary." será adicionado ao diário do jogador neste ponto.

Embaixo da tabela Action nós temos dois scripts:

O primeiro script é o 01_lizman_journal:

// 01_lizman_journal
// When the lizardmen die, advance the journal state to 30.
// EPF 8/17/06
#include "ginc_group"
const string GROUP_LIZMEN = "grplizmen";
void main()
{
GroupAddTag(GROUP_LIZMEN,"01_lizman1");
GroupAddTag(GROUP_LIZMEN,"01_lizman2");
GroupOnDeathSetJournalEntry(GROUP_LIZMEN, "01_lizardfolk",30);
}

Basicamente, o que este script faz é agrupar juntos 2 homens-lagarto (estes localizados dentro da casa de Pitney) que possuem a tag 01_lizman1 e 01_lizman2, e se este grupo morrer, então a ID do diário será determinada como 30, a qual corresponde a entrada do diário "You slew the two lizardfolk who were ransacking the Lannon house. All that remains is to inform Pitney Lannon of the good news...".

O segundo script é o ga_give_item, este já explicado. Ao jogador, é claro, é dada a opção de recusar a quest, como você pode ver no nó de diálogo "That remains to be seen. I'll think it over.". A ID da entrada no diário neste caso é 10, a qual corresponde ao seguinte texto: "Pitney Lannon and his family have been evicted from their home by a pair of lizardfolk. Pitney begged you for help, but you refused.".

Você verá que o próximo nó contém a seguinte frase: "You change your mind, stranger? 'Bout helpin' us, I mean?". Este nó contém uma condição junto a ele, o qual é checado pelo script gc_journal_entry. Os parâmetros sQuestTag must = 01_lizfolk e the sCheck = 10 antes deste nó estão disponíveis ao jogador.

Uma vez que você tenha matado os homens-lagarto, volte para falar com Pitney, o qual dirá: "We heard all the screamin', but we couldn't tell if it was you or them! Gods! Are they dead?". A razão dele dizer isso é que, se você olhar naquele nó de seu diálogo, notará que ele apenas aparecerá se a ID de seu diário for igual a 30 (o que ocorre quando um script é disparado após você matar os 2 homens-lagarto dentro de sua casa).

O diálogo continua e então os dois NPCs (Pitney e Ginni) conversam entre si. Para criar um diálogo entre dois NPCs, clique na tabela Node e certifique-se de que as tags dos NPCs estejam nos campos Listener e Speaker:

A última coisa a se fazer é interligar esta quest, caso em que Pitney faz no nó de diálogo: "Mph. Very well. You did save our lives, after all. Jus' promise you'll save it for a special occasion." Como você pode ver, temos duas ações:

O ga_give_quest_xp tem um valor sQuestTag de 01_lizardfolk, o qual é 150 (lembre-se do valor de XP que foi colocado na coluna XP das entradas no diário). Já estamos familiarizados com o script ga_give_item?

Você também verá na coluna Quest o 01_lizardfolk = (40) no nó de diálogo, o qual corresponde a ID 40 na Journal Entry, e que é um Endpoint, determinando o fim da quest.

 

Conclusão
Brincar com as entradas no diário pode parecer assustador no início, mas com alguma prática você logo estará criando quests muito mais complexas e detalhadas.

Seções
Publicidade