Приветствую Вас Гость | RSSГлавная | Создание стандартной двери в СС - Форум | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Статьи » Создание модов » Создание стандартной двери в СС (О дверях что не вращаются.)
Создание стандартной двери в СС
AlexandrДата: Среда, 21.04.2010, 16:44 | Сообщение # 1
Краб
Группа: Проверенные
Сообщений: 7
Награды: 3  +
Репутация:  ±
Замечания:  ±
Статус: Offline
Здравствуйте! Первый раз, так что не бейте))) smile

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

Шаг 1: Описание программных блоков в ".ini", поможет ориентироваться в просторах файла и даст первые намёки на логику взаимодействия программных блоков.

Шаг 2: Здесь я разбиваю на подшаги "а", "б", "в" и т.п, и дам самое основное, что бы дверь вообще работала хотя бы.

Шаг 3: Добавление эффектов "Gib" (Гибы) - картинки появляющиеся после уничтожения двери или мотора, эффект разрушения.

...

ШАГ 1: Описание прораммных блоков в ".ini":

(Буду лишь по одному экземпляру показывать... всё идёт в правильной последовательности, можно в один ".ini" файл всё бросать)Для сравнения можете посмотреть файл "Cortex Command build 23\Base.rte\Actors\Doors\Doors.ini", или прикреплённый файл "All.rte".

{Внимание!!! Игра по каким-то причинам иногда не хочет принимать ".ini" файлы с русским описаниям, особенно в некоторых местах, например: "PresetName = ALL DoorA // Имя присваемое данному программному блоку, с дверью.", игра выдаст ошибку в этой строчке, так же замечено похожее переодическое поведение с координатмаи. Возможно виной всему раскладка клавиатуры в момент пичатанья "//". По этому советю взять готовый ".ini" файл и менять его без добавления описаний.}

1) Первый программный блок. Определяет значение гиба.(Для манипуляций им в будущем!)

Quote

AddEffect = MOSRotating
PresetName = Door Motor Gib A // Здесь присваиваем имя данному программному блоку или гибу если хотите (для будущего использования)
Mass = 52.75// Масса создаваемого объекта - гиба.

HitsMOs = 1
GetsHitByMOs = 0
SpriteFile = ContentFile
FilePath = ALL.rte/Objects/ALL/Doors/Elements/MotorGibA.bmp // Путь к ".bmp" картинке гиба.
FrameCount = 1
SpriteOffset = Vector
X = -8 // Дополнено - уточнено Mad_Alex: Координаты определяющие центр рисунка, который будет еще и центром тяжести объекта.
Y = -7
AngularVel = 6
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Mangled Metal
Resolution = 4
Depth = 0
DeepCheck = 0

2) Второй программный блок. Определяет значение двери (движущейся его части).

Quote

AddEffect = Attachable
PresetName = ALL DoorA // Имя присваемое данному программному блоку, с дверью.
PinStrength = 10000
Mass = 200 // Масса двери.

HitsMOs = 1
GetsHitByMOs = 1
SpriteFile = ContentFile
FilePath = ALL.rte/Objects/ALL/Doors/Elements/SlideShortA.bmp // Путь к ".bmp" картинке двери.
FrameCount = 1
SpriteOffset = Vector
X = 0 // Дополнено - уточнено Mad_Alex: Координаты определяющие центр рисунка, который будет еще и центром тяжести объекта.
Y = 0
EntryWound = AEmitter
CopyOf = Dent Metal Light
ExitWound = AEmitter
CopyOf = Dent Metal Light
AngularVel = 0
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Door Metal
Resolution = 4
Depth = 0
DeepGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Door Metal
Resolution = 6
Depth = 4
DeepCheck = 1
JointStrength = 300
JointStiffness = 0.5
BreakWound = AEmitter
CopyOf = Wound Bone Break
JointOffset = Vector
X = 0
Y = 0
DrawAfterParent = 1
GibImpulseLimit = 7500 // Это значение определяет какая сила воздействия начинает наносить вред двери..
GibWoundLimit = 75 // Это количество жизней, двери.
// GibSound = Sound
// CopyOf = Bone Crack
AddGib = Gib // Этот программный блок прикрепляет гибы к двери.
GibParticle = MOSRotating
CopyOf = Door Base Gib // Название присвоенное гибу в программном блоке 1.
Offset = Vector
X = 0
Y = 7
MinVelocity = 15

3) Третий программный блок. Определяет значения мотора.

Quote

AddEffect = ADoor
PresetName = ALL MotorA // Имя присваемое данному программному блоку, с мотором.
Mass = 117.72 // Масса мотора.

