Как сделать?
…
Aleks Versus:
Не совсем понятно, как работает счётчик времени, похоже он оторван от реальности.
Я видел где-то этот код. Там по act время прибавляется (minut+= …).
vais,
там уже есть голод и усталость (уменьшается на 1 каждый час):
set golod = golod - 1
set son = son - 1
Осталось только этим воспользоваться. Жажда делается аналогично.
И время в act нужно прибавлять только минутам, чтобы механизм срабатывал.
newsash:
Я видел где-то этот код. Там по act время прибавляется (minut+= …).
не удобно, конечно, но ладно.
vais,
можно и нужно убрать лишние циклы:
Spoiler
VIEW
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if minut > 59:
hour_plus = minut/60 & ! сколько полных часов прошло
else
hour_plus = 0 & ! если ни одного полного часа не прошло, значит hour_plus = 0
end
hour = hour + hour_plus & ! прибавляем к текущему времени, сколько полных часов прошло
minut = minut - hour_plus*60 & ! вычисляем текущее значение в минутах
! подсчитываем голод и усталость:
golod = golod - hour_plus
son = son - hour_plus
if hour > 23:
day_plus = hour/24 & ! сколько полных дней прошло
hour = hour - day_plus*24 & ! вычисляем количество текущих часов
else
day_plus=0
end
day = day + day_plus & ! увеличиваем количество текущих дней
daystart = daystart + day_plus & ! не знаю, что это
week = week + day_plus & ! выставляем день недели
if day > 29:
month_plus = day/30
else
month_plus = 0
end
month = month + month_plus
if day = 0: day = 1
if week > 6:
week = week mod 7
else
week = week
end
if week=0: week = 1
if week = 1:Set $week = 'Понедельник'
if week = 2:Set $week = 'Вторник'
if week = 3:Set $week = 'Среда'
if week = 4:Set $week = 'Четверг'
if week = 5:Set $week = 'Пятница'
if week = 6:Set $week = 'Суббота'
if week = 7:Set $week = 'Воскресенье'
if month = 0:Set month = 1
if month = 13:Set month = 1&set year = year + 1
If month = 1:set $month = 'Январь'
If month = 2:set $month = 'Февраль'
If month = 3:set $month = 'Март'
If month = 4:set $month = 'Апрель'
If month = 5:set $month = 'Май'
If month = 6:set $month = 'Июнь'
If month = 7:set $month = 'Июль'
If month = 8:set $month = 'Август'
If month = 9:set $month = 'Сентябрь'
If month = 10:set $month = 'Октябрь'
If month = 11:set $month = 'Ноябрь'
If month = 12:set $month = 'Декабрь'
if minut < 10:set $nilmin = '0'
if minut >= 10:set $nilmin = ''
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!КОНЕЦ РАЧЕТА ВРЕМЕНИ
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!НАЧАЛО ОПИСАНИЯ
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if opisanie=0:'<center>Время <B><<hour>></B> часов <B><<$nilmin>><<minut>></B> минут. Сейчас <<day>> <<$month>> <<year>>года, <<$week>></center>'
Я очень плохо разбираюсь в программирование однако считаю, нет лучше обучения, чем самообучение. Поэтому прискорбному факту, считаю, что пока рано что то убирать из украденного чужого кода, потому, как механизм может совсем отказать.
Вот моя игра, пока набростки. Хочу прикрутить сюда счетчики усталости, которые при нуле отправляют ГГ в принудительный сон, счетчик голода, который при нуле убивает героя и счетчик жажды который при нуле убивает героя.
##остров##
Aleks Versus:
можно и нужно убрать лишние циклы:
Тогда уж и лишние условия убрать. И ошибки вылечить, которые появились от убирания циклов.
Spoiler
VIEW
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
hour_plus = minut / 60 &! сколько полных часов прошло
minut = minut mod 60 &! приводим минуты в нормальный вид (от 0 до 59)
hour = hour + hour_plus &! прибавляем к текущему времени, сколько полных часов прошло
! подсчитываем голод и усталость:
golod = golod - hour_plus
son = son - hour_plus
day_plus = hour / 24 &! сколько полных дней прошло
hour = hour mod 24 &! приводим часы в норму (от 0 до 23)
daystart = daystart + day_plus &! количество дней от начала игры
week = (week + day_plus) mod 7 &! выставляем день недели
if week = 0:Set $week = 'Воскресенье' &! Счёт идёт от 0.
if week = 1:Set $week = 'Понедельник'
if week = 2:Set $week = 'Вторник'
if week = 3:Set $week = 'Среда'
if week = 4:Set $week = 'Четверг'
if week = 5:Set $week = 'Пятница'
if week = 6:Set $week = 'Суббота'
day = day - 1 &! Хак для нормальной работы в диапазоне от 1 до 30
day = day + day_plus &! увеличиваем количество текущих дней
month_plus = day/30
day = day mod 30
month = month + month_plus
day = day + 1 &! Хак для нормальной работы в диапазоне от 1 до 30
if month = 0:Set month = 1
if month = 13:Set month = 1&set year = year + 1
If month = 1:set $month = 'Январь'
If month = 2:set $month = 'Февраль'
If month = 3:set $month = 'Март'
If month = 4:set $month = 'Апрель'
If month = 5:set $month = 'Май'
If month = 6:set $month = 'Июнь'
If month = 7:set $month = 'Июль'
If month = 8:set $month = 'Август'
If month = 9:set $month = 'Сентябрь'
If month = 10:set $month = 'Октябрь'
If month = 11:set $month = 'Ноябрь'
If month = 12:set $month = 'Декабрь'
if minut < 10:set $nilmin = '0'
if minut >= 10:set $nilmin = ''
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!КОНЕЦ РАЧЕТА ВРЕМЕНИ
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!НАЧАЛО ОПИСАНИЯ
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if opisanie=0:'<center>Время <B><<hour>></B> часов <B><<$nilmin>><<minut>></B> минут. Сейчас <<day>> <<$month>> <<year>>года, <<$week>></center>'
пороль к игре 19141914
newsash,
точно. Здесь же сразу высчитывается текущее время.
vais,
Тебе надо проверить опечатки. Из-за них может возникнуть много ошибок. Жажда на локации “начало” обозвана “жажжа”.
В остальном всё должно работать. На локации “время” в самом низу пишешь что-то вроде:
if golod<1:
*clr
*pl 'Вы умерли'
end
То же самое для жажды и усталости. То есть подсчёт у тебя работает, тебе только нужно разобраться с переменными. В указанном коде, голод подсчитывается переменной golod. тебе достаточно на локации “начало” указать golod = 72. И через семьдесят два часа по игре, голод убьёт героя. Для жажды, напротив, нужно прописать на локации “время”, после строки golod = golod -1 строку жажда = жажда -1
Как бы ты не хотела, поправить чужой код придётся. :)
Aleks Versus,
Ребят ну миди это хорошо, а как к плееру фестиваль(festival) подключить? Делал кто, нет?
BECEJIb4AK_Y, mp3 делал, wav делал. festival, я запамятовал, - это что?
Синтезатор речи?
да. в вики описание легко найти, и ставится вроде не сложно.
Ребят, а как сделать меню в инвентаре? что бы можно было нажать туда и от туда выйдет еще один список. Пример
Инвентарь
Характерисктики
Умения
Дневник
при нажатии инвентар выводится список вещей в инвентаре итд
vais:
Ребят, а как сделать меню в инвентаре? что бы можно было нажать туда и от туда выйдет еще один список. Пример
Хотел предложить menu, но тут явно другое нужно.
Изучаешь применение $onobjsel.
В локации-обработчике выбора предмета (которую задаёшь с помощью $onobjsel) выбранный предмет (selobj) по вариантам.
if $selobj = '<<Назад':
delobj
addobj 'Инвентарь'
...
end
if $selobj = 'Инвентарь'
delobj
addobj '<<Назад'
i = 0
:loop
addobj $инвентарь[i]
i += 1
if i < arrsize('инвентарь'): jump 'loop'
end
В этом примере по выбору инвентаря выводится в инвентарь массив ‘$инвентарь’.
Это слишком сложно для меня(
vais:
Это слишком сложно для меня(
Сначала делаешь поиск по файлу по строке ‘onobjsel’ (без кавычек само собой) на случай, если в том коде, который ты брала за образец, это уже используется.
Если ничего не нашлось, создаёшь локацию с названием ‘$onobjsel’. В первой локации игры пишешь $onobjsel = ‘$onobjsel’. В коде локации пишешь то, что в моём предыдущем посте (нужно дописать код по образцу, там должно быть несложно). Появятся вопросы - спрашиваешь. :)
vais,
ничего сложного. Newsash правильно говорит.
Инвентарь приходится держать в разных массивах. Допустим, верхний уровень твои четыре предмета:
$root[0] = "Инвентарь"
$root[1] = 'Характерисктики'
$root[2] = 'Умения'
$root[3] = 'Дневник'
В массиве $inventar держишь предметы, которые как бы в рюкзаке у героя:
$inventar[0] = 'ручка'
$inventar[1] = 'отвёртка'
$inventar[2] = 'молоток'
$inventar[3] = 'яблоко'
Уж не знаю, где ты их будешь вписывать в этот массив. В действиях, или на самих локациях, но выглядит для примера это так.
Создаёшь “локацию-обработчик выбора предмета”. Название может быть любым, но чтоб не заморачиваться обычно используют onObjSel. В локации “начало” пишешь
$onobjsel = 'onObjSel'
На локации “onObjSel” пишешь код, который будет воспроизводить предметы из массивов:
if $selobj = 'Инвентарь':
! если выбран объект инвентарь
delobj &! очищаем список предметов
addobj '<<Назад' &! добавляем предмет для возврата к предыдущему списку
! цикл, который воспроизводит предметы:
i = 0
:loop1
addobj $inventar[i]
i += 1
if i < arrsize('$inventar'): jump 'loop1'
end
if $selobj = '<<Назад':
! если выбран предмет, который должен нас возвратить к предыдущему списку:
delobj &! очищаем список предметов
! цикл, который воспроизводит предметы:
i = 0
:loop2
addobj $root[i]
i += 1
if i < arrsize('$root'): jump 'loop2'
end
! последняя строка снимает выделение с предмета:
unselect
практически тебе придётся добавлять предметы не с помощью addobj, а просто внося названия в массив.
Например действие “поднять яблоко”. Было такое:
act "поднять яблоко":
addobj "яблоко"
delact $selact
end
А стало такое:
act "поднять яблоко":
$inventar[] = "яблоко"
delact $selact
end
Если я с фестивалем спросил давно замусоленую банальщину дайте ссыль я почитаю. плз