• Добро пожаловать, Гость. Войдите или зарегистрируйтесь.

Автор Тема: Скрипт считающий время  (Прочитано 1293 раз)

Описание:

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Bergatroll

  • *
  • Сообщений: 3
  • Репутация: 0
  • Пол: Мужской
    • Просмотр профиля
Скрипт считающий время
« : 05 Октябрь, 2011, 17:56:45 »
0
Создал скрипт отсчитывающий в моде семестры обучения, всего 3 семестра и 2 каникул, семестр по 10 дней, каникулы по 2 дня. Проблема в том что скрипт компилируеться но дни (sutkiLBT) не считаються. Я проверял скриптом дневника. Еще есть большое подозрение что дни считать можно проще командой (gamedayspassed) но скрипт основанный на этой команде тоже не работал.

ScriptName aaaLBTglodUniTimerScr

long timerLBTU ;сдесь задаем количество секунд в сутках
;short trigLBT aaGlobTumblerUniversiti глобальная переменная запускающая таймер
;short semestrU счетчик отрезков времени (семестров и каникул)
;short sutkiLBT счетчик прошедших суток

begin GameMode

  if (aaGlobTumblerUniversiti == 0 || aaGlobTumblerUniversiti == 4);если переменная на нуле или все закончилось то назад
  return
 
  endif
 
 
    if (aaGlobTumblerUniversiti == 1);включаеться таймер
    set timerLBTU to 86400 ;отмеряем сутки в секундах
    set aaGlobTumblerUniversiti to 2 ;переключаем глобальную переменною(ГП) на отсчет времени что бы таймер не обновлялся
    endif
       
    ;работает таймер 1го семестра
if (aaGlobTumblerUniversiti == 2 && sutkiLBT < 10);если глобальная переменная(ГП) включена на таймер и сутки меньше 10 то работает все что ниже
     
     
         if (timerLBTU > 0);если секунды еще не кончились
      set timerLBTU to (timerLBTU - GetSecondsPassed) ;вычетаем из заданного числа секунду
     
         elseif  (timerLBTU == 0);если секунды закончились
         ;прошло 1 дней
         set sutkiLBT to (sutkiLBT + 1);добавляем суткам плюс 1
         Message "Сутки прошли" 5 ;выводим сообщение на экран
         set timerLBTU to 86400 ;перезапускаем таймер еще на одни сутки и начинает работать 25я строка
         ;пока весь цикл не повториться 10 раз       
         endif

endif
     
      ;работает переключатель таймера с 10 на 2 дня и обратно
        if (aaGlobTumblerUniversiti == 2 && sutkiLBT == 10);прошло десять суток запоминаем семестр
                   
                 if (semestrU == 0 || semestrU == 2 || semestrU == 4)
                      Set semestrU to (semestrU + 1);запомнили что 1й участок времени прошел
                      Set sutkiLBT to 8;делаем двое суток на каникулы
                      ;
                     
                 elseif (semestrU == 1 || semestrU == 3)
                   Set semestrU to (semestrU + 1);запоминаем номер отрезка времени
                   Set sutkiLBT to 0;время сбрасываем на полный семестр
                     
                 elseif (semestrU == 5); прошло 5ть временных отрезков
                  set aaGlobTumblerUniversiti to 3;переключаем ГП
                 
                 endif
       
        endif
       
       
          if (aaGlobTumblerUniversiti == 3)
          ;SetStage можно переключить стадию квеста
          ;в принципе любое действие следующее в конце
          Set aaGlobTumblerUniversiti to 4
         
          endif

end
Есть многое на свете, друг Горацио,что не подвластно нашим мудрецам

Оффлайн NAVYgator

  • *
  • Сообщений: 1472
  • Репутация: 30.7
  • Пол: Мужской
  • скрипты никому не пишу
    • Просмотр профиля
    • Email
Re: Скрипт считающий время
« Ответ #1 : 05 Октябрь, 2011, 21:28:14 »
0
А зачем Вы считаете секунды? Я, конечно, понимаю - зачем. Но, в чем смысл... Ведь есть глобальная переменная GameDay

Введите две переменные DayNull (тип float, для фиксации начала отсчета) и DayCurrent (тип float, для фиксации текущего дня).
Присваиваем DayNull значение из GameDay в начале отсчета.
Затем, с определенной частотой (напр. в квесте), запускаем проверку разности GameDay и DayNull на условия наступления нужного "дневного" промежутка:
10 дней (окончание семестра1)
12 дней (окончание семестр1+каникулы_1)
22 дней (окончание семестр1+каникулы_1+семестр2)
и т.д. - нарастающим итогом.

Значение текущей разности GameDay и DayNull можно фиксировать в DayCurrent.
Цитировать (выделенное)
if ( DayNull != 0 )
   Set curDayPas to ( GameDay - DayNull )
elseif  ( DayNull == 0 )
        Set DayNull to GameDay
   if ( DayCurrent > 10 )
      ;что-то делаем
   endif ; конец чего-то
   ***далее - очередные проверки временных интервалов - скрипт - по желанию, т.к. реализация м.б. разной
