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

Свиток Self Resurrection - думаем

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

Всем привет,
ну из названия темы я думаю все понятно.
1 мысля.

создать итем-баф с пером (слишком просто и не удобно) 

нужно использовать пока живой, занимает 1 баф слот.

2 мысля.

сам итем с хендлером в ядре, но с моими знаниями тут мне будет нужна помощь.

3 мысля.

пасивний скилл, с кодом аля,

иф чаректер из дед, чек инвентору фор а итем "свиток восрещения" 
иф труе
         "свиток воскрешения" -1
          делей 5 сек
         рес перса.
иф фалсе
енд.

ну тут суть я понял но без учебника не напишу)


какой из вариатов будет лучше всего??

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

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


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

жЫвой блять! через Ы

ну не по сути конечно, но я учту (сорян за орфографию Русский не учил)

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


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

Какой толк то от этого всего?

Я бы сказал что 1 вариант самый гуманный для l2.

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


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

ну ета затея для евента. вариант со скилом мне кажется оч харош. его можно прикрутить к зоне. 
например:

если перс умер в зоне действия скила то проверять инвентарь на свиток, если таковой есть, то воскрешаем перса, если нету то "ту виладж".

может у когото есть идеи лучше, буду рад.

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


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

По такому типу как на твт ты имеешь в виду?

Просто никто не понимает сути эвента из-за этого не уверен что кто-то что-то скажет

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


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

ну тут в принцыпе суть евента не важна. основную задачу я написал.
нужно создать скил(который я пожже примотаю к зоне)

если ктото погиб в етой зоне, его инвентарь проверяется на итем, если таковой есть, то через 5 сек воскрешает перса и забирает итем, если нету то по стандарту "ту виладж"

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


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

Всем привет,

ну из названия темы я думаю все понятно.

1 мысля.

создать итем-баф с пером (слишком просто и не удобно) 

нужно использовать пока живой, занимает 1 баф слот.

2 мысля.

сам итем с хендлером в ядре, но с моими знаниями тут мне будет нужна помощь.

3 мысля.

пасивний скилл, с кодом аля,

иф чаректер из дед, чек инвентору фор а итем "свиток восрещения" 
иф труе
         "свиток воскрешения" -1
          делей 5 сек
         рес перса.
иф фалсе
енд.
ну тут суть я понял но без учебника не напишу)

 

 

какой из вариатов будет лучше всего??

 

Делаем итем, который при двойном клике дает бафф. Сам пример бафа можно взять с пера. 

 

Немного примера скрипта 

package items;

import javolution.util.FastMap;

import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.cache.Static;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance;
import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUser;
import scripts.items.ItemHandler;
import scripts.items.IItemHandler;

public class DonateScrolls implements IItemHandler
{
	private final static FastMap<Integer, Integer[]> SCROLLS = new FastMap<Integer, Integer[]>().shared("DonateScrolls.SCROLLS");
	private static int[] ITEM_IDS = null;
	
	public DonateScrolls()
	{
		/**шаблон
		**SCROLLS.put(итем_ид, new Integer[] { ид_баффа, уровень_баффа, ид_скилла_анимации, продолжительность_анимации(мс.)), кушать_скролл(1 да, 0 нет)) });
		**/
		SCROLLS.put(0, new Integer[] { 0, 1, 0, 1, 1 });
		SCROLLS.put(0, new Integer[] { 0, 1, 0, 1, 1 });
		SCROLLS.put(0, new Integer[] { 0, 1, 0, 1, 1 });

		//
		Integer[] tmp_ids = (Integer[]) SCROLLS.keySet().toArray(new Integer[SCROLLS.size()]);
		ITEM_IDS = toIntArray(tmp_ids);
		tmp_ids = null;
		ItemHandler.getInstance().registerItemHandler(this);
	}

	public static void main (String... arguments )
	{
		new DonateScrolls();
	}

