Правила раздела:
1 Задавайте конкретные вопросы. Для болтовни есть свободный раздел.
2 По возможности давайте конкретные ответы.
3 Один вопрос=одна тема. Если хотите задать ещё вопрос, то начинайте новую тему.
4 Название темы должно составлять сам вопрос, и быть максимально конкретным. Рекомендуется начинать тему словами "Как", "Что", "Почему". А первый пост повторяет вопрос и даёт расширенные сведения.
5 Рекомендуется указывать версию мейкера (2000, 2003, RMXP, RMVX, ACE, IGM, и.т.д.. Это важно, и всё равно ведь спросят.
6 Темы "Пара вопросов", "Помогите", и подобные им - самый лёгкий путь к бану.
7 Поиск находится вверху справа.
А. Названия подразделов этого раздела уточняются. Советы принимаются.

Как проверить здоровье и состояния врагов? [MV]

Больше
4 года 4 нед. назад - 4 года 4 нед. назад #126726 от Morizel
У меня есть ряд вопросов, касающихся боевой системы в MV. Дело в том, что мне надо на этом движке сделать боёвку на манер Didnapper:
1)Как проверять здоровье врагов? Мне это необходимо, чтобы на каждого из них, если у него меньше 25% здоровья, вешалась слабость. Пока здоровье больше 25%, то слабость снимается.
По-хорошему это должно быть не только на врагах, но и персонажах игрока;
2)Как установить новые условия победы? Допустим, в отряде есть два врага. Одного надо победить, как обычного монстра. А на второго надо повесить специальное состояние, которое не нокаут;
3)У меня сделано так, чтобы монстр второго типа бессмертен. Но, как я помню, на МВ победа засчитывается только при полном уничтожении отряда монстров. Как сделать проверку на состояние, чтобы потом можно было убить этого монстра?
Последнее редактирование: 4 года 4 нед. назад пользователем AnnTenna. Причина: уточнила название темы

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
4 года 4 нед. назад - 4 года 4 нед. назад #126727 от Morizel
Грубо говоря:
1)ЕСЛИ здоровье врага 25% и меньше, ТО накладывается стат-дебафф. ИНАЧЕ стат-дебафф не накладывается;
2-3)Например, отряд монстров - 2 врага А и 1 враг Б.
Победа: 2 врага А в состоянии Нокаут (по дефолту смерть, стат 1), враг Б - в стате Паралич.
Последнее редактирование: 4 года 4 нед. назад пользователем Morizel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Разработчик 3 место 3 место в Обучающем конкурсе Учитель Оратор 1 место в Обучающем конкурсе Паладин Проект года 3 место Проект года 1 место
Больше
4 года 4 нед. назад #126728 от Alx_Yago
Часть этих вещей реализована у меня. Вот как бы я стал делать:

1)Как проверять здоровье врагов? Мне это необходимо, чтобы на каждого из них, если у него меньше 25% здоровья, вешалась слабость. Пока здоровье больше 25%, то слабость снимается.


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

2)Как установить новые условия победы? Допустим, в отряде есть два врага. Одного надо победить, как обычного монстра. А на второго надо повесить специальное состояние, которое не нокаут;


Сделать в настройке отряда страничку, где каждый ход будет проверяться, помер ли первый враг и есть ли состояние на втором.

3)У меня сделано так, чтобы монстр второго типа бессмертен. Но, как я помню, на МВ победа засчитывается только при полном уничтожении отряда монстров. Как сделать проверку на состояние, чтобы потом можно было убить этого монстра?


Бессмертие прописать не в свойствах врага, а сделать состоянием, которое будет накладываться на него в начале боя. В нужный момент снимать это состояние и вешать нокаут.
Спасибо сказали: DarchanKaen, yuryol, Morizel, LiRo

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
4 года 4 нед. назад #126729 от Morizel

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

