Перейти к содержанию

emil1993

Пользователи
  • Публикаций

    102
  • Зарегистрирован

  • Посещение

  • Отзывы

    0%

Репутация

0

8 Подписчиков

Информация о emil1993

  • Звание
    Постелил коврик
  1. ну это уже на любителя, простому обывателю выше чем ИТ уже становиться не понятна система атрибутов и прочий кал
  2. мне кажется еще зависит от шмота/рейтов и т.д так что трудно судить/как по мне так ИТ самые сбалансированные хроники ибо нету лишнего говна- атрибутов< 100500 новых бафов и т.п
  3. скорее всего ищи проблему в датниках
  4. emil1993

    Шаблон сайта(первый)

    мне нравится дизайн, я бы даже сказала начало отличное
  5. берешь 200$ платишь людям и вуаля нет багов
  6. возможно защита котов как то связанна
  7. emil1993

    Ошибка ГС

    соединение теряет< возможно интернет соединение и сразу его восстанавливает
  8. там разница только в нпц айди и награде за мобов и все
  9. я хочу поменять нпц на своих нпц и награду другую сделать
  10. Здраствуйте форумчане в общем переделал с питона на яву Эвент нападения на город и теперь выдает ошибку(сборка 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(); } }
  11. emil1993

    Иероглифы

    Проблема так и не решена вот собственно сам скриптСборка Ловели 15 rev.) import sys from ru.catssoftware.gameserver.model.quest import State from ru.catssoftware.gameserver.model.quest import QuestState from ru.catssoftware.gameserver.model.quest.jython import QuestJython as JQuest from ru.catssoftware.util.random import Rnd from java.lang import System from ru.catssoftware.gameserver.gameserver import Announcements from ru.catssoftware.gameserver.gameserver.model import L2CharPosition from ru.catssoftware.gameserver.gameserver.ai import CtrlIntention MOBS = [18008,20830,21087,22123,22126,22132]#ok qn = "ahosey"#ok #ПЕРВАЯ НАГРАДА ЗА УБИЙСТВО ГЛАВНОГО МОНСТРА GLAV_ITEM_ID_1 = 4037 #АД ПРЕДМЕТА GLAV_ITEM_MOUT_1 = 100 #КОЛИЧЕСТВО #ВТОРАЯ НАГРАДА ЗА УБИЙСТВО ГЛАВНОГО МОНСТРА GLAV_ITEM_ID_2 = 4357 #АД ПРЕДМЕТА GLAV_ITEM_MOUT_2 = 50 #КОЛИЧЕСТВО #НАГРАДА ЗА УБИЙСТВО МОНСТРА MONSTER_ITEM_ID = 4357 #АД ПРЕДМЕТА MONSTER_ITEM_MOUT = 25 #КОЛИЧЕСТВО class Quest(JQuest):#ok def __init__(self,id,name,descr):#ok JQuest.__init__(self,id,name,descr)#ok def init_LoadGlobalData(self) :#ok self.startQuestTimer("gogogo", 600000, None, None) #600000#ok return#ok def onAdvEvent (self,event,npc,player):#ok start = self.loadGlobalQuestVar("start")#ok if event == "gogogo":#ok Announcements.getInstance().announceToAll("Толпы монстров собираются возле Гирана, нужно защитить жителей!")#ok self.startQuestTimer("first", 1000, None, None)#ok self.cancelQuestTimer("gogogo",None,None)#ok elif event == "first":#ok self.addSpawn(18008,80870,142381,-3545,40240,False,600000)#ok self.addSpawn(18008,81062,142356,-3558,40240,False,600000)#ok self.addSpawn(18008,81311,142389,-3580,40240,False,600000)#ok self.addSpawn(18008,80586,142520,-3544,40240,False,600000)#ok self.addSpawn(18008,80699,143015,-3539,40240,False,600000)#ok self.startQuestTimer("second", 90000, None, None)#ok self.cancelQuestTimer("first",None,None)#ok elif event == "second":#ok Announcements.getInstance().announceToAll("Монстры прорвались внутрь Гирана, нужно защитить жителей!")#ok self.addSpawn(20830,81501,144672,-3532,40240,False,600000)#ok self.addSpawn(20830,81318,144467,-3532,40240,False,600000)#ok self.addSpawn(20830,81691,144601,-3532,40240,False,600000)#ok self.addSpawn(20830,81682,145161,-3532,40240,False,600000)#ok self.addSpawn(20830,81494,145410,-3532,40240,False,600000)#ok self.startQuestTimer("runners", 60000, None, None) #ok self.cancelQuestTimer("second",None,None)#ok elif event == "runners":#ok one = self.addSpawn(21087,84064,143774,-3404,40240,False,600000)#ok one.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, L2CharPosition(84043,146812, -3404, 0 )); two = self.addSpawn(21087,83992,143770,-3404,40240,False,600000)#ok two.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, L2CharPosition(84083,146882, -3404, 0 )); three = self.addSpawn(21087,83928,143864,-3404,40240,False,600000)#ok three.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, L2CharPosition(84013,146907, -3404, 0 )); four = self.addSpawn(21087,83812,143816,-3404,40240,False,600000)#ok four.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, L2CharPosition(83963,146907, -3404, 0 )); five = self.addSpawn(21087,83707,143796,-3404,40240,False,600000)#ok five.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, L2CharPosition(83944,146860, -3404, 0 )); self.startQuestTimer("threee", 30000, None, None) #ok self.cancelQuestTimer("runners",None,None)#ok elif event == "threee":#ok Announcements.getInstance().announceToAll("Монстры уже на площади Гирана, город осажден, нужно защитить жителей!")#ok self.addSpawn(22123,84044,147687,-3397,40240,False,600000) #22122 #ok self.addSpawn(22126,83876,147619,-3397,40240,False,600000)#ok self.addSpawn(22132,83645,147697,-3532,40240,False,600000)#ok self.addSpawn(22132,83321,147765,-3461,40240,False,600000)#ok self.addSpawn(22132,83147,147708,-3461,40240,False,600000)#ok self.addSpawn(22132,82326,148188,-3495,40240,False,600000)#ok self.addSpawn(22132,82292,148348,-3459,40240,False,600000)#ok self.addSpawn(22132,82586,148586,-3461,40240,False,600000)#ok self.startQuestTimer("fourr", 20000, None, None) #ok self.cancelQuestTimer("threee",None,None)#ok elif event == "fourr":#ok self.addSpawn(22123,82499,148781,-3461,40240,False,600000) #22122#ok self.addSpawn(22126,82649,148956,-3461,40240,False,600000)#ok self.addSpawn(18008,83042,149010,-3461,40240,False,600000)#ok self.addSpawn(18008,83337,148802,-3397,40240,False,600000)#ok self.addSpawn(18008,82942,148651,-3461,40240,False,600000)#ok self.addSpawn(18008,82260,148478,-3459,40240,False,600000)#ok self.addSpawn(18008,81795,148044,-3495,40240,False,600000)#ok self.addSpawn(18008,81891,147743,-3461,40240,False,600000)#ok self.startQuestTimer("fivee", 60000, None, None) #ok self.cancelQuestTimer("fourr",None,None)#ok elif event == "fivee":#ok Announcements.getInstance().announceToAll("Предводитель монстров прорвался в церковь Гирана, нужно защитить жителей!")#ok self.addSpawn(22123,84442,148621,-3428,40240,False,600000) #22122#ok self.addSpawn(22126,84440,148573,-3394,40240,False,600000)#ok self.addSpawn(18008,84428,148680,-3394,40240,False,600000)#ok self.addSpawn(22132,84534,148660,-3394,40240,False,600000)#ok self.addSpawn(22132,84521,148618,-3428,40240,False,600000)#ok self.addSpawn(18008,84511,148571,-3394,40240,False,600000)#ok self.startQuestTimer("boss", 10000, None, None) #ok self.cancelQuestTimer("fivee",None,None)#ok elif event == "boss":#ok self.addSpawn(29065,85980,148619,-3428,40240,False,600000) #ok self.cancelQuestTimer("boss",None,None)#ok return#ok def onKill(self,npc,player,isPet):#ok st = player.getQuestState(qn)#ok npcId = npc.getNpcId()#ok name = player.getName()#ok start = self.loadGlobalQuestVar("start")#ok if npcId == 29065 and start == "1":#ok Announcements.getInstance().announceToAll("Главарь монстров повержен, игрок "+name+" нанес последний удар!")#ok Announcements.getInstance().announceToAll("Монстры отступают!")#ok st.giveItems(GLAV_ITEM_ID_1,GLAV_ITEM_MOUT_1)#ok st.giveItems(GLAV_ITEM_ID_2,GLAV_ITEM_MOUT_2)#ok elif npcId in MOBS and start == "1":#ok st.giveItems(MONSTER_ITEM_ID,MONSTER_ITEM_MOUT)#ok return#ok QUEST = Quest(-1, qn, "tvtevent")#ok CREATED = State('Start',QUEST)#ok QUEST.setInitialState(CREATED)#ok QUEST.addKillId(29065)#ok for i in MOBS:#ok QUEST.addKillId(i)#ok
  12. emil1993

    Иероглифы

    что то юзнул я поиск ничего не нашел(
×
×
  • Создать...