psychojm 9 Опубликовано 27 февраля, 2017 Нужен ацп для пвп сервера в сборке нету. Сборка как я понял от Java Hotspot. Прошу помочь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 27 февраля, 2017 На сайте MAXI есть код для автоцп (нужны исходники) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
psychojm 9 Опубликовано 27 февраля, 2017 На сайте MAXI есть код для автоцп (нужны исходники) находил ацп на форуме, но мне нужно либо которое настраивается типо .acpset или активируется как соски. Если кто сможет помочь буду благодарен. Или же цену узнать хотя бы Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 27 февраля, 2017 (изменено) Это автоцп шоты. Так же не сложно переделать его в виде команды Index: data/xml/items/0700-0799.xml ===================================================================--- data/xml/items/0700-0799.xml (revision 112)+++ data/xml/items/0700-0799.xml (working copy)@@ -329,7 +329,7 @@-+Index: data/xml/items/1500-1599.xml===================================================================--- data/xml/items/1500-1599.xml (revision 112)+++ data/xml/items/1500-1599.xml (working copy)@@ -265,7 +265,7 @@-+Index: data/xml/items/5500-5599.xml===================================================================--- data/xml/items/5500-5599.xml (revision 112)+++ data/xml/items/5500-5599.xml (working copy)@@ -673,7 +673,7 @@-+Index: java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java===================================================================--- java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (revision 112)+++ java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (working copy)@@ -14,18 +14,24 @@*/package net.sf.l2j.gameserver.handler.itemhandlers;+import net.sf.l2j.gameserver.ThreadPoolManager;import net.sf.l2j.gameserver.handler.IItemHandler;import net.sf.l2j.gameserver.model.L2ItemInstance;import net.sf.l2j.gameserver.model.ShotType;import net.sf.l2j.gameserver.model.actor.L2Playable;import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;import net.sf.l2j.gameserver.network.SystemMessageId;+import net.sf.l2j.gameserver.network.serverpackets.ExAutoSoulShot;import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;import net.sf.l2j.gameserver.templates.item.L2Weapon;import net.sf.l2j.gameserver.util.Broadcast;public class SoulShots implements IItemHandler{+ private static final int MANA_POT_CD = 2,+ HEALING_POT_CD = 11, // DO NOT PUT LESS THAN 10+ CP_POT_CD = 2;+private static final int[] SKILL_IDS ={2039,@@ -47,6 +53,108 @@final L2Weapon weaponItem = activeChar.getActiveWeaponItem();final int itemId = item.getItemId();+ if (itemId == 728 || itemId == 1539 || itemId == 5592)+ {+ switch (itemId)+ {+ case 728: // mana potion+ {+ if (activeChar.isAutoPot(728))+ {+ activeChar.sendPacket(new ExAutoSoulShot(728, 0));+ activeChar.sendMessage("Deactivated auto mana potions.");+ activeChar.setAutoPot(728, null, false);+ }+ else+ {+ if (activeChar.getInventory().getItemByItemId(728) != null)+ {+ if (activeChar.getInventory().getItemByItemId(728).getCount() > 1)+ {+ activeChar.sendPacket(new ExAutoSoulShot(728, 1));+ activeChar.sendMessage("Activated auto mana potions.");+ activeChar.setAutoPot(728, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(728, activeChar), 1000, MANA_POT_CD*1000), true);+ }+ else+ {+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100);+ activeChar.broadcastPacket(msu);++ ItemSkills is = new ItemSkills();+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true);+ }+ }+ }++ break;+ }+ case 1539: // greater healing potion+ {+ if (activeChar.isAutoPot(1539))+ {+ activeChar.sendPacket(new ExAutoSoulShot(1539, 0));+ activeChar.sendMessage("Deactivated auto healing potions.");+ activeChar.setAutoPot(1539, null, false);+ }+ else+ {+ if (activeChar.getInventory().getItemByItemId(1539) != null)+ {+ if (activeChar.getInventory().getItemByItemId(1539).getCount() > 1)+ {+ activeChar.sendPacket(new ExAutoSoulShot(1539, 1));+ activeChar.sendMessage("Activated auto healing potions.");+ activeChar.setAutoPot(1539, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(1539, activeChar), 1000, HEALING_POT_CD*1000), true);+ }+ else+ {+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100);+ activeChar.broadcastPacket(msu);++ ItemSkills is = new ItemSkills();+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true);+ }+ }+ }++ break;+ }+ case 5592: // greater cp potion+ {+ if (activeChar.isAutoPot(5592))+ {+ activeChar.sendPacket(new ExAutoSoulShot(5592, 0));+ activeChar.sendMessage("Deactivated auto cp potions.");+ activeChar.setAutoPot(5592, null, false);+ }+ else+ {+ if (activeChar.getInventory().getItemByItemId(5592) != null)+ {+ if (activeChar.getInventory().getItemByItemId(5592).getCount() > 1)+ {+ activeChar.sendPacket(new ExAutoSoulShot(5592, 1));+ activeChar.sendMessage("Activated auto cp potions.");+ activeChar.setAutoPot(5592, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(5592, activeChar), 1000, CP_POT_CD*1000), true);+ }+ else+ {+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100);+ activeChar.broadcastPacket(msu);++ ItemSkills is = new ItemSkills();+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true);+ }+ }+ }++ break;+ }+ }++ return;+ }+// Check if soulshot can be usedif (weaponInst == null || weaponItem.getSoulShotCount() == 0){@@ -87,4 +195,76 @@activeChar.sendPacket(SystemMessageId.ENABLED_SOULSHOT);Broadcast.toSelfAndKnownPlayersInRadiusSq(activeChar, new MagicSkillUse(activeChar, activeChar, SKILL_IDS[grade], 1, 0, 0), 360000);}++ private class AutoPot implements Runnable+ {+ private int id;+ private L2PcInstance activeChar;++ public AutoPot(int id, L2PcInstance activeChar)+ {+ this.id = id;+ this.activeChar = activeChar;+ }++ @@override+ public void run()+ {+ if (activeChar.getInventory().getItemByItemId(id) == null)+ {+ activeChar.sendPacket(new ExAutoSoulShot(id, 0));+ activeChar.setAutoPot(id, null, false);+ return;+ }++ switch (id)+ {+ case 728:+ {+ if (activeChar.getCurrentMp() < 0.70*activeChar.getMaxMp())+ {+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100);+ activeChar.broadcastPacket(msu);++ ItemSkills is = new ItemSkills();+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true);+ }++ break;+ }+ case 1539:+ {+ if (activeChar.getCurrentHp() < 0.95*activeChar.getMaxHp())+ {+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100);+ activeChar.broadcastPacket(msu);++ ItemSkills is = new ItemSkills();+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true);+ }++ break;+ }+ case 5592:+ {+ if (activeChar.getCurrentCp() < 0.95*activeChar.getMaxCp())+ {+ MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100);+ activeChar.broadcastPacket(msu);++ ItemSkills is = new ItemSkills();+ is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true);+ }++ break;+ }+ }++ if (activeChar.getInventory().getItemByItemId(id) == null)+ {+ activeChar.sendPacket(new ExAutoSoulShot(id, 0));+ activeChar.setAutoPot(id, null, false);+ }+ }+ }}\ No newline at end of fileIndex: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java===================================================================--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 112)+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)@@ -251,6 +251,24 @@*/public final class L2PcInstance extends L2Playable{+ private Map> _autoPotTasks = new HashMap<>();++ public boolean isAutoPot(int id)+ {+ return _autoPotTasks.keySet().contains(id);+ }++ public void setAutoPot(int id, Futuretask, boolean add)+ {+ if (add)+ _autoPotTasks.put(id, task);+ else+ {+ _autoPotTasks.get(id).cancel(true);+ _autoPotTasks.remove(id);+ }+ }+private BuffShop buffShop = null;public void setBuffShop(BuffShop val)@@ -4321,6 +4339,22 @@teleToLocation(184351, 20318, -3174, 0);}+ if (isAutoPot(728))+ {+ sendPacket(new ExAutoSoulShot(728, 0));+ setAutoPot(728, null, false);+ }+ if (isAutoPot(1539))+ {+ sendPacket(new ExAutoSoulShot(1539, 0));+ setAutoPot(1539, null, false);+ }+ if (isAutoPot(5592))+ {+ sendPacket(new ExAutoSoulShot(5592, 0));+ setAutoPot(5592, null, false);+ }+return true;} Ссылка на оригинал: http://l2devsadmins.net/l2devsAdmins2-0-11/index.php?topic=6874.0 Сам использую ацп через команды. Изменено 27 февраля, 2017 пользователем zGosu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
psychojm 9 Опубликовано 27 февраля, 2017 Это автоцп шоты. Так же не сложно переделать его в виде команды Index: data/xml/items/0700-0799.xml =================================================================== --- data/xml/items/0700-0799.xml (revision 112) +++ data/xml/items/0700-0799.xml (working copy) @@ -329,7 +329,7 @@ - + Index: data/xml/items/1500-1599.xml =================================================================== --- data/xml/items/1500-1599.xml (revision 112) +++ data/xml/items/1500-1599.xml (working copy) @@ -265,7 +265,7 @@ - + Index: data/xml/items/5500-5599.xml =================================================================== --- data/xml/items/5500-5599.xml (revision 112) +++ data/xml/items/5500-5599.xml (working copy) @@ -673,7 +673,7 @@ - + Index: java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java =================================================================== --- java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (revision 112) +++ java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (working copy) @@ -14,18 +14,24 @@ */ package net.sf.l2j.gameserver.handler.itemhandlers; +import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.handler.IItemHandler; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.ShotType; import net.sf.l2j.gameserver.model.actor.L2Playable; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.network.SystemMessageId; +import net.sf.l2j.gameserver.network.serverpackets.ExAutoSoulShot; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; import net.sf.l2j.gameserver.templates.item.L2Weapon; import net.sf.l2j.gameserver.util.Broadcast; public class SoulShots implements IItemHandler { + private static final int MANA_POT_CD = 2, + HEALING_POT_CD = 11, // DO NOT PUT LESS THAN 10 + CP_POT_CD = 2; + private static final int[] SKILL_IDS = { 2039, @@ -47,6 +53,108 @@ final L2Weapon weaponItem = activeChar.getActiveWeaponItem(); final int itemId = item.getItemId(); + if (itemId == 728 || itemId == 1539 || itemId == 5592) + { + switch (itemId) + { + case 728: // mana potion + { + if (activeChar.isAutoPot(728)) + { + activeChar.sendPacket(new ExAutoSoulShot(728, 0)); + activeChar.sendMessage("Deactivated auto mana potions."); + activeChar.setAutoPot(728, null, false); + } + else + { + if (activeChar.getInventory().getItemByItemId(728) != null) + { + if (activeChar.getInventory().getItemByItemId(728).getCount() > 1) + { + activeChar.sendPacket(new ExAutoSoulShot(728, 1)); + activeChar.sendMessage("Activated auto mana potions."); + activeChar.setAutoPot(728, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(728, activeChar), 1000, MANA_POT_CD*1000), true); + } + else + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true); + } + } + } + + break; + } + case 1539: // greater healing potion + { + if (activeChar.isAutoPot(1539)) + { + activeChar.sendPacket(new ExAutoSoulShot(1539, 0)); + activeChar.sendMessage("Deactivated auto healing potions."); + activeChar.setAutoPot(1539, null, false); + } + else + { + if (activeChar.getInventory().getItemByItemId(1539) != null) + { + if (activeChar.getInventory().getItemByItemId(1539).getCount() > 1) + { + activeChar.sendPacket(new ExAutoSoulShot(1539, 1)); + activeChar.sendMessage("Activated auto healing potions."); + activeChar.setAutoPot(1539, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(1539, activeChar), 1000, HEALING_POT_CD*1000), true); + } + else + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true); + } + } + } + + break; + } + case 5592: // greater cp potion + { + if (activeChar.isAutoPot(5592)) + { + activeChar.sendPacket(new ExAutoSoulShot(5592, 0)); + activeChar.sendMessage("Deactivated auto cp potions."); + activeChar.setAutoPot(5592, null, false); + } + else + { + if (activeChar.getInventory().getItemByItemId(5592) != null) + { + if (activeChar.getInventory().getItemByItemId(5592).getCount() > 1) + { + activeChar.sendPacket(new ExAutoSoulShot(5592, 1)); + activeChar.sendMessage("Activated auto cp potions."); + activeChar.setAutoPot(5592, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(5592, activeChar), 1000, CP_POT_CD*1000), true); + } + else + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true); + } + } + } + + break; + } + } + + return; + } + // Check if soulshot can be used if (weaponInst == null || weaponItem.getSoulShotCount() == 0) { @@ -87,4 +195,76 @@ activeChar.sendPacket(SystemMessageId.ENABLED_SOULSHOT); Broadcast.toSelfAndKnownPlayersInRadiusSq(activeChar, new MagicSkillUse(activeChar, activeChar, SKILL_IDS[grade], 1, 0, 0), 360000); } + + private class AutoPot implements Runnable + { + private int id; + private L2PcInstance activeChar; + + public AutoPot(int id, L2PcInstance activeChar) + { + this.id = id; + this.activeChar = activeChar; + } + + @@override + public void run() + { + if (activeChar.getInventory().getItemByItemId(id) == null) + { + activeChar.sendPacket(new ExAutoSoulShot(id, 0)); + activeChar.setAutoPot(id, null, false); + return; + } + + switch (id) + { + case 728: + { + if (activeChar.getCurrentMp() < 0.70*activeChar.getMaxMp()) + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true); + } + + break; + } + case 1539: + { + if (activeChar.getCurrentHp() < 0.95*activeChar.getMaxHp()) + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true); + } + + break; + } + case 5592: + { + if (activeChar.getCurrentCp() < 0.95*activeChar.getMaxCp()) + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true); + } + + break; + } + } + + if (activeChar.getInventory().getItemByItemId(id) == null) + { + activeChar.sendPacket(new ExAutoSoulShot(id, 0)); + activeChar.setAutoPot(id, null, false); + } + } + } } \ No newline at end of file Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 112) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -251,6 +251,24 @@ */ public final class L2PcInstance extends L2Playable { + private Map> _autoPotTasks = new HashMap<>(); + + public boolean isAutoPot(int id) + { + return _autoPotTasks.keySet().contains(id); + } + + public void setAutoPot(int id, Futuretask, boolean add) + { + if (add) + _autoPotTasks.put(id, task); + else + { + _autoPotTasks.get(id).cancel(true); + _autoPotTasks.remove(id); + } + } + private BuffShop buffShop = null; public void setBuffShop(BuffShop val) @@ -4321,6 +4339,22 @@ teleToLocation(184351, 20318, -3174, 0); } + if (isAutoPot(728)) + { + sendPacket(new ExAutoSoulShot(728, 0)); + setAutoPot(728, null, false); + } + if (isAutoPot(1539)) + { + sendPacket(new ExAutoSoulShot(1539, 0)); + setAutoPot(1539, null, false); + } + if (isAutoPot(5592)) + { + sendPacket(new ExAutoSoulShot(5592, 0)); + setAutoPot(5592, null, false); + } + return true; } Ссылка на оригинал: http://l2devsadmins.net/l2devsAdmins2-0-11/index.php?topic=6874.0 Сам использую ацп через команды. Спасибо. Не сильно разбераюсь в этом ) но попробую поставить Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
psychojm 9 Опубликовано 27 февраля, 2017 Это автоцп шоты. Так же не сложно переделать его в виде команды Index: data/xml/items/0700-0799.xml =================================================================== --- data/xml/items/0700-0799.xml (revision 112) +++ data/xml/items/0700-0799.xml (working copy) @@ -329,7 +329,7 @@ - + Index: data/xml/items/1500-1599.xml =================================================================== --- data/xml/items/1500-1599.xml (revision 112) +++ data/xml/items/1500-1599.xml (working copy) @@ -265,7 +265,7 @@ - + Index: data/xml/items/5500-5599.xml =================================================================== --- data/xml/items/5500-5599.xml (revision 112) +++ data/xml/items/5500-5599.xml (working copy) @@ -673,7 +673,7 @@ - + Index: java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java =================================================================== --- java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (revision 112) +++ java/net/sf/l2j/gameserver/handler/itemhandlers/SoulShots.java (working copy) @@ -14,18 +14,24 @@ */ package net.sf.l2j.gameserver.handler.itemhandlers; +import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.handler.IItemHandler; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.ShotType; import net.sf.l2j.gameserver.model.actor.L2Playable; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.network.SystemMessageId; +import net.sf.l2j.gameserver.network.serverpackets.ExAutoSoulShot; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; import net.sf.l2j.gameserver.templates.item.L2Weapon; import net.sf.l2j.gameserver.util.Broadcast; public class SoulShots implements IItemHandler { + private static final int MANA_POT_CD = 2, + HEALING_POT_CD = 11, // DO NOT PUT LESS THAN 10 + CP_POT_CD = 2; + private static final int[] SKILL_IDS = { 2039, @@ -47,6 +53,108 @@ final L2Weapon weaponItem = activeChar.getActiveWeaponItem(); final int itemId = item.getItemId(); + if (itemId == 728 || itemId == 1539 || itemId == 5592) + { + switch (itemId) + { + case 728: // mana potion + { + if (activeChar.isAutoPot(728)) + { + activeChar.sendPacket(new ExAutoSoulShot(728, 0)); + activeChar.sendMessage("Deactivated auto mana potions."); + activeChar.setAutoPot(728, null, false); + } + else + { + if (activeChar.getInventory().getItemByItemId(728) != null) + { + if (activeChar.getInventory().getItemByItemId(728).getCount() > 1) + { + activeChar.sendPacket(new ExAutoSoulShot(728, 1)); + activeChar.sendMessage("Activated auto mana potions."); + activeChar.setAutoPot(728, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(728, activeChar), 1000, MANA_POT_CD*1000), true); + } + else + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true); + } + } + } + + break; + } + case 1539: // greater healing potion + { + if (activeChar.isAutoPot(1539)) + { + activeChar.sendPacket(new ExAutoSoulShot(1539, 0)); + activeChar.sendMessage("Deactivated auto healing potions."); + activeChar.setAutoPot(1539, null, false); + } + else + { + if (activeChar.getInventory().getItemByItemId(1539) != null) + { + if (activeChar.getInventory().getItemByItemId(1539).getCount() > 1) + { + activeChar.sendPacket(new ExAutoSoulShot(1539, 1)); + activeChar.sendMessage("Activated auto healing potions."); + activeChar.setAutoPot(1539, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(1539, activeChar), 1000, HEALING_POT_CD*1000), true); + } + else + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true); + } + } + } + + break; + } + case 5592: // greater cp potion + { + if (activeChar.isAutoPot(5592)) + { + activeChar.sendPacket(new ExAutoSoulShot(5592, 0)); + activeChar.sendMessage("Deactivated auto cp potions."); + activeChar.setAutoPot(5592, null, false); + } + else + { + if (activeChar.getInventory().getItemByItemId(5592) != null) + { + if (activeChar.getInventory().getItemByItemId(5592).getCount() > 1) + { + activeChar.sendPacket(new ExAutoSoulShot(5592, 1)); + activeChar.sendMessage("Activated auto cp potions."); + activeChar.setAutoPot(5592, ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new AutoPot(5592, activeChar), 1000, CP_POT_CD*1000), true); + } + else + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true); + } + } + } + + break; + } + } + + return; + } + // Check if soulshot can be used if (weaponInst == null || weaponItem.getSoulShotCount() == 0) { @@ -87,4 +195,76 @@ activeChar.sendPacket(SystemMessageId.ENABLED_SOULSHOT); Broadcast.toSelfAndKnownPlayersInRadiusSq(activeChar, new MagicSkillUse(activeChar, activeChar, SKILL_IDS[grade], 1, 0, 0), 360000); } + + private class AutoPot implements Runnable + { + private int id; + private L2PcInstance activeChar; + + public AutoPot(int id, L2PcInstance activeChar) + { + this.id = id; + this.activeChar = activeChar; + } + + @@override + public void run() + { + if (activeChar.getInventory().getItemByItemId(id) == null) + { + activeChar.sendPacket(new ExAutoSoulShot(id, 0)); + activeChar.setAutoPot(id, null, false); + return; + } + + switch (id) + { + case 728: + { + if (activeChar.getCurrentMp() < 0.70*activeChar.getMaxMp()) + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2279, 2, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(728), true); + } + + break; + } + case 1539: + { + if (activeChar.getCurrentHp() < 0.95*activeChar.getMaxHp()) + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2037, 1, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(1539), true); + } + + break; + } + case 5592: + { + if (activeChar.getCurrentCp() < 0.95*activeChar.getMaxCp()) + { + MagicSkillUse msu = new MagicSkillUse(activeChar, activeChar, 2166, 2, 0, 100); + activeChar.broadcastPacket(msu); + + ItemSkills is = new ItemSkills(); + is.useItem(activeChar, activeChar.getInventory().getItemByItemId(5592), true); + } + + break; + } + } + + if (activeChar.getInventory().getItemByItemId(id) == null) + { + activeChar.sendPacket(new ExAutoSoulShot(id, 0)); + activeChar.setAutoPot(id, null, false); + } + } + } } \ No newline at end of file Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 112) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -251,6 +251,24 @@ */ public final class L2PcInstance extends L2Playable { + private Map> _autoPotTasks = new HashMap<>(); + + public boolean isAutoPot(int id) + { + return _autoPotTasks.keySet().contains(id); + } + + public void setAutoPot(int id, Futuretask, boolean add) + { + if (add) + _autoPotTasks.put(id, task); + else + { + _autoPotTasks.get(id).cancel(true); + _autoPotTasks.remove(id); + } + } + private BuffShop buffShop = null; public void setBuffShop(BuffShop val) @@ -4321,6 +4339,22 @@ teleToLocation(184351, 20318, -3174, 0); } + if (isAutoPot(728)) + { + sendPacket(new ExAutoSoulShot(728, 0)); + setAutoPot(728, null, false); + } + if (isAutoPot(1539)) + { + sendPacket(new ExAutoSoulShot(1539, 0)); + setAutoPot(1539, null, false); + } + if (isAutoPot(5592)) + { + sendPacket(new ExAutoSoulShot(5592, 0)); + setAutoPot(5592, null, false); + } + return true; } Ссылка на оригинал: http://l2devsadmins.net/l2devsAdmins2-0-11/index.php?topic=6874.0 Сам использую ацп через команды. сможешь помочь с установкой скрипта?(платно,бесплатно) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zGosu 396 Опубликовано 27 февраля, 2017 сможешь помочь с установкой скрипта?(платно,бесплатно) в ближайшее время нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты