GаmeOver 118 Опубликовано 9 сентября, 2015 Хочу доделать скрипт написан Demoncool спасибо эму за этоНо я хочу что бы скрипт говорил еще что рб появится через 20 мин допустим.Как это сделать?Вот скрипт сам package ai; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.quest.jython.QuestJython; import net.sf.l2j.gameserver.Announcements; public class NpcScriptThree extends QuestJython { //Ид боссов private final static int[] BossIds = {59021}; public NpcScriptThree(int questId, String name, String descr) { super(questId, name, descr, 1); for (int BossIds1 : BossIds) addSpawnId(BossIds1); } public String onSpawn(L2NpcInstance raidboss) { int npcId = raidboss.getNpcId(); for (int id : BossIds) if (npcId == id) Announcements.getInstance().announceToAll("РейдБосс : " + raidboss.getName() + " появился в мире!"); return null; } public static void main(String[] args) { new NpcScriptThree(-1, "NpcScriptThree", "ai"); } } нужно под ПВЗарание спасибо. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
(D)uality 700 Опубликовано 9 сентября, 2015 Хочу доделать скрипт написан Demoncool спасибо эму за это Но я хочу что бы скрипт говорил еще что рб появится через 20 мин допустим. Как это сделать? Вот скрипт сам package ai; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.quest.jython.QuestJython; import net.sf.l2j.gameserver.Announcements; public class NpcScriptThree extends QuestJython { //Ид боссов private final static int[] BossIds = {59021}; public NpcScriptThree(int questId, String name, String descr) { super(questId, name, descr, 1); for (int BossIds1 : BossIds) addSpawnId(BossIds1); } public String onSpawn(L2NpcInstance raidboss) { int npcId = raidboss.getNpcId(); for (int id : BossIds) if (npcId == id) Announcements.getInstance().announceToAll("РейдБосс : " + raidboss.getName() + " появился в мире!"); return null; } public static void main(String[] args) { new NpcScriptThree(-1, "NpcScriptThree", "ai"); } } нужно под ПВ Зарание спасибо. В таблице со спавнлистом РБ есть так же время следующего спавна рейд босса. Следовательно нужно сделать чтобы скрипт сверял текущее время и указанное время. Время указано в юниксе. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GаmeOver 118 Опубликовано 9 сентября, 2015 В таблице со спавнлистом РБ есть так же время следующего спавна рейд босса. Следовательно нужно сделать чтобы скрипт сверял текущее время и указанное время. Время указано в юниксе. а где в этом скрипте оно написано то? тыкните носом как говориться в каки. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
(D)uality 700 Опубликовано 9 сентября, 2015 а где в этом скрипте оно написано то? тыкните носом как говориться в каки. Нигде. Тут кроме аннонса по факту спавна ничего нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GаmeOver 118 Опубликовано 9 сентября, 2015 Нигде. Тут кроме аннонса по факту спавна ничего нет. А ни как дописать скрипт не льзя? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
(D)uality 700 Опубликовано 9 сентября, 2015 А ни как дописать скрипт не льзя? Можно, почему нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GаmeOver 118 Опубликовано 9 сентября, 2015 Можно, почему нет. Я так понял это будет стоить да? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
(D)uality 700 Опубликовано 9 сентября, 2015 Я так понял это будет стоить да? Наверное, яж не скриптер, моё дело допасы пилить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JoeyTribbiani 822 Опубликовано 9 сентября, 2015 Я так понял это будет стоить да? Естественно,что бесплатно никто тебе делать не будет. Мэйну напиши,или Демону, за определенную сумму сделают. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GаmeOver 118 Опубликовано 9 сентября, 2015 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
chiton 12 Опубликовано 10 сентября, 2015 (изменено) package ai; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.quest.jython.QuestJython; import net.sf.l2j.gameserver.Announcements; public class NpcScriptThree extends QuestJython { //Ид боссов private final static int[] BossIds = {59021}; public NpcScriptThree(int questId, String name, String descr) { super(questId, name, descr, 1); for (int BossIds1 : BossIds) addSpawnId(BossIds1); } public String onSpawn(L2NpcInstance raidboss) { int npcId = raidboss.getNpcId(); for (int id : BossIds) if (npcId == id) Announcements.getInstance().announceToAll("РейдБосс : " + raidboss.getName() + " появился в мире!"); return null; } public static void main(String[] args) { new NpcScriptThree(-1, "NpcScriptThree", "ai"); } } ну смотри строка Announcements.getInstance().announceToAll("РейдБосс : " + raidboss.getName() + " появился в мире!"); гласит о том что РБ появился. Если тебе нужно чтоб предупреждал за 20 мин то, тебе нужно будет добавить еще один анонс и делей в скрипт, тут даже не важно где но не позней чем addSpawnId(BossIds1);. можно в самом начале. Thread.sleep(клово милисекунд); возможно подойдет, но я не уверен. после делея запускается основной скрипт, который спавнит боса и пишет об етом анонс. Изменено 10 сентября, 2015 пользователем chiton Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GаmeOver 118 Опубликовано 10 сентября, 2015 (изменено) package ai; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.quest.jython.QuestJython; import net.sf.l2j.gameserver.Announcements; public class NpcScriptThree extends QuestJython { //Ид боссов private final static int[] BossIds = {59021}; public NpcScriptThree(int questId, String name, String descr) { super(questId, name, descr, 1); for (int BossIds1 : BossIds) Thread.sleep addSpawnId(BossIds1); } public String onSpawn(L2NpcInstance raidboss) { int npcId = raidboss.getNpcId(); for (int id : BossIds) if (npcId == id) Announcements.getInstance().announceToAll("РейдБосс : " + raidboss.getName() + " появился в мире!"); return null; } public static void main(String[] args) { new NpcScriptThree(-1, "NpcScriptThree", "ai"); } } ну смотри строка Announcements.getInstance().announceToAll("РейдБосс : " + raidboss.getName() + " появился в мире!"); гласит о том что РБ появился. Если тебе нужно чтоб предупреждал за 20 мин то, тебе нужно будет добавить еще один анонс и делей в скрипт, тут даже не важно где но не позней чем addSpawnId(BossIds1);. можно в самом начале. Thread.sleep(клово милисекунд); возможно подойдет, но я не уверен. после делея запускается основной скрипт, который спавнит боса и пишет об етом анонс. Так? Изменено 10 сентября, 2015 пользователем GаmeOver Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
(D)uality 700 Опубликовано 10 сентября, 2015 Так? Чтобы сделать такую функцию нужно хоть немного знать что оно внутри ядра, какие классы и методы нужно использовать. Сразу так с ходу ты ну никак не сделаешь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Influence 3 Опубликовано 10 сентября, 2015 package ai; import net.sf.l2j.gameserver.model.actor.instance.L2NpcInstance; import net.sf.l2j.gameserver.model.quest.jython.QuestJython; import net.sf.l2j.gameserver.Announcements; public class NpcScriptThree extends QuestJython { //Ид боссов private final static int[] BossIds = {59021}; public NpcScriptThree(int questId, String name, String descr) { super(questId, name, descr, 1); for (int BossIds1 : BossIds) addSpawnId(BossIds1); } public String onSpawn(L2NpcInstance raidboss) { int npcId = raidboss.getNpcId(); for (int id : BossIds) if (npcId == id) Announcements.getInstance().announceToAll("РейдБосс : " + raidboss.getName() + " появился в мире!"); return null; } public static void main(String[] args) { new NpcScriptThree(-1, "NpcScriptThree", "ai"); } } ну смотри строка Announcements.getInstance().announceToAll("РейдБосс : " + raidboss.getName() + " появился в мире!"); гласит о том что РБ появился. Если тебе нужно чтоб предупреждал за 20 мин то, тебе нужно будет добавить еще один анонс и делей в скрипт, тут даже не важно где но не позней чем addSpawnId(BossIds1);. можно в самом начале. Thread.sleep(клово милисекунд); возможно подойдет, но я не уверен. после делея запускается основной скрипт, который спавнит боса и пишет об етом анонс. ему нужно предупреждать ДО спавна за 20 минут, так что каким боком тут можно воткнуть Thread.sleep() ?? Так же нужно учитывать что РБ скорее всего не один, и если использовать Thread.sleep могут быть проблемы с потоками Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
ncsSpawN 45 Опубликовано 10 сентября, 2015 ему нужно предупреждать ДО спавна за 20 минут, так что каким боком тут можно воткнуть Thread.sleep() ?? Так же нужно учитывать что РБ скорее всего не один, и если использовать Thread.sleep могут быть проблемы с потоками Почему же можно сделать так, выделить один тред под каждую минуту, идет проверка по всем рб которые есть в таблице циклом. Каждую минуту будет посылаться запрос в бд, внутри функции будет браться данные с grandboss_data, проверка если у какого РБ время спауна меньше 20мин, то выводиться информация и работаем дальше. Все просто до безумия. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Influence 3 Опубликовано 10 сентября, 2015 Почему же можно сделать так, выделить один тред под каждую минуту, идет проверка по всем рб которые есть в таблице циклом. Каждую минуту будет посылаться запрос в бд, внутри функции будет браться данные с grandboss_data, проверка если у какого РБ время спауна меньше 20мин, то выводиться информация и работаем дальше. Все просто до безумия. зачем насиловать бд, если можно заранее высчитать время спауна рб? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 10 сентября, 2015 Почему же можно сделать так, выделить один тред под каждую минуту, идет проверка по всем рб которые есть в таблице циклом. Каждую минуту будет посылаться запрос в бд, внутри функции будет браться данные с grandboss_data, проверка если у какого РБ время спауна меньше 20мин, то выводиться информация и работаем дальше. Все просто до безумия. Вот тут поспорю. Во-первых, ему нужны не только грандбоссы. Во-вторых, зачем нагружать базу лишний раз? По базе можно пройтись только один раз при загрузки. Создать коллекцию мап<ИдБосса, времяРеспа> и при убийстве босса (onKill) записывать инфу в коллекцию и уже работать с ней. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 10 сентября, 2015 А я бы квест таймер запускал равный времени спавну - 20 минут, по окончанию которого светим аннонс, это как самый наипростейший вариант. Если речь идет о конкретных боссах, а не о всех. Там уже надо мапу. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 10 сентября, 2015 Вот тут поспорю. Во-первых, ему нужны не только грандбоссы. Во-вторых, зачем нагружать базу лишний раз? По базе можно пройтись только один раз при загрузки. Создать коллекцию мап<ИдБосса, времяРеспа> и при убийстве босса (onKill) записывать инфу в коллекцию и уже работать с ней. Да, тоже отписался, не вижу смысла делать чек базы постоянный, да и вообще делать какой-то цикл по таймингу. Минус мапы в том, что она как и любые данные сбросятся после рестарта. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 10 сентября, 2015 (изменено) Да, тоже отписался, не вижу смысла делать чек базы постоянный, да и вообще делать какой-то цикл по таймингу. Минус мапы в том, что она как и любые данные сбросятся после рестарта. Для этого я и написал, что при загрузке можно один раз по базе пройтись и наполнить мапу, если в сборке предусмотрено записывать респ обычных РБ в базу. На крайняк, создать новую таблицу и мапу выгружать при рестарте=) Изменено 10 сентября, 2015 пользователем Naik Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
GаmeOver 118 Опубликовано 10 сентября, 2015 Почему же можно сделать так, выделить один тред под каждую минуту, идет проверка по всем рб которые есть в таблице циклом. Каждую минуту будет посылаться запрос в бд, внутри функции будет браться данные с grandboss_data, проверка если у какого РБ время спауна меньше 20мин, то выводиться информация и работаем дальше. Все просто до безумия. Сможете помочь? если вам не сложно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
chiton 12 Опубликовано 11 сентября, 2015 Ну в даном примере описан спавн 1 боса. с несколькими или со всеми босами - ето уже другая задача. етот скрипт никак не связвн с базой. если его запустить он заспавнит боса сразу же при загрузке серва и напишет об етом.если нужен мониторинг босов, я бы не советовал парить себе мозг етим скриптом. ето можно сделать проще. (могу настрочить, но негде тестить, да и не факто что именно ето ему нужно) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 11 сентября, 2015 Ну в даном примере описан спавн 1 боса. с несколькими или со всеми босами - ето уже другая задача. етот скрипт никак не связвн с базой. если его запустить он заспавнит боса сразу же при загрузке серва и напишет об етом. если нужен мониторинг босов, я бы не советовал парить себе мозг етим скриптом. ето можно сделать проще. (могу настрочить, но негде тестить, да и не факто что именно ето ему нужно) Что? Вы хоть скрипт читали и что он делает? Зачем в заблуждения человека вводить? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
chiton 12 Опубликовано 11 сентября, 2015 Что? Вы хоть скрипт читали и что он делает? Зачем в заблуждения человека вводить? сорян, чего то напутал. перечитал. (почемуто думал что ето скипт спавна с анонсом) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты