СОздание эффекта (скилла) - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 12.10.2010, 22:58   #1
Изгнанные

Автор темы (Топик Стартер) СОздание эффекта (скилла)

В ядре не хватает эффекта МПХП хила и я решил его добавить, в общем написал сам метод но как его "прикрутить" не знаю..

Работает 100%, так как проверял заменой метода Heal на мой и скиллы делали все как положено, но как только выношу свой метод в отдельный файл ну скажем HPMPHEAL.java (в тот же пак где и файл Heal.java), датапак игнорирует его(
wagan вне форума Ответить с цитированием
Непрочитано 13.10.2010, 07:50   #2
Аватар для gorodetskiy
Олдфаг

По умолчанию Re: СОздание эффекта (скилла)

Драсте приехали .... эффект добавляется в ядро а не ДатаПак
__________________
СЕО Оптимизация сайтов
gorodetskiy вне форума Ответить с цитированием
Непрочитано 13.10.2010, 08:12   #3
Аватар для DarkGod
Пользователь

По умолчанию Re: СОздание эффекта (скилла)

Цитата:
Сообщение от gorodetskiy Посмотреть сообщение
Драсте приехали .... эффект добавляется в ядро а не ДатаПак
А где написано, что файл добавляется в "ДатаПак"? Читайте внимательно тему...
DarkGod вне форума Ответить с цитированием
Непрочитано 13.10.2010, 08:43   #4
Аватар для gorodetskiy
Олдфаг

По умолчанию Re: СОздание эффекта (скилла)

Цитата:
Сообщение от DarkGod Посмотреть сообщение
А где написано, что файл добавляется в "ДатаПак"? Читайте внимательно тему...
Цитата:
Сообщение от wagan Посмотреть сообщение
датапак игнорирует его(
Цитата:
Сообщение от wagan Посмотреть сообщение
В ядре не хватает эффекта МПХП хила и я решил его добавить, в общем написал сам метод но как его "прикрутить" не знаю..

Работает 100%, так как проверял заменой метода Heal на мой и скиллы делали все как положено, но как только выношу свой метод в отдельный файл ну скажем HPMPHEAL.java (в тот же пак где и файл Heal.java), датапак игнорирует его(
Ещё раз процитирую, немного поясню ... Если добавляешь какой то эффект, то прописывай в ядре в эффекты, ну и соответственно в импрорты

а вообще скилы можно делать типом BUFF , проще всего
__________________
СЕО Оптимизация сайтов
gorodetskiy вне форума Ответить с цитированием
Непрочитано 13.10.2010, 18:36   #5
Изгнанные

Автор темы (Топик Стартер) Re: СОздание эффекта (скилла)

С датапаком я имел ввиду, что когда вписываю скиллу свой эффект, он игнорируется. В ядре всё сделано, нужно только заставить "работать" скрипт, то есть засунуть в импорты. Вот только где эти импорты?) Мне на другом форуме подсказали в файле scripts, но ведь там импорты из датапака?

Добавлено через 2 минуты
И, сорри, немного ошибся я именно тип скилла добавляю, а не эффект*

Мне просто нужно для корректной работы некоторых скиллов эффект мгновенного восстановления ХП и МП, а типом BUFF такого не добьешься.

Добавлено через 4 часа 1 минуту
Вот сам код:

Код:
package com.l2emu.gameserver.handler.skillhandlers;
import com.l2emu.gameserver.handler.ISkillHandler;
import com.l2emu.Config;
import com.l2emu.gameserver.handler.SkillHandler;
import com.l2emu.gameserver.model.L2ItemInstance;
import com.l2emu.gameserver.model.L2Object;
import com.l2emu.gameserver.model.L2Skill;
import com.l2emu.gameserver.model.actor.L2Character;
import com.l2emu.gameserver.model.actor.L2Summon;
import com.l2emu.gameserver.model.actor.instance.L2PcInstance;
import com.l2emu.gameserver.network.SystemMessageId;
import com.l2emu.gameserver.network.serverpackets.StatusUpdate;
import com.l2emu.gameserver.network.serverpackets.SystemMessage;
import com.l2emu.gameserver.skills.Stats;
import com.l2emu.gameserver.templates.skills.L2SkillType;
public class HPMPHEAL implements ISkillHandler
{
	private static final L2SkillType[] SKILL_IDS = { L2SkillType.HPMPHEAL_PERCENT };

	public void useSkill(L2Character activeChar, L2Skill skill, L2Object[] targets)
	{
		try
		{
			ISkillHandler handler = SkillHandler.getInstance().getSkillHandler(L2SkillType.BUFF);
			if (handler != null)
				handler.useSkill(activeChar, skill, targets);
		}
		catch (Exception e)
		{
		}
		L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
		L2PcInstance player = null;
		if (activeChar instanceof L2PcInstance)
			player = (L2PcInstance) activeChar;
		boolean clearSpiritShot = false;
		for (L2Object obj : targets)
		{
			if (!(obj instanceof L2Character))
				continue;
			L2Character target = (L2Character) obj;
			if (target == null || target.isDead())
				continue;	
			if (Config.DISABLE_HEALING_SKILLS && activeChar.isInsideZone(L2Character.ZONE_PEACE) && !target.isInsideZone(L2Character.ZONE_PEACE))
				continue;			
			if (target != activeChar)
			{
				if (target instanceof L2PcInstance && ((L2PcInstance) target).isCursedWeaponEquipped())
					continue;
				else if (player != null && player.isCursedWeaponEquipped())
					continue;
			}
			double hp = skill.getPower();	
			
			
			
			double power = skill.getPower();
			double mp = power;
				{if (skill.getSkillType() == L2SkillType.HPMPHEAL_PERCENT)
				{hp = target.getMaxHp() * hp / 100.0;
				mp = target.getMaxMp() * mp / 100.0;}
					else
				mp = (skill.getSkillType() == L2SkillType.HPMPHEAL_PERCENT) ? target.calcStat(Stats.RECHARGE_MP_RATE, mp, null, null) : mp;
			if (skill.getSkillType() == L2SkillType.HPMPHEAL_PERCENT)
			{
				if (mp > power * 1.7)
					mp = power * 1.7;
				int skilllvl = skill.getMagicLevel();
				if (skilllvl > 0)
				{
					int delta = target.getLevel() - skilllvl;
					if (delta > 15)
						mp = 0;
					else if (delta > 5)
                        mp = mp - mp*(delta-5)/10;
				}
				
				if ((target.getCurrentMp() + mp) >= target.getMaxMp())
					mp = target.getMaxMp() - target.getCurrentMp();
			}
			
			
			if (target.getFirstEffect(1509) != null && mp + target.getCurrentMp() > target.getMaxMp()*0.3)
				mp = target.getMaxMp()*0.3 - target.getCurrentMp();
			if (mp < 0)
				mp = 0;
			target.setCurrentMp(mp + target.getCurrentMp());
			StatusUpdate sump = new StatusUpdate(target.getObjectId());
			sump.addAttribute(StatusUpdate.CUR_MP, (int) target.getCurrentMp());
			target.sendPacket(sump);
			if (activeChar instanceof L2PcInstance && activeChar != target)
			{
				SystemMessage sm = new SystemMessage(SystemMessageId.S2_MP_RESTORED_BY_C1);
				sm.addString(activeChar.getName());
				sm.addNumber((int) mp);
				target.sendPacket(sm);
			}
			else
			{
				SystemMessage sm = new SystemMessage(SystemMessageId.S1_MP_RESTORED);
				sm.addNumber((int) mp);
				target.sendPacket(sm);
			}
		}
					
			if ((target.getCurrentHp() + hp) >= target.getMaxHp())
				hp = target.getMaxHp() - target.getCurrentHp();
			if (target.getFirstEffect(1509) != null && hp + target.getCurrentHp() > target.getMaxHp()*0.3)
				hp = target.getMaxHp()*0.3 - target.getCurrentHp();
			if (hp < 0)
				hp = 0;
			target.setCurrentHp(hp + target.getCurrentHp());
			StatusUpdate su = new StatusUpdate(target.getObjectId());
			su.addAttribute(StatusUpdate.CUR_HP, (int) target.getCurrentHp());
			target.sendPacket(su);
			if (target instanceof L2PcInstance)
			{
				if (skill.getId() == 4051)
				{
					SystemMessage sm = new SystemMessage(SystemMessageId.REJUVENATING_HP);
					target.sendPacket(sm);
				}
				else
				{
					if (activeChar instanceof L2PcInstance && activeChar != target)
					{
						SystemMessage sm = new SystemMessage(SystemMessageId.S2_HP_RESTORED_BY_C1);
						sm.addString(activeChar.getName());
						sm.addNumber((int) hp);
						target.sendPacket(sm);
					}
					else
					{
						SystemMessage sm = new SystemMessage(SystemMessageId.S1_HP_RESTORED);
						sm.addNumber((int) hp);
						target.sendPacket(sm);
					}
				}
			}
		}
		if (clearSpiritShot)
		{
			if (activeChar instanceof L2Summon)
			{
				L2Summon activeSummon = (L2Summon) activeChar;
				activeSummon.setChargedSpiritShot(L2ItemInstance.CHARGED_NONE);
			}
			else
			{
				if (weaponInst != null)
					weaponInst.setChargedSpiritshot(L2ItemInstance.CHARGED_NONE);
			}
		}
	}

	public L2SkillType[] getSkillIds()
	{
		return SKILL_IDS;
	}
}
Но если я заменяю им метод Heal, то все скиллы, которые лечат, заливают еще и мп. Может можно как то сделать так что бы остальные лили только ХП, а именно HPMPHEAL_PERCENT лил и мп и хп не создавая отдельный метод для него?

Последний раз редактировалось wagan; 13.10.2010 в 22:51. Причина: Добавлено сообщение
wagan вне форума Ответить с цитированием
Непрочитано 22.10.2010, 10:17   #6
Аватар для Magister

По умолчанию Re: СОздание эффекта (скилла)

Вот такой тип эффекта

Код:
<effect count="1" name="HealPercent" time="0" val="100" />
<effect count="1" name="ManaHealPercent" time="0" val="100" />
Восстанавливает сразу 100% HP и MP, данный эффект на примере работы на сборке феникс.
__________________
Magister вне форума Ответить с цитированием
Непрочитано 01.11.2010, 01:15   #7
Герой

По умолчанию Re: СОздание эффекта (скилла)

а сам скил тайп такой в ядре то прописан?акромя просто файлика нужно еще прописать скиллтайп
incognito вне форума Ответить с цитированием
Непрочитано 09.11.2010, 01:23   #8
Аватар для krisadr
Пользователь

По умолчанию Re: СОздание эффекта (скилла)

ну а реально где найти эти "импорты" в build.xml чтоли? если же я захочу что нить добавить как и где прописать чтобы сие чюдо скомпилилась?
krisadr вне форума Ответить с цитированием
Непрочитано 10.11.2010, 13:29   #9
Герой

По умолчанию Re: СОздание эффекта (скилла)

Цитата:
Сообщение от krisadr Посмотреть сообщение
ну а реально где найти эти "импорты" в build.xml чтоли? если же я захочу что нить добавить как и где прописать чтобы сие чюдо скомпилилась?
Не надо в блиде ничего искать... надо делать по аналогии с тем что есть.
Есть скиллтайп HEAL идем и ищем все, что с ним связано. и начинаем добавлять свой скиллтайп если он похож на HEAL
incognito вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мануал по созданию скилла (из аден в кол) ZaiMen Работа со скриптами 17 29.10.2012 17:32
Создание кубиков, фикс, изучение скилла, пвп дроп. Xantrax Lineage II 1 20.05.2010 23:02
Удаление скилла Дух системы Работа со скриптами 3 14.04.2010 11:06
Создание Скилла ilbuono Lineage II 3 31.01.2010 02:41
Вопрос по изучению скилла Auril Lineage II 0 29.07.2009 08:55


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 12:09. Часовой пояс GMT +3.

Вверх