Sidebar

Создание часов показывающих правильное время.

  • Рекомендуется задавать вопросы только относительно темы с уроком. Для остальных вопросов существует раздел [url=http://cs-mapping.com.ua/forum/forumdisplay.php?f=12]«Помощь»[/url].

    Темы с просьбами помощи будут удаляться без предупреждения и без объяснения причины.

    Запрещается поднятие старой темы оффтопом. Ваше сообщение будет удалено, а в профиль будет выписано замечание.

Пила

New member
24.03.2012
427
12
0
Создание часов показывающих правильное время.

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

Этап 1. Создание секундной стрелки.

Создаем модель часов.

Я сделал prop_static
Настройки:
World Model: models/props_trainstation/trainstation_clock001.mdl (модель часов)

Далее создаем стрелки из брашей. Преврашаем стрелки в func_rotating.

Первая стрелка будет секундная.
Настройки:
Name: sec
Max Rotation Speed: 60 (именно это значение подходит, т.к. именно с этой скоростью стредка за 0.1 сек. проходит растояние в 1 сек. на часах)
Флаги:
YAxis
No Solid
Дополнительные энтити:
Создаем два logic_relay, имя первого sec_relay второго sec_relay_2
Создаем Output-ы в первом:
OnTrigger sec StartForward (запускаем нашу стрелку)
OnTrigger sec Stop 0.10 (останавливаем нашу стрелку)
OnTrigger sec_relay_2 1.00 Trigger (запускаем второй logic_relay)

Output-ы во втором
OnTrigger sec StartForward
OnTrigger sec Stop 0.10
OnTrigger sec_relay Trigger 1.00

Также создадим logic_auto с Output-ом
OnMapSpawn sec_relay Trigger

Для чего это нужно. В первом logic_relay, как и во втором есть Output-ы на то, чтобы стрелка начала "ходить" StartForward, и чтобы она остановилась Stop, НО если оставить это так, то стрелка дерниться один раз и остановиться, поэтому мы создали Output на то чтобы после того как стрелка дерниться на одном logic_relay, она дерниться и на другом, и так по кругу, а logic_auto нужен для того чтобы запустить всю систему.

Этап 2. Создание минутной стрелки.

Создаем брашем минутную стрелку, и преврашаем ее в func_rotating
Настройки:
Name: min
Остальные настройки точно такиеже как и у секундной стрелки.

Создаем два logic_relay имя первого min_relay второго min_relay_2

Создаем им Output-ы для первого:
OnTrigger min StartForward
OnTrigger min Stop 0.10
OnTrigger min_relay_2 Trigger 60.00

для второго:
OnTrigger min StartForward
OnTrigger min Stop 0.10
OnTrigger min_relay Trigger 60.00

Добавим к logic_auto Output:
OnMapSpawn min_relay Trigger 60.00

Я надеюсь что тут все понятно. logic_auto запускаем минутную стрелку, а logic_relay поддерживает ее вращение.

Этап 3. Создание часовой стрелки.

Снова создаем func_rotating, с темиже параметрами что и у предыдущих, только в поле Name пишем clock

Снова создаем два logic_relay. Имя первого clock_relay второго clock_relay_2
Output-ы первого:
OnTrigger clock StartForward
OnTrigger clock Stop 0.10
OnTrigger clock_relay_2 Trigger 3600.00

для второго:
OnTrigger clock StartForward
OnTrigger clock Stop 0.10
OnTrigger clock_relay Trigger 3600.00

В logic_auto добавим Output: OnMapSpawn clock_relay Trigger 3600

Я думаю что всем уже все понятно, такчто объяснять не буду.

Карта пример: http://cs-mapping.com.ua/forum/attachment.php?attachmentid=91908&stc=1

На этом создание наших часов закончено. Всем спасибо, всем пока!
 

Вложения

  • 1.8 КБ Просмотров: 397
Последнее редактирование:

igi_sev

I have returned
20.04.2009
819
34
  • Золотая медаль 232
Да, этому можно найти применение, однако ты снова решил задачу неэффективно =\
logic_relay и logic_auto данном случае не нужны, а тратить 10 объектов на создание часов - это расточительно для движка Source
 
Команда форума
VIP
28.03.2010
15 329
253
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
часы можно сделать тремя функ ротатингами. Каждый из них будет вращаться с заданной скоростью и чего-то там показывать.
 

Пила

New member
24.03.2012
427
12
0
вот именно "чего-то там показывать" а у меня часы показывают время, и причем точное.
 

HeMe3iC

:(
03.09.2007
3 263
34
48
Питер
2 Пила:
если верно рассчитать и задать скорость вращения, то часы будут показывать верное время.
 

Пила

New member
24.03.2012
427
12
0
ну так можно будет сделать для минутной и часовой стрелки, а секундную можно оставить и так, хотя подбирать значения это как иголку в стоге сена искать
 
Последнее редактирование:
Команда форума
VIP
28.03.2010
15 329
253
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
>>хотя подбирать значения это как иголку в стоге сена искать
А зачем их подбирать, если можно рассчитать?
Для часовой стрелки скорость будет 0.0016666666666666666666666666666666666666666667
Для минутной
0.1
Для секундной
6
 

JOHN_77

qdq 1635
15.03.2007
72
0
0
Кстати интересная тема. Давно в планах сделать рабочие часы, показывающие какое-то точное время, причем сохраняющие его при смене карт(по крайней мере часы и минуты). Реально такое?

Если аутпут посылать только секундной стрелке раз в секунду, нагрузка будет небольшой(в крайнем случае можно обойтись без секундной стрелки), минутным и часовым можно слать аутпут по достижении отметки "12" секундной стрелки. Хоть даже через триггеры у самого циферблата.
 

ShotT

Has left this world
24.02.2010
3 574
25
0
2 JOHN_77
Я вот представил, это ж сколько надо будет энтитей, чтобы точно (либо с небольшой погрешностью) передать время из раунда в раунд.

В сурс только одна энтить может это делать - env_global, но и та может передать только "да" либо "нет".
В общем, через 15 минут попыток сделать это, я осознал что это невозможно.

И дело не сколько в невозможности, сколько в количестве этих env_global для часа. Если этого не делать - час никогда не насчитается, а значит стрелка не сдвинется.

Но если бы можно было передавать какое-то число, всё было бы проще во много раз.
 
Последнее редактирование:
Команда форума
VIP
28.03.2010
15 329
253
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Ну я в ксаше делал корочи энтитю func_clock. Нормально время казала.
И точно.
 

ferxer

New member
17.07.2010
96
2
0
Сделал пример часов с передачей значения из раунда в раунд.
Только часы не работают %) (ошибку найти не смог), но не суть важно, главное метод передачи значений.
 
Последнее редактирование:

ShotT

Has left this world
24.02.2010
3 574
25
0
2 ferxer
Можно услышать в письменной форме сам метод передачи и в чем заключается ошибка?
 
Последнее редактирование:

Raid

VIP
VIP
11.07.2006
8 320
29
  • Rocket медаль
О, пацаны, а сделайте тутор по созданию электронных часов (10 тектсур цифр + мигающие точечки).
 

ferxer

New member
17.07.2010
96
2
0
2 ShotT:
Мой метод передачи значений основан на свойстве некоторых объектов сохранять своё положение из раунда в раунд(объекты которые не обновляются в каждом раунде)
В примере это info_target, от которого в начале раунда point_proximity_sensor отмеряет расстояние.Расстояние от point_proximity_sensor до info_target является нашим значением.
 
Команда форума
VIP
28.03.2010
15 329
253
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 Raid: в ксаш-моде есть специальная энтить для создания таких часов.
Но под халфой тоже можно.
На пальцах объясню идею: четыре func_train, на которые налеплена текстура с циферькоме от нуля до девяти (сверху вниз).
Так же расставлены патч_корнеры по высоте цифр. Один трейн (десятки часов) имеет высоту в три цифры (0, 1, 2). Трейн десятки минут имеет высоту в шесть цифр (0,1,2,3,4,5). У всех патч_корнеров стоит флаг Wait For Retrigger и Teleport.
У крайних в списке поле message активирует предидущий трейн (минутный активирует десятки минут, десятки минут активируют часы, часы активируют десятки часов. Трейн минуты активируется раз в 60 секунд закольцованным мультименеджером. Собственно осталось упрятать трейны в стену, чтобы было видно только по одной цифре с каждого трейна и эта конструкция будет показывать текущее время.
 

ferxer

New member
17.07.2010
96
2
0
Доделал пример, теперь все работает. Для сохранения времени на часах нужно нажать кнопку.
 

Вложения

nail

New member
29.02.2008
412
А еще можно средствами sm сделать чтобы часы показывали серверное время. Для этого надо задать стрелкам имена, а на sm по именам найти id и задать нужный угол в соответствии с серверным временем
new Float:entangle[3] = {0.0,0.0,0.0};
TeleportEntity(ent, NULL_VECTOR, entangle, NULL_VECTOR);
задавать угол по х или у, смотря в какой плоскости часы. Можно и сразу по обоим, но нужно от сферических перейти к декартовым координатам

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

Насчет env_global, этож двоичная система получается. в дне 86400 секунд = 10101000110000000 (в двоичной системе), а значит17-разрядный триггер или 17 штук env_global :) ,думаю на sm такое проще реализовать чем мапингом
 
Последнее редактирование:

Пила

New member
24.03.2012
427
12
0
ребят, а может телепортить часы куданибудь в зону перехода (ну только чтобы не видно было) часы перейдут со своим значением на новый уровень. а патом телепортнуть часы обратно на место, и время сохранится (теоретичемки)
 

Новые сообщения

Донат - Хостинг

Итого
200.00 $
Цель
600.00 $

Доноры Красавчики

Пользователи онлайн

Нет пользователей онлайн.