Как сделать?
…
Lucifer,
У тебя кавычка потерялась.
addobj 'Назад'
addobj 'Назад
i=0 &
Помимо кавычки:
obj ‘Скрытность <<Скрытность>>’,’’,1
Здесь, наверняка, подразумевался addobj.
После исправления этих ошибок появится что-то еще :)
Похоже, что проще было бы вести отдельный массив с предметами и отображать его (с помощью killobj / addobj) каждый раз при обновлении статуса.
Попробую спасибо вам большое :)
Всем привет. В игре использую юлианский календарь, взятый с форума.
На локации происходит череда действий, которые меняют показатели сытости, усталости и т.п. и времени.
act “Завтракать”:
time+=15 & Настроение+=5 & Здоровье+=5 & Усталость+=5
gs ‘stat’
При этом все показатели меняются как надо - при окончании действия. И только время обновляется при выходе из локации. Что с временем не так?
AndreWho,Во время выполнения акта должно происходить обращение к локации, которая время пересчитывает.
Так gs ‘stat’ - это и есть та локация, разве нет?
Я в программировании ноль без палочки, но если мыслить просто логически. По окончании действия идет обращение gs ‘stat’ и все показатели пересчитываются, кроме времени. Время пересчитывается только при выходе из локации. Причем пересчитывается правильно, в зависимости от количества действий, совершенных внутри локации.
AndreWho,Скорее всего время у тебя считается в onnewloc. Добавь в акт gt curloc и проверь.
dmvikar
Во-первых, спасибо, что пытаешься помочь.
Во-вторых gt $curloc теперь пересчитывает время после act. Но теперь первый act на локации зацикливается на повтор.
act ‘Войти в комнату’:
*clr & cla
time+=10 & Усталость+=5
gs ‘stat’
!Текст
gt curlocact ‘Открыть шкаф’:
*clr & cla
!Текст
Усталость+=5 & time+=10
gs ‘вывод_статов’
gt curloccla
act ‘Выйти’: gt ‘Коридор’
end
end
end
Может все-таки в коде на onenewloc поправить?
clr
pl $weekday[weekday] + ’, ’ + day + ’ ’ + $month[month] + ’ ’ + year + ‘года’ + ’. ’ + $hour + ‘:’ + $minut
pl “Усталость: <<усталость>>|<<Максимум_усталость>>”
AndreWho,при таком построении актов оно так и должно быть.
То, что ты скопировал из onenewloc - это вывод времени, а не расчет. Попробуй, вставь его. Возможно и сработает. Я же не знаю твоего кода и что конкретно где считается. И не бойся экспериментировать).
Мыши кололись, но продолжали есть кактус.
Итак:
1. При смене локации, то есть при обращении к onnewloc время пересчитывается. Значит код времени там правильный
pl "Время: <<$weekday[weekday] + ', ' + day + ' ' + $month[month] + ' ' + year + 'года' + '. ' + $hour + ':' + $minut>>"
2. При смене действия, то есть при обращении к локации stat все показатели (в примере ниже - усталость), кроме времени пересчитываются (Усталость+=5 & time+=10). Значит код времени здесь неправильный.
При этом на локации stat тот же код времени, что и на локации onnewloc.
clr
Усталость+= args[1]
pl "Усталость: <<Усталость>>|<<максимум_Усталость>>"
if Усталость > 100: Усталость = 100
if Усталость <0: Усталость=0
Время+= args[2]
pl "Время: <<$weekday[weekday] + ', ' + day + ' ' + $month[month] + ' ' + year + 'года' + '. ' + $hour + ':' + $minut>>"
Соответственно, что поменять в коде времени на локации stat?
AndreWho,То что ты нашел, это не расчет времени, это вывод результата.
Ты мог не видеть результатов расчета времени по двум причинам:
Нет расчета.
Нет обновления результата.
Или все вместе сразу.
Этот код отвечает за подсчет времени.
JDN = JDNStart + time/1440
hour = (time/60) MOD 24
minut = time MOD 60
weekday = (JDN MOD 7) + 1
JDa = JDN + 32044
JDb = (4*JDa + 3)/146097
JDc = JDa - (146097*JDb/4)
JDd = (4*JDc + 3)/1461
JDe = JDc - 1461*JDd/4
JDm = (5*JDe + 2)/153
day = JDe - (153*JDm+2)/5 + 1
month = JDm + 3 - 12*(JDm/10)
year = 100*JDb + JDd - 4800 + JDm/10
$hour = iif (hour < 10, '0<<hour>>', '<<hour>>')
$minut = iif (minut < 10, '0<<minut>>', '<<minut>>')
Этот - за вывод информации о нем
pl $weekday[weekday] + ', ' + day + ' ' + $month[month] + ' ' + year + 'года' + '. ' + $hour + ':' + $minut
Чота я совсем разъехался мыслями.
Все коды, что ты написал находятся на onnewloc. И обращение к нему происходит только при смене локаций. И здесь проблем нет.
Но при смене действий разве тоже идет обращение к onnewloc? Ну тогда бы должно было бы работать все также. А время не работает(((
ПС
Так, вроде отбой.
Я продублировал код расчета времени из onnewloc в stat и вроде поехало.
AndreWho,При выполнении твоих действий не происходит смена локации, то gt curloc, которое мы прописали не подходит тебе по структуре кода.
Спасибо. Смену времени при выполнении действия вроде удалось победить.
Но оно (время) по-прежнему не отпускает.
На первой локации действие с условием
if ((hour = 9 and minut >= 30) or (hour = 10 and minut < 00)) and weekday<6
На второй локации
if ((hour = 10 and minut >= 00) or (hour = 10 and minut < 30)) and weekday<6
На первой локации действие заканчивается в 10:10 и все нормально - повтора нет
На второй локации действие заканчивается в 10:50 и почему-то запускается повтор действия, хотя временные условия уже не соответствуют.
Я ради интереса поменял между собой эти условия на локациях и теперь на первой локации так же действие стало повторяться.
А на второй все нормально.
То есть не выполняется именно вот этот код. Точнее, действие еще раз повторяется.
if ((hour = 10 and minut >= 00) or (hour = 10 and minut < 30)) and weekday<6
AndreWho,Действие будет выполняться при условии hour = 10 и weekday<6.