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

Ёлки

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

Как сделать чтобы елки дропали предметы? Видел такое на некоторых серверах, хотелось бы узнать как реализиуется

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


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

Как сделать чтобы елки дропали предметы? Видел такое на некоторых серверах, хотелось бы узнать как реализиуется

 

В ядре наверное

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


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

Как сделать чтобы елки дропали предметы? Видел такое на некоторых серверах, хотелось бы узнать как реализиуется

И чтобы они при этом оставались нпс?

Как вариант просто думаю изменить тип ёлки, на монстра.

Это первое что в голову пришло :)

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

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


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

И чтобы они при этом оставались нпс?

Как вариант просто думаю изменить тип ёлки, на монстра.

Это первое что в голову пришло :)

нет, в прямом смысле, например поставил елку, и чтобы каждые 5 секунд они дропали с определенным шансом шмотку

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


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

нет, в прямом смысле, например поставил елку, и чтобы каждые 5 секунд они дропали с определенным шансом шмотку

Ну тогда нужен скрипт:)

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


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

чаще всего спавнятся эти елки отдельным хэндлером.

что мешает в нем запускать таск, который и будет это делать.

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


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

чаще всего спавнятся эти елки отдельным хэндлером.

что мешает в нем запускать таск, который и будет это делать.

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

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


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

ну я ж не знаю что у тебя за сборка

 

к примеру в сборках на основе феникса/овера елки спавнятся примерно так

package events.Christmas;

import handler.items.SimpleItemHandler;

import java.util.Calendar;

import l2p.gameserver.model.Player;
import l2p.gameserver.model.World;
import l2p.gameserver.model.Zone.ZoneType;
import l2p.gameserver.model.instances.NpcInstance;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.network.serverpackets.components.SystemMsg;
import l2p.gameserver.utils.NpcUtils;

public class ChristmasTree extends SimpleItemHandler
{
	private static int[] _itemIds = {
		5560, // Christmas Tree
		5561 }; // Special Christmas Tree

	private static int[] _npcIds = {
		13006, // Christmas Tree
		13007 }; // Special Christmas Tree

	private static final int _despawnTime = 10 * 60 * 1000; //10 min

	@Override
	protected boolean useItemImpl(Player player, ItemInstance item, boolean ctrl)
	{
		if (!player.checkNextActionUseTime("cristmasTree", 10000))
		{
			player.sendMessage("Нельзя ставить елки так часто.");
			return false;
		}

		if (player.isInZone(ZoneType.offshore))
		{
			player.sendMessage("Нельзя поставить елку в этом месте.");
			return false;
		}

		int month = Calendar.getInstance().get(Calendar.MONTH);

		if (month != Calendar.DECEMBER && month != Calendar.JANUARY && month != Calendar.FEBRUARY)
		{
			player.sendMessage("Сейчас не зима, призыв елок недоступен.");
			return false;
		}

		if (World.getAroundNpc(player, 100, 200).size() > 0)
		{
			player.sendPacket(SystemMsg.YOU_MAY_NOT_SUMMON_FROM_YOUR_CURRENT_LOCATION);
			return false;
		}

		int npcId = 0;
		int itemId = item.getItemId();

		for (int i = 0; i < _itemIds.length; i++)
			if (_itemIds[i] == itemId)
			{
				npcId = _npcIds[i];
				break;
			}

		if (npcId == 0)
			return false;

		if (!useItem(player, item, 1))
			return false;

		NpcInstance npc = NpcUtils.spawnSingle(npcId, player.getLoc(), player.getReflection(), player.isInPeaceZone() ? _despawnTime / 3 : _despawnTime);

		// АИ вешающее бафф регена устанавливается только для большой елки
		if (itemId == 5561)
		{
			npc.setAI(new ChristmasTreeAI(npc));
			npc.getAI().startAITask();
		}

		return true;
	}

	@Override
	public int[] getItemIds()
	{
		return _itemIds;
	}
}
вот собственно где-то в конце useItemImpl дополнительно запускать еще и таск и вперед

так же можно просто в AI елки, если ей задано оно отдельное, добавить нужный код в thinkActive, чтобы с нужным пеприодом делала вызов dropItem для нужного предмета.

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


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

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

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

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

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

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

Войти

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

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

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

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

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