endif
У меня данный алгоритм работает: квест "отслеживает" дни с его старта и, в зависимости от текущего дня, запускает нужную стадию.
GameDaysPassed - не функция, а глобальная переменная, хранящая информацию о кол-ве дней, прошедших от начала игры. Можно то же организовать и с этой переменной, но точка отсчета и разность будут формироваться по другому.

Нет?
« Последнее редактирование: 05 Октябрь, 2011, 21:36:08 от NAVYgator »
Награды Всем форумчанам, принимавшим участие в праздновании 10-летия Морровинд За создание новогоднего настроения Всем принявшим участие в 9-летии Тиарума За огромный вклад в развитие Румора

Оффлайн Bergatroll

  • *
  • Сообщений: 3
  • Репутация: 0
  • Пол: Мужской
    • Просмотр профиля
Re: Скрипт считающий время
« Ответ #2 : 05 Октябрь, 2011, 22:09:39 »
0
Спасибо! Ценная информация. А то я не въезжал как дни считать, никогда этим не занимался. Если кому интересно то вот готовое решение данной задачи.

ScriptName aaaLBTglodUniTimerScr

int timerLBTU;текущий день
;short trigLBT aaGlobTumblerUniversiti глобальная переменная запускающая таймер
;short semestrU счетчик отрезков времени (семестров и каникул)
;short sutkiLBT счетчик прошедших суток

Begin GameMode

    if aaGlobTumblerUniversiti == 0 || aaGlobTumblerUniversiti == 4
        return
    endif

    if aaGlobTumblerUniversiti == 1
        set aaGlobTumblerUniversiti to 2
    endif

    if aaGlobTumblerUniversiti == 2 && sutkiLBT < 10 && timerLBTU != GameDay
        set sutkiLBT to sutkiLBT + 1
        set timerLBTU to GameDay
        Message "Сутки прошли..."
        PrintC "aaaLBTglodUniTimerScr::сутки прошли (%g)" sutkiLBT
    endif

    if aaGlobTumblerUniversiti == 2 && sutkiLBT == 10
        if semestrU == 0 || semestrU == 2 || semestrU == 4
            set semestrU to (semestrU + 1)
            set sutkiLBT to 8
        elseif semestrU == 1 || semestrU == 3
            set semestrU to (semestrU + 1)
            set sutkiLBT to 0
        elseif semestrU == 5
            set aaGlobTumblerUniversiti to 3
        endif
        PrintC "aaaLBTglodUniTimerScr::семестр (%g)" semestrU
    endif

    if aaGlobTumblerUniversiti == 3
;        SetStage можно переключить стадию квеста
        Set aaGlobTumblerUniversiti to 4
    endif

End
Есть многое на свете, друг Горацио,что не подвластно нашим мудрецам

Теги:
 

Что скрывает Время...

Автор RetributorРаздел Гильдия Неприкаянных

Ответов: 111
Просмотров: 44973
Последний ответ 29 Ноябрь, 2006, 10:13:43
от Retributor
Скрипт Заклинания На Misc-объекте

Автор GL.SamРаздел Архив готовых скриптовых решений

Ответов: 0
Просмотров: 2191
Последний ответ 08 Январь, 2007, 03:58:49
от GL.Sam
Скрипт Сна.

Автор NarzavesРаздел Скриптинг под TES IV

Ответов: 0
Просмотров: 2737
Последний ответ 08 Апрель, 2007, 22:17:59
от Narzaves
Скрипт Для Квеста

Автор IgorLutiyРаздел Скриптинг под TES IV

Ответов: 3
Просмотров: 3988
Последний ответ 05 Май, 2008, 16:30:13
от Mega
Как написать скрипт с диалогом

Автор GEGROРаздел Скриптинг под TES IV

Ответов: 2
Просмотров: 2324
Последний ответ 18 Декабрь, 2007, 14:28:34
от Siegrun
Скрипт для 3 Великих Домов

Автор alexeyРаздел Скриптинг под TES III

Ответов: 1
Просмотров: 2610
Последний ответ 04 Январь, 2008, 12:35:03
от [3StuN]LLIEnoT
Помогите плиииз написать скрипт отключающий свет

Автор VintРаздел Скриптинг под TES IV

Ответов: 3
Просмотров: 2691
Последний ответ 06 Март, 2008, 19:09:58
от LiLu
скрипт спеллов

Автор ЙецираРаздел Мастерская TES IV

Ответов: 8
Просмотров: 3321
Последний ответ 28 Июль, 2008, 11:19:48
от Saruon
Сложный скрипт с воскрешением

Автор MegaРаздел Мастерская TES IV

Ответов: 4
Просмотров: 2490
Последний ответ 08 Май, 2008, 14:05:08
от Mega
Как написать скрипт

Автор sorokoputkaРаздел Скриптинг под TES IV

Ответов: 4
Просмотров: 2805
Последний ответ 15 Май, 2008, 21:15:59
от sorokoputka

Поиск

 
Top
SimplePortal 2.3.5 © 2008-2012, SimplePortal