Не уверен насчёт этого. Мне кажется, что надо в настройках отряда проверять здоровье каждого врага. Но я не знаю, какой скрипт вводить для этого.
Есть ещё вариант задействовать плагин "AutoPassiveStates", но тут тоже надо писать, проверять. И ещё не исключена ошибка при использовании плагина.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Разработчик 3 место 3 место в Обучающем конкурсе Учитель Оратор 1 место в Обучающем конкурсе Паладин Проект года 3 место Проект года 1 место
Больше
4 года 4 нед. назад #126730 от Alx_Yago

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
4 года 4 нед. назад - 4 года 4 нед. назад #126731 от Morizel
Хорошо. Как это общее событие выглядит? В том смысле, что из чего оно состоит?
Последнее редактирование: 4 года 4 нед. назад пользователем Morizel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Разработчик 3 место 3 место в Обучающем конкурсе Учитель Оратор 1 место в Обучающем конкурсе Паладин Проект года 3 место Проект года 1 место
Больше
4 года 4 нед. назад #126735 от Alx_Yago
Вот, просто цикл с проверкой всех врагов. Первым делом просто снимает с них состояние "Ранен", а потом навешивает его на тех, у кого меньше половины ХП:
Code:
◆Изм. состояние противника:Весь отряд, - Ранен ◆Переменная:#0008 пер 8 = 0 ◆Цикл ◆Переменная:#0009 пер 9 = 0 ◆Переменная:#0010 пер 10 = 0 ◆Скрипт:if ($gameTroop.members()[$gameVariables.value(8)]) :      :{ $gameVariables.setValue(9, $gameTroop.members()[$gameVariables.value(8)].mhp); :      :$gameVariables.setValue(10, $gameTroop.members()[$gameVariables.value(8)].hp); } ◆Переменная:#0009 пер 9 /= 2 ◆Если:пер 10 < пер 9 ◆Если:пер 10 > 0 ◆Скрипт:$gameTroop.members()[$gameVariables.value(8)].addState(5) ◆ :Конец ◆ :Конец ◆Переменная:#0008 пер 8 += 1 ◆Если:пер 8 ≥ 8 ◆Прервать цикл ◆ :Конец ◆ :Повторить цикл
Спасибо сказали: Morizel

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
4 года 4 нед. назад - 4 года 4 нед. назад #126739 от Morizel
То есть, берём три переменные. Первая (8) переменная становится количеством врагов в отряде. Вторая (9) - их макс ХП, а третья (10) - их текущее ХП.
В моей ситуации я делю переменную 9 на 4. И в цикле проверяю эти переменные на совпадение условий для получения состояния "Ранен"?
Что значит этот код?
Code:
Переменная:#0008 пер 8 += 1 Если:пер 8 ≥ 8 ◆Прервать цикл ◆ :Конец
Он проверяет целостность отряда?

Я скопировал событие, но оно у меня не работает. Пока что выглядит вот так:
Code:
◆Change Enemy State:Entire Troop, - Wounded ◆Control Variables:#0001 var1_8 = 0 ◆Loop ◆Control Variables:#0002 var2_9 = 0 ◆Control Variables:#0003 var3_10 = 0 ◆Script:if ($gameTroop.members()[$gameVariables.value(1)]) : :{ $gameVariables.setValue(2, $gameTroop.members()[$gameVariables.value(1)].mhp); : :$gameVariables.setValue(3, $gameTroop.members()[$gameVariables.value(1)].hp); } ◆Control Variables:#0002 var2_9 /= 4 ◆If:var3_10 < var2_9 ◆If:var3_10 > 0 ◆Script:$gameTroop.members()[$gameVariables.value(1)].addState(12) ◆ :End ◆ :End ◆Control Variables:#0001 var1_8 += 1 ◆If:var1_8 ≥ var1_8 ◆Break Loop ◆ :End ◆ :Repeat Above
Мне кажется, что что-то я неправильно понял.
Последнее редактирование: 4 года 4 нед. назад пользователем Morizel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Разработчик 3 место 3 место в Обучающем конкурсе Учитель Оратор 1 место в Обучающем конкурсе Паладин Проект года 3 место Проект года 1 место
Больше
4 года 4 нед. назад #126741 от Alx_Yago
Первая переменная - это перебор всех врагов в отряде от 0 до 7 (у них нумерация начинается с 0).
Соответственно, когда эта переменная достигает 8, цикл надо прервать.
У тебя же она сравнивается не с числом 8, а с собой же. Думаю, в этом вся проблема.
Спасибо сказали: Morizel

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
4 года 4 нед. назад - 4 года 4 нед. назад #126742 от Morizel
Виноват. Ошибся. Не сразу понял, что это цифра, а не переменная.

Заметил интересную деталь: общее событие почему-то срабатывает только, когда враг атакует, а не наоборот.
Вообще, я никак не могу понять, как это дело работает. То ли из-за плагина Могхантера, то ли ещё почему-то, но общее событие почему-то не работает.
Последнее редактирование: 4 года 4 нед. назад пользователем Morizel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Проект месяца 1 место Разработчик 3 место 3 место в Обучающем конкурсе Учитель Оратор 1 место в Обучающем конкурсе Паладин Проект года 3 место Проект года 1 место
Больше
4 года 4 нед. назад #126744 от Alx_Yago
Не знаю, я таким плагином не пользовался. Что он вообще делает? Может враги и герои используют разные атаки?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
4 года 3 нед. назад - 4 года 3 нед. назад #126749 от Morizel
Я начал пользоваться одной из вариаций Battle HUD от Мога. Чтобы боёвка была похожа на XP-шную. Только меняет вид интерфейса.
Он вряд ли ломает характеристики врагов и героев. Дело скорее всего в другом.
Была ещё проблема с Autopassive States Янфлая (maximum call stack size exceeded). Пришлось удалить из проекта и искать альтернативы.
Я посмотрю, попытаюсь самостоятельно разобраться.
Последнее редактирование: 4 года 3 нед. назад пользователем Morizel.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.112 секунд
Работает на Kunena форум