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

Окно HTML по достижению определенного уровня.

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

Добрый день не подскажете код, что-бы на определеном уровне вылазила хтмлка.

 

Искал пример подсказки с профами на 18 уровне, с квестом на дракончик на 15, но увы не нашел.

 

Буду благодарен. Сборка aCis

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

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


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

Добрый день не подскажете код, что-бы на определеном уровне вылазила хтмлка.

 

Искал пример подсказки с профами на 18 уровне, с квестом на дракончик на 15, но увы не нашел.

 

Буду благодарен. Сборка aCis

package net.sf.l2j.gameserver.model.actor.stat; class PcStat метод addLevel(byte value)

  • Upvote 1

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


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

package net.sf.l2j.gameserver.model.actor.stat; class PcStat метод addLevel(byte value)

код я нашел спасибо, но не вижу вывода хтмл, как я понимаю они в тотуриал а она отключена в конфигах т.к на гве она не нужна=(

	@Override
	public final boolean addLevel(byte value)
	{
		if (getLevel() + value > Experience.MAX_LEVEL - 1)
			return false;
		
		boolean levelIncreased = super.addLevel(value);
		
		if (levelIncreased)
		{
			if (!Config.DISABLE_TUTORIAL)
			{
				QuestState qs = getActiveChar().getQuestState("Tutorial");
				if (qs != null)
					qs.getQuest().notifyEvent("CE40", null, getActiveChar());
			}
			
			getActiveChar().setCurrentCp(getMaxCp());
			getActiveChar().broadcastPacket(new SocialAction(getActiveChar(), 15));
			getActiveChar().sendPacket(SystemMessageId.YOU_INCREASED_YOUR_LEVEL);
		}
		
		getActiveChar().rewardSkills(); // Give Expertise skill of this level
		if (getActiveChar().getClan() != null)
		{
			getActiveChar().getClan().updateClanMember(getActiveChar());
			getActiveChar().getClan().broadcastToOnlineMembers(new PledgeShowMemberListUpdate(getActiveChar()));
		}
		
		if (getActiveChar().isInParty())
			getActiveChar().getParty().recalculatePartyLevel(); // Recalculate the party level
			
		StatusUpdate su = new StatusUpdate(getActiveChar());
		su.addAttribute(StatusUpdate.LEVEL, getLevel());
		su.addAttribute(StatusUpdate.MAX_CP, getMaxCp());
		su.addAttribute(StatusUpdate.MAX_HP, getMaxHp());
		su.addAttribute(StatusUpdate.MAX_MP, getMaxMp());
		getActiveChar().sendPacket(su);
		
		// Update the overloaded status of the L2PcInstance
		getActiveChar().refreshOverloaded();
		// Update the expertise status of the L2PcInstance
		getActiveChar().refreshExpertisePenalty();
		// Send UserInfo to the L2PcInstance
		getActiveChar().sendPacket(new UserInfo(getActiveChar()));
		
		return levelIncreased;
	}

буду шаманить. еще раз спасибо.

 

Можно еще перелопатить тотуриал под гве.

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

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


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

код я нашел спасибо, но не вижу вывода хтмл, как я понимаю они в тотуриал а она отключена в конфигах т.к на гве она не нужна=(


буду шаманить. еще раз спасибо.

 

Можно еще перелопатить тотуриал под гве.

 
QuestState qs = getActiveChar().getQuestState("НАЗВАНИЕ_СКРИПТА_КВЕСТ");
if (qs != null)
{
qs.getQuest().notifyEvent("НАЗВАНИЕ_СОБЫТИЯ", null, getActiveChar());
}
 
или же
 
QuestManager.getInstance().getQuest("НАЗВАНИЕ_СКРИПТА_КВЕСТА").notifyEvent("ЛВЛ_УП", null, getActiveChar()); 
 
где в скрипте
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
    if(event.equalsIgnoreCase("ЛВЛ_УП"))
    {
      int lvl = player.getLevel();

     ну а там что угодно

    }
}

 

думаю понятно.

 

в блок if (levelIncreased)

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

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


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

 

 
QuestState qs = getActiveChar().getQuestState("НАЗВАНИЕ_СКРИПТА_КВЕСТ");
if (qs != null)
{
qs.getQuest().notifyEvent("НАЗВАНИЕ_СОБЫТИЯ", null, getActiveChar());
}
 
или же
 
QuestManager.getInstance().getQuest("НАЗВАНИЕ_СКРИПТА_КВЕСТА").notifyEvent("ЛВЛ_УП", null, getActiveChar()); 
 
где в скрипте
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
    if(event.equalsIgnoreCase("ЛВЛ_УП"))
    {
      int lvl = player.getLevel();

     ну а там что угодно

    }
}

 