HitsMOs = 0
GetsHitByMOs = 1
SpriteFile = ContentFile
FilePath = ALL.rte/Objects/ALL/Doors/Elements/MotorA.bmp //Путь к ".bmp" картинке мотора.
FrameCount = 4
SpriteOffset = Vector
X = 0 // Дополнено - уточнено Mad_Alex: Координаты определяющие центр рисунка, который будет еще и центром тяжести объекта.
Y = 0
AngularVel = 6
AtomGroup = AtomGroup
AutoGenerate = 1
Material = Material
CopyOf = Military Stuff
Resolution = 4
Depth = 0
DeepCheck = 0
GibImpulseLimit = 5000 // Это значение определяет какая сила воздействия начинает наносить вред мотору.
GibWoundLimit = 30 // Это количество жизней мотора.
// Сюда также можно прикрепить гибы (смотреть конец второго программного блока)

4) Четвёртый программный блок. Он соединяет мотор и дверь (привязывает дверь к мотору).

Quote

AddActor = ADoor
CopyOf = ALL MotorA // Название присвоенное программному блоку отвечающему за мотор.
PresetName = ALL SistemA // Название присваемое программному блоку в котором совместили дверь и мтор.
PinStrength = 10000
SpriteAnimMode = 5
SpriteAnimDuration = 150 // Скорость анимации мотора.
EntryWound = AEmitter
CopyOf = Leaking Machinery
ExitWound = AEmitter
CopyOf = Leaking Machinery
Status = 0
Health = 100
Team = 0
CharHeight = 40
Door = Attachable
CopyOf = ALL DoorA //Название присвоенное программному блоку отвечающему за дверь.
OpenOffset = Vector
X = -29 // Координаты двери в открытом состоянии, относительно места установки мотора, а не его рисунка. (В пикселях)
Y = 0
ClosedOffset = Vector
X = -29 // Координаты двери в закрытом состоянии, относительно места установки мотора, а не его рисунка. (В пикселях)
Y = 24
OpenClosedAngle = Matrix
AngleDegrees = 0 //Поворот ".bmp" картинки двери. (В градусах)
DoorMoveTime = 750 //Время закрытия-открытия двери(ей).
// DoorOpenSound
ClosedByDefault = 1
ResetDefaultDelay = 2000 // Через сколько после установки в игру закроются двери, как это бывает обычно у всех.
SensorInterval = 100
AddSensor = Sensor
StartOffset = Vector
X = 0 // Координаты пройдя в которых дверь откроется, относительно места установки мотора, а не его рисунка. (В пикселях)
Y = 28 //Удивительно, но со знаками (+ и -) какая-то белиберда, это вы уж сами тестируйте, но похоже здесь надо ставить знак наоборот. Что то вроде, того что не от мотора считается, а от точки считается где мотор находится, но мотор всё равно остаётся на месте и точка оказывается там где нам надо.
SensorRay = Vector
X = -55 // Точка координат до которой тянется линия от предыдущей точки координат (смотреть выше) войдя в которую откроются двери. (В пикселях, относительно предыдужей точки координат)
Y = 0
SkipPixels = 6 // Дополнено - уточнено Mad_Alex: Чем меньше значение параметра SkipPixels тем плотнее луч соединяющий координаты "StartOffset = Vector" и "SensorRay = Vector", детальнее проверка наличия актора в луче и больше он кушает быстродействие

5) Пятый программный блок. Добавляет в СС объект и определяет местонахождение моторов.

Quote

AddTerrainObject = TerrainObject // Добавляем объект.
PresetName = DoorT2 // Название объекта которое будет отображаться в игре.
AddToGroup = ALL (Doors) // Группа в которой будет находиться объект в игре.
GoldCost = 150 // Цена объекта.
FGColorFile = ContentFile // Ниже пути по которым игра найдёт нужные рисунки для создания объекта.
Path = ALL.rte/Objects/ALL/Doors/DoorT2FG.bmp
MaterialFile = ContentFile
Path = ALL.rte/Objects/ALL/Doors/DoorT2Mat.bmp
BGColorFile = ContentFile
Path = ALL.rte/Objects/ALL/Doors/DoorT2BG.bmp
AddChildObject = SOPlacer
PlacedObject = ADoor // Строка отвечающая з создание дверей в объекте.
CopyOf = ALL SistemA // Имя присвоенное программному блоку в котором совместили дверь и мтор.
Offset = Vector
X = 21 // Координаты мотора, относительно центра рисунка. (В пикселях)
Y = -41
AddChildObject = SOPlacer // Это блок второго мотора.
PlacedObject = ADoor
CopyOf = ALL SistemA // Имя присвоенное программному блоку в котором совместили дверь и мтор.
Offset = Vector
X = 21 // Координаты мотора, относительно центра рисунка. (В пикселях)
Y = 41
HFlipped = 1 // Зеркализация, делает его (мотор) наоборот, как отражение тому, что должно было быть без этой команды.
Rotation = Matrix
AngleDegrees = 180 // Поворот рисунка двери. (В градусах)

