Плагин [MECH/FUN] ReActions - Что? Тогда? Иначе! [BukkitDev]

Не могу понять, что не так, хочу, чтобы когда игрок использует команду /pl, ему выводилось сообщение.
Делаю так:
Код:
COMMAND:
  ЗапретКоманд:
    command: commsnd:pl
    actions:
    - cancel_event=true
    - MESSAGE=&2Список плагинов закрыт.
    reactions: []
Что такое commsnd? И с кириллическим названием - не знаю как пройдёт.
 
Хотелось бы узнать, можно ли считать, какой игрок нанес максимальное кол-во урона мобу?
Допустим у меня есть босс, и тому, кто нанес больше всего урона хочу выдавать дополнительную плюшку.
Нашел только %damage%, но он запоминает только какой урон нанесен был сейчас, а не общий. Немогу представить к это реализовать
 
Последнее редактирование:
ООО! Плюсуй дэмеджи для каждого игрока в персональных переменных, и я не уверен, что получится.
 
а можно пример на коленке хотя-бы?
На коленке: при ударе игроком моба ( MOB_DAMAGE ) добавляйте к персональной переменной игрока ( Переменные ) значение, равное плейсхолдеру %damage%. Когда моб умрёт ( MOB_KILL ), Вы должны сравнить итоговый урон всех игроков. Как, если все персональные переменные закреплены за никами, но ников Вы не знаете?

Это сложный вопрос, ведь мы имеем массив из имён и чисел, а к действиям с массивами ReActions не приучен.
Если бы в имени переменной при сравнении можно было указывать регулярку, то всё сводилось бы к проверке значений в глобальных переменных каждого из игроков. Немножко псевдокода:
Java:
if (%var:MobDamage-%player%% >= %var:MobDamage-(?!%player%)\S+%)
{
    // Если урон у игрока наивысший, выполняем то-то.
}
То есть, мы сравниваем урон конкретного игрока со всеми остальными с помощью глобальной переменной. Такое можно сделать и на ReActions, но вся проблема в отсутствии возможности указать имя переменной как регулярное выражение. @fromgate?

Другой способ заключается в том, что мы уже знаем имена глобальных переменных. То есть, глобальным переменным присваиваются такие имена, чтобы их можно было прокрутить в цикле проверок у каждого игрока, для кого был запущен EXEC. Вот как я себе представляю алгоритм:

Если игрок ударил моба, то ему в персональную переменную "Mob-Damage-Personal" будет занесено число. В глобальную переменную "Mob-1" будет занесено значение, равное имени игрока, если такая переменная уже не объявлена, и если она не содержит ожидаемого имени игрока. Если содержит (то есть, операция создания переменной "Mob-1" прошла, значение в ней Masha), то мы просто добавляем нанесённый урон в персональную переменную, а глобальную "Mob-1" не трогаем и ничего нового не создаём.

Если моба ударил новый игрок, то мы проверяем, существует ли переменная "Mob-1" и равно ли значение в ней имени игрока. Если нет, то создаём переменную "Mob-2", в значении которой будет имя нового игрока. Самому же новому игроку Petya в личную переменную будет занесено значение нанесённого урона. (это ещё нужно в какой-нибудь цикл засунуть, чтобы имя переменной Mob-N увеличивалось правильно :p)

Потом, когда моб умирает и мы запускаем EXEC для всех игроков в радиусе его смерти, этот EXEC должен запустить цикл, количество итераций которого будет равно количеству созданных переменных "Mob-N" . В цикле будет по очереди сравниваться урон, нанесённый игроком, для которого был выполнен активатор, с уроном других игроков в такой форме:
YAML:
    - VAR_PLAYER_GREATER=id:Mob-Damage-Personal value:%varp:%var:Mob-N%.Mob-Damage-Personal%

Вот. Это, по-моему, реализовать возможно. Осталось подумать над циклами :)
 
Последнее редактирование:
Я, пожалуй, подожду :D
Может создатель плагина как-то это сделает в функционале, чтобы можно было считать урон)
 
@fromgate, Можно добавить к действию CALC(или сделать какое-либо другое) режим, который будет расставлять числа, которые мы напишем через запятую(или переменные), в порядке возрастания или убывания? А то пост от Lyosha12 немного пугает.
 
