<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://doomdev.idkfa.ru/wiki/skins/common/feed.css?164"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://doomdev.idkfa.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9B%D0%B8%D1%84%D1%82%D1%8B</id>
		<title>Лифты - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://doomdev.idkfa.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=%D0%9B%D0%B8%D1%84%D1%82%D1%8B"/>
		<link rel="alternate" type="text/html" href="http://doomdev.idkfa.ru/wiki/index.php?title=%D0%9B%D0%B8%D1%84%D1%82%D1%8B&amp;action=history"/>
		<updated>2026-06-23T15:31:13Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.13.3</generator>

	<entry>
		<id>http://doomdev.idkfa.ru/wiki/index.php?title=%D0%9B%D0%B8%D1%84%D1%82%D1%8B&amp;diff=2199&amp;oldid=prev</id>
		<title>Costja в 22:20, 6 июня 2006</title>
		<link rel="alternate" type="text/html" href="http://doomdev.idkfa.ru/wiki/index.php?title=%D0%9B%D0%B8%D1%84%D1%82%D1%8B&amp;diff=2199&amp;oldid=prev"/>
				<updated>2006-06-06T22:20:23Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Изображение:lift1.gif|frame|center|Рисунок 1: Лифт]]&lt;br /&gt;
&lt;br /&gt;
Когда появился исходный код Doom, одним из первых портов, действительно расширяющих среду Doom, был Boom, разработанный экспертами в области Doom из [[TeamTNT]]. Randy дальновидно включил в ZDoom расширения Boom, одним из которых был лифт.&lt;br /&gt;
&lt;br /&gt;
Лифт – это сектор, движущийся вверх и вниз, сохраняя при этом постоянное расстояние между полом и потолком. Лифтами можно заменить подъемники, получив реалистичную среду. На уровне [http://zdoom.org/zdkb/elevator.zip elevator.wad] приведен пример использования лифта.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Изображение:lift2.gif|frame|center|/##&amp;lt;br&amp;gt;&lt;br /&gt;
Floor = Высота пола&amp;lt;br&amp;gt;&lt;br /&gt;
Ceiling = Высота потолка&amp;lt;br&amp;gt;&lt;br /&gt;
Script = Скрипт&amp;lt;br&amp;gt;&lt;br /&gt;
Switch = Выключатель&amp;lt;br&amp;gt;&lt;br /&gt;
C = В&amp;lt;br&amp;gt;&lt;br /&gt;
PlayerStart = Вход игрока&amp;lt;br&amp;gt;&lt;br /&gt;
B = Б&amp;lt;br&amp;gt;&lt;br /&gt;
A = А&amp;lt;br&amp;gt;&lt;br /&gt;
##/&amp;lt;br&amp;gt;&lt;br /&gt;
Рисунок 2: План карты]]&lt;br /&gt;
&lt;br /&gt;
План карты может сначала показаться сложным, но вы быстро разберетесь в нем, как только поймете, как работает лифт. Для добавления лифта нужно причина, поэтому нужны два сектора, находящихся на различных высотах. На рисунке 2 сектора А и Б расположены на разных высотах. Сектор В является лифтом и находится между этими высотами.&lt;br /&gt;
&lt;br /&gt;
Помните, что у сектора-лифта должно быть некоторое расстояние между полом и потолком, так как оно сохраняется при его движении. Так как высота текстуры выключателя равна 72, то расстояние между полом и потолком я сделал равным 72-ум. При перемещении лифта перемещается и эта текстура.&lt;br /&gt;
&lt;br /&gt;
Для перемещения лифта используются три спецификатора: [[Elevator_MoveToFloor]] (№246), [[Elevator_RaiseToNearest]] (№245), [[Elevator_LowerToNearest]](№247).&lt;br /&gt;
&lt;br /&gt;
Elevator_MoveToFloor(tag, скорость)&lt;br /&gt;
* tag – tag сектора-лифта&lt;br /&gt;
* скорость – скорость перемещения лифта&lt;br /&gt;
&lt;br /&gt;
Этот спецификатор перемещает лифт к уровню пола, на котором был активирован данный спецификатор. На рисунке 2 два выключателях в секторах А и Б вызывают лифт к соответствующему сектору. Это требуется на тот случай, если лифт окажется на другом этаже.&lt;br /&gt;
&lt;br /&gt;
Elevator_RaiseToNearest(tag, скорость), Elevator_LowerToNearest(tag, скорость)&lt;br /&gt;
* tag – tag сектора-лифта&lt;br /&gt;
* скорость – скорость перемещения лифта&lt;br /&gt;
&lt;br /&gt;
Эти спецификаторы предназначены для перемещения лифта от этажа к этажу. На рисунке 2 выключатель лифта активирует скрипт, вызывающий тот или иной спецификатор в зависимости от того, на каком этаже находится лифт. Так как выключатель должен вызвать два спецификатора (RaiseToNearest и LowerToNearest), то это лучше делать при помощи скрипта. А вот и сам скрипт:&lt;br /&gt;
 #include “zcommon.acs”&lt;br /&gt;
  &lt;br /&gt;
 //Флаг, показывающий, на каком этаже находится лифт.&lt;br /&gt;
 int floor;&lt;br /&gt;
  &lt;br /&gt;
 //Этот скрипт активируется выключателем в лифте.&lt;br /&gt;
 script 1 (void)&lt;br /&gt;
 {&lt;br /&gt;
         if (floor==1)&lt;br /&gt;
         {&lt;br /&gt;
                Elevator_LowerToNearest (1, 16);&lt;br /&gt;
                floor=0;&lt;br /&gt;
         }&lt;br /&gt;
         else&lt;br /&gt;
         {&lt;br /&gt;
                Elevator_RaiseToNearest (1, 16);&lt;br /&gt;
                floor=1;&lt;br /&gt;
         }&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 //Этот скрипт активируется выключателем из нижнего сектора. &lt;br /&gt;
 //Он изменяет флаг floor, чтобы скрипт 1 «знал» на каком этаже &lt;br /&gt;
 //находится лифт; В данном случае новое значение - 0 – нижний сектор.&lt;br /&gt;
 script 2 (void)&lt;br /&gt;
 {&lt;br /&gt;
         Elevator_MoveToFloor (1, 16);&lt;br /&gt;
         floor=0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 //Этот скрипт активируется переключателем из верхнего сектора. &lt;br /&gt;
 //Он изменяет флаг floor, чтобы скрипт 1 «знал» на каком этаже&lt;br /&gt;
 //находится лифт; В данном случае новое значение - 1 – верхний сектор.&lt;br /&gt;
 script 3 (void)&lt;br /&gt;
 {&lt;br /&gt;
         Elevator_MoveToFloor (1, 16);&lt;br /&gt;
         floor=1;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Скрипт прост, но эффективен. Помните, что лифты могут посещать больше двух этажей. Если у вас трехуровневая или четырехуровневая структура, то вызов RaiseToNearest или LowerToNearest будет останавливать лифт на каждом этаже.&lt;br /&gt;
&lt;br /&gt;
{{RCTutorial}}&lt;/div&gt;</summary>
		<author><name>Costja</name></author>	</entry>

	</feed>