Сборки серверов

СливПлатные

Сейчас онлайн

  • imnstarzzz
  • Nikita_JO
  • АйсЧтоль
  • timverhovniy
  • solidwild
  • sosi43i2432
  • 0902Temka0902
  • Ben4ik_111
  • Sanseddy
  • luckyhh
  • fr1z
  • Danya_OVH
  • platikmoggg
  • EzRaika
  • wave6lol
  • Set
  • 1m0rtalirus
  • nizam
  • ArcK3
  • 535353
  • chinh
  • dd55_GG
  • Jezevcik20
  • iMeeTake
  • tianyu
  • Rossek2
  • ymka
  • RavenMorrrigan
  • Reftik231
  • joker20222
  • Niranqwq1
  • jake888
  • Mu_Guang
  • liro
  • debisxche
  • saaa
  • kekstm989
  • VoinDrakona
  • BlackBro
  • Dark1107
  • asdasd2392731sajd
  • scom_1209yt
  • Fervid
  • flazee
  • daiun
  • Vlas31
  • asdasdasdusad
  • mygamingniki123312
  • kirkabak
  • p0n4ek
  • denfry
  • qqDarkDeZzZ
  • daiv
  • Kapybaraa
  • BelzeBool
  • Maga_
  • Helion Anfer
  • pizzatop444444
  • schubertz7
  • Xmeig
  • Ananas8
  • Snon_S
  • Yash
  • DenPlayStar
  • ggtfshzfgk
  • Kont
  • Plate
  • xtonle
  • dywwoo6
  • ThoSanTreEm
  • W1terix
  • sar7anovss
  • Shawon12345

Ищу плагин на время исполнения комманды

  • Автор темыUnitei
  • Дата начала
Unitei
Ищу плагин на время исполнения комманды (чтобы например когда игрок нажимал в меню иконку, стартовал таймер когда исполнится эта команда)
 
Chernyash
Ищу плагин на время исполнения комманды (чтобы например когда игрок нажимал в меню иконку, стартовал таймер когда исполнится эта команда)
Так в DeluxeMenus есть такая функция
Пример:

Код:
menu_title: 'test'
size: 54
items:
  item-1:
    amount: 1
    material: 'STONE'
    left_click_commands:
    - '[console] say Test<delay=10>'
    slot: 4
open_command:
  - 'test'
register_command: true
update_interval: 3
 
