Перейти к содержанию
Авторизация  
Nice

Создание своего квеста L2j Server

Рекомендуемые сообщения

Здравствуйте. Вот озадачился, хочу свой квест добавить в сборку.. Вроде бы уже почти и работает)) но отображается не корректно..

Буду весьма признателен за помощь.

 

Проблема в следующем :

 

pre_1431017513__.jpg

 

Нужно отредактировать награду отображаемую в этих квестовых окнах.

 

Вот кусочек из кода квеста, красным обозначил цифру которая отвечает за отображение награды в квесте.

 

super(1, Q00001_LettersOfLove.class.getSimpleName(), "Letters of Love");

	public Q00001_LettersOfLove()
	{
		super(1, Q00001_LettersOfLove.class.getSimpleName(), "Letters of Love");
		addStartNpc(DARIN);
		addTalkId(DARIN, ROXXY, BAULRO);
		registerQuestItems(DARINS_LETTER, ROXXYS_KERCHIEF, DARINS_RECEIPT, BAULROS_POTION);
	}

Как я понял эта цифра - ID самого квеста. Но при создании своего квеста и написав вместо этой цифры - ID своего квеста, квест начинает ругатся. Если написать ID любого, другого квеста - то будет показывать награду квеста соответствующего написаному ID.

 

И вот у меня вопрос, как добавить свой ID квеста в этот самый (super)? или хотя бы подскажите где хранятся остальные файлы с наградами за КВ.

Заранее спасибо :) Думаю понятно описал суть проблемы..

Изменено пользователем Nice

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем тебе чтобы он показывал эту награду. Делай без этого.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем тебе чтобы он показывал эту награду. Делай без этого.

Хотелось бы разобраться в этой структуре :) Если есть мнение , поделитесь.. с меня +

Просто есть такая затея, сделать свою цепочку квестов. Начал копать и в ступор попал..

Изменено пользователем Nice

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотелось бы разобраться в этой структуре :) Если есть мнение , поделитесь.. с меня +

Просто есть такая затея, сделать свою цепочку квестов. Начал копать и в ступор попал..

Покажи ошибку на что ругается .

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пересмотрите данную ссылку

http://www.lineagegamebox.ru/forums/index.php?showtopic=138

qn = "2007_noblesse"

 
 

 

super(2007, 2007_noblesse, "Letters of Love");

Я сам к этому склоняюсь могу и ошибатся 

super(3232, Q3232_LettersOfLove.class.getSimpleName(), "Letters of Love");

 

А втом мануале чета ненашол то что  сдесь  думаю 

 

Часто полезно определять имя квеста в переменной, в начале скрипта (обычно используется "qn").Добавляем переменную названия квеста в секции описания переменных:

qn = "2007_noblesse"

Эту переменную можно использовать в различных проверках на состояние квеста, а также в секции описания инициализации самого квеста в окончании вашего скрипта, для того, что бы инициализировать ваш квест и зарегистрировать его в игровом сервере, в самом низу вашего скрипта, вы должны дописать:

QUEST   = Quest(2007,qn,"custom")

Изменено пользователем 2terege
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Покажи ошибку на что ругается .

Начинает ругаться на это :

Error on: D:\Server\L2jServer\Complete\game\data\scripts\quests\Q99000_StartHumanFighter\Q99000_StartHumanFighter.java.error.log
Line: -1 - Column: -1

no main method in quests.Q99000_StartHumanFighter.Q99000_StartHumanFighter

И сам квест перестает работать.

 

Это вот с таким вот кодом :

	public Q99000_StartHumanFighter()
	{
		super(99000, Q99000_StartHumanFighter.class.getSimpleName(), "Start Human Fighter");
		addStartNpc(GID);
		addTalkId(GID);
		addKillId(MOBS);
		registerQuestItems(GREMLIN_CLAW);
	}
Изменено пользователем Nice

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Начинает ругаться на это :

Error on: D:\Server\L2jServer\Complete\game\data\scripts\quests\Q99000_StartHumanFighter\Q99000_StartHumanFighter.java.error.log
Line: -1 - Column: -1

no main method in quests.Q99000_StartHumanFighter.Q99000_StartHumanFighter

И сам квест перестает работать.

99000 вот его  id  попробуй.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

qn = "2007_noblesse"

 
 

 

super(2007, 2007_noblesse, "Letters of Love");

Я сам к этому склоняюсь могу и ошибатся 

super(3232, Q3232_LettersOfLove.class.getSimpleName(), "Letters of Love");

 

А втом мануале чета ненашол то что  сдесь  думаю 

 

Часто полезно определять имя квеста в переменной, в начале скрипта (обычно используется "qn").Добавляем переменную названия квеста в секции описания переменных:

qn = "2007_noblesse"

