Как сделать?
…
есть специальная локация название которой хранится в переменной $ONNEWLOC. В стартовой локации пишете $ONNEWLOC ‘onnewloc’ и создаете локацию onnewloc или с любым другим названием. Код прописанный в этой локации будет выполнятся при переходе с одной локации на другую.
Случайный переход на другую локацию можно реализовать так:
Spoiler
loc = rand(0,4)
if loc = 1: gt 'монстр 1'
if loc = 2: gt 'монстр 2'
if loc = 3: gt 'монстр 3'
if loc = 4: gt 'монстр 4'
rand можно прописать любой, чтобы точно подогнать шансы выпадения тех или иных событий.
Bumbr,
в локации $ONNEWLOC потребуется ещё делать проверку, с какой локации на какую происходит переход. Иначе монстры будут встречаться при переходе на любую локацию.
Кстати, нельзя использовать переменную с именем “loc” - в новой версии библиотеки это имя зарезервировано для функции. И ещё ты забыл написать присваивание.
Есть способ сделать всё проще, без использования $ONNEWLOC.
Создаём “промежуточную” локацию, например, “дорога_монстров”.
Там где у нас был переход
GOTO 'Локация 2'
заменяем на
GOTO 'дорога_монстров'
В локации ‘дорога_монстров’ пишем:
! Случайное число - 0, 1, 2, 3
monstr = RAND(0, 3)
! Если выпало число больше 0, переходим на локацию с монстром
IF monstr = 1:
GT 'монстр1'
ELSEIF monstr = 2:
GT 'монстр2'
ELSEIF monstr = 3:
GT 'монстр3'
END
! Выпало число 0, монстр не встретился
GT 'Локация 2'
Прошу прощения за то что ввёл в заблуждение.
Вновь задам вопрос, нет ли способа добавить в AeroQSP проект дополнительный QSP-файл кроме как ручным копированием всех локаций?
Так же возник вопрос по поводу действий. В справке написано что их можно сохранить и восстановить при помощи CURACTS и DYNAMIC. Опыта работы с динамик у меня нет, поэтому хотел уточнить. CURACTS сохраняет действия именно как код? То есть просто прописав на локации $действия = CURACTS, а на другой cla & DYNAMIC $действия, я выведу действия из предыдущей локации?
Bumbr,
что мешает попробовать?
Картинка очень мелкая, не разберу. приведите код локации для которой выводится ошибка.
Вместо ELSE IF надо писать ELSEIF слитно.
Можно вообще всё в отдельные IF вынести, но это неправильно с точки зрения оптимизации кода.
Здравствуйте, наверное я вам уже надоел со своими глупыми просьбами, для вас экспертов это кажется как два пальца. Но не могли бы вы помочь мне в последний раз… В моей игре обязательно будет бой с монстром, я посмотрел какой код дают на форуме, и понял, что сам увеличить его не смогу, дело в том, что у героя есть не только атака и здоровье, но и защита (только у ГГ). Смысл этой защиты в том, что если атака монстра = 8, а защита = 9, то из здоровья ГГ ничего не будет уменьшено. Но если атака монстра = 8, а защита = 3, то из здоровья ГГ вычитается 5 ХР. Ну и конечно, стандартно должна работать атака ГГ, которая вычитает свой удар из здоровья монстра. Не могли бы вы в последний раз помочь с кодом, для создания того, что написано выше…Заранее благодарю за любую предоставленную помощь.
Alladan,
да, я написал “ELSE IF” раздельно, а надо было “ELSEIF” слитно. Прошу прощения, я почему-то думал, что эти конструкции в QSP эквивалентны.
Код для боя с защитой:
урон_монстра = атака_монстра - защита_игрока
IF урон_монстра < 0:
урон_монстра = 0
END
здоровье_игрока = здоровье_игрока - урон_монстра
Большое спасибо за ответы. Вот Во многих играх я увидел, что когда покупаешь вещь при нажатии на нее в инвентаре, вылезает табличка одеть, а когда ты одеваешь, то очки вещи плюсуются к тебе. Это все я научился делать, но когда вещь одел, и нажимаешь на нее в инвентаре, то выходит уже кнопка не одеть, а снять, как это сделать?
Alladan,
посмотри в коде той игры, где это реализовано.
Она запоролена. Вот смотрите: В инвентаре есть предмет “Доспех” нажимая на который выходят варианты : “Выбросить” “Одеть”. Нажимая на “Одеть” очки костюма приплюсоваются к ГГ. Посл того как нажали “Одеть” наведя на предмет в инвентаре “Доспех” выходят варианты: “Выбросить” и “СНЯТЬ”, (а не “одеть” как раньше) при нажатии снять, очки костюма вычитаются из ГГ и все переходит в первую фазу. Вот что нужно. У меня не получается сделать так чтобы после нажатия “Одеть” , вылезало только нажатие “Снять” а не опять “Одеть…
Alladan,
тебе нужно сделать:
1. Завести переменную-флажок, в которой будет храниться состояние доспеха: например, “доспех_надет”. Устанавливать её значение при надевании и снятии доспеха, 1 и 0 соответственно.
2. В коде, где выводится меню, проверять эту переменную, и в зависимости от её состояния выводить в меню либо “Снять” либо “Надеть”. Для этого нужно использовать оператор условия “IF”.
А есть где нибудь обучение этому?

