-
Публикаций
1028 -
Зарегистрирован
-
Посещение
-
Победитель дней
16 -
Отзывы
100%
Тип контента
Профили
Форумы
Загрузки
Магазин
Инструкции
Весь контент CalypsoToolz
-
Если через эклипс, то как обычно: А если через терминал, то установить ант, затем переключится в дирректорию с билд-файлом и выполнить: ant -buldfile build.xml -logfile compile.log
-
Все верно, открывается/редактируется в FileEdit в 111 кодировке (l2decrypt это тот же FileEdit, только c GUI)
-
Во первых ключевое слово "помоему", ибо не копал глубоко, а во вторых возьми да сам поковыряй, мне абсолютно пофигу что там есть, а чего нет. Ну и в третьих: ограничение не на локалку
-
Ну, чисто мое мнение: Сборка вполне себе годная, просто большинство "админов" впервые видят лост(овер)-подобную ит-сборку. Косяки есть, конечно, ну а где же их нет.
-
Привязки, помоему, как таковой нет, лишь ограничение по онлайну.
-
altsettings.cfg: # Don't load quests AltDevNoQuests = False
-
Вообще ни один квест не работает? Если да, то полюбому конфиги.
-
Ошибки не по поводу квестов. Квесты могут быть отключены в конфигах.
-
АИ/Роуты для мобов пилились ~4 года?)
-
При чем тут скилл с ид 24876? Это общее кол-во скиллов, загруженых из xml-файлов.
-
'0, 'Icon.NOIMAGE'); - вглядись внимательнее.
-
Не знаю как в нынешних сурсах, но в старых это уже реализовано, указывать в скилле: <set name="teleCoords" val="1111,1111,1111"/> PS: net.sf.l2j.gameserver.skills.l2skills.L2SkillTeleport
-
Добавить в конце каждого запроса иконку предмета, например так: INSERT INTO `weapon` VALUES ('9230', 'Dynasty Rapier', 'rhand', 'true', '1280', '1', '1', 'steel', 's', '278', '1', 'sword', '12', '0.00000', '0', '0', '0', '433', '0', '140', '-1', '0', '0', 'false', 'true', 'true', 'true', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'icon.weapon_small_sword_i00');
-
3-я ссылка таки неверная по-моему.
-
package calypso; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.cache.Static; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.model.L2Effect; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; import net.sf.l2j.gameserver.model.entity.TvTEvent; import net.sf.l2j.gameserver.network.SystemMessageId; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUser; import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; import scripts.autoevents.lasthero.LastHero; import scripts.items.IItemHandler; import scripts.items.ItemHandler; public class CPPotion implements IItemHandler { protected static final Logger _log = Logger.getLogger(CPPotion.class .getName()); private int _herbstask; public CPPotion() { this._herbstask = 0; } private class HerbTask implements Runnable { private L2PcInstance _activeChar; private int _magicId; private int _level; HerbTask(L2PcInstance activeChar, int magicId, int level) { this._activeChar = activeChar; this._magicId = magicId; this._level = level; } public void run() { try { CPPotion.this.usePotion(this._activeChar, this._magicId, this._level); } catch (Throwable t) { CPPotion._log.log(Level.WARNING, "", t); } } } // банка private static final int[] ITEM_IDS = { 11111, 22222 }; // сколько восстанавливать private static int CP_RESTORE_POWER = 1000; private static int HP_RESTORE_POWER = 1000; // реюз в мс private static int CP_REUSE = 200; private static int HP_REUSE = 15000; public synchronized void useItem(L2PlayableInstance playable, L2ItemInstance item) { boolean res = false; L2PcInstance activeChar; if (playable.isPlayer()) activeChar = (L2PcInstance) playable; else { if (playable.isPet()) { activeChar = ((L2PetInstance) playable).getOwner(); } else { return; } } if (activeChar.isOutOfControl()) { activeChar.sendActionFailed(); return; } if (item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY) { activeChar.sendActionFailed(); return; } int itemId = item.getItemId(); if (!TvTEvent.onPotionUse(activeChar.getName(), itemId)) { activeChar.sendActionFailed(); return; } if ((activeChar.getChannel() == 6) && (LastHero.getEvent().forbPotion(itemId))) { activeChar.sendActionFailed(); return; } if (activeChar.isInOlympiadMode()) { activeChar .sendPacket(Static.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT); return; } int itmobj = item.getObjectId(); switch (itemId) { // банка цп case 11111: if (activeChar.getCpReuseTime(itemId) < CP_REUSE) { activeChar.sendActionFailed(); return; } activeChar.setCpReuseTime(itemId); cpPotion(activeChar, itmobj, CP_RESTORE_POWER); break; // банка хп case 22222: if (activeChar.getCpReuseTime(itemId) < HP_REUSE) { activeChar.sendActionFailed(); return; } activeChar.setCpReuseTime(itemId); hpPotion(activeChar, itmobj); break; } if (res) { activeChar.destroyItem("Consume", itmobj, 1, null, false); } } public boolean usePotion(L2PcInstance activeChar, int magicId, int level) { if ((activeChar.isCastingNow()) && (magicId > 2277) && (magicId < 2285)) { this._herbstask += 100; ThreadPoolManager.getInstance().scheduleAi( new HerbTask(activeChar, magicId, level), this._herbstask, true); } else { L2Effect effect = activeChar.getFirstEffect(magicId); if (effect != null) { effect.exit(); } SkillTable.getInstance().getInfo(magicId, level) .getEffects(activeChar, activeChar); activeChar.broadcastPacket(new MagicSkillUser(activeChar, activeChar, magicId, level, 1, 0)); activeChar.sendPacket(SystemMessage.id( SystemMessageId.YOU_FEEL_S1_EFFECT).addSkillName(magicId)); return true; } return false; } public void cpPotion(L2PcInstance activeChar, int itemobj, int restore) { activeChar.destroyItem("Consume", itemobj, 1, null, false); activeChar.broadcastPacket(new MagicSkillUser(activeChar, activeChar, 2166, 1, 1, 0)); if (activeChar.getCurrentCp() != activeChar.getMaxCp()) { activeChar.setCurrentCp(activeChar.getCurrentCp() + restore); } } public void hpPotion(L2PcInstance activeChar, int itemobj) { activeChar.destroyItem("Consume", itemobj, 1, null, false); activeChar.broadcastPacket(new MagicSkillUser(activeChar, activeChar, 2038, 1, 1, 0)); if (activeChar.getCurrentHp() != activeChar.getMaxHp()) { activeChar.setCurrentHp(activeChar.getCurrentHp() + HP_RESTORE_POWER); } } public int[] getItemIds() { return ITEM_IDS; } public static void main(String... arguments) { ItemHandler.getInstance().registerItemHandler(new CPPotion()); } }
-
Можно, но меня вырубает, там пару-тройку строк изменить.
-
Переименуй CPbig на CPPotion и скопируй скрипт снова (чуть поправил)
-
Мде, на pw все как то через *опу) Попробуй этот скрипт, думаю что будет работать (не проверил, набросал на скорую руку): package calypso; import java.util.logging.Level; import java.util.logging.Logger; import net.sf.l2j.Config; import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.cache.Static; import net.sf.l2j.gameserver.datatables.SkillTable; import net.sf.l2j.gameserver.model.L2Effect; import net.sf.l2j.gameserver.model.L2ItemInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PetInstance; import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance; import net.sf.l2j.gameserver.model.entity.TvTEvent; import net.sf.l2j.gameserver.network.SystemMessageId; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUser; import net.sf.l2j.gameserver.network.serverpackets.SystemMessage; import scripts.autoevents.lasthero.LastHero; import scripts.items.IItemHandler; import scripts.items.ItemHandler; public class CPPotion implements IItemHandler { protected static final Logger _log = Logger.getLogger(CPPotion.class .getName()); private int _herbstask; public CPPotion() { this._herbstask = 0; } private class HerbTask implements Runnable { private L2PcInstance _activeChar; private int _magicId; private int _level; HerbTask(L2PcInstance activeChar, int magicId, int level) { this._activeChar = activeChar; this._magicId = magicId; this._level = level; } public void run() { try { CPPotion.this.usePotion(this._activeChar, this._magicId, this._level); } catch (Throwable t) { CPPotion._log.log(Level.WARNING, "", t); } } } // банка private static final int[] ITEM_IDS = { 5592 }; // сколько восстанавливать private static int RESTORE_POWER = 1000; public synchronized void useItem(L2PlayableInstance playable, L2ItemInstance item) { boolean res = false; L2PcInstance activeChar; if (playable.isPlayer()) activeChar = (L2PcInstance) playable; else { if (playable.isPet()) { activeChar = ((L2PetInstance) playable).getOwner(); } else { return; } } if (activeChar.isOutOfControl()) { activeChar.sendActionFailed(); return; } if (item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY) { activeChar.sendActionFailed(); return; } int itemId = item.getItemId(); if (!TvTEvent.onPotionUse(activeChar.getName(), itemId)) { activeChar.sendActionFailed(); return; } if ((activeChar.getChannel() == 6) && (LastHero.getEvent().forbPotion(itemId))) { activeChar.sendActionFailed(); return; } if (activeChar.isInOlympiadMode()) { activeChar .sendPacket(Static.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT); return; } int itmobj = item.getObjectId(); switch (itemId) { case 5592: if (activeChar.getCpReuseTime(itemId) < Config.CP_REUSE_TIME) { activeChar.sendActionFailed(); return; } activeChar.setCpReuseTime(itemId); cpPotion(activeChar, itmobj, RESTORE_POWER); break; } if (res) { activeChar.destroyItem("Consume", itmobj, 1, null, false); } } public boolean usePotion(L2PcInstance activeChar, int magicId, int level) { if ((activeChar.isCastingNow()) && (magicId > 2277) && (magicId < 2285)) { this._herbstask += 100; ThreadPoolManager.getInstance().scheduleAi( new HerbTask(activeChar, magicId, level), this._herbstask, true); } else { L2Effect effect = activeChar.getFirstEffect(magicId); if (effect != null) { effect.exit(); } SkillTable.getInstance().getInfo(magicId, level) .getEffects(activeChar, activeChar); activeChar.broadcastPacket(new MagicSkillUser(activeChar, activeChar, magicId, level, 1, 0)); activeChar.sendPacket(SystemMessage.id( SystemMessageId.YOU_FEEL_S1_EFFECT).addSkillName(magicId)); return true; } return false; } public void cpPotion(L2PcInstance activeChar, int itemobj, int restore) { activeChar.destroyItem("Consume", itemobj, 1, null, false); activeChar.broadcastPacket(new MagicSkillUser(activeChar, activeChar, 2166, 1, 1, 0)); if (activeChar.getCurrentCp() != activeChar.getMaxCp()) { activeChar.setCurrentCp(activeChar.getCurrentCp() + restore); } } public int[] getItemIds() { return ITEM_IDS; } public static void main(String... arguments) { ItemHandler.getInstance().registerItemHandler(new CPPotion()); } } кидать в /data/scripts/calypso, ну и подгрузку в scripts.cfg дописать PS: 5592 изменить в 2х местах
-
Смотря что за сборка, либо в бд, табличка etcitems, либо в датапаке, привязать скилл 5592, 3 лвл, ну и создать этот 3 лвл, естественно.
-
Похоже, таки наоборот - ты меня не понял. Привязать по тому же принципу, что и гцп.