@fromgate, Можно добавить к действию CALC(или сделать какое-либо другое) режим, который будет расставлять числа, которые мы напишем через запятую(или переменные), в порядке возрастания или убывания? А то пост от Lyosha12 немного пугает.
Лучше бы сделать реализацию массивов. А так же оператор foreach не помешал бы :)
немного пугает.
Прочитайте 10 раз и поймёте о чём речь. Важно знать, что активатор EXEC запускается для каждого игрока. Для КАЖДОГО. И у каждого игрока должен он вызывать цикл сравнения его переменной с другими. Как - я уже показал - обращением к личной переменной через точку.
Ещё идея: можно создать метод, который принимает строку, в которой будут написаны ники игроков, которые являются глобальными переменными, значения в которых будут соответствовать величине нанесённого урона. Не в даваясь в детали сравнения, на выходе должна быть строка, которая содержит одно-единственное слово - ник-переменную с наибольшим значением. Вот тогда будет шик да блеск.
А ведь действительно, @fromgate, если Вы не хотите реализовывать язык программирования на языке программирования, то почему бы не сделать больше методов, которые будут аналогами сложных систем? Например таких, как я описывал выше. Для сравнения одной переменной со списком других, да ещё и с навешанными никами, у Вас нет ни единого метода :(

Кстати говоря, именно из-за наших самодельных систем может страдать производительность. Например, мы запускаем EXEC для всех игроков, но он начинает работать только с группой, которая соответствует установленным флагам. Если такое делать каждый тик - лаги обеспечены. Да что там лаги: я делал систему, которая работает сугубо с одним человеком, открывая перед его носом меню каждые 2 тика. И что Вы представляете? При онлайне в 400 сервер начинает подвисать, по словам заказчика. Так что, повторюсь, если Вы будете позволять реализовывать сложные системы и методы с помощью ReActions, а не Java, то плагин быстро заимеет ярлык второго редстоуна.
 
Ещё идея: можно создать метод, который принимает строку, в которой будут написаны ники игроков, которые являются глобальными переменными, значения в которых будут соответствовать величине нанесённого урона.
Не в даваясь в детали сравнения, на выходе должна быть строка, которое содержит одно-единственное слово - ник-переменную с наибольшим значением. Вот тогда будет шик да блеск.
У себя в голове я имел в виду почти тоже самое. Тогда действительно будет
 
Народ, аналогичных плагинов - нет, плагинов, которые по объему действий делают столько - единицы. Что там грешить-то - это уже шик-блеск. Конечно, можно придумать еще много всякого - в зависимости от того, у кого и как настроена голова и творческое начало (вес итемов, ограничение по переносимому весу, энергоемкость различного вида дров и чертову тучу приятных моментов), но вопрос - не загрузит ли оно сервак наглухо?
И таки-да, уважаемый @fromgate, кроме пэйпэла придумайте какой-нибудь вариант благодарности, пожалуйста, а то у меня принципиально не переводятся рубли туда с карточки.
 
Последнее редактирование:
но вопрос - не загрузит ли оно сервак наглухо?
Если мы будем реализовывать сложные системы, которые как остаточное явление косвенно работают и для тех, кто не участвует в конкретном событии, то чем больше таких систем будет - тем больше будет виснуть сервер.
 
Если мы будем реализовывать сложные системы, которые как остаточное явление косвенно работают и для тех, кто не участвует в конкретном событии, то чем больше таких систем будет - тем больше будет виснуть сервер.
согласен. Поэтому учим Java :nerd:
 
А почему нет доступа к сайту? http://reactions.fromgate.ru
@Lyosha12 не нужно забрасывать @fromgate тоннами идей, лучше просить реализовать API, тогда каждый сможет писать к плагину свои "дошлепки", соответственно своим личным извращениям :lol:
рабочий файл от начала до конца, последний активатор - ошибочное название. там fish
1efce86352e6.jpg
прикольно) можно к этому еще добавить легкое, краткосрочное отравление, типа "несварение" желудка :)
 
прикольно) можно к этому еще добавить легкое, краткосрочное отравление, типа "несварение" желудка :)
причем рандомно - процентов 10 от общего количества случаев. Я, кстати, наглухо запретил жрать мертвечину - это уж совсем рвотная тема.
оффтоп.
А вот плагин Thirst (жажда) - прекрасный по своей сути, почему-то у меня правильно работать не хочет. У тебя, кстати, ITEM_CLICK заработал?
 
@Korvinius
В процессе переезда на другой хостинг. Ещё не всё перетащил. Сегодня запущу, надеюсь.
reactions.fromgate.ru и reactions.fromgate.me заработали
 
@fromgate, я так к сожалению и не решил своей проблемы с активаторами в новой версии ((, поэтому вынужден "сидеть" на старой, напомню, активаторы item_click, item_hold, item_wear "видят" только обычные предметы, если для вещи добавить описание или название, или чары, такие предметы становятся для активаторов невидимыми, может есть какие то соображения на эту тему? Или, может лучше самостоятельно проверьте эти активаторы, на моем тестовом сервере, я там вам разрешения прописал, адрес кину в личку...
Разве не проще выложить сюда код, а вся аудитория ReActions его бы проверила? Fromgate далеко не Цезарь - иначе бы ReActions уже заменил все плагины.
 
@fromgate, я так к сожалению и не решил своей проблемы с активаторами в новой версии ((, поэтому вынужден "сидеть" на старой, напомню, активаторы item_click, item_hold, item_wear "видят" только обычные предметы, если для вещи добавить описание или название, или чары, такие предметы становятся для активаторов невидимыми, может есть какие то соображения на эту тему? Или, может лучше самостоятельно проверьте эти активаторы, на моем тестовом сервере, я там вам разрешения прописал, адрес кину в личку...
Скиньте код. У меня активатор item_click работает нормально и стабильно с измененным у предмета именем и добавленным описанием. Внимательнее с регистрами.
Вот как у меня в activators.yml
JavaScript:
ITEM_CLICK:
  fly_berd:
    item: type:feather amount:1 name:{&6Перо птицы} lore:{&5Оно поможет вам летать!}
    flags:
    - ...
    - ...
    actions:
    - ...
 
Последнее редактирование:
@Lyosha12, @ZombiE_EGIK спасибо за попытку помочь, не знаю каким образом, но свершилось чудо, то, что не работало вчера, само, заработало сегодня, УРРАААА!!! Теперь я могу обновить у себя ReActions :)

Только еще один вопросик, как правильно написать активатор, тот же item_click, чтобы "ловил", например яблоки, не зависимо от названия, описания, зачарований и прочего?
 
А можно ли сделать так, чтобы щелкнуть по лампе пустой рукой, и она включится или выключится?
 
Назад
Верх