emil1993 0 Опубликовано 13 мая, 2015 (изменено) Здраствуйте форумчане в общем переделал с питона на яву Эвент нападения на город и теперь выдает ошибку(сборка Lovely 15rev): Error on: C:\server\game\data\scripts\custom\ahosey\MonstersAttack.java.error.log Line: -1 - Column: -1 compilation failed Cам скрипт: package custom.ahosey; import ru.catssoftware.gameserver.Announcements; import ru.catssoftware.gameserver.ThreadPoolManager; import ru.catssoftware.gameserver.ai.CtrlIntention; import ru.catssoftware.gameserver.instancemanager.QuestManager; import ru.catssoftware.gameserver.model.L2CharPosition; import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.quest.Quest; import ru.catssoftware.gameserver.model.quest.QuestState; /** * Created by kuksin-mv on 12.05.2015. */ public class MonstersAttack extends Quest { // Задержка перед началом эвента после рестарта (в милисекундах 1сек == 1000мс) private static final int START_TIME = 120000; // автозапуск через private static final int RESTART_TIME = 3600000; // Босс private static final int RAID_BOSS = 208621; // Награда за боса private static final int REWARD_BOSS = 20012; private static final int REWARD_BOSS_COUNT = 3000; // Список мобов private static final int MOB_1 = 500100; private static final int MOB_2 = 500200; private static final int MOB_3 = 500300; private static final int MOB_4 = 22123; private static final int MOB_5 = 22126; private static final int MOB_6 = 22132; //Если true Выдает награду в зависимости от убитого моба private static final boolean oneByOneReward = false; // Награда за любого монстра // Работает если oneByOneReward = false private static final int REWARD_MOBS =20012; private static final int REWARD_MOBS_COUNT = 80; // Награда за моба REWARD_MOBS_1 = 18008 и тд private static final int REWARD_MOBS_1 = 57; private static final int REWARD_MOBS_COUNT_1 = 5000; private static final int REWARD_MOBS_2 = 57; private static final int REWARD_MOBS_COUNT_2 = 5000; private static final int REWARD_MOBS_3 = 57; private static final int REWARD_MOBS_COUNT_3 = 5000; private static final int REWARD_MOBS_4 = 57; private static final int REWARD_MOBS_COUNT_4 = 5000; private static final int REWARD_MOBS_5 = 57; private static final int REWARD_MOBS_COUNT_5 = 5000; private static final int REWARD_MOBS_6 = 57; private static final int REWARD_MOBS_COUNT_6 = 5000; /**Интервалы между волнами * Время указано в мс (1сек = 1000мс) */ private static final int FERST_WAVE = 1000; //Первая волна появляется через FERST_WAVE после анонса private static final int SECOND_WAVE = 90000; //Вторая волна появляется через SECOND_WAVE private static final int RUNNERS_WAVE = 60000; //Бегуны появляются через RUNNERS_WAVE private static final int THIRD_WAVE = 30000; //Третья волна появляется через THIRD_WAVE private static final int FOURTH_WAVE = 20000; //Четвертая волна появляется через FOURTH_WAVE private static final int FIFTH_WAVE = 60000; //Пятая волна появляется через FIFTH_WAVE private static final int BOSS_WAVE = 10000; //Босс появляется через BOSS_WAVE //Сообщения перед каждой волной private static final String FERST_WAVE_MSG = "Толпы монстров собираются около Гирана, нужно защитить жителей!"; private static final String SECOND_WAVE_MSG = "Монстры прорвались внутрь Гирана, нужно защитить жителей!"; private static final String RUNNERS_WAVE_MSG = "Они бегут со всех сторон!"; private static final String THIRD_WAVE_MSG = "Монстры уже на площади Гирана, город осажден, нужно защитить жителей!"; private static final String FOURTH_WAVE_MSG = "Их слишком много! Мы не справляемся"; private static final String FIFTH_WAVE_MSG = "Мы проигрываем"; private static final String BOSS_WAVE_MSG = "Бегите глупцы! Ваша смерть уже близко"; public MonstersAttack() { super(-1, MonstersAttack.class.getSimpleName(), "MonstersAttack"); load(); addKillId(MOB_1); addKillId(MOB_2); addKillId(MOB_3); addKillId(MOB_4); addKillId(MOB_5); addKillId(MOB_6); addKillId(RAID_BOSS); _log.info("Load Monsters Attack Event"); } public void load() { saveGlobalQuestVar("MonstersAttack", "0"); ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new StartMonstersAttack(), START_TIME, RESTART_TIME); } @Override public String onAdvEvent(String event, L2NpcInstance npc, L2PcInstance player) { if (event.equalsIgnoreCase("run")) { _log.info("Start Event: Monsters Attack"); saveGlobalQuestVar("MonstersAttack", "1"); Announcements.getInstance().announceToAll(FERST_WAVE_MSG); startQuestTimer("first", FERST_WAVE, null, null); } else if (event.equalsIgnoreCase("first")) { _log.info("First"); addSpawn(MOB_1, 80870, 142381, -3545, 40240, true, 600000); // Вот тут скорее всего вылезет баг addSpawn(MOB_1, 81062, 142356, -3558, 40240, true, 600000); // Так как респ у мобов стоит 600000 и не от чего не зависит addSpawn(MOB_1, 81311, 142389, -3580, 40240, true, 600000); // Как вариант можно указать RESTART_TIME вместо 600000 addSpawn(MOB_1, 80586, 142520, -3544, 40240, true, 600000); addSpawn(MOB_1, 80699, 143015, -3539, 40240, true, 600000); startQuestTimer("second", SECOND_WAVE, null, null); cancelQuestTimer("first", null, null); } else if (event.equalsIgnoreCase("second")) { _log.info("second"); Announcements.getInstance().announceToAll(SECOND_WAVE_MSG); addSpawn(MOB_2, 81501, 144672, -3532, 40240, true, 600000); addSpawn(MOB_2, 81318, 144467, -3532, 40240, true, 600000); addSpawn(MOB_2, 81691, 144601, -3532, 40240, true, 600000); addSpawn(MOB_2, 81682, 145161, -3532, 40240, true, 600000); addSpawn(MOB_2, 81494, 145410, -3532, 40240, true, 600000); startQuestTimer("runners", RUNNERS_WAVE, null, null); cancelQuestTimer("second", null, null); } else if (event.equalsIgnoreCase("runners")) { _log.info("runners"); Announcements.getInstance().announceToAll(RUNNERS_WAVE_MSG); L2NpcInstance one = addSpawn(MOB_3, 84064, 143774, -3404, 40240, true, 600000); L2NpcInstance two = addSpawn(MOB_3, 83992, 143770, -3404, 40240, true, 600000); L2NpcInstance three = addSpawn(MOB_3, 83928, 143864, -3404, 40240,true, 600000); L2NpcInstance four = addSpawn(MOB_3, 83812, 143816, -3404, 40240, true, 600000); L2NpcInstance five = addSpawn(MOB_3, 83707, 143796, -3404, 40240, true, 600000); one.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(84043,146812, -3404, 0 )); two.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(84083,146882, -3404, 0 )); three.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(84013,146907, -3404, 0 )); four.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(83963,146907, -3404, 0 )); five.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(83944, 146860, -3404, 0)); startQuestTimer("third", THIRD_WAVE, null, null); cancelQuestTimer("runners", null, null); } else if (event.equalsIgnoreCase("third")) { _log.info("third"); Announcements.getInstance().announceToAll(THIRD_WAVE_MSG); addSpawn(MOB_4, 84044, 147687, -3397, 40240, true, 600000); addSpawn(MOB_5, 83876, 147619, -3397, 40240, true, 600000); addSpawn(MOB_4, 83645, 147697, -3532, 40240, true, 600000); addSpawn(MOB_4, 83321, 147765, -3461, 40240, true, 600000); addSpawn(MOB_4, 83147, 147708, -3461, 40240, true, 600000); addSpawn(MOB_4, 82326, 148188, -3495, 40240, true, 600000); addSpawn(MOB_4, 82292, 148348, -3459, 40240, true, 600000); addSpawn(MOB_4, 82586, 148586, -3461, 40240, true, 600000); startQuestTimer("fourth", FOURTH_WAVE, null, null); cancelQuestTimer("third", null, null); } else if (event.equalsIgnoreCase("fourth")) { _log.info("fourth"); Announcements.getInstance().announceToAll(FOURTH_WAVE_MSG); addSpawn(MOB_4, 82499, 148781, -3461, 40240, true, 600000); addSpawn(MOB_5, 82649, 148956, -3461, 40240, true, 600000); addSpawn(MOB_1, 83042, 149010, -3461, 40240, true, 600000); addSpawn(MOB_1, 83337, 148802, -3397, 40240, true, 600000); addSpawn(MOB_1, 82942, 148651, -3461, 40240, true, 600000); addSpawn(MOB_1, 82260, 148478, -3459, 40240, true, 600000); addSpawn(MOB_1, 81795, 148044, -3495, 40240, true, 600000); addSpawn(MOB_1, 81891, 147743, -3461, 40240, true, 600000); startQuestTimer("fifth", FIFTH_WAVE, null, null); cancelQuestTimer("fourth", null, null); } else if (event.equalsIgnoreCase("fifth")) { _log.info("fifth"); Announcements.getInstance().announceToAll(FIFTH_WAVE_MSG); addSpawn(MOB_4, 84442, 148621, -3428, 40240, true, 600000); addSpawn(MOB_5, 84440, 148573, -3394, 40240, true, 600000); addSpawn(MOB_1, 84428, 148680, -3394, 40240, true, 600000); addSpawn(MOB_6, 84534, 148660, -3394, 40240, true, 600000); addSpawn(MOB_6, 84521, 148618, -3428, 40240, true, 600000); addSpawn(MOB_1, 84511, 148571, -3394, 40240, true, 600000); startQuestTimer("boss", BOSS_WAVE, null, null); cancelQuestTimer("fifth", null, null); } else if (event.equalsIgnoreCase("boss")) { _log.info("boss"); Announcements.getInstance().announceToAll(BOSS_WAVE_MSG); saveGlobalQuestVar("MonstersAttack", "2"); addSpawn(RAID_BOSS, 85980, 148619, -3428, 40240, true, 600000); cancelQuestTimer("boss", null, null); } /** * Сюда бы ещё один if завершающий в котором сохранить saveGlobalQuestVar("MonstersAttack", "0"); * и удалить нпс или часто в сборках бывает функция завершающая эвент */ return null; } /** * * Вот тут скорее всего вылезет баг * так как переменной MonstersAttack задаётся значение из базы * и пока игроки не убьт босса оно всегда будет равно 2 * Черевато тем, что если босс или мобы доступны в игровом мире (в эвенте не уникальные НПС) * игроки могут их убивать до посинения. Хотя мб что тригер сработает и всем будет хорошо * * Частично правит если задать saveGlobalQuestVar("MonstersAttack", "0"); при инициализации * При спавне первых мобов saveGlobalQuestVar("MonstersAttack", "1"); * MonstersAttack == 1 награда за мобов будет выдаваться до тех пор пока не появится босс * saveGlobalQuestVar("MonstersAttack", "2"); задается при спавне босса, в этот же момент перестают даваться итемы за мобов * saveGlobalQuestVar("MonstersAttack", "0"); устанавливаем 0 при убийстве босса */ @Override public String onKill(L2NpcInstance npc, L2PcInstance player, boolean isSummon) { QuestState st = player.getQuestState(getName()); int MonstersAttack = Integer.parseInt(loadGlobalQuestVar("MonstersAttack")); if (st != null) { if ((npc.getNpcId() == RAID_BOSS) && (MonstersAttack == 2)) { Announcements.getInstance().announceToAll("Главарь монстров повержен, игрок " + player.getName() + " нанес последний удар!"); Announcements.getInstance().announceToAll("Монстры отступают!"); player.addItem("Quest", REWARD_BOSS, REWARD_BOSS_COUNT, player, true, false); saveGlobalQuestVar("MonstersAttack", "0"); _log.info("End Monsters Attack Event"); } else if (!oneByOneReward && MonstersAttack == 1) { player.addItem("Quest", REWARD_MOBS, REWARD_MOBS_COUNT, player, true, false); } else if (oneByOneReward && MonstersAttack == 1) { switch (npc.getNpcId()) { case MOB_1: player.addItem("Quest", REWARD_MOBS_1, REWARD_MOBS_COUNT_1, player, true, false); break; case MOB_2: player.addItem("Quest", REWARD_MOBS_2, REWARD_MOBS_COUNT_2, player, true, false); break; case MOB_3: player.addItem("Quest", REWARD_MOBS_3, REWARD_MOBS_COUNT_3, player, true, false); break; case MOB_4: player.addItem("Quest", REWARD_MOBS_4, REWARD_MOBS_COUNT_4, player, true, false); break; case MOB_5: player.addItem("Quest", REWARD_MOBS_5, REWARD_MOBS_COUNT_5, player, true, false); break; case MOB_6: player.addItem("Quest", REWARD_MOBS_6, REWARD_MOBS_COUNT_6, player, true, false); break; } } } return super.onKill(npc, player, isSummon); } public class StartMonstersAttack implements Runnable { @Override public void run() { QuestManager.getInstance().getQuest("MonstersAttack").notifyEvent("run", null, null); } } public static void main(String args[]) { new MonstersAttack(); } } В Чем может быть проблема ??? когда стоит этот скрипт полная жопа Когда стоит вот этот скрипт все хорошо: package custom.ahosey; import ru.catssoftware.gameserver.Announcements; import ru.catssoftware.gameserver.ThreadPoolManager; import ru.catssoftware.gameserver.ai.CtrlIntention; import ru.catssoftware.gameserver.instancemanager.QuestManager; import ru.catssoftware.gameserver.model.L2CharPosition; import ru.catssoftware.gameserver.model.actor.instance.L2NpcInstance; import ru.catssoftware.gameserver.model.actor.instance.L2PcInstance; import ru.catssoftware.gameserver.model.quest.Quest; import ru.catssoftware.gameserver.model.quest.QuestState; /** * Created by kuksin-mv on 12.05.2015. */ public class MonstersAttack extends Quest { // Задержка перед началом эвента после рестарта (в милисекундах 1сек == 1000мс) private static final int START_TIME = 120000; // автозапуск через private static final int RESTART_TIME = 3600000; // Босс private static final int RAID_BOSS = 29065; // Награда за боса private static final int REWARD_BOSS = 57; private static final int REWARD_BOSS_COUNT = 5000; // Список мобов private static final int MOB_1 = 18008; private static final int MOB_2 = 20830; private static final int MOB_3 = 21087; private static final int MOB_4 = 22123; private static final int MOB_5 = 22126; private static final int MOB_6 = 22132; //Если true Выдает награду в зависимости от убитого моба private static final boolean oneByOneReward = false; // Награда за любого монстра // Работает если oneByOneReward = false private static final int REWARD_MOBS = 57; private static final int REWARD_MOBS_COUNT = 5000; // Награда за моба REWARD_MOBS_1 = 18008 и тд private static final int REWARD_MOBS_1 = 57; private static final int REWARD_MOBS_COUNT_1 = 5000; private static final int REWARD_MOBS_2 = 57; private static final int REWARD_MOBS_COUNT_2 = 5000; private static final int REWARD_MOBS_3 = 57; private static final int REWARD_MOBS_COUNT_3 = 5000; private static final int REWARD_MOBS_4 = 57; private static final int REWARD_MOBS_COUNT_4 = 5000; private static final int REWARD_MOBS_5 = 57; private static final int REWARD_MOBS_COUNT_5 = 5000; private static final int REWARD_MOBS_6 = 57; private static final int REWARD_MOBS_COUNT_6 = 5000; /**Интервалы между волнами * Время указано в мс (1сек = 1000мс) */ private static final int FERST_WAVE = 1000; //Первая волна появляется через FERST_WAVE после анонса private static final int SECOND_WAVE = 90000; //Вторая волна появляется через SECOND_WAVE private static final int RUNNERS_WAVE = 60000; //Бегуны появляются через RUNNERS_WAVE private static final int THIRD_WAVE = 30000; //Третья волна появляется через THIRD_WAVE private static final int FOURTH_WAVE = 20000; //Четвертая волна появляется через FOURTH_WAVE private static final int FIFTH_WAVE = 60000; //Пятая волна появляется через FIFTH_WAVE private static final int BOSS_WAVE = 10000; //Босс появляется через BOSS_WAVE //Сообщения перед каждой волной private static final String FERST_WAVE_MSG = "Толпы монстров собираются около Гирана, нужно защитить жителей!"; private static final String SECOND_WAVE_MSG = "Монстры прорвались внутрь Гирана, нужно защитить жителей!"; private static final String RUNNERS_WAVE_MSG = "Они бегут со всех сторон!"; private static final String THIRD_WAVE_MSG = "Монстры уже на площади Гирана, город осажден, нужно защитить жителей!"; private static final String FOURTH_WAVE_MSG = "Их слишком много! Мы не справляемся"; private static final String FIFTH_WAVE_MSG = "Мы проигрываем"; private static final String BOSS_WAVE_MSG = "Бегите глупцы! Ваша смерть уже близко"; public MonstersAttack() { super(-1, MonstersAttack.class.getSimpleName(), "MonstersAttack"); load(); addKillId(MOB_1); addKillId(MOB_2); addKillId(MOB_3); addKillId(MOB_4); addKillId(MOB_5); addKillId(MOB_6); addKillId(RAID_BOSS); _log.info("Load Monsters Attack Event"); } public void load() { saveGlobalQuestVar("MonstersAttack", "0"); ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new StartMonstersAttack(), START_TIME, RESTART_TIME); } @Override public String onAdvEvent(String event, L2NpcInstance npc, L2PcInstance player) { if (event.equalsIgnoreCase("run")) { _log.info("Start Event: Monsters Attack"); saveGlobalQuestVar("MonstersAttack", "1"); Announcements.getInstance().announceToAll(FERST_WAVE_MSG); startQuestTimer("first", FERST_WAVE, null, null); } else if (event.equalsIgnoreCase("first")) { _log.info("First"); addSpawn(MOB_1, 80870, 142381, -3545, 40240, true, 600000); // Вот тут скорее всего вылезет баг addSpawn(MOB_1, 81062, 142356, -3558, 40240, true, 600000); // Так как респ у мобов стоит 600000 и не от чего не зависит addSpawn(MOB_1, 81311, 142389, -3580, 40240, true, 600000); // Как вариант можно указать RESTART_TIME вместо 600000 addSpawn(MOB_1, 80586, 142520, -3544, 40240, true, 600000); addSpawn(MOB_1, 80699, 143015, -3539, 40240, true, 600000); startQuestTimer("second", SECOND_WAVE, null, null); cancelQuestTimer("first", null, null); } else if (event.equalsIgnoreCase("second")) { _log.info("second"); Announcements.getInstance().announceToAll(SECOND_WAVE_MSG); addSpawn(MOB_2, 81501, 144672, -3532, 40240, true, 600000); addSpawn(MOB_2, 81318, 144467, -3532, 40240, true, 600000); addSpawn(MOB_2, 81691, 144601, -3532, 40240, true, 600000); addSpawn(MOB_2, 81682, 145161, -3532, 40240, true, 600000); addSpawn(MOB_2, 81494, 145410, -3532, 40240, true, 600000); startQuestTimer("runners", RUNNERS_WAVE, null, null); cancelQuestTimer("second", null, null); } else if (event.equalsIgnoreCase("runners")) { _log.info("runners"); Announcements.getInstance().announceToAll(RUNNERS_WAVE_MSG); L2NpcInstance one = addSpawn(MOB_3, 84064, 143774, -3404, 40240, true, 600000); L2NpcInstance two = addSpawn(MOB_3, 83992, 143770, -3404, 40240, true, 600000); L2NpcInstance three = addSpawn(MOB_3, 83928, 143864, -3404, 40240,true, 600000); L2NpcInstance four = addSpawn(MOB_3, 83812, 143816, -3404, 40240, true, 600000); L2NpcInstance five = addSpawn(MOB_3, 83707, 143796, -3404, 40240, true, 600000); one.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(84043,146812, -3404, 0 )); two.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(84083,146882, -3404, 0 )); three.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(84013,146907, -3404, 0 )); four.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(83963,146907, -3404, 0 )); five.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(83944, 146860, -3404, 0)); startQuestTimer("third", THIRD_WAVE, null, null); cancelQuestTimer("runners", null, null); } else if (event.equalsIgnoreCase("third")) { _log.info("third"); Announcements.getInstance().announceToAll(THIRD_WAVE_MSG); addSpawn(MOB_4, 84044, 147687, -3397, 40240, true, 600000); addSpawn(MOB_5, 83876, 147619, -3397, 40240, true, 600000); addSpawn(MOB_4, 83645, 147697, -3532, 40240, true, 600000); addSpawn(MOB_4, 83321, 147765, -3461, 40240, true, 600000); addSpawn(MOB_4, 83147, 147708, -3461, 40240, true, 600000); addSpawn(MOB_4, 82326, 148188, -3495, 40240, true, 600000); addSpawn(MOB_4, 82292, 148348, -3459, 40240, true, 600000); addSpawn(MOB_4, 82586, 148586, -3461, 40240, true, 600000); startQuestTimer("fourth", FOURTH_WAVE, null, null); cancelQuestTimer("third", null, null); } else if (event.equalsIgnoreCase("fourth")) { _log.info("fourth"); Announcements.getInstance().announceToAll(FOURTH_WAVE_MSG); addSpawn(MOB_4, 82499, 148781, -3461, 40240, true, 600000); addSpawn(MOB_5, 82649, 148956, -3461, 40240, true, 600000); addSpawn(MOB_1, 83042, 149010, -3461, 40240, true, 600000); addSpawn(MOB_1, 83337, 148802, -3397, 40240, true, 600000); addSpawn(MOB_1, 82942, 148651, -3461, 40240, true, 600000); addSpawn(MOB_1, 82260, 148478, -3459, 40240, true, 600000); addSpawn(MOB_1, 81795, 148044, -3495, 40240, true, 600000); addSpawn(MOB_1, 81891, 147743, -3461, 40240, true, 600000); startQuestTimer("fifth", FIFTH_WAVE, null, null); cancelQuestTimer("fourth", null, null); } else if (event.equalsIgnoreCase("fifth")) { _log.info("fifth"); Announcements.getInstance().announceToAll(FIFTH_WAVE_MSG); addSpawn(MOB_4, 84442, 148621, -3428, 40240, true, 600000); addSpawn(MOB_5, 84440, 148573, -3394, 40240, true, 600000); addSpawn(MOB_1, 84428, 148680, -3394, 40240, true, 600000); addSpawn(MOB_6, 84534, 148660, -3394, 40240, true, 600000); addSpawn(MOB_6, 84521, 148618, -3428, 40240, true, 600000); addSpawn(MOB_1, 84511, 148571, -3394, 40240, true, 600000); startQuestTimer("boss", BOSS_WAVE, null, null); cancelQuestTimer("fifth", null, null); } else if (event.equalsIgnoreCase("boss")) { _log.info("boss"); Announcements.getInstance().announceToAll(BOSS_WAVE_MSG); saveGlobalQuestVar("MonstersAttack", "2"); addSpawn(RAID_BOSS, 85980, 148619, -3428, 40240, true, 600000); cancelQuestTimer("boss", null, null); } /** * Сюда бы ещё один if завершающий в котором сохранить saveGlobalQuestVar("MonstersAttack", "0"); * и удалить нпс или часто в сборках бывает функция завершающая эвент */ return null; } /** * * Вот тут скорее всего вылезет баг * так как переменной MonstersAttack задаётся значение из базы * и пока игроки не убьт босса оно всегда будет равно 2 * Черевато тем, что если босс или мобы доступны в игровом мире (в эвенте не уникальные НПС) * игроки могут их убивать до посинения. Хотя мб что тригер сработает и всем будет хорошо * * Частично правит если задать saveGlobalQuestVar("MonstersAttack", "0"); при инициализации * При спавне первых мобов saveGlobalQuestVar("MonstersAttack", "1"); * MonstersAttack == 1 награда за мобов будет выдаваться до тех пор пока не появится босс * saveGlobalQuestVar("MonstersAttack", "2"); задается при спавне босса, в этот же момент перестают даваться итемы за мобов * saveGlobalQuestVar("MonstersAttack", "0"); устанавливаем 0 при убийстве босса */ @Override public String onKill(L2NpcInstance npc, L2PcInstance player, boolean isSummon) { QuestState st = player.getQuestState(getName()); int MonstersAttack = Integer.parseInt(loadGlobalQuestVar("MonstersAttack")); if (st != null) { if ((npc.getNpcId() == RAID_BOSS) && (MonstersAttack == 2)) { Announcements.getInstance().announceToAll("Главарь монстров повержен, игрок " + player.getName() + " нанес последний удар!"); Announcements.getInstance().announceToAll("Монстры отступают!"); player.addItem("Quest", REWARD_BOSS, REWARD_BOSS_COUNT, player, true, false); saveGlobalQuestVar("MonstersAttack", "0"); _log.info("End Monsters Attack Event"); } else if (!oneByOneReward && MonstersAttack == 1) { player.addItem("Quest", REWARD_MOBS, REWARD_MOBS_COUNT, player, true, false); } else if (oneByOneReward && MonstersAttack == 1) { switch (npc.getNpcId()) { case MOB_1: player.addItem("Quest", REWARD_MOBS_1, REWARD_MOBS_COUNT_1, player, true, false); break; case MOB_2: player.addItem("Quest", REWARD_MOBS_2, REWARD_MOBS_COUNT_2, player, true, false); break; case MOB_3: player.addItem("Quest", REWARD_MOBS_3, REWARD_MOBS_COUNT_3, player, true, false); break; case MOB_4: player.addItem("Quest", REWARD_MOBS_4, REWARD_MOBS_COUNT_4, player, true, false); break; case MOB_5: player.addItem("Quest", REWARD_MOBS_5, REWARD_MOBS_COUNT_5, player, true, false); break; case MOB_6: player.addItem("Quest", REWARD_MOBS_6, REWARD_MOBS_COUNT_6, player, true, false); break; } } } return super.onKill(npc, player, isSummon); } public class StartMonstersAttack implements Runnable { @Override public void run() { QuestManager.getInstance().getQuest("MonstersAttack").notifyEvent("run", null, null); } } public static void main(String args[]) { new MonstersAttack(); } } Изменено 13 мая, 2015 пользователем emil1993 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TIESTO 135 Опубликовано 13 мая, 2015 Так а что ты хочешь сделать именно? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
emil1993 0 Опубликовано 13 мая, 2015 Так а что ты хочешь сделать именно? я хочу поменять нпц на своих нпц и награду другую сделать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Endliner 7 Опубликовано 13 мая, 2015 Так а что ты хочешь сделать именно? Видимо что бы за него посмотрели разницу в скриптах.... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
emil1993 0 Опубликовано 13 мая, 2015 Видимо что бы за него посмотрели разницу в скриптах.... там разница только в нпц айди и награде за мобов и все Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Izonami 31 Опубликовано 14 мая, 2015 (изменено) с телефона показалось что значение вылезло за границу Там гс должен был вывалить ошибку. Возможно таких ид нет в базе Хотя более вероятный вариант он не смог задать интеншен самопальным мобам. Это которые mob_3 Изменено 14 мая, 2015 пользователем Izonami Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты