Перейти к содержанию
Если у вас техническая проблема с модом или их сборкой, то создавайте тему в разделе "Технические проблемы".
В разделе "Моды" запрещено набирать игроков на свой сервер и искать друзей для игры.

CustomNPC/Удар нпс молниями


PartyFall_5

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

В теме 4 сообщения

У меня установлена версия кастомнпс 1.16.5 от goodbird. Хочу командой ударить абсолютно всех неписей молниями.

Как такое реализовать

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

  • 2 недели спустя...

Для начала тз грамотно сделать. 
В какой момент, какой командой. 

Если проще, можно использовать в скриптах и в форге скриптах функции чата. Берешь скриптер из мода.
Например :

В Форге скрипты (предварительно включив их) вставляешь вот это:

var api = Java.type("noppes.npcs.api.NpcAPI").Instance();
var world = api.getIWorlds()[0];
function commandEvent(event) {
    try {
        var commandName = event.event.getParseResults().getReader().getString();
        if (commandName === "ударить всех молнией") {
            world.getTempdata().put("молния", true);
        }
    } catch (e) { }
}


Внутрь НПС в скрипты (предварительно включив их в нпс) вставляешь вот это:

var api = Java.type("noppes.npcs.api.NpcAPI").Instance();
var world = api.getIWorlds()[0];

var thunder = false;
function tick(event) {

    try {
      if (world.getTempdata().get("молния") && !thunder ) {
         world.thunderStrike(event.npc.x, event.npc.y, event.npc.z) 
         thunder = true;
         event.npc.timers.forceStart(1, 100, true);

    } catch (e) { event.npc.say("Ошибка в tick: " + (e.stack || e)) }
 }
function timer(event) {

    try {
      if (event.id === 1) {
         world.getTempdata().remove("молния")
         thunder = false;
         event.npc.timers.stop(1);
      }

    } catch (e) { event.npc.say("Ошибка в timer: " + (e.stack || e)) }
}


Возможно опечататься мог или еще что, по памяти написал. В апи документашки по моду сам можешь посмотреть верно ли все методы указаны. 
Я на 1.20.1 пишу, но возможно и на 1.16.5 заработает. 


Суть в том, что ты пишешь в чат:

ударить всех молнией

И все прогруженные нпс начнут проверять, есть ли выполненная команда в мире. 
Если есть - ударятся молниями и поставят переменную молнии в позицию выполнено. 
Запустят таймер на 5 сек. на удаление активации молнии (каждый нпс будет запускать таймер). 
Если ударов молниями по нпс не происходят в течении 5 сек, то активация молнии прекращается до следующей команды. 

Как т так. Но не факт что будет работать) Тесты нужны ж )

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

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

  • 1 месяц спустя...
В 22.07.2025 в 08:45, Deus сказал:

Для начала тз грамотно сделать. 
В какой момент, какой командой. 

Если проще, можно использовать в скриптах и в форге скриптах функции чата. Берешь скриптер из мода.
Например :

В Форге скрипты (предварительно включив их) вставляешь вот это:

var api = Java.type("noppes.npcs.api.NpcAPI").Instance();
var world = api.getIWorlds()[0];
function commandEvent(event) {
    try {
        var commandName = event.event.getParseResults().getReader().getString();
        if (commandName === "ударить всех молнией") {
            world.getTempdata().put("молния", true);
        }
    } catch (e) { }
}


Внутрь НПС в скрипты (предварительно включив их в нпс) вставляешь вот это:

var api = Java.type("noppes.npcs.api.NpcAPI").Instance();
var world = api.getIWorlds()[0];

var thunder = false;
function tick(event) {

    try {
      if (world.getTempdata().get("молния") && !thunder ) {
         world.thunderStrike(event.npc.x, event.npc.y, event.npc.z) 
         thunder = true;
         event.npc.timers.forceStart(1, 100, true);

    } catch (e) { event.npc.say("Ошибка в tick: " + (e.stack || e)) }
 }
function timer(event) {

    try {
      if (event.id === 1) {
         world.getTempdata().remove("молния")
         thunder = false;
         event.npc.timers.stop(1);
      }

    } catch (e) { event.npc.say("Ошибка в timer: " + (e.stack || e)) }
}


Возможно опечататься мог или еще что, по памяти написал. В апи документашки по моду сам можешь посмотреть верно ли все методы указаны. 
Я на 1.20.1 пишу, но возможно и на 1.16.5 заработает. 


Суть в том, что ты пишешь в чат:

ударить всех молнией

И все прогруженные нпс начнут проверять, есть ли выполненная команда в мире. 
Если есть - ударятся молниями и поставят переменную молнии в позицию выполнено. 
Запустят таймер на 5 сек. на удаление активации молнии (каждый нпс будет запускать таймер). 
Если ударов молниями по нпс не происходят в течении 5 сек, то активация молнии прекращается до следующей команды. 

Как т так. Но не факт что будет работать) Тесты нужны ж )

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

Огромное спасибо.

Но в скриптах я теперь тоже не новичок)

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

  • 2 недели спустя...

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

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

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

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

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

Войти

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

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

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