Jump to content
  • 0
Sign in to follow this  
andersonpsy

[Resolvido] Npc de quest - quest_db

Question

Primeiramente boa noite, gostaria ue alguém fizesse uma correão em um script para mim, ou me tire as dúvidas referentes a onde se encontra o erro nas linhas do mesmo, pois não o encontro, desde já grato.

Roda normalmente no Emulador, entretando dou click's no npc e ele não gera função.

Citar

prontera,150,150,5    script    Missão Rank [D]    52,{ 
    mes "[Missão Rank [D]]";
    mes "Olá, Deseja fazer a missão Rank [D]?";
    
        if (select("- Sim:- Não") == 2)        close;
        case 1:
        if(questprogress(70000,HUNTING) == 1){
        next;
        mes "[Missão Rank [D]]";
        mes "Desculpe mais você ainda não completou a quest, complete a quest para que possamos ir para a próxima etapa.";
        close;
        } 
    if(questprogress(70000,HUNTING) == 2){
    mes "[Missão Rank [D]]";
    mes "Parabéns você completou a quest.";
    completequest 70000;close;
    } 
    
    next;
    mes "[Missão Rank [D]]";
    mes "Tenho uma quest para você, deseja aceitar?.";
    if (select("- Sim:- Não") == 2)     close;
    
    next;
    mes "[Missão Rank [D]]";
    mes "Aqui está a quest, aperte ALT + U para visualizar.";
    setquest 70000;close;
    
    OnInit: 
    questinfo 70000, QTYPE_QUEST, 1;
    close;
    end;
    }
}

 

Edited by andersonpsy

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Olha de erro que tem no npc... TUDO! kkk

Veja fiz aqui uns exemplos completos para termos de quest então vamos ver:

Dica não é muito aconselhável usar só as checagens de quest pelo npc e sim usar variáveis para isso, veja o primeiro exemplo ele atribui e completa a quest:

Spoiler

prontera,150,150,5	script	Missão Rank	1_M_HOF,{ 
	if (!questcuston) { // Checa se já existe uma var atribuída ao personagem no caso não tem
		mes "[Missão Rank [D]]";
		mes "Olá, Deseja fazer a missão Rank [D]?";
		next;
		if (select("Sim:Não") == 1) { // Condição se selecionar a primeira opção
			// case "Aqui é errado" -> Isso não volta em retorno boleado que foi dado acima pelo "if(condição)"
			mes "[Missão Rank [D]]";
			mes "Aqui está a quest, aperte ALT + U para visualizar.";
			questcuston = 1; // Adiciona uma var de valor 1 para o personagem
			setquest 70000;  // Adiciona uma quest (Isso é opcional caso queira criar uma quest na janela de alt + U)
			close;
		}
		// Caso tenha selecionado a segunda opção
		mes "[Missão Rank [D]]";
		mes "Que pena!";
		mes "Volte quando quiser fazer a quest.";
		close;
	}
	else if (questcuston == 1) { // Checa a var se seu valor é 1
		mes "[Missão Rank [D]]";
		mes "Desculpe mais você ainda não completou a quest.";
		mes "Complete a quest para que possamos ir para a próxima etapa.";
		close;
	}
	else if (questcuston == 2) {
		mes "[Missão Rank [D]]";
		mes "Parabéns você completou a quest.";
		questcuston = 0; // Isso vai limpar a var do personagem
		// É importante sempre averiguar se a quest está emandamento antes de mexer nela
		// muitos erros no banco de dados vem de npcs que os caras fazem que alteram 
		// deliberadamente o banco de dados
		if (questprogress(70000)) {
			completequest 70000;
		}
		close;
	}
	else { // Se não se enquadar em nenhuma var checada acima assume esse valor
		mes "[Missão Rank [D]]";
		mes "Você trocou de quest no outro npc vá falar com ele então."
		close;
	}
}

 

 

Agora temos um segundo exemplo de npc, Só vai ser utilizável se o cara começar a quest no npc anterior