Эту переменную можно использовать в различных проверках на состояние квеста, а также в секции описания инициализации самого квеста в окончании вашего скрипта, для того, что бы инициализировать ваш квест и зарегистрировать его в игровом сервере, в самом низу вашего скрипта, вы должны дописать:

QUEST   = Quest(2007,qn,"custom")

Вы L2jserver ковыряли? тут квесты немного по другому написаны :(

/*
 * Copyright (C) 2004-2014 L2J DataPack
 * 
 * This file is part of L2J DataPack.
 * 
 * L2J DataPack is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * L2J DataPack is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
package quests.Q99000_StartHumanFighter;

import quests.Q00126_TheNameOfEvil2.Q00126_TheNameOfEvil2;

import com.l2jserver.gameserver.enums.QuestSound;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.model.quest.QuestState;
import com.l2jserver.gameserver.model.quest.State;

/**
 * Start Human Fighter! (99000)
 * @author Nice^^
 */
public class Q99000_StartHumanFighter extends Quest
{
	// NPC
	private static final int GID = 50000;
	// Items
	public static final int GREMLIN_CLAW = 22600;
	public static final int FALCHION = 68;
	
	public static int[] MOBS =
	{
		18342, // Gremlin
	};
	
	public Q99000_StartHumanFighter()
	{
		super(99000, Q99000_StartHumanFighter.class.getSimpleName(), "Start Human Fighter");
		addStartNpc(GID);
		addTalkId(GID);
		addKillId(MOBS);
		registerQuestItems(GREMLIN_CLAW);
	}
	
	@Override
	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
	{
		QuestState st = player.getQuestState(getName());
		if (st == null)
		{
			return getNoQuestMsg(player);
		}
		
		switch (event)
		{
			case "50000-1.html":
				st.startQuest();
				break;
			case "50000-2a.html":
				if (st.getQuestItemsCount(GREMLIN_CLAW) >= 20)
				{
					st.addExpAndSp(30000, 3000);
					st.giveItems(FALCHION, 1);
					st.giveAdena(50000, true);
					st.exitQuest(false, true);
				}
				break;
		}
		return event;
	}
	
	@Override
	public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon)
	{
		final L2PcInstance partyMember = getRandomPartyMember(player, 1);
		if (partyMember != null)
		{
			final QuestState st = partyMember.getQuestState(getName());
			if (st != null)
			{
				st.giveItems(GREMLIN_CLAW, 1);
				if (st.getQuestItemsCount(GREMLIN_CLAW) < 20)
				{
					st.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
				}
				else
				{
					st.setCond(2, true);
				}
			}
		}
		return super.onKill(npc, player, isSummon);
	}
	
	@Override
	public String onTalk(L2Npc npc, L2PcInstance player)
	{
		String htmltext = getNoQuestMsg(player);
		QuestState st = player.getQuestState(getName());
		if (st == null)
		{
			return htmltext;
		}
		
		switch (st.getState())
		{
			case State.CREATED:
				if (player.getLevel() < 1)
				{
					htmltext = "50000-0.htm";
				}
				else
				{
					st = player.getQuestState(Q00126_TheNameOfEvil2.class.getSimpleName());
					htmltext = ((st != null) && st.isCompleted()) ? "50000-0a.htm" : "50000-0b.htm";
				}
				break;
			case State.STARTED:
				htmltext = (st.isCond(1)) ? "50000-1a.html" : "50000-2.html";
				break;
		}
		return htmltext;
	}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Вы L2jserver ковыряли? тут квесты немного по другому написаны :(

 

 

А терь давай так посмотри 

такой    *.py    а твой  *.java 

 

 

В  *.py  идет так 

 

 def __init__(self, id, name, descr):
     JQuest.__init__(self, id, name, descr)
 
 
 
в *.java  идет так 
 
 
public Q005_MinersFavor(int questId, String name, String descr)
{
super(questId, name, descr);
,,,,,,,,,,,,,,,,,,,,,,,
}
  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

А терь давай так посмотри 

такой    *.py    а твой  *.java 

 

 

В  *.py  идет так 

 

 def __init__(self, id, name, descr):
     JQuest.__init__(self, id, name, descr)
 
 
 
в *.java  идет так 
 
 
public Q005_MinersFavor(int questId, String name, String descr)
{
super(questId, name, descr);
,,,,,,,,,,,,,,,,,,,,,,,
}

 

Да, именно так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, именно так.

 Ладно те я выше показал примерно как думаю.Если не получится пиши в скайп.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что квест у меня работает нормально и выдает нужную награду (все как задумано). Но с другим ID

С моим ID, квест перестает работать вовсе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело в том, что квест у меня работает нормально и выдает нужную награду (все как задумано). Но с другим ID

С моим ID, квест перестает работать вовсе.

Отпиши в скайп  1 сделаю  может поможет 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отпиши в скайп  1 сделаю  может поможет 

Спасибо, помог :)

 

Темку можно /close

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...