...

Шаг 2:

А) Создаём дверь, мотор и объект в котором всё это будет находиться.

Б) Создаём ".ini" файл и добавляем туда блок номер 2, но лучше из СС , а не отсюда!
В строке "PresetName = ***" вместо звёздочек пишем имя которым вы хотите назвать этот программный блок.
В строке"FilePath = ###" вместо решёток пишем путь к файлу (".bmp" картинке) вашей двери.[/color]

В) Создаём прораммный блок номер 3 и проделываем те же манипуляции!

Г) Создаём прораммный блок номер 4.
В строке"CopyOf = ###" Вместо решёток пишем как мы назвали программный блок номер 3 (мотор).
В строке"PresetName =***" вместо звёздочек пишем как мы назвали программный блок 2 (дверь).

Д) Создаём программный блок номер 5.
В строке "PresetName = $$$" Вместо долларов пишем как мы назовём наш модуль в СС (в игре).
В строке"AddToGroup = %%%" Вместо процентов пишем в какой группе будет название нашего модуля.
В трёх строках с названиями "Path = ^^^" Вместо вершинок пишем пути к трём разным bmp картинкам модуля на которому будут размещены мотр с дверью.
В строке "CopyOf = @@@" Вместо Собак пишем как мы назвали программный блок номер 4 (слияние двери с мотором).
И указываем координаты размещения моторов относительно центра рисунка модуля. В
"X" и "Y".

Е) После всех манипуляций и установки мотора в нужном месте возвращаемся к прораммному блоку 4 и химичим.

Quote

AddSensor = Sensor
StartOffset = Vector
X = 0 // Координаты пройдя в которых дверь откроется, относительно места установки мотора, а не его рисунка. (В пикселях)
Y = 28 //Удивительно, но со знаками (+ и -) какая-то белиберда, это вы уж сами тестируйте, но похоже здесь надо ставить знак наоборот. Что то вроде, того что не от мотора считается, а от точки считается где мотор находится, но мотор всё равно остаётся на месте и точка оказывается там где нам надо.
SensorRay = Vector
X = -55 // Точка координат до которой тянется линия от предыдущей точки координат (смотреть выше) войдя в которую откроются двери. (В пикселях, относительно предыдужей точки координат)
Y = 0
SkipPixels = 6

Остальные манипуляции проводите пользуясь материалами Шаг 1 для обеспечения правильного места отображения элементов.

...

Шаг 3:

Если вы разобрались с расположением мотора и дверьми , и всё рабтает, можно приступать к освоению гибов.
Заходим в наш злополучный ".ini", хотя для кого как))) И добавляем первый программный блок (ставим перед вторым и желательно оставить пустую строку между блоками. Для сравения всё так же смотрите файл "Cortex Command build 23\Base.rte\Actors\Doors\Doors.ini", ну или прикреплённый файл "All.rte")
В строке "PresetName = ***" вместо звёздочек пишем имя которым вы хотите назвать этот программный блок.
В строке "FilePath = ###" вместо решёток пишем путь к файлу (".bmp" картинке) вашему гибу.

В зависимости от того для чего этот гиб (для мотора или двери) мы в 2 (дверь) или 3 (мотор) программном блоке вставляем некое дополнение

Quote

AddGib = Gib
GibParticle = MOSRotating
CopyOf = *** // Вместо звёздочек пишем название присвоенное гибу в программном блоке 1 (Гибы).
Offset = Vector
X = 0 // Координаты по которым размещается гиб относительно центра рисунка двери (Или мотора если вы вставили это в программный блок 3)
Y = 7
MinVelocity = 15

Если всё сделано правильно , вы увидите как отваливаются куски от вашей двери когда она исчерпала свой лимит жизни))) Удачи в модостроении!!! smile

Всё равно мне до мода полноценного далеко, так что выкладываю две двери после создания которых я и написал эту статью, как пример на котором можно поэкспериментировать:

Прикрепления: ALL.rte.rar (229.2 Kb) · TxtVersiya.txt (11.2 Kb)


