Sidebar

Есть ли такая энтия?

Пила

New member
24.03.12
427
12
0
это толлько с этажами можно, а мне надо еше чтобы было на экране цифры показывались на какой мы высоте
 

igi_sev

I have returned
20.04.09
819
39
  • Золотая медаль 232
Пила сказав(ла):
а не можешь рассказать как это на экран вывести, ести тебе не трудно. ПОЖАЛУСТА
Это было не трудно, времени только малость жалко... Карта-пример прилагается, потому что объяснять со слов бесполезно!
Нюанс. Карта создана под CS:S, но в ep2 тоже будет работать. Только скайбокс будет отображаться неправильно.

Ниже я опишу как всё это работает:
1. point_proximity_sensor
Изначально создана бочка и объект point_proximity_sensor.
point_proximity_sensor настроен, чтобы измерять расстояние до бочки.​
2. Расстояние в метрах
Объект point_proximity_sensor измеряет расстояние в юнитах. Чтобы перевести юниты в метры, полученный результат делится на 52.5 (из расчёта на официальный источник).
Полученное значение используется для дальнейших вычислений.​
3. Точность измерений
Точно измерений может быть вплоть до сотых миллиметра, но такая точность не нужна, к тому же лишние числа создают лишнюю нагрузку.
В примере используются три знака перед запятой и два знака после запятой. То есть, точность - до сантиметра, и максимально возможное значение, которое будет отображено - это 999.99 метров, после чего дисплей будет показывать результат не правильно.​
4. Оптимизация
Расчет и вывод результата на дисплей - это медленная операция, а объект point_proximity_sensor производит измерения постоянно, генерируя огромное количество Output'ов.
Чтобы этого избежать, после одного действия объект point_proximity_sensor выключается и включается через некоторое время.
В примере point_proximity_sensor работает 10 раз в секунду, что тоже многовато, можно поставить меньше.
Для настройки см. Output'ы объекта counter_main
5. Хитрости и "подводные камни"
Все расчёты, используемые при решении этой задачи, были выполнены с использованием специфики редактора Hammer и движка Source.
Обратите внимание, что все Output'ы имеют задержку выполнения равную 0.00! То есть за один проход, безотлагательно.
При создании Output'ов последовательность вызова этих Output'ов в игре полностью зависит последовательности их создания в редакторе.
Правило: Если два Output'а имеют одинаковое название, и время, то первым будет вызван тот, который был создан последним! Принцип LIFO (Last In First Out).
В редакторе Hammer последний созданный Output отображается ниже!
В следующем примере два Output'а с одинаковым названием и временем, в той последовательности как они отображаются в редакторе Hammer:
OnGreaterThan | counter_loop100 | Subtract | 100 | 0.00
OnGreaterThan | counter_temp100 | Add | 1 | 0.00
Какой будет вызван первым? Тот, который в списке ниже, т.е. где "Add | 1"
Для движка Source - это правило, поэтому можете безбоязненно пользоваться им для повышения быстродействия и эффективности своих карт =)
6. Определения
"Число" и "цифра" - это не одно и тоже!
Не нужно их путать. Из цифр состоят числа.
Пример цифр: 0, 1, 2, ... 9
Пример чисел: 15, 143.33, 48.3, 0.33​
7. Расчёты
В движке Orange Box нет объекта, для работы с целочисленной арифметикой, поэтому все расчеты производятся с дробными числами.
Чтобы разбить какое-либо число на цифры, я использовал следующий алгоритм:
- Сначала вычисляется самая старшая цифра числа, в нашем случае - это сотни.
- Входное число отправляется первому объекту logic_compare, который сравнивает число с 100. Если входное число больше или равно 100, то из входного числа вычитается 100, и для текущей цифры увеличивается счётчик (объект counter_res100) на 1.
Цикл повторяется пока входное число остается быть больше 100.
- Когда входное число становится меньше 100, операция повторяется для следующей цифры. В нашем случае - для десятков.
Из входного числа вычитается по 10 до тех пор, пока входное число не станет меньше 10. Как и в случае с сотнями, количество циклов сохраняется в аналогичном объекте counter_res10
- Тоже самое повторяется для единиц (counter_res1), десятых (counter_res01), и сотых (counter_res001)
- После подсчёта всех цифр, результирующие значения для каждой цифры получаются сохранены в соответствующих объектах: от counter_res100 до counter_res001
То есть в объекте:
counter_res100 - первая цифра числа (сотни);
counter_res10 - вторая цифра (десятки);
counter_res1 - третья (единицы);
counter_res01 - четвертая (десятые, после запятой);
counter_res001 - пятая (сотые, после запятой).​
8. Отображение результата
В этом примере для отображения результата используются браши.
Каждая цифра числа представлена в виде 7 брашей, расставленных так, как у цифр на калькуляторе.
Для того чтобы из этих 7 брашей изобразить какую-либо цифру, одни браши скрываются, а другие остаются видимыми. Короче, тут по принципу калькулятора.
Для удобство понимания последний шаг - вывод результата, определен в объекте relay_display.
Если понадобится выводить результат не брашами а как-то ещё, то расчёты трогать не нужно, достаточно просто подправить Output'ы объекта relay_display
9. Альтернативное отображение результата
В данном примере для вывода результата используются браши, но это очень неэффективный метод, пригодный лишь для примера.
Лучшим решением для поставленной задачи будет использование объекта env_texturetoggle и создание специального материала с цифрами.​

Вот и всё... кури, разбирайся...

PS. Нужно запатентовать этот метод )))
 

Вкладення

Пила

New member
24.03.12
427
12
0
Ух спасибо тебе ОГОРОМЕННОЕ ЧЕЛОВЕЧИШЕ. С меня :drink: и еше, где тут плюсики в репу ставится?
 

Пила

New member
24.03.12
427
12
0
эээ, у меня чегото не получается плюсануть, говорит введите число от 0 до 0 что не так?
 

Пила

New member
24.03.12
427
12
0
чтобы не создавать новой темы спрошу сдесь еше про одну энтию, в ep2 есть такой момент что мы встречаемся с советником, и там камера перехватывается какойто энтией типо point_vehiclecontrol, только там взгляд плавно переплывает из нашего положения где мы были до этой энтии, и еше там можно было камеру крутить, только там еше ограничение на это было насколько я помню. Перепробовал штук 30 энтий, но результата это не дало. Вопрос: как называется эта энтия?
 

Backbreaker

графодрочер ксм
27.12.07
3 130
38
48
  • Золотая медаль 111
2 Пила:
Декомпилятор знает. Инфа 100%
 

Game Server

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

Користувачі онлайн

Немає користувачів онлайн.