а можно пример на коленке хотя-бы?
На коленке: при ударе игроком моба (
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 увеличивалось правильно

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