AlexandrBuryakov

Сообщение отредактировал Alexandr - Суббота, 24.04.2010, 11:15
 
Mad_AlexДата: Среда, 21.04.2010, 17:14 | Сообщение # 2
Печальный Скнюссик
Группа: Главный Администратор
Сообщений: 1914
Награды: 38  +
Репутация:  ±
Замечания:  ±
Статус: Offline
Quote (Alexandr)
Хотя возможно эти координаты определяют ту точку на рисунке которая будет считаться центром рисунка в будущем

не возможно, а так и есть.

Вообще статья годная, но не самая лучшая честно говоря. Я где-то видел тутор поподробнее когда-то давно.

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


Если вы читаете этот текст, значит вы посетили кладбище моей юности.
Прощай, cortexcommandru.3dn.ru, ты для меня много значил когда-то.
 
AlexandrДата: Среда, 21.04.2010, 17:38 | Сообщение # 3
Краб
Группа: Проверенные
Сообщений: 7
Награды: 3  +
Репутация:  ±
Замечания:  ±
Статус: Offline
Добавлено (21.04.2010, 17:28)
---------------------------------------------
Mad_Alex Честно говоря я только на вашем сайте нашёл хоть какие-то туториалы... больше нигде... наверно плохо ищу, но всё же, а про двери, пришлось самому изучать, методом тыка и сравнения)))

Добавлено (21.04.2010, 17:38)
---------------------------------------------
Mad_Alex, у меня вопрос, тогда получается, что в первом программном блоке там где я написал "// Координаты ... относительно чего не знаю... не проверял пока." тоже определяется та точка которая потом будет считаться как бы центром рисунка по умолчанию, то есть от неё считаться будет на сколько сдвигать гиб, так???


AlexandrBuryakov

Сообщение отредактировал Alexandr - Среда, 21.04.2010, 18:23
 
Mad_AlexДата: Среда, 21.04.2010, 17:46 | Сообщение # 4
Печальный Скнюссик
Группа: Главный Администратор
Сообщений: 1914
Награды: 38  +
Репутация:  ±
Замечания:  ±
Статус: Offline
Quote (Alexandr)
Mad_Alex, у меня вопрос, тогда получается, что в первом программном блоке там где я написал "// Координаты ... относительно чего не знаю... не проверял пока." тоже определяется та точка которая потом будет считаться как бы центром рисунка по умолчанию, то есть от неё считаться будет на сколько сдвигать гиб, так???

Ну вообще это центр рисунка, который будет еще и центром тяжести объекта, так что это важно. А сдвиг гиба вот:

Quote
GibParticle = MOSRotating
CopyOf = Door Base Gib // Название присвоенноегибу в программном блоке (смотреть выше).
Offset = Vector
X = 0
Y = 7

ясно?

Quote (Alexandr)
Честно говоря я только на вашем сайте нашёл хоть какие-то туториалы... больше нигде...

Вообще это единственный русский сайт по СС. Вообще СС это не особо популярная и известная игра, несмотря на то, что она затягивает с первого раза...


Если вы читаете этот текст, значит вы посетили кладбище моей юности.
Прощай, cortexcommandru.3dn.ru, ты для меня много значил когда-то.
 
AlexandrДата: Среда, 21.04.2010, 18:10 | Сообщение # 5
Краб
Группа: Проверенные
Сообщений: 7
Награды: 3  +
Репутация:  ±
Замечания:  ±
Статус: Offline
Да))) Интересно)

Да уж... новичёк делает статью о которой администраторы и думаю ещё много людей (а может и немного) занют больше чем я сам))) ))) )))


AlexandrBuryakov

Сообщение отредактировал Alexandr - Среда, 21.04.2010, 18:24
 
AlexandrДата: Среда, 21.04.2010, 18:46 | Сообщение # 6
Краб
Группа: Проверенные
Сообщений: 7
Награды: 3  +
Репутация:  ±
Замечания:  ±
Статус: Offline
happy Ух, вроде всё.... надо будет чуть позже всё перепроверить... dry

AlexandrBuryakov
 
Dиmasиk2009Дата: Среда, 21.04.2010, 23:42 | Сообщение # 7
Чёрный Геймер
Группа: Проверенные
Сообщений: 582
Награды: 6  +
Репутация:  ±
Замечания:  ±
Статус: Offline
Alexandr, статья, наверное (я не проверял), хорошая, но зачем столько цветов?
 
