Как сделать?
…
А как сами статы сделать?
И возможно ли сделать 2 счетчика. 1 - как бы статы которые меняются за счет действии и за период времени как например с голодом. 2 - зачитывает определенные действия
Рад что тут добрые и отзывчивые люди
BlackFox,
“статы” - понятие очень размытое. Задавай вопрос яснее, и тогда ответ не заставит себя ждать.
Итак. Тебе нужно добиться чего? Чтобы всё время на протяжении игры где-то отображалась информация о голоде, здоровье и прочем?
Сначала необходимо завести переменные, которые всё это будут подсчитывать (пример):
сытость = 100
максимум_сытость = 100
здоровье = 100
максимум_здоровье = 100
Теперь, предположим, что ты хочешь, чтобы информация по сытости и здоровью выводилась в окно дополнительного описания всякий раз при переходе на новую локацию. Для этого создаём локацию-обработчик перехода на новую локацию. Название может быть любым, но обычно берут onNewLoc чтоб не путаться. Создали локацию onNewLoc. Теперь на самой первой локации в игре пишем:
$onnewloc = 'onNewLoc'
Это даст плееру понять, какую именно локацию использовать как обработчик перехода на новую локацию. Написали.
Теперь пишем на локации onNewLoc следующий код:
clr & ! очистка окна дополнительного описания
*pl "Здоровье: <<здоровье>>|<<максимум_здоровье>>"
*pl "Сытость: <<сытость>>|<<максимум_сытость>>"
Готово. Однако при любом изменении здоровья или сытости последний кусочек кода придётся дублировать в том месте, где произошло изменение. Например:
act 'Съесть шоколадку':
здоровье = здоровье + 5
сытость = сытость + 35
clr & ! очистка окна дополнительного описания
*pl "Здоровье: <<здоровье>>|<<максимум_здоровье>>"
*pl "Сытость: <<сытость>>|<<максимум_сытость>>"
end
Чтобы всякий раз не переписывать этот длинный кусочек, рекомендую вынести его на отдельную локацию и обозвать её как-нибудь “вывод_статов”. Тогда можно будет писать только одну строчку:
act 'Съесть шоколадку':
здоровье = здоровье + 5
сытость = сытость + 35
gosub 'вывод_статов'
end
Чтобы какой-то параметр не мог превысить определённое значение, используются конструкции условий. Например, применительно к нашему действию:
act 'Съесть шоколадку':
здоровье = здоровье + 5
сытость = сытость + 35
if (здоровье > максимум_здоровье): здоровье = максимум_здоровье
! если здоровье больше максимально возможного значения, приравниваем его значение к максимальному
! и для сытости
if (сытость > максимум_сытость): сытость = максимум_сытость
gosub 'вывод_статов'
end
Имеется куча всяких территорий.
1) На каждой территории в зависимости от её типа могу проживать только определенные животные.
2) Количество видов животных проживаемых на территории зависит от её размера.
3) Животные для заселения выбираются случайным образом из всех подходящих видов.
Как сделать, чтобы для каждой территории запоминалось, какие животные на ней проживают?
Deonder,
например так
! aninumber - номер животного по порядку (на территории)
! territory - номер участка по порядку
! $животное['<<territory>>:<<aninumber>>']='название животного или другой идентификатор'
! животные на нулевом участке
$животное['0:0']='собака'
$животное['0:1']='собака'
$животное['0:2']='крокодил'
! животные на первом участке
$животное['1:0']='тигра'
$животное['1:1']='пума'
! животное на втором участке
$животное['2:0']='летающий макаронный монстр'
Спасибо. Подходит.
Ещё вопрос, больше теоретический. Возможно ли сделать так чтобы картинки шли по контуру основного окна? Сверху, снизу, по бокам. Не обязательно все сразу.
Deonder,
теоретически можно добиться того, чтобы картинки шли сверху и по бокам. Рисуешь html-таблицу шириной в 100%. В верхней строке верхняя картинка, в левой ячейке - левая, в правой - правая, углы соответственно, если нужны. Вот прилепить картинку к низу окна адекватно не получится, я думаю. Разными костылями я в классике смог сделать например это:

Aleks Versus
а если сделать таблицу вида 3х3 и зафиксировать размер окна?
Deonder,
в классическом плеере нельзя зафиксировать размер окна. Можно зафиксировать размер таблицы, но тогда будут проблемы с маленькими экранами. В общем всюду и везде придётся выдумывать костыли.
Deonder, фиксировать размер окна можно в Quest Navigator`е с помощью CSS стилей.
BlackFox:
А как сами статы сделать?
И возможно ли сделать 2 счетчика. 1 - как бы статы которые меняются за счет действии и за период времени как например с голодом. 2 - зачитывает определенные действия
Рад что тут добрые и отзывчивые люди
Aleks Versus рассказал тебе все достаточно подробно и с примерами, я очень постараюсь тоже подсобить и сделать более удобный и понятный вид=З
Если сегодня время найду, то скину сюда пример обработчиков для большинства видов характеристик, как статичных и изменяющихся, только при определенных условиях взаимодействия с чем-либо, так и изменяющихся со временем=)
Storm,
в Навигаторе для фиксирования размера окна используется файл настроек игры.
Nex, я имел ввиду другое. Допустим, если ему надо как-то изменить размер окна основного описания или какого-нибудь другого.
Storm, Nex
Достаточно будет просто сделать фиксированным, без дальнейших изменений.
Здравствуйте. Подскажите пожалуйста как сделать СИМУЛЯЦИЮ ЖИЗНИ персонажа. Если подробнее: есть допустим локации 1,2,3,4,5,6,7. Мне нужно чтобы какой-нибудь персонаж в момент времени допустим 17 часов мог находиться в случайных трех локациях из списка, в момент времени 18 часов - в четырех определенных локациях из списка ну и т.д. При сработке определенных событий (допустим, разговор с вами) перемещение должно отключаться и после этого должно происходить переопределение местоположения с учетом произошедших изменений(допустим, определенная локация должна исключиться из списка). Если вы зафиксировали персонажа в определенной локации, то он должен находиться там определенное время.
Пока что все до чего я допетрил - в ONNEWLOC поместил gs обращение к спецлокации, на которой происходит что-то вроде фиксации нужного персонажа в пространстве с выбором случайной локации. Чтобы переопределение не случалось очень уж часто - пришлось вводить костыль с запретом захода в спецлокацию на определенное время. Поскольку опыт изучения QSP у меня мизерный - конструкция получилась очень громоздкой, с кучей циклов для определенного времени. Внесение определенных триггеров я еще даже в нее не начинал. Может можно как-то попроще? Наверняка есть игры где это уже реализовано. И немного не в тему: как грамотно сбрасывать состояние нужных переменных с небольшим циклом жизни (если непонятно - допустим, есть переменная которая после проверки изменила значение с 0 на 1, и необходимо чтобы она сохраняла это значение неизвестное заранее количество внутриигрового времени в пределах суток, а после этого изменила значение обратно на 0)?
И еще вопрос вдогонку. Частенько сталкиваюсь с такой проблемой: в основной локации происходит GS обращение к служебной локации, в которой происходят некоторые действия, начисляется время и происходит gs обращение к еще одной локации, которая отвечает за вычисление времени. Так вот, если не использовать $Curloc - автоматического обновления времени в основной локации не происходит. А если использовать - я не вижу результатов действий.
Основная локация —> gs [’Служебная’]
‘Служебная’: действия, time+30, —> gs [’time’]
Как обойти это, не могу понять.