Последнее редактирование:
LV_GooSe
Так в DeluxeMenus есть такая функция
В этом плагине к сожалению, нету реализация показа адекватного отображение "Таймера".
В примере который ты скинул, видно, что через 10 секунд идёт сообщение в чат от консоли.
Но адекватного обновляемого отображение таймера увы нет, как показал я на примере ActionBar`а, чуть выше.

Но подмечу про адекватность, что это можно реализовать в DeluxeMenus, используя [meta], и множество вариаций кнопок, имитируя таймер.

Если бы, задача состояла в том, что требуется просто реализовать команду с задержкой - этот вариант бы подошёл.
 
LV_GooSe
Подумал я чуток, и решил не реализововать самописный плагин.
Чтобы не пугаться что какой-то рандом с помощью плагина украдёт с дедика голые фотки и т.п. :oops:

Меня заинтересовало предложение @Chernyash, а именно использование DeluxeMenus.
Как я отписывал чуток выше - в дефолте использование того, что хочет @Унитей, не возможно реализовать адекватно.
Но никто не отменял использование плагина PlaceholderAPI и аддона JavaScript.
Я просто предоставлю инструкцию как это можно реализовать:

Для реализации потребуется такие плагины как:
- DeluxeMenus
- PlaceholderAPI
Так же, потребуется загрузить аддон JavaScript:
/papi ecloud download Javascript
Так же, в этом скрипте используется %player_name%, для того чтобы скрипт записывал, когда и какой игрок нажал на кнопочку, чтобы его загрузить используйте:
/papi ecloud download Player, если же вам это логирование вообще не нужно, то уберите методы var dataLoc, а так же var currentData в этом скрипте


Создаём(или просто копируем, то что я написал) наш ультра-крутой скрипт (Скрипт должен находится в plugins/PlacehodlerAPI/javascripts):
JavaScript:
var monthSymbol = " мес";
var daySymbol = " дней";
var hourSymbol = " часов";
var minuteSymbol = " мин";
var secondSymbol = " сек";

var arg = args[0].split("_");
if (arg.length === 2) {
    var ID = arg[0];
    var cooldown = arg[1];
}

var dataLoc = "%player_name%." + ID + ".date";
var currentDate = new Date();

function Cooldown() {
    if (!Data.exists(dataLoc)) {
        return "0 сек";
    } else {
        var startDate = new Date(Data.get(dataLoc));
        var difference = currentDate - startDate;
        var result = Math.floor(difference / 1000);
        if (result >= cooldown) {
            return "0 сек";
        } else {
            startDate = new Date(startDate.getTime() + (cooldown * 1000));
            var result = startDate - currentDate;

            var months = Math.floor(result / (1000 * 60 * 60 * 24 * 31));
            var days = Math.floor(result % (1000 * 60 * 60 * 24 * 31) / (1000 * 60 * 60 * 24));
                var hours   = Math.floor(result % (1000 * 60 * 60 * 24) / (1000 * 60 * 60));
              var minutes = Math.floor(result % (1000 * 60 * 60) / (1000 * 60));
            var seconds = Math.floor(result % (1000 * 60) / (1000));

            if (months === 0 && days === 0 && hours === 0 && minutes === 0) {
                return seconds + secondSymbol;
            } else if (months === 0 && days === 0 && hours === 0) {
                return minutes + minuteSymbol + seconds + secondSymbol;
            } else if (months === 0 && days === 0) {
                return hours + hourSymbol + minutes + minuteSymbol + seconds + secondSymbol;
            } else if (months === 0) {
                return days + daySymbol + hours + hourSymbol + minutes + minuteSymbol + seconds + secondSymbol;
            } else {
                return months + monthSymbol + days + daySymbol + hours + hourSymbol + minutes + minuteSymbol + seconds + secondSymbol;
            }
        }
    }
}

function start() {
    var data = currentDate.toString();

    Data.set(dataLoc, data);
    Placeholder.saveData();
}

function run() {
    if (args.length !== 1 || arg.length !== 2) {
        return "Неверный синтаксис, пожалуйста, используйте этот:\n%" + "javascript_cooldown_[ID]_[Cooldown/Start]" + "%";
    } else if (cooldown.toUpperCase() === "START") {
        return start();
    } else if (isNaN(cooldown)) {
        return "Пожалуйста, установите действительное время восстановления.";
    } else if (!isNaN(cooldown)) {
        return Cooldown();
    } else {
        return "Неверный синтаксис, пожалуйста, используйте этот:\n%" + "javascript_cooldown_[ID]_[Cooldown/Start]" + "%";
    }
}
run();

Не забудьте инициализировать скрипт в javascript_placeholders.yml, должно выглядеть так:
Код:
test:
  file: test.js

Далее приступим к созданию самой менюшки в DeluxeMenus:
Код:
menu_title: 'Тестовое меню'
update_interval: 1
open_command: test
size: 9
items:
  'button1':
    material: STONE
    slot: 4
    priority: 1
    display_name: '&aНажми на меня!'
    view_requirement:
      requirements:
        Delay:
          type: string equals
          input: '%javascript_test_STONE_15%'
          output: 0 сек
    lore:
    - ''
    - '&7Произвести задержку на 15 секунд'
    - ''
    - '&8» &eНажмите, чтобы включить'
    left_click_commands:
    - '[sound] ENTITY_ARROW_HIT_PLAYER'
    - '[refresh]'
    right_click_commands:
    - '[sound] ENTITY_ARROW_HIT_PLAYER'
    - '[refresh]'
  'button2':
    material: BARRIER
    slot: 4
    update: true
    priority: 2
    display_name: '&cНе нажимай на меня!'
    lore:
    - ''
    - '&7Производится задержка на 15 секунд'
    - ''
    - '&8» &cПожалуйста, подождите %javascript_test_STONE_15%,'
    - '&cчтобы использовать снова эту кнопочку.'
    left_click_commands:
    - '[sound] ENTITY_ARROW_HIT_PLAYER'
    - '[refresh]'
    right_click_commands:
    - '[sound] ENTITY_ARROW_HIT_PLAYER'
    - '[refresh]'

Ну и сообствено всё.
 
ВерхНиз