• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

Набор эвентов (HF, Phoenix) 2016-06-16

Нет прав для скачивания

Gaikotsu

яжпрограммист
Легенда
Победитель в номинации 2023
Победитель в номинации 2022
Победитель в номинации 2021
Участник Новогоднего Фонда 2021
Эксперт
Знаток
Просветитель
Магистр реакций
Знаток письма
Куратор Данных
Медаль Благодарности
Старожил II степени
Старожил I степени
Победитель в номинации 2020
Победитель в номинации 2019
Клиент разработчик
Преподаватель
За веру и верность форуму
Победитель в номинации 2018
Медаль за активность на Форуме
За заслуги перед форумом
Web разработчик
Разработчик
За знание датапака
За знание ядра
Сообщения
1 518
Розыгрыши
0
Решения
24
Репутация
6 004
Реакции
2 575
Баллы
2 188
Пользователь Gaikotsu разместил новый ресурс:

Набор эвентов (HF, Phoenix) - Набор эвентов для сборок на основе Phoenix

Набор эвентов, которые я когда-то писал или адаптировал к нашей старой сборке HF, на основе Phoenix'а.
Особой ценности в наше время уже не имеет, да и написано было это все довольно страшненько, но может кто чего и почерпнет из имеющегося.

Список эвентов в архиве:
  • April Fool's Day
  • Celebration of Weavers
  • Change of Heart
  • Christmas
  • Coffer of Shadows
  • Fall Harvest
  • Great Mouse Hunt
  • Halloween
  • L2 Day
  • L2 Medal Collection
  • Lovers' Jubilee
  • Master of Enchanting...

Узнать больше об этом ресурсе...
 

Ну и чисто прикола ради, сравнение старой реализации одного из эвентов и текущей реализации его же :D

старое:
Код:
package events.PlayingWithFire;

import events.EventFunctions;
import events.EventInstance;
import l2p.gameserver.model.L2Character;
import l2p.gameserver.model.L2Player;
import l2p.gameserver.model.instances.L2NpcInstance;

public class PlayingWithFire extends EventInstance
{
	private static final int StarShard = 6403;
	private static final int Gunpowder = 6404;
	private static final int Magnesium = 6405;
	private static final int Firework = 6406;
	private static final int LargeFirework = 6407;

	private static PlayingWithFire _instance;

	public static PlayingWithFire getInstance()
	{
		if (_instance == null)
			_instance = new PlayingWithFire();

		return _instance;
	}

	public void setConfig()
	{
		// Название эвента (первая строка - название для вывода в разных сообщениях, вторая строка - название для сохранения в базу )
		eventName = new String[] { "Playing With Fire", "PlayingWithFire" };
		// Предметы, падающие из мобов (ид предмета, шанс [10000 = 1%])
		eventDrop = new int[][] {
			{ StarShard, 30000 },
			{ Gunpowder, 30000 },
			{ Magnesium, 5000 } };
		// Эвент менеджер
		eventManager = new int[] { 31774 }; // Beryl the Cat
	}

	public void startEvent()
	{
		getInstance().startEvent((L2Player) getSelf());
	}

	public void stopEvent()
	{
		getInstance().stopEvent((L2Player) getSelf());
	}

	public void changeState(Boolean state)
	{
		getInstance().changeState(state, true);
	}

	public void onLoad()
	{
		getInstance().setConfig();
		getInstance().loadEvent();
	}

	public void onReload()
	{
		getInstance().reloadEvent();
	}

	public void onShutdown()
	{
		getInstance().shutdownEvent();
	}

	public void OnPlayerEnter(L2Player player)
	{
		getInstance().onPlayerEnter(player);
	}

	public void OnDie(L2Character mob, L2Character killer)
	{
		getInstance().onDie(mob, killer);
	}

	public void makeFirework(String[] param)
	{
		L2Player player = (L2Player) getSelf();
		L2NpcInstance npc = getNpc();

		if (player == null || npc == null || EventFunctions.checkInventory(player, 2))
			return;

		try
		{
			int type = Integer.valueOf(param[0]);

			if (type == 0)
			{
				if (getItemCount(player, StarShard) < 2 || getItemCount(player, Gunpowder) < 2)
				{
					npc.showChatWindow(player, 3);
					return;
				}

				removeItem(player, StarShard, 2);
				removeItem(player, Gunpowder, 2);
				addItem(player, Firework, 1);
			}
			else if (type == 1)
			{
				if (getItemCount(player, StarShard) < 4 || getItemCount(player, Gunpowder) < 4 || getItemCount(player, Magnesium) < 1)
				{
					npc.showChatWindow(player, 3);
					return;
				}

				removeItem(player, StarShard, 4);
				removeItem(player, Gunpowder, 4);
				removeItem(player, Magnesium, 1);
				addItem(player, LargeFirework, 1);
			}

			npc.showChatWindow(player, 2);
		}
		catch (Exception e)
		{}
	}
}

текущее:
Код:
package events.PlayingWithFire;