	public void useItem(L2PlayableInstance playable, L2ItemInstance item)
   	{
		if (!playable.isPlayer())
			return;

		L2PcInstance player = (L2PcInstance) playable;
		if (player.isAllSkillsDisabled())
		{
			player.sendActionFailed();
			return;
		}

		if (player.isInOlympiadMode())
		{
			player.sendPacket(Static.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
			player.sendActionFailed();
			return;
		}

		Integer[] data = SCROLLS.get(item.getItemId());
		if(data != null)
		{
			player.stopSkillEffects(data[0]);
			SkillTable.getInstance().getInfo(data[0], data[1]).getEffects(player, player);
			player.broadcastPacket(new MagicSkillUser(player, player, data[2], 1, data[3], 0));
			if (data[4] == 1)
				player.destroyItem("Consume", item.getObjectId(), 1, null, false);
		}
   	}

	private int[] toIntArray(Integer[] arr)
	{
		int[] ret = new int[arr.length];
		int i = 0;
		for (Integer e : arr)  
			ret[i++] = e.intValue();
		return ret;
	}

	public int[] getItemIds()
	{
		return ITEM_IDS;
	}
}

  • Upvote 1

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


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

а можно просто листенер на смерть заюзать (если сборкой поддерживается) и там выдавать запрос на воскрешение

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


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

 

Делаем итем, который при двойном клике дает бафф. Сам пример бафа можно взять с пера. 

 

Немного примера скрипта 

package items;

import javolution.util.FastMap;

import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.cache.Static;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance;
import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUser;
import scripts.items.ItemHandler;
import scripts.items.IItemHandler;

public class DonateScrolls implements IItemHandler
{
	private final static FastMap<Integer, Integer[]> SCROLLS = new FastMap<Integer, Integer[]>().shared("DonateScrolls.SCROLLS");
	private static int[] ITEM_IDS = null;
	
	public DonateScrolls()
	{
		/**шаблон
		**SCROLLS.put(итем_ид, new Integer[] { ид_баффа, уровень_баффа, ид_скилла_анимации, продолжительность_анимации(мс.)), кушать_скролл(1 да, 0 нет)) });
		**/
		SCROLLS.put(0, new Integer[] { 0, 1, 0, 1, 1 });
		SCROLLS.put(0, new Integer[] { 0, 1, 0, 1, 1 });
		SCROLLS.put(0, new Integer[] { 0, 1, 0, 1, 1 });

		//
		Integer[] tmp_ids = (Integer[]) SCROLLS.keySet().toArray(new Integer[SCROLLS.size()]);
		ITEM_IDS = toIntArray(tmp_ids);
		tmp_ids = null;
		ItemHandler.getInstance().registerItemHandler(this);
	}

	public static void main (String... arguments )
	{
		new DonateScrolls();
	}

	public void useItem(L2PlayableInstance playable, L2ItemInstance item)
   	{
		if (!playable.isPlayer())
			return;

		L2PcInstance player = (L2PcInstance) playable;
		if (player.isAllSkillsDisabled())
		{
			player.sendActionFailed();
			return;
		}

		if (player.isInOlympiadMode())
		{
			player.sendPacket(Static.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT);
			player.sendActionFailed();
			return;
		}

		Integer[] data = SCROLLS.get(item.getItemId());
		if(data != null)
		{
			player.stopSkillEffects(data[0]);
			SkillTable.getInstance().getInfo(data[0], data[1]).getEffects(player, player);
			player.broadcastPacket(new MagicSkillUser(player, player, data[2], 1, data[3], 0));
			if (data[4] == 1)
				player.destroyItem("Consume", item.getObjectId(), 1, null, false);
		}
   	}

	private int[] toIntArray(Integer[] arr)
	{
		int[] ret = new int[arr.length];
		int i = 0;
		for (Integer e : arr)  
			ret[i++] = e.intValue();
		return ret;
	}

	public int[] getItemIds()
	{
		return ITEM_IDS;
	}
}

Зачем крутить Колин скрипт, если можно попросту присвоить сальву обычному свитку?

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


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

Всем привет,

ну из названия темы я думаю все понятно.

1 мысля.

создать итем-баф с пером (слишком просто и не удобно) 

нужно использовать пока живой, занимает 1 баф слот.

2 мысля.

сам итем с хендлером в ядре, но с моими знаниями тут мне будет нужна помощь.

3 мысля.

пасивний скилл, с кодом аля,

иф чаректер из дед, чек инвентору фор а итем "свиток восрещения" 
иф труе
         "свиток воскрешения" -1
          делей 5 сек
         рес перса.
иф фалсе
енд.

ну тут суть я понял но без учебника не напишу)

 

 

какой из вариатов будет лучше всего??

если будете юзать первый вариант - не забудьте проверить перса на согласие резурекшена.

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


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

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

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

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

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

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

Войти

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

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

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

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

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