Войти на сайт

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

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

Как проверить здоровье и состояния врагов? [MV] 1 год 11 мес. назад #126726

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

Вопросы о модификации боевой системы 1 год 11 мес. назад #126727

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

Вопросы о модификации боевой системы 1 год 11 мес. назад #126728

  • Alx_Yago
  • Alx_Yago аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1137
  • Спасибо получено: 2156
  • 3 местоРазработчик1 место в Обучающем конкурсе3 место в Обучающем конкурсеОраторПаладинПроект месяца 1 местоПроект года 1 местоУчительПроект года 3 место
Часть этих вещей реализована у меня. Вот как бы я стал делать:
1)Как проверять здоровье врагов? Мне это необходимо, чтобы на каждого из них, если у него меньше 25% здоровья, вешалась слабость. Пока здоровье больше 25%, то слабость снимается.

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

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

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

Вопросы о модификации боевой системы 1 год 11 мес. назад #126729

  • Morizel
  • Morizel аватар
  • Вне сайта
  • Мастер
  • Сообщений: 145
  • Спасибо получено: 119
В свойства каждой атаки добавить общее событие, которое проверяет здоровье всех врагов и в зависимости от его уровня вешает или снимает состояние.
Не уверен насчёт этого. Мне кажется, что надо в настройках отряда проверять здоровье каждого врага. Но я не знаю, какой скрипт вводить для этого.
Есть ещё вариант задействовать плагин "AutoPassiveStates", но тут тоже надо писать, проверять. И ещё не исключена ошибка при использовании плагина.
Администратор запретил публиковать записи гостям.

Вопросы о модификации боевой системы 1 год 11 мес. назад #126730

  • Alx_Yago
  • Alx_Yago аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1137
  • Спасибо получено: 2156
  • 3 местоРазработчик1 место в Обучающем конкурсе3 место в Обучающем конкурсеОраторПаладинПроект месяца 1 местоПроект года 1 местоУчительПроект года 3 место
У меня в Гильдии это работает именно так. Реально работает.
Администратор запретил публиковать записи гостям.

Вопросы о модификации боевой системы 1 год 11 мес. назад #126731

  • Morizel
  • Morizel аватар
  • Вне сайта
  • Мастер
  • Сообщений: 145
  • Спасибо получено: 119
Хорошо. Как это общее событие выглядит? В том смысле, что из чего оно состоит?
Последнее редактирование: 1 год 11 мес. назад от Morizel.
Администратор запретил публиковать записи гостям.

Как проверить здоровье и состояния врагов? [MV] 1 год 11 мес. назад #126735

  • Alx_Yago
  • Alx_Yago аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1137
  • Спасибо получено: 2156
  • 3 местоРазработчик1 место в Обучающем конкурсе3 место в Обучающем конкурсеОраторПаладинПроект месяца 1 местоПроект года 1 местоУчительПроект года 3 место
Вот, просто цикл с проверкой всех врагов. Первым делом просто снимает с них состояние "Ранен", а потом навешивает его на тех, у кого меньше половины ХП:
◆Изм. состояние противника:Весь отряд, - Ранен
◆Переменная:#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
  ◆Если:пер 88
    ◆Прервать цикл
    ◆
  :Конец
  ◆
:Повторить цикл
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Morizel

Как проверить здоровье и состояния врагов? [MV] 1 год 11 мес. назад #126739

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

Я скопировал событие, но оно у меня не работает. Пока что выглядит вот так:
◆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
Мне кажется, что что-то я неправильно понял.
Последнее редактирование: 1 год 11 мес. назад от Morizel.
Администратор запретил публиковать записи гостям.

Как проверить здоровье и состояния врагов? [MV] 1 год 11 мес. назад #126741

  • Alx_Yago
  • Alx_Yago аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1137
  • Спасибо получено: 2156
  • 3 местоРазработчик1 место в Обучающем конкурсе3 место в Обучающем конкурсеОраторПаладинПроект месяца 1 местоПроект года 1 местоУчительПроект года 3 место
Первая переменная - это перебор всех врагов в отряде от 0 до 7 (у них нумерация начинается с 0).
Соответственно, когда эта переменная достигает 8, цикл надо прервать.
У тебя же она сравнивается не с числом 8, а с собой же. Думаю, в этом вся проблема.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Morizel

Как проверить здоровье и состояния врагов? [MV] 1 год 11 мес. назад #126742

  • Morizel
  • Morizel аватар
  • Вне сайта
  • Мастер
  • Сообщений: 145
  • Спасибо получено: 119
Виноват. Ошибся. Не сразу понял, что это цифра, а не переменная.

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

Как проверить здоровье и состояния врагов? [MV] 1 год 11 мес. назад #126744

  • Alx_Yago
  • Alx_Yago аватар
  • Вне сайта
  • Архитектор Миров
  • Сообщений: 1137
  • Спасибо получено: 2156
  • 3 местоРазработчик1 место в Обучающем конкурсе3 место в Обучающем конкурсеОраторПаладинПроект месяца 1 местоПроект года 1 местоУчительПроект года 3 место
Не знаю, я таким плагином не пользовался. Что он вообще делает? Может враги и герои используют разные атаки?
Администратор запретил публиковать записи гостям.

Как проверить здоровье и состояния врагов? [MV] 1 год 11 мес. назад #126749

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