думаю понятно.

 

в блок if (levelIncreased)

 

Честно не могу в курить.

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


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

Честно не могу в курить.

Вам ничего не мешает сделать свой кв который будет обрабатывать событие при получении уровня. Правда окошко с html будет другое так-как не используется showTutorialHTML.

 

1е создать кв с обработкой нужного события.

package net.sf.l2j.gameserver.scripting.quests;

import net.sf.l2j.gameserver.model.actor.L2Npc;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.scripting.Quest;
import net.sf.l2j.gameserver.scripting.QuestState;

public SomeQuest extends Quest
{
	public static final String qn = "SomeQuest";
	
	public SomeQuest()
	{
		super(-1, "custom");
	}
	
	@Override
	public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
	{
		QuestState st = player.getQuestState(qn);
		
		if (event.startsWith("LvlUP"))
		{
			switch (player.getLevel())
			{
				case 1: return "1.htm";
				case 2: return "2.htm";
				case 3: return "3.htm";
			}
		}
		
		return null;
	}
}

 

 

2е стартовать его для кождого игрока при создании персонажа.

package net.sf.l2j.gameserver.network.clientpackets;

/* Code */
import net.sf.l2j.gameserver.scripting.Quest;
import net.sf.l2j.gameserver.scripting.ScriptManager;
/* Code */

@SuppressWarnings("unused")
public final class CharacterCreate extends L2GameClientPacket
{
	/* Code */
	@Override
	protected void runImpl()
	{
		/* Code */
		if (newChar.getQuestState("SomeQuest") == null)
		{
			Quest q = ScriptManager.getInstance().getQuest("SomeQuest");
			if (q != null)
				q.newQuestState(newChar).setState(Quest.STATE_STARTED);
		}
		/* Code */
	}
}

 

 

3е уведомить кв о происхождении события при получении уровня.

package net.sf.l2j.gameserver.model.actor.stat;

/* Code */
import net.sf.l2j.gameserver.scripting.QuestState;
/* Code */

public class PcStat extends PlayableStat
{
	/* Code */
	@Override
	public final boolean addLevel(byte value)
	{
		/* Code */
		if (levelIncreased)
		{
			/* Code */
			QuestState qs = getActiveChar().getQuestState("SomeQuest");
			if (qs != null)
				qs.getQuest().notifyEvent("LvlUP", null, getActiveChar());
			/* Code */
		}
	}
}

 

 

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


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

Честно не могу в курить.

6 пост вам описали более подробно.

 

Добавлю: данное уведомление создает сбитые и отправляет в  указанный скрипт который должен быть унаследован от Quest. и переопределен метод onEvent

и тогда отпадает обязательное создание квеста игроку.

QuestManager.getInstance().getQuest("НАЗВАНИЕ_СКРИПТА_КВЕСТА").notifyEvent("СОБЫТИИИИИИИИИИИИИИ", null, getActiveChar()); 

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


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

Если есть сурс, то зачем нужны эти махинации со скриптами?

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


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

Если есть сурс, то зачем нужны эти махинации со скриптами?

Сурс имеется, просто не могу в курить что куда вставлять. хоть убей.

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


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

А что, в этом вашем акисе нет таких банальных вещей как листенеры на изменение уровня?

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


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

А что, в этом вашем акисе нет таких банальных вещей как листенеры на изменение уровня?

Нет там такого))). Да и на ИЛ это не особо нужно так-как нигде кроме туториала не используется.

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


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

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

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

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

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

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

Войти

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

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

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

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

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