Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Создание предмета со скиллом...
#1
Из имеющихся манулов есть только дабавление скилла в армор или персонажу.А мне надо чтобы использовался при нажатии на предмет и не нужно было надевать на себя,из инвентаря сразу.
Confusedpasibo:
Ответ
#2
Пишите айтемхандлер
Ответ
#3
дык необязательно. в том же фениксе если вещь неодеваемая, но имеет активный скилл, то скилл будет в списке скиллов персонажа, пока эта вещь в инвентаре.
Ответ
#4
Наводку дайте как сделать скилл в итем.Где-то в xml?В базе в таблице армор есть специальная графа,но работает только при надевании на себя.
В гугле ввёл и наткнулся на свою тему только...

Добавлено через 13 часов 17 минут
Код:
Index: /java/lt/equal/gameserver/network/clientpackets/AttackRequest.java
===================================================================
--- /java/lt/equal/gameserver/network/clientpackets/AttackRequest.java (revision 1)
+++ /java/lt/equal/gameserver/network/clientpackets/AttackRequest.java (revision 64)
@@ -68,4 +68,7 @@
     target.onAction(activeChar);
    }
+  //Invisible Character can't attack
+  if (activeChar.getAppearance().getInvisible() && !activeChar.isGM())
+   return;  
    else
    {
Index: /java/lt/equal/gameserver/handler/itemhandlers/InvisiblePotion.java
===================================================================
--- /java/lt/equal/gameserver/handler/itemhandlers/InvisiblePotion.java (revision 64)
+++ /java/lt/equal/gameserver/handler/itemhandlers/InvisiblePotion.java (revision 64)
@@ -0,0 +1,140 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package lt.equal.gameserver.handler.itemhandlers;
+
+import lt.equal.Config;
+import lt.equal.gameserver.ThreadPoolManager;
+import lt.equal.gameserver.handler.IItemHandler;
+import lt.equal.gameserver.model.L2ItemInstance;
+import lt.equal.gameserver.model.entity.CTF;
+import lt.equal.gameserver.model.actor.instance.L2PcInstance;
+import lt.equal.gameserver.model.actor.instance.L2PlayableInstance;
+import lt.equal.gameserver.network.serverpackets.ActionFailed;
+import lt.equal.gameserver.network.serverpackets.MagicSkillUser;
+
+/**
+ * @author `Аллигаторы®™
+ *
+ */
+
+public class InvisiblePotion implements IItemHandler
+{
+    private static final int[] ITEM_IDS =
+    { 9996 };
+  
+    private static final int INVISIBLE_POTION_SKILL = 3267;
+  
+    private static final int EFFECT_DURATION = 1200000; // 20 mins
+
+    public void useItem(L2PlayableInstance playable, L2ItemInstance item)
+    {
+  if (!(playable instanceof L2PcInstance))
+   return;
+  L2PcInstance activeChar = (L2PcInstance) playable;
+   if (activeChar.isHero())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.isConfused())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.isSilentMoving())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.isDead())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.isAlikeDead())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.isFestivalParticipant())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.isInFunEvent())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.inObserverMode())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.isInOlympiadMode())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.getPvpFlag() != 0)
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if (activeChar.isCastingNow())
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+   if ((activeChar._inEventCTF && CTF._started && !Config.CTF_ALLOW_POTIONS))
+   {
+    activeChar.sendPacket(new ActionFailed());
+   }
+
+  MagicSkillUser MSU = new MagicSkillUser(playable, playable, 3267, 1, 0, 0);
+  activeChar.sendPacket(MSU);
+  activeChar.broadcastPacket(MSU);
+
+  activeChar.getAppearance().setInvisible();
+  activeChar.broadcastUserInfo();
+  activeChar.decayMe();
+  activeChar.spawnMe();
+  activeChar.sendMessage("You Are Now Invisible");
+  activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false);
+
+  InvisiblePotionStop mp = new InvisiblePotionStop(playable);
+  ThreadPoolManager.getInstance().scheduleEffect(mp, EFFECT_DURATION);
+    }
+
+    public class InvisiblePotionStop implements Runnable
+    {
+  private L2PlayableInstance _playable;
+
+  public InvisiblePotionStop(L2PlayableInstance playable)
+  {
+   _playable = playable;
+  }
+
+  public void run()
+  {
+   try
+   {
+    if (!(_playable instanceof L2PcInstance))
+     return;
+
+    ((L2PcInstance) _playable).getAppearance().setVisible();
+    ((L2PcInstance) _playable).sendMessage("You Are Now Visable!");
+    ((L2PcInstance) _playable).broadcastUserInfo();
+   }
+   catch (Throwable t)
+   {
+   }
+  }
+    }
+
+    public int[] getItemIds()
+    {
+  return ITEM_IDS;
+    }
+}
Index: /java/lt/equal/gameserver/handler/ItemHandler.java
===================================================================
--- /java/lt/equal/gameserver/handler/ItemHandler.java (revision 59)
+++ /java/lt/equal/gameserver/handler/ItemHandler.java (revision 64)
@@ -54,4 +54,5 @@
  import lt.equal.gameserver.handler.itemhandlers.SpiritShot;
  import lt.equal.gameserver.handler.itemhandlers.SummonItems;
+import lt.equal.gameserver.handler.itemhandlers.InvisiblePotion;
  
  
@@ -134,4 +135,5 @@
    registerItemHandler(new HeroCustomItem());
    registerItemHandler(new ByLeki());
+  registerItemHandler(new InvisiblePotion());
  
    _log.config("ItemHandler: Loaded " + _datatable.size() + " handlers.");
Нашёл код скиллана инвиз,нельзя ли полегче чтобы только ид скила указывать и ид предмета?

Добавлено через 23 часа 58 минут
Апппппппп.
Ответ
#5
ну напишите.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Создание новой lineage2(мысли вслух) SlimQQ 2 2,008 02-28-2019, 10:28 PM
Последний пост: SlimQQ
  Создание Бота для Сервера MailFolder345 7 3,000 12-02-2018, 10:22 PM
Последний пост: CKREPKA
  Удаление существующих и создание новых классов в л2 killerua 8 3,843 11-05-2017, 06:29 PM
Последний пост: Map
  Набор в команду (создание долгосрочного проекта) Финансирование есть. NovaPlanet 7 2,521 11-19-2016, 05:40 PM
Последний пост: NovaPlanet
  Помогите разобраться с добавлением предмета aaansideee 2 1,402 10-24-2016, 07:29 PM
Последний пост: aaansideee
  Где хранится атрибут предмета? Aleksey 7 2,052 10-28-2015, 08:38 PM
Последний пост: kolibri
  Создание и управление проектом Lineage2 interlude47 8 3,893 09-09-2015, 10:54 AM
Последний пост: interlude47
  атака скиллом slayer48 6 1,791 08-04-2015, 10:15 PM
Последний пост: GenCloud
  Создание перса на птс Masone 4 1,817 07-08-2015, 01:42 PM
Последний пост: Masone
  Пакетка и другое. Создание нового. Respect 0 1,076 06-16-2015, 02:43 AM
Последний пост: Respect

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)