Ru/Generalities On Entities: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (added translate tag)
No edit summary
Line 1: Line 1:
{{DISPLAYTITLE:Общее об энтити}}{{otherlang2
{{DISPLAYTITLE:Кратко о сущностях}}{{otherlang2
| en = Generalities_On_Entities}}
| en = Generalities_On_Entities}}


Line 7: Line 7:
{{note:ru|В данной статье предполагается, что читатель имеет хотя бы базовый опыт работы в C++}}
{{note:ru|В данной статье предполагается, что читатель имеет хотя бы базовый опыт работы в C++}}


Эта статья в основном о энтити в Source engine и будет пытаться объяснить все про энтити.
Эта статья кратро описывает сущности в Source engine и пытается объяснить все про сущности.


Каждый объект, даже мир, является энтити в Source Engine. Все энтити, являются производными от CBaseEntity.
Каждый объект, даже мир, является сущностью в Source Engine. Все сущности являются производными от CBaseEntity.


== Naming conventions ==
== Соглашения имён ==


В Source SDK, класс server начинается с большой буквы С (<code>C</code>), в то время как класс client начинается с большой буквы С с последующим подчеркиванием (<code>C_</code>) - это помогает различать две базы кода.
В Source SDK, класс server начинается с большой буквы С (<code>C</code>), в то время как класс client начинается с большой буквы С с последующим подчеркиванием (<code>C_</code>) - это помогает различать две базы кода.
Line 20: Line 20:
  Client: C_MyEntity
  Client: C_MyEntity


The style of naming convention followed through the SDK code base is known as [[Wikipedia:Hungarian notation|Hungarian notation]]. Beginners are recommended to maintain the same style as used throughout the code base to save confusion.
Стиль (соглашение) имён, которому следует основной код SDK, известен как [[Wikipedia:Hungarian notation|Венгерская нотация]]. Начинающим рекомендуется придерживаться того же стиля, что и в основном коде, для устранения недоразумений.


== Базовые классы ==
== Базовые классы ==
Каждая энтити основана на базовом классе <code>CBaseEntity</code>, однако есть много производных классов. Ниже приведен список наиболее распространенных производных классов.
Каждая сущность основана на базовом классе <code>CBaseEntity</code>, однако есть много производных классов. Ниже приведен список наиболее распространенных производных классов.


=== CBaseAnimating ===
=== CBaseAnimating ===
Каждая энтити имеющая модель должна использовать класс <code>CBaseAnimating</code>. Классы, производные от <code>CBaseAnimating</code> могут использовать модели и анимацию.
Каждая сущность, имеющая модель, должна использовать класс <code>CBaseAnimating</code>. Классы, производные от <code>CBaseAnimating</code> могут использовать модели и анимацию.
{{note:ru|Entities without models are not networked by default. A workaround is <code>AddEFlags( EFL_FORCE_CHECK_TRANSMIT );</code>}}
{{note:ru|Сущности без моделей по умолчанию не networked. Обойти это ограничение можно, используя функцию <code>AddEFlags( EFL_FORCE_CHECK_TRANSMIT );</code>}}
{{note:ru|To use animated models be sure to initialize the playback rate using SetPlaybackRate(1.0f); and call StudioFrameAdvance(); in the think function.}}
{{note:ru|Для использования движущихся моделей необходимо инициализировать частоту кадров проигрывателя, используя функцию SetPlaybackRate(1.0f);, и вызвать StudioFrameAdvance(); в функции think.}}


=== CBaseTrigger ===
=== CBaseTrigger ===
[[trigger|Triggers]] are brush based entities that are generally placed during the map creation process.
[[trigger|Триггеры]] - это сущности-кисти, которые, в основном, размещаются в процессе создания карты.


=== CBasePlayer ===
=== CBasePlayer ===
This entity is the player itself. Every player-entity in the game is CBasePlayer or is derived from this entity.
Эта сущность описывает игрока. Каждая сущность-игрок является экземпляром класса CBasePlayer или его класса-потомка.


=== CGameRules ===
=== CGameRules ===
This entity regulates the rules of the current game. It's mainly the gameplay.
Эта сущность описывает правила игры. В основном используется для описания логики игры.


=== CBaseCombatCharacter ===
=== CBaseCombatCharacter ===
Все энтити NPC и player являются производными от этого класса.
Все сущности-NPC и игроки являются производными от этого класса.
 