import l2p.gameserver.model.Player;
import l2p.gameserver.model.instances.NpcInstance;
import l2p.gameserver.utils.ItemUtils;
import l2p.gameserver.utils.Util;
import events.base.instances.FunEventInstance;

public class PlayingWithFire extends FunEventInstance
{
	private static final int StarShard = 6403;
	private static final int Gunpowder = 6404;
	private static final int Magnesium = 6405;
	private static final int Firework = 6406;
	private static final int LargeFirework = 6407;

	public PlayingWithFire()
	{
		super("Playing With Fire", "Игра с огнем", "event_playing_with_fire");

		setDropType(DropType.ALL);
		addItem(StarShard, 8.0);
		addItem(Gunpowder, 8.0);
		addItem(Magnesium, 2.0);
		addCommand("makeFirework");
	}

	public static PlayingWithFire getInstance()
	{
		return SingletonHolder._instance;
	}

	@Override
	public void onLoad()
	{
		getInstance().onLoad(true);
	}

	@Override
	public void onBypassFeedback(NpcInstance npc, Player player, String command, String[] params)
	{
		if (!ItemUtils.checkInventory(player, 1))
			return;

		int type = Util.parseValue(params[1], -1);

		if (type == 0)
		{
			if (ItemUtils.getItemCount(player, StarShard) < 2 || ItemUtils.getItemCount(player, Gunpowder) < 2)
			{
				npc.showChatWindow(player, 3);
				return;
			}

			ItemUtils.removeItem(player, StarShard, 2, true);
			ItemUtils.removeItem(player, Gunpowder, 2, true);
			ItemUtils.addItem(player, Firework, 1, true);
		}
		else if (type == 1)
		{
			if (ItemUtils.getItemCount(player, StarShard) < 4 || ItemUtils.getItemCount(player, Gunpowder) < 4 || ItemUtils.getItemCount(player, Magnesium) < 1)
			{
				npc.showChatWindow(player, 3);
				return;
			}

			ItemUtils.removeItem(player, StarShard, 4, true);
			ItemUtils.removeItem(player, Gunpowder, 4, true);
			ItemUtils.removeItem(player, Magnesium, 1, true);
			ItemUtils.addItem(player, LargeFirework, 1, true);
		}
		else
			return;

		npc.showChatWindow(player, 2);
	}

	private static class SingletonHolder
	{
		private static final PlayingWithFire _instance = new PlayingWithFire();
	}
}
 
  • Мне нравится
Реакции: Fuko и FirstBlood

    Mangol

    Баллов: 25
    Без комментариев

    kick

    Баллов: 30
    За сообщение
Ну, и что бывает когда "немножко" увлечься с реализацией эвентов для сервера :D
full
 
Да в остальном она типичная оверовская.
Это управление эвентами у меня переписано и генерится диалог на лету, так сказать.
Эвенты при загрузке серва регистрируются в отдельном холдере, ну и в админке идет взаимодействие с этим холдером - составление списка эвентов, показ их текущего статуса, управление и все такое.
 
Да в остальном она типичная оверовская.
Это управление эвентами у меня переписано и генерится диалог на лету, так сказать.
Эвенты при загрузке серва регистрируются в отдельном холдере, ну и в админке идет взаимодействие с этим холдером - составление списка эвентов, показ их текущего статуса, управление и все такое.
а что в дроп настройках?
 
это переключатель режима работы эвента - автоматически показывается у эвентов с имеющимся эвентовым дропом.
у меня ща в бд статус эвента хранится не как on/off, а как числовое значение.
0 или записи нет - эвент отключен.
1 - эвент работает, есть эвентовые нпс, есть дроп эвентовых предметов.
2 - эвент работает, есть эвентовые нпс, нет дропа эвентовых предметов.
ну и кнопка переключает между значениями 1 и 2.

вобщем чтобы проводить эвенты как на оффе - скажем эвент длится 2 недели, предметы падают только первую неделю, а во вторую эвентовый нпс просто дообменивает эти предметы.
 
это переключатель режима работы эвента - автоматически показывается у эвентов с имеющимся эвентовым дропом.
у меня ща в бд статус эвента хранится не как on/off, а как числовое значение.
0 или записи нет - эвент отключен.
1 - эвент работает, есть эвентовые нпс, есть дроп эвентовых предметов.
2 - эвент работает, есть эвентовые нпс, нет дропа эвентовых предметов.
ну и кнопка переключает между значениями 1 и 2.

вобщем чтобы проводить эвенты как на оффе - скажем эвент длится 2 недели, предметы падают только первую неделю, а во вторую эвентовый нпс просто дообменивает эти предметы.
классно очень удобно)
 
где ты столько ивентов взял)
 

+ на форуме руоффа в новостях тоже подробности о проводимых эвентах пишут.
+ часть эвентов самопальные.
 
  • Мне нравится
Реакции: kick

    kick

    Баллов: 30
    За сообщение
Назад
Сверху Снизу