Spoiler

prontera,150,150,5	script	Missão Rank2	1_M_HOF,{
	if (questcuston == 1) {
		mes "[Teste]";
		mes "Selecione o que deseja";
		next;
		switch(select("Completar a quest:Apagar a quest:Trocar de quest:Continuar quest anterior")) {
			case 1: // Completar a quest
				questcuston = 0;
				if (questprogress(70000)) {
					completequest 70000;
				}
			case 2: // Apagar a quest
				mes "[Teste]";
				mes "Vou apagar a quest";
				questcuston = 0;
				if (questprogress(70000)) {
					erasequest 70000;
				}
				close;
			case 3: // Trocar de quest
				mes "[Teste]";
				mes "Então me diga qual tipo de quest deseja?";
				next;
				switch(select("Matar um poring:Trazer uma poção")) {
					case 1:
					mes "[Teste]";
					mes "Então vá matar um poring";
					questcuston = 3;
					changequest 70000,70001;
					close;
					case 2:
					mes "[Teste]";
					mes "Me traga uma poção vermelha";
					questcuston = 4;
					changequest 70000,70002;
					close;
				}
			case 4: // Continuar quest anterior
				mes "[Teste]";
				mes "Volte e fale com o outro npc para completar a quest";
				questcuston = 2; // Passa a var 2 para que o outro npc a use
				close;
		} // Fim do switch de opção
	} // Fim da checagem se a var é 1
	else if (questcuston == 3) {
		if (checkquest(70001,HUNTING) == 2) { // Aqui checa se já matou o poring
			mes "Ótimo você matou o poring";
			mes "Quest completada";
			questcuston = 0;
			if (questprogress(70001)) {
				completequest 70001;
			}
		}
		else {
			mes "Ainda você não matou o poring";
			close;
		}
	}
	else if (questcuston == 4) {
		mes "Você trouxe a poção vermelha?";
		next;
		if (select("Sim:Não") == 1) {
			if (countitem(501) >= 1) { // Se tiver 1 ou mais poção vermelha
				mes "ótimo sua quest foram completadas";
				questcuston = 0;
				if (questprogress(70002)) {
					completequest 70002;
				}
				close;
			}
			else { // Caso não tenha a poção vermelha
				mes "Onde está a poção";
				close;
			}
		}
		mes "Volte quando tiver a poção vermelha";
		close;
	}
	else {
		mes "Não é comigo que você tem que falar";
		mes "Volte aqui depois que adquirir a quest custom";
		close;
	}
}

 

Não sei se você sabe mas o comando HUNTING é usado para atribuir objetivos a quest e para que isso funcione deve-se editar o arquivo Quests.conf na pasta db do emulador, você deve criar os objetivos lá.

Exemplo da quest no arquivo:

Spoiler

{
	Id: 70001
	Name: "Exemplo de quest com objetivo"
	Targets: ( // Esse comando é usado para atribuir que o objetivo da quest é matar montros
	{
		MobId: 1002 // Aqui eu indiquei o ID do mob 1002 é o poring
		Count: 1    // Aqui eu indiquei que tem que derrotar 1 monstro para completar o objetivo
	},
	)
},

 

 

Share this post


Link to post
Share on other sites
  • 0
Aviso Automático
Tópico Fechado! Razão: Dúvida e/ou problema resolvido.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

Seja bem vindo ao Cronus-Emulator.
É sempre um prazer te-lo conosco.
Você pode visualizar nossas áreas de suporte para encontrar suas soluções sem a necessidade de se registrar!
Registrando em nossa comunidade, você poderá conhecer mais sobre nosso projeto, criar tópicos, responder tópicos existentes, baixar milhares de recursos em nosso sistema de downloads, participar de nossa comunidade, customizar seu perfil e muito mais... Se você já possui uma conta, faça seu login - ou crie uma conta. Também temos integração com Google+ e Facebook.

×
×
  • Create New...