== Функции Think ==
== Think functions ==
{{main|Think()}}
{{main|Think()}}
Think functions are a group of functions comprising the main way to have an entity act without input.  
Think functions are a group of functions comprising the main way to have an entity act without input.  
An entity's Think() is run once after it spawns, and can be told when to call itself again using SetNextThink(). Using SetThink() can change between several Think() functions, and GetLastThink() returns the time of the last think function. See [[Think()]] for detailed description.
An entity's Think() is run once after it spawns, and can be told when to call itself again using SetNextThink(). Using SetThink() can change between several Think() functions, and GetLastThink() returns the time of the last think function. See [[Think()]] for detailed description.


== Macros ==
== Макросы ==
Badly set up macros will give error messages, crash the game and cause erratic behavior. The following is a list of the more common macro definitions and some of the issues that surround them.
Badly set up macros will give error messages, crash the game and cause erratic behavior. Далее следует список определений наиболее часто используемых макросов и некоторые проблемы, возникающие в процессе их использования.


=== [[LINK_ENTITY_TO_CLASS]]() ===
=== [[LINK_ENTITY_TO_CLASS]]() ===
Line 66: Line 65:
* Providing external variable inputs (such as setting a model or the health of an item)
* Providing external variable inputs (such as setting a model or the health of an item)


Further information is available on the [[Data Descriptions]] page.
Подробная информация доступна на странице [[Data Descriptions]].


=== Networking entities ===
=== Networking сущности ===


See the [[:Category:Programming#Networking|Networking]] section for more information on networking entities, as that is outside the scope of this article.
См. раздел [[:Category:Programming#Networking|Networking]] для получения подробной информации о networking сущностях, так как их описание выходит за рамки данной статьи.


[[Category:Programming:ru]]
[[Category:Programming:ru]]

Revision as of 06:46, 5 August 2011

Template:Otherlang2

Template:ToTranslate

Введение

Template:Note:ru

Эта статья кратро описывает сущности в Source engine и пытается объяснить все про сущности.

Каждый объект, даже мир, является сущностью в Source Engine. Все сущности являются производными от CBaseEntity.

Соглашения имён

В Source SDK, класс server начинается с большой буквы С (C), в то время как класс client начинается с большой буквы С с последующим подчеркиванием (C_) - это помогает различать две базы кода.

Пример:

Server: CMyEntity
Client: C_MyEntity

Стиль (соглашение) имён, которому следует основной код SDK, известен как Венгерская нотация. Начинающим рекомендуется придерживаться того же стиля, что и в основном коде, для устранения недоразумений.

Базовые классы

Каждая сущность основана на базовом классе CBaseEntity, однако есть много производных классов. Ниже приведен список наиболее распространенных производных классов.

CBaseAnimating

Каждая сущность, имеющая модель, должна использовать класс CBaseAnimating. Классы, производные от CBaseAnimating могут использовать модели и анимацию. Template:Note:ru Template:Note:ru

CBaseTrigger

Триггеры - это сущности-кисти, которые, в основном, размещаются в процессе создания карты.

CBasePlayer

Эта сущность описывает игрока. Каждая сущность-игрок является экземпляром класса CBasePlayer или его класса-потомка.

CGameRules

Эта сущность описывает правила игры. В основном используется для описания логики игры.

CBaseCombatCharacter

Все сущности-NPC и игроки являются производными от этого класса.

Функции Think

Основная статья:  Think()

Think functions are a group of functions comprising the main way to have an entity act without input. An entity's Think() is run once after it spawns, and can be told when to call itself again using SetNextThink(). Using SetThink() can change between several Think() functions, and GetLastThink() returns the time of the last think function. See Think() for detailed description.

Макросы

Badly set up macros will give error messages, crash the game and cause erratic behavior. Далее следует список определений наиболее часто используемых макросов и некоторые проблемы, возникающие в процессе их использования.

LINK_ENTITY_TO_CLASS()

This is one of the main macros. An entity cannot be created without this macro being used to define the entity's classname (as returned from GetClassname() on the server). However, on the client, an entity will not return its classname unless there is a matching data description (DATADESC).

PRECACHE_REGISTER()

This is used to tell the engine that it needs to precache the entity when it loads. This is provided with the name of the entity (the same name as passed to LINK_ENTITY_TO_CLASS() ).

DECLARE_CLASS()

This should be placed in the public section of an entities Class definition. This provides access to the BaseClass Macro.

DECLARE_DATADESC(), BEGIN_DATADESC(), END_DATADESC(), and DEFINE_XXX()

The Data Description macros provide for a number of different features;

  • Specifying Think and Touch functions
  • Providing Inputs and Outputs for mappers
  • Providing external variable inputs (such as setting a model or the health of an item)

Подробная информация доступна на странице Data Descriptions.

Networking сущности

См. раздел Networking для получения подробной информации о networking сущностях, так как их описание выходит за рамки данной статьи.