Tutorial Criar NPCs para 5375 a 5533

Olá galera do Conquer Project, Hoje vou re-postar as funções basicas para criar um npc simples e também alguns exemplos de como usar, então vamos lá abaixo temos a lista de ações simples.

client.Entity.Spouse == "None" = verificar se ele é casado.

client.Inventory.Contains(1088002, 1) = verificar se ele tem o item na bag, caso seja mais de um bastar fazer do seguinte modo
client.Inventory.Contains(1088002, 1) && client.Inventory.Contains(1088001, 1)

client.Inventory.Remove(1088002, 1) = remover o item da bag.

client.Inventory.Add(711083, 0, 1) = adicionar um item na bag do jogador.

"+ client.Entity.Name +" = Mostrar nome do jogador.

Conquer_Online_Server.Game.ConquerStructures.Socie ty.GuildWar.IsWar = verificar se a alguem da guild no mapa ou em guerra.

client.Entity.Teleport(1002, 450, 350) = enviar alguem para um mapa no caso teleportar o jogador.

DateTime.Now.Minute >= 30 && DateTime.Now.Minute <= 35 = criar um tempo para o npc liberar as ações no caso minutos.
DateTime.Now.DayOfWeek == DayOfWeek.Sunday && (DateTime.Now.Hour == 15 && DateTime.Now.Minute <= 15) = criar dia, hora e minutos para executar as ações.

client.Entity.PKPoints = verificar os pontos de PK do jogador.

client.Entity.VotsPoints = verificar pontos de Vots.

client.Entity.ConquerPoints = verificar pontos de cps na bag.

client.Entity.Money = verificar gold na bag.

client.Entity.Myclan = verificar se o jogador tem Clã.

client.Entity.Class = verificar classe do jogador.

client.AddSpell(LearnableSpell(7003)) = adicionar skills

client.Entity.Level = verificar level do jogador.

client.Entity.Reborn = verificar reborn do jogador.

client.Entity.VIPLevel = verificar VIP do jogador.

client.Guild = verificar se o jogador tem guild.
Conquer_Online_Server.Game.Enums.GuildMemberRank.G uildLeader = verificar se ele é o dono da guild.

Expressões ( !=, >=,<=, ==, >,<, = null, -=, +=, ) com if, else e else if.

Como usar algumas funções acima:


#region Exemplo
case 801012: //ID do npc na tabela npcs.
{
switch (npcRequest.OptionID)
{
case 0:
{
dialog.Text("Olá "+ client.Entity.Name +", sou um npc teste."); // Área de fala do npc.
dialog.Option("Opção de ação.", 1); // primeira ação para definir a case que será chamada bastar adicionar o 1 depois das aspas duplas ", 1);
dialog.Option("Opção neutra", 255); // segunda ação pode se neutra ou você pode adicionar mais uma opção (dialog.Option("Opção de ação.", 2)
dialog.Avatar(65); // aqui é a lookface do npc onde mostrar a imagem na tela de fala do npc.
dialog.Send(); // essa ação é importante é o fechamento do dialog caso vc não adicione o npc não irá funcionar correntamente.
break;
}
case 1: //case da opção dialog.Option("Opção de ação.", 1);
{
if (client.Inventory.Contains(723725, 1)) // essa ação verificar se o jogador tem mesmo o item na bag.
{
client.Inventory.Remove(723725, 1); //essa ação remover o item da bag.
client.Entity.ConquerPoints += 1000; // essa ação adicionar cps na bag do jogador agora para remover bastar mudar o sinal de + para - na ação.
dialog.Text("Parabéns! "+ client.Entity.Name +" ganhou 1.000 CPs."); // fala do npc.
dialog.Option("Obrigado.", 255); // ação neutra.
dialog.Avatar(65); // lookface do npc.
dialog.Send(); // fechamento das ações.
}
else // esse else significa então ele não tem o item executar a ação abaixo.
{
dialog.Text("Desculpe! "+ client.Entity.Name +" mais você não tem o item."); //fala do npc.
dialog.Option("Ok desculpe.", 255); //ação neutra.
dialog.Avatar(65); //lookface do npc.
dialog.Send(); // fechamento das ações.
}
break; //para a ação.
}
}
break;
}
#endregion

Como criar npc com várias opções:

