Делаю ORPG карту, и делаю в ней простейшие квесты на убийство мобов, очень понравилась система квестов из Испанской ORPG - Golden Gods 2, попытался сделать похожее, но вышло не очень. Вот примерно как выглядит это в Golden Gods 2: игрок берет предмет, который тут же используется, это и есть миссия, и после того как он убил N колл-во мобов, возвращается назад, и ему даётся награда, один квест могут брать все игроки, если взял один квест, то другой уже не возьмешь, пока не отменишь предыдущий, отмена тоже как предмет. У меня же вышло так, пришлось сделать так, что один и тот же квест, может брать только 1 игрок, т.к. если берут 2, то он учитывает только последнего, так же один игрок может взять несколько квестов, но действует только последний взятый, остальные просто висят, отмему квестов смог сделать только с помощью команды "-квест N" что тоже не сильно удобно. Вообщем подскажите как правильно всё сделать, или может есть уже готовая наработка для такого, или хотя бы похожего.

для того чтобы сделать эту систему нужно научиться юзать массивы
и навык в гуи стоит повысить
вот статьи
чтобы нельзя было взять квест пока не выполнил/отменил предыдущий нужно просто проверять есть ли у игрока квест на данный момент или нет
`
ОЖИДАНИЕ РЕКЛАМЫ...
18
Для подсчета убитых мобов используй целочисленную переменную и приращивай +1 при каждом убийстве.
Для разрешения взятия следующего квеста проверяй выполнен ли предыдущий.
Может сделать квест массивом - тогда смогут брать несколько игроков и выполнение проверять можно будет для каждого игрока отдельно.
10
Ну смотри. Для каждого игрока делаешь отдельную логическую переменную "Квест выполнен". "Квест выполненИгр1", "Квест выполненИгр2" и т.д. Затем, допустим, цель для игрока - убить 30 мобов определенного типа.
Делаем для каждого игрока отдельную целочисленную.
Общее событие: юнит умирает
Условие умирающий юнит = "тип юнита, который надо убивать по квесту"
IfThenElse, множество функций
Если: убийца = игрок1 и "КвествыполненИгр1=нет"
то: Установить "Игрок1убил" = "Игрок1Убил + 1"
IfThenElse множество функций
Если Игрок1Убил = нужное для квеста число,
то:Установить КвествыполненИгр1=да
Иначе: ничего не делать.
Иначе:
IfThenElse, множество функций
Если: убийца = игрок2 и "КвествыполненИгр2=нет"
то: Установить "Игрок2убил" = "Игрок2Убил + 1"
IfThenElse множество функций
Если Игрок2Убил = нужное для квеста число,
то:Установить КвествыполненИгр2=да
Иначе: ничего не делать.
Иначе: и т.д для каждого игрока.
Затем при пролучении юнитом предмета "Сдать квест" проверяете, какому игроку принадлежит юнит, манипулирующий предметом, и в зависимости от того, какому игроку он принадлежит, проверяешь логическую переменную "квествыполненигрок...". Если переменная = да, то выдаешь игроку награду и ставишь переменную = нет. Это образец для многоразовых квестов. Для одноразовых надо взять переменную "Квестсдан", которая при сдаче устанавиваентся с нет на да, и если игрок пытается сдать квест повторно, но его переменная Квестсдан = да, то ему говорят "Вы уже сдали этот квест, идите лесом."
28
для того чтобы сделать эту систему нужно научиться юзать массивы
и навык в гуи стоит повысить
вот статьи
чтобы нельзя было взять квест пока не выполнил/отменил предыдущий нужно просто проверять есть ли у игрока квест на данный момент или нет
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.