Перейти к содержанию
Авторизация  
11111111

Скрипт на респ рб 20:00-22:00

Рекомендуемые сообщения

Есть скрипт на респ рб в определенный промежуток времени? Interlude

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В датапаке врядли. Если интересует, за символическую плату реализую тебе. С возможностью добавлять нескольких рб и прописывать им час во сколько они должны респаться. Будет отдельная табличка в бд с таким видом:

 

boss_id, x, y, z, hour, minute

 

ну и в ядре инстанс пропишу под этого рб, если есть исходы. Если нет - такое врядли реализуешь (хотя сморя че за сборка).

Изменено пользователем Capitalist

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В датапаке врядли. Если интересует, за символическую плату реализую тебе. С возможностью добавлять нескольких рб и прописывать им час во сколько они должны респаться. Будет отдельная табличка в бд с таким видом:

 

boss_id, x, y, z, hour, minute

 

ну и в ядре инстанс пропишу под этого рб, если есть исходы. Если нет - такое врядли реализуешь (хотя сморя че за сборка).

В наших скриптах реализованы респы РБ в определенное время без вмешательств в ядро. Так что возможно и без исходов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В наших скриптах реализованы респы РБ в определенное время без вмешательств в ядро. Так что возможно и без исходов.

Здорово. Тогда это будет для меня ещё легче.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть от ит.су хз пойдет ли вам пробуйте 

[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.");
}
}
    }

}

 

 

Изменено пользователем Arrow

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 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 , импорты переписал и путь к файлу но все равно бьет ошибку .

Буду очень Благодарен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...