AlexandrДата: Четверг, 22.04.2010, 14:12 | Сообщение # 8
Краб
Группа: Проверенные
Сообщений: 7
Награды: 3  +
Репутация:  ±
Замечания:  ±
Статус: Offline
Ммм... Если много, сделаем меньше))) Просто что бы акцентировать на отдельные элементы внимание... но я так понимаю тяжело из-за них читать, так?
...
Исправил на более мегкий для глаза цветовой диапазон (как мне кажется), уменьшил количество цветов в тексте.


AlexandrBuryakov

Сообщение отредактировал Alexandr - Четверг, 22.04.2010, 14:39
 
Dиmasиk2009Дата: Четверг, 22.04.2010, 15:24 | Сообщение # 9
Чёрный Геймер
Группа: Проверенные
Сообщений: 582
Награды: 6  +
Репутация:  ±
Замечания:  ±
Статус: Offline
Alexandr, так а не проще ли оставить всё белым? blink
Не подумай, что я придираюсь, я даже не настаиваю, чтобы ты ещё что-то менял, просто я не понимаю зачем лишняя цветастость... smile
 
RICARDOДата: Четверг, 22.04.2010, 15:32 | Сообщение # 10
Lt.Ricardo
Группа: Проверенные
Сообщений: 555
Награды: 31  +
Репутация:  ±
Замечания:  ±
Статус: Offline
В полях "кода" поменяй цвет, а то зеленый аш сливается. Читать сложно.


Lt.Ricardo's Blog
 
AlexandrДата: Пятница, 23.04.2010, 18:10 | Сообщение # 11
Краб
Группа: Проверенные
Сообщений: 7
Награды: 3  +
Репутация:  ±
Замечания:  ±
Статус: Offline
Ладно, я так думаю не стоит так сильно заморачиваться, ...на вкус и цвет товарища нет..., статья первая, по этому так заморачиваюсь, пытаюсь понять как лучше. Сдел проще.

Добавлено (23.04.2010, 18:10)
---------------------------------------------
За что отвечает "SkipPixels = 6" (Конец 4 блока)? Переводится как пропустить пикселы, но на что влияет так и не понял...


AlexandrBuryakov
 
Mad_AlexДата: Пятница, 23.04.2010, 18:33 | Сообщение # 12
Печальный Скнюссик
Группа: Главный Администратор
Сообщений: 1914
Награды: 38  +
Репутация:  ±
Замечания:  ±
Статус: Offline
это для сенсора, сенсор - невидимый диагональный луч, при пересечении которого актором дверь открывается, чем меньше значение параметра SkipPixels тем плотнее этот луч, детальнее проверка наличия актора в луче и больше он кушает быстродействие

Если вы читаете этот текст, значит вы посетили кладбище моей юности.
Прощай, cortexcommandru.3dn.ru, ты для меня много значил когда-то.
 
Форум » Статьи » Создание модов » Создание стандартной двери в СС (О дверях что не вращаются.)
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Последние темы Читаемые темы Последние зарегистрированные пользователи
Флудильня! [yksys147keti3626]

АнтиБК/Бойцовский клуб/Сombats [greendayone82]

The Sims 3 [greendayone82]

ЯДЕРНЫЙ ТРОН!!! [greendayone82]

Очень интересная игра [greendayone82]

Проблема с Loadouts [mekkievbk]

Русификатор Cortex Command Build 32 [puksus]

CC теперь в Open Source и B33 с мультиплеером !!! [gjrfytn]

игра обломи предыдущего [puksus]

Smarter AI Mod v1 [TerrariMan]

[1]>Флудильня! [4729]

[2]>Свалка арта. [843]

[3]>игра обломи предыдущего [360]

[4]>Фан-арт по Cortex Command [349]

[5]>Песенки или музыка. [268]

[6]>Russian Combat Small Arms {B24-B27} [246]

[7]>[UNITED TERRAN FORCES] [240]

[8]>Elzirs [229]

[9]>Выход 24 билда. [214]

[10]>Cortex Command - Online Deathmatch [208]

ghost4559 [28.03.2024|12:29]

rostislavpoarkov55 [21.03.2024|10:44]

dawidponomaryow [08.03.2024|21:16]

nekoplay18 [31.01.2024|20:10]

Provv [19.10.2023|20:58]

ranatolevnko200 [01.10.2023|17:56]

Silencer18 [24.07.2023|21:52]

yksys147keti3626 [30.01.2023|23:11]

islambabaev1100 [22.12.2022|01:14]

Ded_Babay [03.12.2022|07:55]


Вверх
Русский Фан Сайт Cortex Command © 2024.