Эта статья документации для всего, что использует платформу Source. Нажмите для получения дополнительной информации.
This article's documentation is for Source 2. Click here for more information.

logic_script

From Valve Developer Community
< Ru
Jump to navigation Jump to search
English (en)Русский (ru)中文 (zh)Translate (Translate)
C++ Классовая структура
CLogicScript
CPointEntity
CBaseEntity
C++ logicentities.cpp
Значок редактора в Source 1
Значок редактора в Source 2

logic_script - это объект логики(en), доступно для всех игр на движке Source Source начиная с Left 4 Dead 2 Left 4 Dead 2. Также доступен в Ветвь Team Fortress 2 Ветвь Team Fortress 2 и Mapbase Mapbase.

Этот объект функционирует как контейнер для сценариев VScript(en). Например, в Left 4 Dead 2 он часто используется для логики "карнавальных игр", встречающихся в кампании Dark Carnival, таких как Peanut Gallery, Strongman Contest, Whack-a-Stach и т.д.

Note.pngПримечание:Этот объект перечислен в таблице edict(en), не как объект логики, как можно было бы ожидать.

Ключ-параметры

Name (targetname) <объект источник(en)>
Имя объекта, по которому другие объекты могут ссылаться на этот объект, через Входы/Выходы(en) или другие ключ-параметры(en) (например parentname(en) или target).
Оно отображается на 2D-видах в Hammer и Отчёте об объектах (Entity Report)(en).
См. также: Основные ключ-параметры, входы и выходы(en) доступные для всех объектов
EntityGroup[0] (Group00) to EntityGroup[15] (Group15) <целевой объект(en)>
Имена целевых объектов для доступа к ним в коде Squirrel. Все указанные имена объектов будут найдены при создании этого объекта, а их указатели(en) будут добавлены к сценарию logic_script:
  • EntityGroup: массив, в котором EntityGroup[0] - это указатель объекта с именем, указанным в ключ-параметре EntityGroup[0] и т.д. Если существует несколько объектов с таким именем, то указатель будет использовать первый найденный объект. Размер массива определется наибольшим номером непустого EntityGroup плюс единица, поэтому убедитесь, что в коде Squirrel не используется явное задание номера, если размер массива неизвестен. Если ключ-параметр EntityGroup[i] будет пустым внутри массива (когда i < EntityGroup.len()), то EntityGroup[i] будет равен null.
  • MyEntityGroup (нет в Counter-Strike: Global Offensive): таблица, содержащая указатели, ключами которых являются их значения, например, если ключ-параметр EntityGroup[2] задан как sound.start, то MyEntityGroup["sound.start"] == EntityGroup[2].
  • MyEntityGroupArray (нет в Counter-Strike: Global Offensive): массив, аналогичный EntityGroup.
Системный сценарий VScript, исполняемый для обеспечения этого функционала:

Следующий сценарий VScript исполняется для logic_script, когда он появляется. __AppendToScriptGroup вызывается для каждого значения, указанного в ключ-параметрахGroup00-Group15.

EntityGroup <- [];
MyEntityGroup <- {};
MyEntityGroupArray <- EntityGroup;
function __AppendToScriptGroup( name ) 
{
	if ( name.len() == 0 ) 
	{ 
		EntityGroup.append( null ); 
	} 
	else
	{ 
		local ent = Entities.FindByName( null, name );
		EntityGroup.append( ent );
		if ( ent != null )
		{
			ent.ValidateScriptScope();
			MyEntityGroup[name] <- ent;
			ent.GetScriptScope().EntityGroup <- EntityGroup;
		}
	}
}
Note.pngПримечание:Остальные ключ-параметры, относящиеся к этому объекту, такие как vscripts, thinkfunction и входы RunScriptCode, CallScriptFunction смотрите Основные ключ-параметры, входы и выходы(en)

Смотреть также

Внешние ссылки