Описание класса game object. Часть I. — S.T.A.L.K.E.R. Inside Wiki

Описание класса game object. Часть I.

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск

Game_object - класс для доступа к онлайновым (клиентским) объектам. Причём один класс является интерфейсом для совершенно разных объектов. Разработчики не придумали ничего лучше, как взять и объединить в одном классе все интерфейсы всех клиентских объектов: актора, сталкеров, монстров, физических объектов, автомобилей и лампочек, вообще всех. Более странного и вообще говоря уродливого объектно-ориентированного дизайна я ещё не видел. Во-первых, класс вышел совершенно необозримым - три сотни методов! Во-вторых, вызов не подходящего метода для произвольно взятого объекта приводит к совершенно непредсказуемым результатам. В лучшем случае не будет ничего, а чаще всего - будет вылет, причём обычно без лога. Наконец, описание этого класса в lua_help совершенно невнятное (как впрочем и всех остальных классов): типы возвращаемых значений опущены, типы входных аргументов указаны не всегда, а о назначении большинства методов можно только гадать. Предлагаю несколько более внятное описание. Методы рассортированы по клиентским классам, к объектам которых можно применить метод. Также напоминаю, что классы при наследовании также наследуют и все методы родительского класса.

Навигация

Описание класса game object. Часть I.
Описание класса game object. Часть II.
Описание класса game object. Часть III.
Описание класса game object. Часть IV.
Описание класса game object. Часть V.

ANY CLASS

Эти методы подходят к объектам любого класса


CObject

Поскольку все игровые объекты наследуют от класса CObject, следующие методы можно применять к любым объектам.

Добавлено в ЗП:

CUsableScriptObject

Поскольку все игровые объекты наследуют от класса CUsableScriptObject, следующие методы можно применять к любым объектам.

CPhysicsShellHolder

Эти методы можно применять для всех объектов, кроме аномалий, переходов, ящиков с инвентарем и прожекторов - всего того, у чего нет физической оболочки.

CEntity

Эти методы можно применять для всех живых объектов (сталкеры, монстры, актор), вертолетов и машин.

CEntityAlive

Эти методы можно применять только для живых объектов - сталкеры, монстры (кроме ворон), актор. Свойства объектов класса:

float satiety;    // сытость  -- есть, но почему-то не прописан в lua_help
float bleeding;   // кровотечение. только ЗП
float health;     // здоровье 0..1 
float morale;     // мораль 
float power;      // сила 
float psy_health; // пси-здоровье
float radiation;  // радиация 

все свойства на запись работают не так, как на чтение. При записи значение имеет смысл изменения соответствующего свойства. Т.е. если записать 0.1 в health, то это увеличит его на 0.1.


Написано K.D. 15:52, 18 декабря 2011 (UTC) по материалам malandrinus, материалам форума АМК и собственным изысканиям.

Другие места
LANGUAGE