#region Exemplo2
case 801013: //ID do npc na tabela npcs.
{
switch (npcRequest.OptionID)
{
case 0: // case iniciar do npc onde ficar as falas e ações podemos usar um if se você quise determinar uma expressão logo de inicio depois da primeira chave { if(função){ tela 1 com opções e falas }else{ tela 2 mensagem se ele não tive o que você pediu}
{
if (client.Entity.Name == Ferraz) // aqui eu determinei que o nome para liberar esse npc tem de se Ferraz caso não seja o npc trava as funções.
{
dialog.Text("Olá "+ client.Entity.Name +", sou um npc teste de vendas."); // Fala do NPC.
dialog.Option("Comprar Gold.", 1); //Esse numero 1 no final da expressão vai chamar a ação case 1:{}break;
dialog.Option("Comprar CPs.", 2); //Esse numero 2 no final da expressão vai chamar a ação case 2:{}break;
dialog.Option("Comprar Item.", 3); //Esse numero 3 no final da expressão vai chamar a ação case 3:{}break;
dialog.Option("Não valeu.", 255); //ação neutra.
dialog.Avatar(65); //lookface do npc.
dialog.Send(); // fechamento das ações.
}
else // esse else significa então ele não tem o item executar a ação abaixo.
{
dialog.Text("Desculpe! "+ client.Entity.Name +" mais você não é o Ferraz."); //fala do npc.
dialog.Option("Affs isso não é justo.", 255); //ação neutra.
dialog.Avatar(65); //lookface do npc.
dialog.Send(); // fechamento das ações.
}
break; //para a ação.
}
case 1: //opção dialog.Option("Comprar Gold.", 1);
{
dialog.Text("Bom " + client.Entity.Name + ", estou vendendo 10.000 Gold por 15 CPs gostaria de comprar?");
dialog.Option("Claro que sim.", 4);
dialog.Option("Não obrigado.", 255);
dialog.Avatar(65);
dialog.Send();
break;
}
case 4: //opção dialog.Option("Claro que sim.", 4);
{
if (client.Entity.ConquerPoints >= 15) //verificar se ele tem o saldo de cps alto para pode executar a ação abaixo:
{
client.Entity.ConquerPoints -= 15; //remover 15 de cps da bag do jogador
client.Entity.Money += 10000; //adicionar 10000 de gold na bag do jogador.
dialog.Text("Parabéns! " + client.Entity.Name + " troca efetuada com sucesso.");
dialog.Option("Valeu.", 255);
dialog.Avatar(65);
dialog.Send();
}
else //aqui é caso ele não tenha então mostrar a mensagem.
{

dialog.Text("Desculpe! "+ client.Entity.Name +" mais você não tem 15 CPs."); //fala do npc.
dialog.Option("Ok desculpe.", 255); //ação neutra.
dialog.Avatar(65); //lookface do npc.
dialog.Send(); // fechamento das ações.

}
break;
}
case 2: //opção dialog.Option("Comprar CPs.", 2);
{
dialog.Text("Bom " + client.Entity.Name + ", estou vendendo 1.000 CPs por 1.000.000 Gold gostaria de comprar?");
dialog.Option("Claro que sim.", 5);
dialog.Option("Não obrigado.", 255);
dialog.Avatar(65);
dialog.Send();
break;
}
case 5: //opção dialog.Option("Claro que sim.", 5);
{
if (client.Entity.Money >= 1000000) //verificar se ele tem o saldo de gold alto para pode executar a ação abaixo:
{
client.Entity.Money -= 1000000; //remover 1000000 de gold na bag do jogador.
client.Entity.ConquerPoints += 1000; //adicionar 1000 de cps da bag do jogador
dialog.Text("Parabéns! " + client.Entity.Name + " troca efetuada com sucesso.");
dialog.Option("Valeu.", 255);
dialog.Avatar(65);
dialog.Send();
}
else //aqui é caso ele não tenha então mostrar a mensagem.
{

dialog.Text("Desculpe! "+ client.Entity.Name +" mais você não tem 1000000 Gold."); //fala do npc.
dialog.Option("Ok desculpe.", 255); //ação neutra.
dialog.Avatar(65); //lookface do npc.
dialog.Send(); // fechamento das ações.

}
break;
}
case 3: //opção dialog.Option("Comprar Item.", 3);
{
dialog.Text("Bom " + client.Entity.Name + ", estou vendendo GoldPrize por 1.000.000 CPs gostaria de comprar?");
dialog.Option("Claro que sim.", 6);
dialog.Option("Não obrigado.", 255);
dialog.Avatar(65);
dialog.Send();
break;
}
case 6: //opção dialog.Option("Claro que sim.", 6);
{
if (client.Entity.ConquerPoints >= 1000000) //verificar se ele tem o saldo de cps alto para pode executar a ação abaixo:
{
client.Entity.ConquerPoints -= 1000000; //remover 1000000 de cps da bag do jogador.
client.Inventory.Add(2100075, 0, 1) = adicionar o item na bag do jogador.
dialog.Text("Parabéns! " + client.Entity.Name + " troca efetuada com sucesso.");
dialog.Option("Valeu.", 255);
dialog.Avatar(65);
dialog.Send();
}
else //aqui é caso ele não tenha então mostrar a mensagem.
{

dialog.Text("Desculpe! "+ client.Entity.Name +" mais você não tem 1000000 CPs."); //fala do npc.
dialog.Option("Ok desculpe.", 255); //ação neutra.
dialog.Avatar(65); //lookface do npc.
dialog.Send(); // fechamento das ações.

}
break;
}
}
break;
}
#endregion

Caso tenha dúvida em alguma função deixe um comentario.

Espero que isso ajude um pouco vocês que estão começando a mexe com sources em C# Sharp.