Как сделать?

Re: Как сделать?

Разобрался наконец с Юлианским календарем, самое то важное в закрепленной теме и не было сказано. У меня вопрос и просьба одновременно. Где можно посмотреть простенький пример кода. Хочу сделать так, чтобы от времени суток и дня недели, зависело присутствие определенных NPC на локации, но не представляю как это сделать, есть мысль через IF но не понимаю как время указывать. И еще, где можно про RAND подробно прочитать? Так как хочется еще добавить случайных событий.

Нубай
useravatar
Offline
9 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Нубай,
ну предположим текущее время у тебя прописано в переменных hour и minute. Тогда, если персонаж на локации с 8:00 до 15:30, указываем промежутки:

Код:

if (hour>=8 and hour<15) or (hour=15 and minute<=30):

   *pl "Дядя Валинор восседает на троне."
else
   *pl "Трон пустует"
end

Особо про RAND читать нечего. Это просто функция, возвращающая случайное число в указанном промежутке:

Код:

rand(0,1) & ! вернёт либо ноль, либо единицу

rand(0,9) & ! вернёт случайным образом цифру
rand(100,200) & ! вернёт число в промежутке между 100 и 200, включительно.

Aleks Versus
воздвигатель башни
useravatar
Offline
1568 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Здравствуйте. Подскажите, что я делаю не так?

 Спойлер Show Spoiler Hide Spoiler
 *nl
! ГГ заходит в транспорт
*nl "Ты зашел в автобус."
! Задаю переменные, что пока  нет оплаты за проезд и ГГ не выбрал в какой части транспорта ему ехать
проезд_оплачен=0
место_занято=0

! Предоставляется выбор действий ГГ

act "Подойти к кондуктору":
*nl
*nl "Ты подошел к кондуктору и оплатил проезд."
проезд_оплачен=1
место_занято=0
delact "Подойти к кондуктору"
end

! После оплаты ГГ выбирает место в какой части транспорта он поедет, при выборе одного действия, остальные должны быть убраны.

! Тестирование правильности кода происходит пока только на этом действии
act "Встать в середине автобуса":
! Здесь дается псевдовыбор ГГ не платить за проезд, отсюда задается такая переменная, то есть ГГ может проигнорировать действие подойди к кондуктору и попробовать проехать зайцем.
место_занято=1
*clr
*nl
*nl "Ты занял место стоя у окна в середине салона автобуса, облокотившись на поручень."
! Тут указываю, что остальные действия убираются и становятся недоступные
delact "Встать в середине автобуса"
delact "Подойти к кондуктору"
delact "Занять место в конце автобуса"
delact "Занять место в начале автобуса"
delact "Занять любое сидячее место"
delact "Занять любое стоячее место"
! Но кондуктор сам стремится хорошо выполнить свою работу и идет "обилечивать" ГГ
if место_занято=1:
if проезд_оплачен=0:
*nl
*nl "К тебе подошла кондуктор."
*nl
*nl "-Здесь что за проезд?!"
act "Оплатить проезд":
*nl
*nl "Ты оплачиваешь проезд."
delact "Оплатить проезд"
проезд_оплачен=1
! Здесь задаю другие переменные, так как хочу, чтобы до поры действие было скрыто и не хочу, чтобы игрок мог воспользоваться отсутствие логики и выйти на остановке игнорируя оплату, а только после выполнения этих условий...
if место_занято=1:
if проезд_оплачен=1:
! становится доступно это действие. Проблема возникает в том, что в одном случае действие выхода на остановке доступно, когда кондуктор сама подходит, все появляется так как и задумано, а в случае самостоятельной оплаты проезда, этого действия нет вообще. Что я делаю не так?
act 'Выйти на остановке "Коммунистическая площадь"':
time+=20
gs "Календарь"
*nl
*nl "Ты выходишь на остановку"
goto "Площадь"
end
end
end
end
end
end
end

Остальной кусок кода не стал приводить, я и в первом действии заплюхался, а неудачи сильно настрой портят.  sad  Мысли посещают, а может просто тебе не дано это освоить.

Нубай
useravatar
Offline
9 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Нубай,
Просто играй с условиями

 Спойлер Show Spoiler Hide Spoiler
 

Код:


if проезд_оплачен=0 and место_занято=0:
*nl
*nl "Ты зашел в автобус."
    act "Подойти к кондуктору":
    *nl
    *nl "Ты подошел к кондуктору и оплатил проезд."
    проезд_оплачен=1
    место_занято=0
    gt curloc
    end
end

if место_занято=0:
    act "Встать в середине автобуса":
    место_занято=1
    *clr
    *nl
    *nl "Ты занял место стоя у окна в середине салона автобуса, облокотившись на поручень."
    gt curloc
    end
end

if проезд_оплачен=0 and место_занято=1:
*nl
*nl "К тебе подошла кондуктор."
*nl
*nl "-Здесь что за проезд?!"
    act "Оплатить проезд":
    проезд_оплачен=1
    *nl
    *nl "Ты оплачиваешь проезд."
    gt curloc
    end
end

if проезд_оплачен=1 and место_занято=1:
    act 'Выйти на остановке "Коммунистическая площадь"':
    time+=20
    проезд_оплачен=0
    место_занято=0
    gs "Календарь"
    *nl
    *nl "Ты выходишь на остановку"
    goto "Площадь"
    end
end

Наверняка, это можно еще оптимизировать через else.

Я для переменных маркеров использую одно наименование и разные индексы, например: проверка[место_занято], проверка[проез_оплачен].

PS Акты я сделал, а тексты нет, т.е. они не все будут выводиться, сорян, нет времени. Их тоже нужно расставить по условиям.

dmvikar
useravatar
Offline
97 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Спасибо, я попробую, просто по видеоурокам Алекса продвигаюсь медленно, тоже времени не особо, пробую в свободное время, радует, что хоть что-то получается у меня, хотя в программировании вообще никакой я. Через else пробовал, Qgen ругается, что не хватает где-то end, пока понять не могу, где именно. Буду пробовать.

Нубай
useravatar
Offline
9 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Нубай,
нет такого знания доступного одному человеку, которое другой, при должном упорстве, не смог бы усвоить.

Практика-практика-практика.
Учиться-учиться-учиться.
Исправлять-улучшать-совершенствовать.

Записал короткое видео. Надеюсь будет понятно.

 Спойлер Show Spoiler Hide Spoiler
 

Aleks Versus
воздвигатель башни
useravatar
Offline
1568 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Как сделать?

Просто огромнейшее спасибо. Так все подробно, спасибо. Надо форсировать просмотр ваших видеоуроков, там смотрю много нового появилось. Еще раз, спасибо.

Нубай
useravatar
Offline
9 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
998
Всего опросов:
14
Всего сообщений:
16790830
Всего сообщений сегодня:
4
Пользователи форума:
 
Всего пользователей:
2516
Последним зарегистрировался:
Dos5n