11111111 19 Опубликовано 30 ноября, 2017 Есть скрипт на респ рб в определенный промежуток времени? Interlude Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Capitalist 19 Опубликовано 30 ноября, 2017 (изменено) В датапаке врядли. Если интересует, за символическую плату реализую тебе. С возможностью добавлять нескольких рб и прописывать им час во сколько они должны респаться. Будет отдельная табличка в бд с таким видом: boss_id, x, y, z, hour, minute ну и в ядре инстанс пропишу под этого рб, если есть исходы. Если нет - такое врядли реализуешь (хотя сморя че за сборка). Изменено 30 ноября, 2017 пользователем Capitalist Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
(D)uality 700 Опубликовано 30 ноября, 2017 В датапаке врядли. Если интересует, за символическую плату реализую тебе. С возможностью добавлять нескольких рб и прописывать им час во сколько они должны респаться. Будет отдельная табличка в бд с таким видом: boss_id, x, y, z, hour, minute ну и в ядре инстанс пропишу под этого рб, если есть исходы. Если нет - такое врядли реализуешь (хотя сморя че за сборка). В наших скриптах реализованы респы РБ в определенное время без вмешательств в ядро. Так что возможно и без исходов. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Capitalist 19 Опубликовано 30 ноября, 2017 В наших скриптах реализованы респы РБ в определенное время без вмешательств в ядро. Так что возможно и без исходов. Здорово. Тогда это будет для меня ещё легче. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 30 ноября, 2017 Есть готовый скрипт, Исходы не нужны Контакты в профиле Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Arrow 24 Опубликовано 30 ноября, 2017 (изменено) есть от ит.су хз пойдет ли вам пробуйте [spoiler=открой меня] package custom.q8084_RaidRespawn; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.concurrent.TimeUnit; import ru.catssoftware.gameserver.Announcements; import ru.catssoftware.gameserver.ThreadPoolManager; import ru.catssoftware.gameserver.datatables.NpcTable; import ru.catssoftware.gameserver.model.L2Spawn; import ru.catssoftware.gameserver.model.Location; 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.templates.chars.L2NpcTemplate; import ru.catssoftware.tools.random.Rnd; public class q8084_RaidRespawn extends Quest { //ид босса private final static int BOSS_ID = 37477; //время спавна private final static String TIME = "21:00"; //разброс, минуты private final static int RANGE = 30; //интервал появления, часы //private final static int INTERVAL = 24; //координаты private final static String LOCATION = "-88427,154644,-3638"; // private static boolean _isKilled = false; private static RespawnPoint RESPAWN_POINT; public static class RespawnPoint { public int hour; public int minute; public Location loc; public RespawnPoint(int hour, int minute, Location loc) { this.hour = hour; this.minute = minute; this.loc = loc; } } public q8084_RaidRespawn(int questId, String name, String descr) { super(questId, name, descr); String[] time = TIME.split(":"); String[] loc = LOCATION.split(","); RESPAWN_POINT = new RespawnPoint(Integer.parseInt(time[0]), Integer.parseInt(time[1]), new Location(Integer.parseInt(loc[0]), Integer.parseInt(loc[1]), Integer.parseInt(loc[2]))); calcNextRespawn(); this.addKillId(BOSS_ID); } public static void main(String... arguments) { new q8084_RaidRespawn(8084, "q8084_RaidRespawn", "Raid Respawn"); } @@override public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) { _isKilled = true; calcNextRespawn(); Announcements.getInstance().announceToAll("Игрок " + killer.getName() + " нанес последний удар по боссу " + npc.getName() + "!"); return null; } private long convertSecToMinutes(int time) { return TimeUnit.SECONDS.toMillis(time); } private void calcNextRespawn() { int time = (int) getNextRespawn(RESPAWN_POINT.hour, RESPAWN_POINT.minute); int minus = (int) TimeUnit.MINUTES.toSeconds(RANGE); int plus = (int) TimeUnit.MINUTES.toSeconds(RANGE); long next = convertSecToMinutes(Rnd.get(time - minus, time + plus)); ThreadPoolManager.getInstance().scheduleGeneral(new SpawnTask(), next); } private static long getNextRespawn(int hour, int minute) { long next_respawn = 0; Calendar tomorrow = new GregorianCalendar(); Calendar result = new GregorianCalendar( tomorrow.get(Calendar.YEAR), tomorrow.get(Calendar.MONTH), tomorrow.get(Calendar.DATE), hour, minute); next_respawn = result.getTimeInMillis(); next_respawn = next_respawn - System.currentTimeMillis(); if (next_respawn < 0) { next_respawn += TimeUnit.DAYS.toMillis(1); } System.out.println("##q8084_RaidRespawn##" + (System.currentTimeMillis() + next_respawn)); return TimeUnit.MILLISECONDS.toSeconds(next_respawn); } public static class SpawnTask implements Runnable { public SpawnTask() { } @@override public void run() { if (_isKilled){ return; } try { L2NpcTemplate template = NpcTable.getInstance().getTemplate(BOSS_ID); L2Spawn spawn = new L2Spawn(template); spawn.setLocx(RESPAWN_POINT.loc.getX()); spawn.setLocy(RESPAWN_POINT.loc.getY()); spawn.setLocz(RESPAWN_POINT.loc.getZ() + 20); spawn.setRespawnDelay(600000); spawn.setHeading(2412); spawn.spawnOne(true); spawn.stopRespawn(); Announcements.getInstance().announceToAll("Raid Boss возродился! Телепорт в PvP зону с любого города!!"); } catch (Exception e) { System.out.println("##q8084_RaidRespawn# can't spawn boss."); } } } } Изменено 30 ноября, 2017 пользователем Arrow Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TEPAH0BA 45 Опубликовано 24 декабря, 2017 В 01.12.2017 в 02:01, Arrow сказал: есть от ит.су хз пойдет ли вам пробуйте [spoiler=открой меня] package custom.q8084_RaidRespawn; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.concurrent.TimeUnit; import ru.catssoftware.gameserver.Announcements; import ru.catssoftware.gameserver.ThreadPoolManager; import ru.catssoftware.gameserver.datatables.NpcTable; import ru.catssoftware.gameserver.model.L2Spawn; import ru.catssoftware.gameserver.model.Location; 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.templates.chars.L2NpcTemplate; import ru.catssoftware.tools.random.Rnd; public class q8084_RaidRespawn extends Quest { //ид босса private final static int BOSS_ID = 37477; //время спавна private final static String TIME = "21:00"; //разброс, минуты private final static int RANGE = 30; //интервал появления, часы //private final static int INTERVAL = 24; //координаты private final static String LOCATION = "-88427,154644,-3638"; // private static boolean _isKilled = false; private static RespawnPoint RESPAWN_POINT; public static class RespawnPoint { public int hour; public int minute; public Location loc; public RespawnPoint(int hour, int minute, Location loc) { this.hour = hour; this.minute = minute; this.loc = loc; } } public q8084_RaidRespawn(int questId, String name, String descr) { super(questId, name, descr); String[] time = TIME.split(":"); String[] loc = LOCATION.split(","); RESPAWN_POINT = new RespawnPoint(Integer.parseInt(time[0]), Integer.parseInt(time[1]), new Location(Integer.parseInt(loc[0]), Integer.parseInt(loc[1]), Integer.parseInt(loc[2]))); calcNextRespawn(); this.addKillId(BOSS_ID); } public static void main(String... arguments) { new q8084_RaidRespawn(8084, "q8084_RaidRespawn", "Raid Respawn"); } @@override public String onKill(L2NpcInstance npc, L2PcInstance killer, boolean isPet) { _isKilled = true; calcNextRespawn(); Announcements.getInstance().announceToAll("Игрок " + killer.getName() + " нанес последний удар по боссу " + npc.getName() + "!"); return null; } private long convertSecToMinutes(int time) { return TimeUnit.SECONDS.toMillis(time); } private void calcNextRespawn() { int time = (int) getNextRespawn(RESPAWN_POINT.hour, RESPAWN_POINT.minute); int minus = (int) TimeUnit.MINUTES.toSeconds(RANGE); int plus = (int) TimeUnit.MINUTES.toSeconds(RANGE); long next = convertSecToMinutes(Rnd.get(time - minus, time + plus)); ThreadPoolManager.getInstance().scheduleGeneral(new SpawnTask(), next); } private static long getNextRespawn(int hour, int minute) { long next_respawn = 0; Calendar tomorrow = new GregorianCalendar(); Calendar result = new GregorianCalendar( tomorrow.get(Calendar.YEAR), tomorrow.get(Calendar.MONTH), tomorrow.get(Calendar.DATE), hour, minute); next_respawn = result.getTimeInMillis(); next_respawn = next_respawn - System.currentTimeMillis(); if (next_respawn < 0) { next_respawn += TimeUnit.DAYS.toMillis(1); } System.out.println("##q8084_RaidRespawn##" + (System.currentTimeMillis() + next_respawn)); return TimeUnit.MILLISECONDS.toSeconds(next_respawn); } public static class SpawnTask implements Runnable { public SpawnTask() { } @@override public void run() { if (_isKilled){ return; } try { L2NpcTemplate template = NpcTable.getInstance().getTemplate(BOSS_ID); L2Spawn spawn = new L2Spawn(template); spawn.setLocx(RESPAWN_POINT.loc.getX()); spawn.setLocy(RESPAWN_POINT.loc.getY()); spawn.setLocz(RESPAWN_POINT.loc.getZ() + 20); spawn.setRespawnDelay(600000); spawn.setHeading(2412); spawn.spawnOne(true); spawn.stopRespawn(); Announcements.getInstance().announceToAll("Raid Boss возродился! Телепорт в PvP зону с любого города!!"); } catch (Exception e) { System.out.println("##q8084_RaidRespawn# can't spawn boss."); } } } } Помогите пожалуйста переделать под PW , импорты переписал и путь к файлу но все равно бьет ошибку . Буду очень Благодарен Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты