- Сообщений: 8
- Спасибо получено: 2
Подскажите скрипт отслеживания статусов
Может кто подсказать пожалуйста плагин, может тут выкладывали уже, или кто-то с таким сталкивался.
Механика скрипта:
Я: Могу указать какие статусы (отравление, сон, паралич и т.д.) должны отслеживаться "счетчиком".
Счетчик: Должен выбранные статусы считать с самого начала игры (с момента нажатия Новая игра)
При достижении счетчиком определённого числа получения статуса: Actor изучает навык...
Вроде и понимаю примерно алгоритмом как это должно быть, но с синтаксисом и в целом языком проблемы...
По туториалам накалякал фигню какую-то.. но она не работает и если развернёте спойлер - посмеётесь от души.
var params = PluginManager.parameters('StateCounter');
var stateId = Number(params["State ID"]);
var counter = Number(params["Counter"])
var target = $gameActors.actor(1);
target.addState(params["State ID"]);
if (!stateId && target.stateId()){
counter = counter + 1;
}
if (counter = 2) {
actor.learnSkill(6);
}
})();
Надеюсь поможете, потому что в целом для моего проекта есть всё что мне нужно, кроме этого вот счетчика..
Если реализация не через настройку плагина, а через Note Text Tag'и под статусом или для навыка - ничего страшного, главное что бы считало и работало как я примерно описал. Надеюсь подскажете что нибудь
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DKR Actor Status Accumulator 1.0 для MV
Код плагина нужно сохранить в файл с названием DKR_ActorStatusAccumulator и расширением .js (DKR_ActorStatusAccumulator.js)
Плагин не совместим с другими плагинами, как-то влияющими на логику работы Состояний, т.к. изменяет эту логику.
Плагин поставляется AS-IS, вся ответственность на Пользователе (!).
Для использование нужно в Примечании Персонажа написать <statusAccumulator: N>, где N - номер Аккумулятора от 1 до 10.
После чего можно в вызове скрипта (например, в Определении переменной или Условии) получать количество определенного Состояние, наложенного на персонажа, такой скриптовой командой:
DKR.ActorStatusAccumulator.getStatusCount(actorId, statusId),
где actorId - номер Персонажа в Базе данных,
statusId - номер Состояние в Базе данных.
Более подробная информация - в описании плагина.
Применительно к конкретно твоему случаю, ZakRew, можно в Определении переменной в отдельную переменную сохранять количество, сколько раз на персонажа было наложено Состояние, и если кол-во равно или больше необходимого - вызывать команду "Изучить навык".
P.S:
Код, вероятно, не оптимальный - но он работает.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Код можно модифицировать как угодно, но с указанием что оригинальная версия - моя (в описании плагина / титрах / итд).
Еще раз, на всякий, уточню - плагин не дает выучить скилл, плагин дает возможность узнать сколько раз было наложено Состояние, и уже потом средствами мейкера что-то с этой инфой делать.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
По поводу модификации хотел спросить но уже увидел ответ сразу)
Мне достаточно того что бы я мог указать сколько статусов и какие именно нужно отслеживать. а даже если в переменную запихивает счетчик - этого достаточно, там придумаю как реализовать автоизучение навыка под переменной с помощью общих событий или событий карт)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1. На персонажа в примечание можно написать <statusAccumulator: 1-10> или нужно каждый раз писать этот тэг и указывать по 1 числу в каждой строке?
2. Переменные назначил, как привязать статус к переменной?
Ну то есть DKR.ActorStatusAccumulator.getStatusCount(actorId, statusId) и DKR.ActorStatusAccumulator.clearAccumulator(actorId) куда вписывать в скрипте? В переменную?
Я сейчас попробовал сделать эти команды в переменную запихнуть, но что-то не особо работает, наверное куда-то не туда вставил как бы двусмысленно это не звучало xD
Я написал в 10 строк СтатусАккумуляторы персонажу с проставленными id (надеюсь айдишники не с 0 начинаются а как написаны в списке статусов)
После этого сделал автозапусковое событие сначала привязав к переменной скрипт очистки, после чего добавил гетСтатусКаунт, задал НИПу условие получения нужного навыка/статуса, но после получения статусов в нужном кол-ве ничего не поменялось..
Полюбому куда-то не туда вставил
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
У персонажа нужно в Примечании один раз указать номер Аккумулятора, всё 10 не нужно.
Далее перед получения кол-ва не нужно очищать, та команда на всякий случай.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
upd:
Скрин с объяснением, как можно использовать.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
upd:
Сделал как на скрине, вроде всё сработало, немного не так как планировалось, но сработало (изначально предполагал что бы повторное наложение статуса при таком-же активном не засчитывалось, но и так тоже норм впринципе, лучше чем никак
upd2:
Вот лог из консоли про ошибки
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Я проверял такие варианты:
1.
У персонажа прописан Аккумулятор; наложение Статуса вне боя, наложение Статуса в бою.
2.
У персонажа прописан Аккумулятор; наложение Статуса вне боя, очистка Аккумулятора, наложение Статуса в бою.
3.
У персонажа прописан Аккумулятор; очистка Аккумулятора, наложение Статуса вне боя, наложение Статуса в бою.
4.
У персонажа НЕ прописан Аккумулятор; наложение Статуса вне боя, наложение Статуса в бою.
5.
У персонажа НЕ прописан Аккумулятор; наложение Статуса вне боя, очистка Аккумулятора, наложение Статуса в бою.
6.
У персонажа НЕ прописан Аккумулятор; очистка Аккумулятора, наложение Статуса вне боя, наложение Статуса в бою.
И запись в переменную на любом из шагов.
Что именно ты делал?
На всякий случай уточню, что очищать командой .clearAccumulator() - не обязательно, это доп. функция "на всякий случай".
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
2. Назвал переменную "Счетчик отравлений"
3. Создал статус "Иммунитет к отравлению" (StateId.23)
4. Провел тестовый бой против врага который 2 раза меня отравил
5. Поговорил с НИПом где содержимое
• Переменная #0001 Счетчик отравлений = DKR.ActorStatusAccumulator.getStatusCount (1, 4) (Я поменял переменные для удобства с 10-20 на 1-10)
• Если: Счетчик отравлений Больше или равен 2
Скрипт: $gameParty.leader().addState(23);
Конец
6. После разговора с НИПом получил нужный статус иммунитета к отравлению
7. Захожу снова в бой и либо сразу, либо через несколько секунд вылетает ошибка. Аналогичное если НЕ заходить в бой
UPD: Если это важно, то версия Мейкера у меня последняя которую мне загрузил Steam (лицензия, осуждаю пиратки)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Извини, у меня сейчас нет возможности более детально смотреть ситуацию.
Маловероятно, но может как-то влияют другие плагины (если используются) - ошибка в консоли из моего плагина то.

Единственное что - такая команда скрипта не учитывается плагином (учитывается или Состояние в бою, или эвентом "Изменить состояние").
Ну, пусть и не помог - но код плагина у тебя есть, может он тебя натолкнет на "нужные мысли" для твоей реализации...ну или ты другой похожий найдешь.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
