Перейти к контенту

Рекомендуемые сообщения

Graff46   

3c485afbfbddb8f282ff4ffb2ccf0759.jpg

Думаю тема будет востребована.

 

В данной теме будут описываться аспекты работы с транспортом во всех аддонах "Сталкера".

____________________________________________________________________________________________________

Возвращение боеспособности БТР. Автор - @lychagin0 Источник

Скрытый текст

Для возвращения БТР способности атаковать противника и выполнить другие задачи в игре потребуются распакованные Тени Чернобыля.ИЗ gamedata ТЧ из папки scripts копируем файлы :
ph_car.script и se_car.script в одноимённую папку ЗП.Теперь необходимо зарегистрировать файлы ph_car.script и ph_minigun.script (этот файл есть в ЗП,его копировать не нужно) в modules.script, добавив после :
Код
 


load_scheme("ph_oscillate","ph_oscillate",stype_item)


Вот эти строки:
Код
 


load_scheme("ph_car","ph_car",stype_item)
                     load_scheme("ph_minigun","ph_minigun",stype_item)

Теперь в файле class_registrator.script после:
GENERAL

Эту строку:
 


cs_register    (object_factory, "CCar",        "se_car.se_car",               "SCRPTCAR",         "car_s")

Всё на этом со скриптами закончили.Дальнейшие действия описаны для родной модели ЗП : попути:
gamedata\meshes\physics\vehicles\btrположить скопированную из ТЧ папку part. Если этого не сделать при уничтожении вылет.
Теперь необходимо правильно заспавнить будем спавнить через алспавн(можно через скрипт,но это для отдельного урока) секция для спавна:
Код


[1251]
; cse_abstract properties
section_name = m_car
name = esc_attack_btr
position = -145.99313354492,-14.00541137695,-182.73930358887
direction = 0,3.3020263,0
version = 128
script_version = 12

; cse_alife_object properties
game_vertex_id = 2072
distance = 0
level_vertex_id = 106971
object_flags = 0xffffffba

custom_data = <<END
[story_object]
story_id = esc_attack_btr

[logic]
active = ph_car

[ph_car]
path_walk = esc_btr_way
target = actor
fire_range = 80
fire_repeat = 50
auto_fire = true
track_target = true
on_death_info = esc_btr_dead

[spawner]
cond = {+my_stalker_dead}
END

; cse_visual properties
visual_name = physics\vehicles\veh_btr80\veh_btr_script_u_01.ogf

; cse_ph_skeleton properties

;cse_alife_car properties
health = 1


Здесь координаты Кордон SGM-2.2.И обратите внимание если Вы используете родную модель то путь к визуалу нужно указать так:dynamics\vehicles\btr\veh_btr_script_u_01.ogf
Вот описание возможной логики с Вики:
Настройка управления наземным транспортом.


[ph_car]
usable = {+info -info =func !func ~number} - условия для юзабелености объекта. show_tips = true/false - отображать ли подсказку. По умолчанию - true.
tip_use = <имя_текса> - строка с id текста зарегистрированного в папке gamedata\config\text. Подсказка, в случае, если условия для usable выполнились.
По умолчанию - tip_car_use.
tip_locked = <имя_текса> - строка с id текста зарегистрированного в папке gamedata\config\text. Подсказка, в случае, если условия для usable не выполнились. По умолчанию - tip_car_locked.
В случае, если параметр usable не установлен, то возможна настройка самостоятельного поведения транспорта, а именно БТР.
path_walk = <имя_пути> - путь движения транспорта.
path_fire = <имя_пути> - вероятно, точки пути по которым возможна стрельба.
auto_fire = true/false - разрешить стрелять на ходу. По умолчанию - false.
fire_time = <number> - время непрерывной стрельбы в миллисекундах. По умолчанию - 0.
fire_rep = inf/<number> - вероятно, время через которое возможна повторная стрельба. inf = -1.
fire_range = <number> - сектор стрельбы. По умолчанию - 50 градусов.
target = <параметр> - цель для стрельбы. Возможны следующие параметры:
points - стрелять в первую точку патрульного пути. Если путь не указан - вылет. Стоит по умолчанию;
actor - без комментариев;
story_id - персонаж с указанным story_id.
track_target = true/false - Некое подобие предупредительной стрельбы, не по цели, а чуть выше. По умолчанию - false.
on_target_vis = <параметр>|{+info -info =func !func ~number} %+info -info =func% <название_схемы> - что произойдёт, если цель будет в прямой видимости.
В качестве параметра возможны два значения: actor, story_id персонажа.
on_target_nvis = <параметр>|{+info -info =func !func ~number} %+info -info =func% <название_схемы> - что произойдёт, если цель пропадёт из
области прямой видимости. В качестве параметра возможны два значения: actor, story_id персонажа.
invulnerable = true/false - неуязвимость. Если true, транспорт игнорирует все хиты. По умолчанию false.
headlights = on/off - вкл./выкл. свет от фар.
on_death_info = {+info -info =func !func ~number} %+info -info =func% - что произойдёт при уничтожении транспорта.


Поддерживается сигнал arrived.

Вот вроде и всё удачи.
---------------------------------------------
Прошу прощёния,но совершенно забыл добавить ложку дёгтя к уроку 47.При спавне не через SDK, 90% вероятность,что ездить по патрульному пути не будет.Дело в том что требуется идеально ровное направление на точку патрульного пути относительно первоначального положения объекта, отклонение в несколько градусов приводит к остановке.В отличие от НПС не может доворачивать на требующееся направление. * Есть исправление!

Логика транспорта автор - @lychagin0 Источник

Скрытый текст

[ph_car]

usable = {+info -info =func !func ~number} - условия для юзабелености объекта. show_tips = true/false - отображать ли подсказку. По умолчанию - true.

tip_use = <имя_текса> - строка с id текста зарегистрированного в папке gamedata\config\text. Подсказка, в случае, если условия для usable выполнились.

По умолчанию - tip_car_use.

tip_locked = <имя_текса> - строка с id текста зарегистрированного в папке gamedata\config\text. Подсказка, в случае, если условия для usable не выполнились. По умолчанию - tip_car_locked.

В случае, если параметр usable не установлен, то возможна настройка самостоятельного поведения транспорта, а именно БТР.

path_walk = <имя_пути> - путь движения транспорта.

path_fire = <имя_пути> - вероятно, точки пути по которым возможна стрельба.

auto_fire = true/false - разрешить стрелять на ходу. По умолчанию - false.

fire_time = <number> - время непрерывной стрельбы в миллисекундах. По умолчанию - 0.

fire_rep = inf/<number> - вероятно, время через которое возможна повторная стрельба. inf = -1.

fire_range = <number> - сектор стрельбы. По умолчанию - 50 градусов.

target = <параметр> - цель для стрельбы. Возможны следующие параметры:

points - стрелять в первую точку патрульного пути. Если путь не указан - вылет. Стоит по умолчанию;

actor - без комментариев;

story_id - персонаж с указанным story_id.

track_target = true/false - Некое подобие предупредительной стрельбы, не по цели, а чуть выше. По умолчанию - false.

on_target_vis = <параметр>|{+info -info =func !func ~number} %+info -info =func% <название_схемы> - что произойдёт, если цель будет в прямой видимости.

В качестве параметра возможны два значения: actor, story_id персонажа.

on_target_nvis = <параметр>|{+info -info =func !func ~number} %+info -info =func% <название_схемы> - что произойдёт, если цель пропадёт из

области прямой видимости. В качестве параметра возможны два значения: actor, story_id персонажа.

invulnerable = true/false - неуязвимость. Если true, транспорт игнорирует все хиты. По умолчанию false.

headlights = on/off - вкл./выкл. свет от фар.

on_death_info = {+info -info =func !func ~number} %+info -info =func% - что произойдёт при уничтожении транспорта.

Поддерживается сигнал arrived.

Пример использования схемы:

[logic]

active = ph_car@fire


[ph_car@fire]

path_walk = pri_wave3_btr_walk

path_fire = pri_wave3_btr_look

fire_repeat = inf

auto_fire = true

on_target_vis = actor | ph_car@fight_actor2

on_death_info = pri_wave3_btr_dead

on_signal = arrived | ph_car@hunt_actor %+pri_wave3_btr_arrived%

Файл: gamedata\scripts\ph_car.script



p1:name = wp01|ff=true|fb=true

 

Не полное описание класса CCar из Lua_help ТЧ. Описание - @singapur22 Источник

Скрытый текст

C++ class CCar : CGameObject,holder {
const eWpnActivate = 3; --активация башни 'Action(CCar.eWpnActivate, number)' (0\1)
const eWpnAutoFire = 5; --автоматическая стрельба 'Action(CCar.eWpnAutoFire, number)' (0\1)
const eWpnDesiredDir = 1; --не фурычит
const eWpnDesiredPos = 2; --точка прострела 'SetParam(CCar.eWpnDesiredPos, vector)' (position)
const eWpnFire = 4; --открыть\прекратить огонь 'Action(CCar.eWpnFire, number)' (0\1)
const eWpnToDefaultDir = 6; --вернуть дуло в дефолтовую позицию 'Action(CCar.eWpnToDefaultDir, number)' (0\1)

CCar ();

function _construct();
function GetfHealth() const; --какое текущее здоровье у тачки? (0...1)
function CurrentVel();
function getVisible() const;
function net_Spawn(cse_abstract*);
function SetParam(number, vector); --установка координат, для точки прострела. Где, number = const(2)
function net_Export(net_packet&);
function Visual();
function IsObjectVisible(game_object*); --находится ли объект в зоне видимости тачки? (true\false)
function SetExplodeTime(number);
function net_Import(net_packet&);
function HasWeapon();
function SetfHealth(number); --установить текущее здоровье (0...1)
function engaged();
function ExplodeTime();
function FireDirDiff();
function CarExplode(); --взорвать тачку
function CanHit();
function getEnabled() const;
function Action(number1, number2); --работы с башней. Где, number1 = const(3...6); number2 = 0\1
function use(CGameObject*); -- (вероятно) сделать юзающимся для указанного объекта (но при спавне через скрипт, юзается всегда.

----------------------------------

--бтр
xr_logic.mob_capture(obj, true)
action(obj, move(move.on + move.fwd, 30), cond(cond.move_end, 3000)) --движение

--move.on -завести двигатель
--move.fwd -начать движение вперёд
--move.off -заглушить двигатель
--move.back -начать движение назад
--move.handbrake -остановить машину
--move.left -повернуть руль на лево
--move.right -повернуть руль на право
--move.line -повернуть руль прямо


obj:get_car():Action(CCar.eWpnActivate, 1) --активация башню (1\0)
obj:get_car():SetParam(CCar.eWpnDesiredPos, vector*) --повернуть башню в сторону вектора(позиция)
obj:get_car():Action(CCar.eWpnAutoFire, 1) --автоматическая стрельба (1\0) (чёта всё время шмаляет)
obj:get_car():Action(CCar.eWpnFire, 1) --открыть огонь (1); прекратить огонь (0)

--наработки
--синхронный поворот дула с камерой актора

obj:get_car():SetParam(CCar.eWpnDesiredPos, vector():set(device().cam_pos:mad(device().cam_dir, 100)))

 

Исправление скрипта ph_car.script [ТЧ], что бы машины корректно ехали к 1-й точке пути и при запрокидывании на бок пытались восстановиться. Автор -  @Graff46

Ссылка.

 

Новая логика вертолётов в ТЧ от @Kiraghttp://www.amk-team.ru/forum/topic/7977-ai-vertoletov/

_______________________________________________________________________________

Урок по созданию и настройке машин в "Сталкере" (Автор: @Saruman)

Скрытый текст

Добавление нового транспорта в Сталкер

Автор: Saruman.

 

         В данной статье я попробую описать все этапы добавления новых моделей автомобилей в игру

Для этого нам понадобится:

  MilkShape 3D 1.8.4 с установленными плагинами импорта и экспорта моделей сталкера, SDK  0.4 или выше ( для ЧН и ЗП подойдет даже 0.4 так как для моделей транспорта это безразлично), любой текстовый редактор (блокнота достаточно будет), пара рук не будут лишними J

         Для начала нам нужна модель машины,  которую мы собираемся перенести в сталкер

Я буду  использовать вот эту измененную ниву:

40b96ea34184318172901d5a4c75f4da.jpg

 

Вначале убедимся, что модель расположена в правильном направлении, то есть, направлена она должна быть так:

28d48ca3cc0bfa47c28fd3ddfda5b280.jpg

 

         Далее начнем создавать скелет,  главное,  что в нем должно присутствовать это суставы осей колес (желательны, но не обязательны), колес, руля, фар, дверей, выхлопной трубы, сиденья и основной сустав, к которому все это будет крепиться. Это минимальный состав, без которого не получится добавить машину в игру. Но это очень скудный состав, но об этом по порядку.

         Если вы в первый раз открыли MilkShape 3D, то для начала нужно настроить размер суставов, чтобы в итоге не получился непонятный клубок из линий. Для этого в программе заходив в File\Preferences\Misc и выставляем значение для Joint size равным 0.01 и ставим галочку напротив Show skeleton ,чтобы они вообще показывались:
3626a8a9882943ab52af7da8f362a053.jpg

 

        Приступим к созданию самого скелета.  Для создания первого  сустава выделяем кнопку Joint:

3f60e4bac39660b003b91e85d645657a.jpg

 

И ставим его где-нибудь посередине машины, примерно так:

4d7ff0f3db81ddfc82ca856e84ad4923.jpg

 

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

Далее переходим на вкладку Joints и видим там наш сустав:

549d077c81f0e250a35e764600a8a588.jpg

 

 

Выделяем его нажатием и создаем следующий сустав, например,  для выхлопной трубы (от этого сустава в игре будет идти партикл дыма) и перемещаем его туда, где расположена выхлопная труба, нажав кнопку Move:

25284af8cc734cc38ff0ad0c5b5b9006.jpg

 

Далее создадим суставы для осей колес и суставы самих колес:

ed51245ed7625155800f13b73cf1fa3a.jpg

 

Суставы колес должны быть по центр колеса, чтобы в игре они  ровно крутились, а так же суставы передних колес должны быть по внутреннему краю колеса, чтобы их поворот в игре выглядел реалистичнее.

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

469045d25efe1a6ff070aa4801ca03fb.jpg

 

Лучще всего немного отодвинуть их от края машины чтобы в игре не было проблем застревания ГГ при выходе из машины.

На очереди сустав руля, его нужно расположить по центру той части руля которая будет поворачиваться:

31022c3e9f715668bd8595b03fb026e4.jpg

 

Далее создадим сустав для сиденья, в оригинальных моделях их два но второй без надобности:

9aa451d974bc799b8e331f9469131337.jpg

 

Это примерное его расположение, потом в сдк можно быдет его переместить так, чтобы ГГ сидел в машине ровнее и держал руль правильно.

Остались пожалуй только суставы фар, от них будет исходить луч света в игре, поэтому расположить их нужно на месте фар машины, сделаем две фары спереди и четыре сверху:

402bacea19c7cdccaa4110d976cfd05d.jpg

 

Далее выделяем стекла фар,  делаем их копии с помощью ctrl+d и сдвигаем эту копию чуть вперед чтоб она не сливалалась с оригинилом. После этого создаем новый материал во вкладке Materials задаем для него туже текстуру что используется для оригинала фар, выделяем группы наших копий фар и задаем для них этот материал, это делается для того чтобы потом в сдк задать для этого материала особый шейдер свечения:

b0b5659a793660acd7929846dbed3b07.jpg

 

Дальше делаем конусы вокруг фар и шлейф света:

2ec6ec54a8499e8f18c6f2e2a6583e4a.jpg

 

Сделал только для передних фар так как не хочу особо лепить друг на друга их на верхних фарах

Теперь нужно переименовать  суставы чтобы не путаться, называть их можно как  угодно так как нужные суставы  в конфиге можно будет перезаписать: 23c543e94d59a4b695af00418160f702.jpg

75ab75cdb148f31e81e18b80c0af599c.jpg

 

 

И скорее всего последний шаг – это привязка модели к скелету. Главное что нужно привязать это колеса, руль и вданном случае еще и фары, остальное привязывать не обязатьельно, смотрите по обстоятельствам.

Например выделяем геометрию колеса, на вкладке Joints выделяем нужный сустав и жмем кнопку Assign:

2af349693a5ca4752708051120fa78ae.jpg

 

Так же выделяем и привязываем все остальные колеса и руль.

К суставам фар нужно привязать те копии стекл фар что мы делали раньше, а так же конусы вокруг фар и шлейф света, все это в игре будет скрыто в то время когда фары не будут включены:

4cef51071cc50813b2d19e3f5b70a7f6.jpg

 

Напоследок создадим еще один сустав и назовем его, например, cabina, лишним не будет:

2a67d255321f66ed6584b6337b805702.jpg

Как я сказал, это скудный скелет, можно еще сделать суставы для стекл, зеркал, бамперов и тд, но учтите что скелет может состоять максимум из 64 суставов, иначе модель в сдк просто не скомпилируется. Дальше я буду использовать для примера модель с этим скелетов, но в конце выложу модель со сложным скелетом.

Пожалуй здесь все, экспортируем модель в формат object:

c17231c2fbb82f5b57834a3ef8f964fd.jpg

 

Сохраняем куда удобно.

 

Переходим в СДК.

Загружаем модель чезез file\load:

31e37a9c837288af9798b346d80ad55b.jpg

 

Первым делом заходим в настройки и ставим этидве галочки:

11df6991e41f9429f7d674c8bfe28579.jpg

 

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

Начнем с фар. Для текстур иммитации света задаем материал models\lightplanes:

e8298b2549af629ecd91056e39c0e1a0.jpg

 

Параметры Compil и Game Mtl изменять не нужно, это параметры для моделей используемых на локациях (типа деревьев, домов, заборов и тд).

Для стекл фар ставим материал самосвечения models\selflight:

69c551ebad12ccca8dc1f769aeb681b7.jpg

 

Для текстуры стекла выставляем материал models\window:

dd95000b95f4f2153324d0b2a51be449.jpg

 

Закончили с текстурами, переходим на вкладку Bones, выделяем все колеса и ставим для них такие настройки:

db3e957fe9812c52c763d316dd1bc81a.jpg

 

Поясню:

Game Material – материал, в данном случае материал колеса машины.

Mass – масса, для колеса больше 50 можно не ставить, можно вообще не править в данном случае

Center Of Mass – точка центра массы относительно координат сустава, здесь править не нужно.

Bind Position – координаты сустава относительно сустава к которому он привязан ( у основного сустава – относительно начала координат) здесь править не нужно,  это мы уже настроили при создании скелета.

Bind Rotation – поворот сустава, здесь это делать обязательно чтобы колоса в игре крутились в правильном направлении.

Настройки шейпов:

No pickable – на практике не использовал, точное назначение не знаю.

No phisics – шейп не будет имет коллизии, веса и тд.

Remove  After Break – настройка для тех тех шейпов которым задана возможноть разрушения, с ней при разрушении меш просто пропадет на не отвалется как двери и бампера в оригинальных машинах.

Type – тип формы шейпа, в данном случае цилиндр.

Center –координаты центра шейпа относительно координат сустава.

Aligt Axis – основная ось расположения шейпа.

Hihgt и Radius – настройки формы цилиндра ( при другой форме другие параметры)

Настройки сустава:

Breakble  - делает возможность разрушения даного сустава, (для колеса не нужно включать, возможен вылет) при активации появляются параметры Break Force и Break Torque точного назначания каждого незнаю но при увеличение значений сложнее «отломать» сустав.

Type –тип сустава, в данном случае wheel, от типа зависят последующие параметры, в данном случае:

Friction – сила трения, для колеса лучше значения 0.01-0.1, например при значении 2 колеса будут очень сильно скользить.

Spring Factor – от этого параметра зависит жесткость крепления, так сказать, при маленьких значениях кузов будет сильно проседать и раскачиваться, это главная «болезнь» оригинальных машин (его нужно повышать при повышении общей массы машины).

Dumping Factor – точного значения непомню, делаю раза в два меньше предыдущего параметра

Limit Min и Limit Max – минимальный и максимальный поворот колеса (измеряется в градусах), их значения нужно изменить для передних колес, до значений 20-25(для Min значение должно быть отрицательное, оба значения для колеса должны быть равны(по модулю естественно )).

Разобрались с настройками, теперь жмем кнопку Bind Pose над этими настройками и наблюдаем такую картину:

4b4c0bebf5b10766c8e71a2b56193390.jpg

 

Не надо беспокоиться, просто сохраняем и снова загружаем модель, это нужно делать всегда при изменении параметров  Bind Rotation и Bind Position чтобы изменения появились (можно было не нажимать кнопку, а сразу перезагрузить модель).

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

c9612517bf493cf4538a005acbe70b9c.jpg

 

Автоматически шейпы можно создать если к суставу что то привязано, в остальных случаях они настраиваются  вручную.

Приступим к настройке руля. В игре руль будет поворачиваться по оси Z, поэтому сустав нужно будет повернуть так чтобы ось Z была направлена перпендикулярно плоскости руля, иначе он будет поворачиваться криво:

33f8d7965939172e0352b44b34f91242.jpg

 

Для этого нужно будет в параметре Bind Rotation изменить поворот по оси X (тоесть первое число), в данном случае на 35 градусов, также настроим и другие параметры:

4d3d7adb72e039e174f3965ab3ffd4df.jpg

 

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

Теперь нужно распределить массу нашего авто. Чтобы машина была устойчивая, вся ее основная масса должна находиться как можно ниже, я для этого использую суставы осей колес, так же масса не должна быть маленькой (~1000), и ее распределение по осям будет влиять на дальнейшие настройки торможения в конфиге.

Для начала самостоятельно создадим шейпы для осей и вес поставим к примеру по 1000 на каждую:

aed977cc9d36cd283407958f2a22387a.jpg

 

Можно еще центр массы переннести немного ниже .

И еще учтите , без шейпа безполезно суставу назначать массу, в игре она учитываться не будет.

На очереди выхлопная труба. Если сустав не развернуть, то в игре дым будет идти ни назад, а вперед.  Потому разворачиваем сустав на 180 градусов по оси Y (второе число в параметре Bind Rotation), в данном случае труба повернута не совсем назад, потому повернем сустав на -135 градусов ( или 225 градусов, кому как удобнее, результат один всеравно):

e7b6810dca4c380ba73f6a88af03c5e7.jpg

 

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

Для фар шейпы не нужны, так как они всеравно не учитываются в игре, можно и не править их суставы вообще.

Далее создадим шейпы для дверей:

61245b01ae49cb2da3f31d95ec29bc88.jpg

 

Для суставов root и cabina тоже создадим шейпы:

1f4c850f39845d2250b146223c9002d9.jpg

 

Шейпы являются для модели неким «силовым полем» ,с помощью которого она взаимодействует с окружающим миром. Как видим форма этого «поля» не идеальна и не полностью повторяет силует машины, но и скелет у нас тут простой.

Вот здесь скелет усложнен, что позволило более точно воссоздать форму:

9622fd69c182ba72efcf96cafb0f3c47.jpg

 

Не забываем об лимите в 64 сустава (здесь 61 J).

 

    С настройкой скелета покончено, перейдем к конфигу . Для начала создадим копию оригинального конфига нивы(конфиги нашин находятся в папке gamedata\config\models\vehicles) и назовем его например veh_niva_offroad . Теперь нужно его задать для машины.

Заходим во вкладку Object  и меняем параметр User Data:

fe5edbe7c0fcb92824f8874825400969.jpg

 

Все, теперь можно экспортировать модель в формат ogf:6964f7baf171204824f5a3b070e10117.jpg

 

Сохраняев в папку meshes\physics\vehicles, хотя можно в любую папку в пределах папки meshes.

 

Займемся конфигом.

Берем оригинальный конфиг нивы и начинаем разбирать.



[disable]
linear_factor = 0.3
angular_factor = 0.3-понятия не имею за что это отвечает
camera_pos = -0.4,1.45,0.2 ;  позиция камеры
driving_wheels = back_left_wheel,back_right_wheel,front_left_wheel,front_right_wheel; ведущие колёса
steering_wheels = front_left_wheel,front_right_wheel; рулевые колёса
breaking_wheels = front_left_wheel,front_right_wheel,back_left_wheel,back_right_wheel; тормозящие колёса
doors = left_door,right_door; двери
steer = stearing_wheel; руль
driver_place = seat_left; место водителя
exhausts = exhausts; выхлопная труба
-здесь все понятно,только выхлопных труб можно сделать тоже несколько
exhaust_particles = vehiclefx\exhaust_1 ;  партикл выхлопа
fuel_tank = 80; L
fuel_consumption = 1; L/(100k R); liters per 100 000 rotations
-размер топливного бака и расход топлива ;  параметры еще с билдов,в финалке не на что не влияют
engine_power = 8 мощность двигателя,при маленьких значениях машина будет плохо переодолевать даже самые легкие препятствия типа маленьких склонов(вес машины тоже влияет на это)при этом «глохнуть»,но не нужно ставить значение больше 300,тогда при езде,если отпустить «газ» колеса будут блокироваться моментально и машину будет заносить(странная зависимость правда),данное значение(8)не тянет даже для запорожца J
max_power_rpm = 4000
max_torque_rpm = 3000
 данных параметрах не уверен точно,как то влияют на частоту оборотов «двигателя»
power_increment_factor = 0.02
power_decrement_factor = 0.1
rpm_increment_factor = 0.1
rpm_decrement_factor = 0.4
 даных параметрах тоже не уверен,они вроде влияют на повышение и понижение мощности и частоты оборотов двигателя,и при таких значениях мощность и частота оборотов будут быстрее падать нежели расти
m_power_neutral_factor = 0.25 ;  тоже не совсем понял назначение этого параметра,что то вроде коеффициента мошности в нейтральной позиции,возможно нейтральная позиция-это в момент остановки
max_engine_rpm = 5000-максимальная частота оборотов двигателя вроде как,от нее напрямую зависит общая скорость,параметр max_power_rpm должен быть меньше чем этот параметр иначе машина просто не сдвинется с места
idling_engine_rpm = 850-вроде как начальная частота оборотов двигателя
reference_radius = 0.38; Радиус колеса,используемый при просчёте двигателя ;  напрямую влияет на общую скорость
axle_friction = 0.1; Ослабление скорости в неетральной позиции.(N*m)– действие этого параметра я не смог выявить
steering_speed = 1.0; Время поворота рулевого колеса,в максимум.rps(1)– вообще то это именно сторость поворота руля,а не время,лучше значение 0.8 чтоб небыло резких поворотов,которые на большой скорости могут привести к перевороту машины
steering_torque = 900; Сила гидроусилителя руля.(N*m)-желательны не маленькие значения
break_torque = 0.012; Сила тормозных колодок.(N*m)
-основной параметр ;  точную настройку лучше делать для каждого колеса(это ниже)
hand_break_torque = 0.012; сила торможения пробелом(по умолчанию)
-основной параметр ;  точную настройку лучше делать для каждого колеса(это ниже)
break_time = 1.0; время нарастания силы торможения до максимума,при подтормаживании(стрелка назад)– нет особой нужды до правки этого параметра
main_gear_ratio = 7.63; Передаточное отношение ;  основное передаточное число
auto_transmission = on; Автоматическая коробка(on/off)– лучше всего именно ручная,у меня не получилось настроить плавное переключение передач на автоматической
R = 3.73,2500,4250
N1 = 3.73,2500,4250
N2 = 2.29,2500,4250
N3 = 1.39,2500,4250
N4 = 0.96,2500,4250
-первое значение это передаточное число для каждой передачи(R ;  задняя передача)количество передач может быть сколько угодно,назначение остальных двух чисел мне не ясно,возможно это именно для автоматической передачи минамальная и максимальная частота оборотов


[lights]
headlights = f1,f2 ;  секции фар(может быть сколько угодно)


[f1]-первая фара
bone = left_light ;  сустав фары
color = 1.0,1.0,1.0,1.0 –цвет света фары,максимальные значения 2.9 вроде бы
range = 25-дальность свечения фар
cone_angle = 60 ;  угол освещения
spot_texture = lights\lights_blamplight-текстура пятна света
glow_texture = glow\glow_Yellow-текстура ореола вокруг фары,появляющегося при свечении ее в глаза,появляется только на статическом освещении,потому мы уже сделали в модели его аналог который будет виден при любом освещении
glow_radius = 1.5 –радиус этого ореола(в метрах,1.5 это очень много,достаточно 0.5)


[f2]–вторая фара
bone = right_light
color = 1.0,1.0,1.0,1.0
range = 25
cone_angle = 60
spot_texture = lights\lights_blamplight
glow_texture = glow\glow_Yellow
glow_radius = 1.5

[car_sound]
snd_volume = 1.0 ;  громкость звуков двигателя(помоему не работает)
snd_name = car\car1 –основной звук работы двигателя
engine_sound_start_dellay = 0.5 ;  похоже на начальную громкость работы двигателя(с повышение мошности звук увеличивается)
engine_start = car\test_car_start ;  звук включения двигателя
engine_stop = car\test_car_stop ;  звук глушения двигателя
transmission_switch = car\car_gearchange ;  звук переключения передач
explosion_sound = -звук взрыва машины,здесь почему то не указан,наверное используется какой то дефолтный,а возможно используется совсем другой параметр в параметрах взрыва
relative_pos = 0.0,0.5,1.5.-точка от которой исходят все эти звуки(относительно начала координат модели)

[doors]
open_torque_factor = 3.-похоже это тоже еще с билдов осталось

[animations]
driver_animation_type = 0; тип анимаций актера для данной машины.– есть два значения 0 и 1,при значении 0 обычная анимация гг в машине,при значении 1 анимация как для грузовых машин

[damage_particles
explosion_particles = explosions\expl_car-партикл взрыва машины
car_damage_particles1 = explosions\expl_car_smoke_small ;  партикл дыма при повреждении машины(появляющийся примерно при 60%прочности)
car_damage_particles2 = explosions\expl_car_smoke_big ;  партикл дыма при горении машины(при 30%прочности,прочность при этом начинает уменьшается сама)
wheels_damage_particles1 = vehiclefx\exhaust_1
wheels_damage_particles2 = vehiclefx\exhaust_1
-какие то партиклы повреждения колес,пару раз видел их в игре при совсем не ординарных ситуациях
particle_bones1 = front_bamper ;  сустав относительно которого исходит дым повреждения
particle_bones2 = root-сустав относительно которого исходит дым горения

[particle_bones]-здесь нужно написывать суставы которые заданы выше,иначе дум идти не будет
root = 0,-0.5,1-отклонение координат партикла от координат сустава(в метрах)
front_bamper = 0,0,0

[damage_items]–понятия не имею что это,записывать можно(а возможно и нужно)только суставы колес и дверей
back_left_wheel = 5000
back_right_wheel = 5000
front_left_wheel = 5000
front_right_wheel = 5000
left_door = 2000
right_door = 2000

[collision_damage]
root = 0.0001 ;  коэффициент урона от удара машины шейпом данного сустава об препятствие,лучше поставить значения поменьше,чтоб машина меньше разрушалась при столкновении

[damage_bones]; аналогично секции в актере,но без анимаций; bone_name = <hit_scale>,<-1>,<wound_scale>; <hit_scale>-коэфф.изменения хита(уменьшения здоровья); <wound_scale>-коэфф.изменения величины открытой раны-незадействован
default = 1,-1,0.1 ;  коэфициент получения урона(дефолтное значение,можно ниже добавить для каждого сустава свое,чтоб например некоторые части получали больше урона,а какие то меньше),последние два значения вроде не используются

[immunities]
burn_immunity = 0.5; коэффициенты иммунитета ;  этим все сказано,чем меньше значение тем меньше урон от соответсвующих воздействий
strike_immunity = 0.1
shock_immunity = 0.0
wound_immunity = 0.01
radiation_immunity = 0.0
telepatic_immunity = 0.0
chemical_burn_immunity = 0.0
explosion_immunity = 0.5
fire_wound_immunity = 0.001

[explosion]–параметры взрыва
blast = 1 ;  сила урона от взрывной волны
blast_r = 15 –радиус взрывной волны
blast_impulse = 350 ;  импульс взрывной волны
frags = 15 ;  количество осколков от взрыва
frags_r = 30 ;  радиус разлета осколков
frag_hit = 0.5 ;  урон от попадания осколков
frag_hit_impulse = 350 ;  импульс от осколков
hit_type_blast = explosion ;  тип воздействия взрывной волны
hit_type_frag = fire_wound ;  тип воздействия осколков
up_throw_factor = 0.25 ;  какой то параметр подъема осколков вроде
wm_size = 0.1-размер отметен на земле при попадании осколков
explode_particles = explosions\expl_car ;  еще один какой то партикл взрыва
light_color = 0.6,0.5,0.3 –цвет вспышки при взрыва
light_range = 15.0-дальность освещения отой вспышкой
light_time = 0.5 ;  время вспышки; трассы от осколков
fragment_speed = 76 ;  похоже на скорость разлетов осколков
fragment_tracer_max_length = 3 размер трасера воответственно
explode_duration = 50; подолжительность взрыва(с)-после этого времени пропадет партикл взрыва; звуки
snd_explode = weapons\heli_explosion ;  похоже именно этот параметр и отвечает за звук взрыва; wallmarks
wallmark_section = explosion_marks-вроде тип следов от осколков(не уверен)

[explode_effector]
effect_sect_name = effector_explode_hit-эффект от взрыва

[air_resistance]– какое то сопративление воздуха,понятия не имею как работает,и работает ли вообще
linear_factor = 500.f
angular_factor = 500.f

[wheels_params]– общие параметры для колес,лучше настраивать для каждого колеса(ниже)
damping_factor = 10; spring_factor = 1 ;  не смог определить как эти параметры влияют на подобные параметры в настройках сустава,потому ставлю значения 2 и 3 соответственно
friction_factor = 1.0 ;  это коефициент трения,лучше использовать значения от 1.5 до 2(при 2 уже давольно большая сила трения получается,машина в повороты будет входить жестко и терять сильно скорость),трение на задних колесах лучше всего делать больше чем на передних

[front_left_wheel]
break_torque = 0.015; Сила тормозных колодок.(N*m
hand_break_torque = 0.015; сила торможения пробелом(по умолчанию = break_torque)
damping_factor = 10
spring_factor = 1
friction_factor = 0.9
….….….….
[collide]
not_collide_parts = 1
 по идее должен включать/отключать колизию между какими то частями модели,но похоже не на что не влияет

[destroyed]
 секция,в которой указываются модели деталей машины появляющихся во время взрыва,если нет таких моделей то можно просто удалить эту секцию,тогда после взрыва останется старая модель машины(в нее даже можно сесть,но не ехать J)

[autoremove_parts]
time = 30
-время исчезновения частей машины(если предыдущая секция удалена то модель машины после взрыва исчезнет только после перезагрузки сейва)

[impulse_transition_to_parts]-параметры разлета частей машины(если они были заданы в секции destroyed)
random_min = 10.0; величина случайно направленного импульса пропорционально массе нового объекта
random_hit_imp = 1.0; величина случайно направленного импульса пропорционально разрушающему хиту; ref_bone = ; кость из по которой определяется скорость для частей у который связь не задана,по умолчанию рут
imp_transition_factor = 1.0; фактор с которым прикладывается хит по исходному объекту ко всем частям
lv_transition_factor = 0.5; коэффициент передачи линейной скорости
av_transition_factor = 0.5; коэффициент передачи угловой скорости
Теперь настроим конфиг под нашу модель.Вот что получилось:
[disable]
linear_factor = 0.3
angular_factor = 0.3; -------------------------------------------------------------------------------; ------Общие параметры---------------------------------------------------------

[car_definition]
camera_pos = -0.37,1.61,-0.2; позиция камеры актора в машине
driving_wheels = back_left_wheel,back_right_wheel,front_left_wheel,front_right_wheel; ведущие колёса
steering_wheels = front_left_wheel,front_right_wheel; рулевые колёса
breaking_wheels = front_left_wheel,front_right_wheel,back_left_wheel,back_right_wheel; тормозящие колёса
doors = left_door,right_door; двери
steer = stearing_wheel; руль
driver_place = seat_left; место водителя
exhausts = exhaust; выхлопная труба; exhaust_particles = vehiclefx\exhaust_1; -------------------------------------------------------------------------------; ------Factory parameters of Engine-------------------------------------------
fuel_tank = 80; L
fuel_consumption = 1; L/(100k R); liters per 100 000 rotations
engine_power = 70; horse_power(kW = hp*0.808)max power
max_power_rpm = 4500; (nominal rpm)on this rpm value engine power reaches maximum
max_torque_rpm = 3000; on this rpm engine torque reaches maximum
power_increment_factor = 0.01
power_decrement_factor = 0.01
rpm_increment_factor = 0.02
rpm_decrement_factor = 0.01
m_power_neutral_factor = 0.75; additional engine parameters
max_engine_rpm = 4600; rpm(5000)rpm will never be more
idling_engine_rpm = 750; rpm(750)min rpm-starts from this rpm value; -------------------------------------------------------------------------------; ------Adjustment a wheel-----------------------------------------------------
reference_radius = 0.4; Радиус колеса,используемый при просчёте двигателя
axle_friction = 0.001; Ослабление скорости в нетральной позиции.(N*m)
steering_speed = 0.8; Скорость поворота рулевого колеса,в максимум.rps(1)
steering_torque = 9000; Сила гидроусилителя руля.(N*m)
break_torque = 0.052; Сила тормозных колодок.(N*m)
break_time = 1.0; Время нарастания силы торможения до максимума,при подтормаживании(стрелка назад)
hand_break_torque = 0.022; Сила торможения пробелом(по умолчанию = break_torque); -------------------------------------------------------------------------------; ------Gearbox----------------------------------------------------------------
main_gear_ratio = 6.5; Передаточное отношение
auto_transmission = off; Автоматическая коробка(on/off)

[transmission_gear_ratio]; shift down/shift up.(rpm,необходимое для переключения)
R = 3.34,1000,4800
N1 = 3.23,1000,2400
N2 = 1.99,1800,2800
N3 = 1.29,2700,3850
N4 = 1,3600,4800; -------------------------------------------------------------------------------; ------Rest Adjustment--------------------------------------------------------

[lights]
headlights = f1,f2,f3,f4,f5,f6

[f1]
bone = left_light
color = 1.5,1.5,1.5,0.5
range = 40
cone_angle = 40
spot_texture = internal\internal_light_attpoint
glow_texture = glow\glow_white
glow_radius = 0.5

[f2]
bone = right_light
color = 1.5,1.5,1.5,0.5
range = 40
cone_angle = 40
spot_texture = internal\internal_light_attpoint
glow_texture = glow\glow_white
glow_radius = 0.5

[f3]
bone = top_right_light
color = 0.5,0.5,0.5,0.5
range = 30
cone_angle = 40
spot_texture = internal\internal_light_attpoint
glow_texture = glow\glow_white
glow_radius = 0.5

[f4]
bone = top_right2_light
color = 0.5,0.5,0.5,0.5
range = 30
cone_angle = 40
spot_texture = internal\internal_light_attpoint
glow_texture = glow\glow_white
glow_radius = 0.5

[f5]
bone = top_left_light
color = 0.5,0.5,0.5,0.5
range = 30
cone_angle = 40
spot_texture = internal\internal_light_attpoint
glow_texture = glow\glow_white
glow_radius = 0.5

[f6]
bone = top_left2_light
color = 0.5,0.5,0.5,0.5
range = 30
cone_angle = 40
spot_texture = internal\internal_light_attpoint
glow_texture = glow\glow_white
glow_radius = 0.5; -------------------------------------------------------------------------------; ------Звуки------------------------------------------------------------------

[car_sound]
snd_volume = 1.0
snd_name = car\niva_run
engine_sound_start_dellay = 0.5
engine_start = car\niva_start
engine_stop = car\niva_stop
transmission_switch = car\car_gearchange
explosion_sound = weapons\heli_explosion
relative_pos = 0,1.1,1.1; -------------------------------------------------------------------------------; ------animations params------------------------------------------------------

[doors]
open_torque_factor = 3.; множитель момента сил для открывания двери(default = 2)

[animations]
driver_animation_type = 0; тип анимаций актера для данной машины.; -------------------------------------------------------------------------------; ------damage params----------------------------------------------------------

[damage_particles]
explosion_particles = explosions\expl_car
car_damage_particles1 = explosions\expl_car_smoke_small
car_damage_particles2 = explosions\expl_car_smoke_big
wheels_damage_particles1 = vehiclefx\exhaust_1
wheels_damage_particles2 = vehiclefx\exhaust_1
particle_bones1 = kapot
particle_bones2 = kapot; -------------------------------------------------------------------------------; ------particle bones---------------------------------------------------------

[particle_bones]
kapot = 0,0,0; -------------------------------------------------------------------------------; ------damage items-----------------------------------------------------------

[damage_items]
back_left_wheel = 5000
back_right_wheel = 5000
front_left_wheel = 5000
front_right_wheel = 5000
left_door = 2000
right_door = 2000; -------------------------------------------------------------------------------; ------collisiondamage--------------------------------------------------------

[collision_damage]
root = 0.00001
front_bamper = 0.00001
kapot = 0.00001; -------------------------------------------------------------------------------; ------damage bones-----------------------------------------------------------

[damage_bones]; аналогично секции в актере,но без анимаций; bone_name = <hit_scale>,<-1>,<wound_scale>; <hit_scale>-коэфф.изменения хита(уменьшения здоровья); <wound_scale>-коэфф.изменения величины открытой раны-незадействован
default = 0.3,-1,0.1; -------------------------------------------------------------------------------; ------Иммунитеты-------------------------------------------------------------

[immunities]
burn_immunity = 0.005
strike_immunity = 0.0001
shock_immunity = 0.0001
wound_immunity = 0.005
radiation_immunity = 0.0
telepatic_immunity = 0.0
chemical_burn_immunity = 0.001
explosion_immunity = 0.0001
fire_wound_immunity = 0.005
wound_2_immunity = 0.0; -------------------------------------------------------------------------------; ----------------explosion params-----------------------------------------------

[explosion]
blast = 20
blast_r = 8
blast_impulse = 350
frags = 44
frags_r = 20
frag_hit = 1.7
frag_hit_impulse = 350
hit_type_blast = explosion
hit_type_frag = fire_wound
up_throw_factor = 0.25
wm_size = 0.1
explode_particles = explosions\expl_car
light_color = 0.6,0.5,0.3
light_range = 15.0
light_time = 0.5; трассы от осколков
fragment_speed = 76
fragment_tracer_max_length = 3
explode_duration = 60; подолжительность взрыва(с)
snd_explode = weapons\heli_explosion
wallmark_section = explosion_marks

[explode_effector]
effect_sect_name = effector_explode_hit; -------------------------------------------------------------------------------; ------Others params----------------------------------------------------------

[air_resistance]
linear_factor = 500.f; angular_factor = 500.f; 
[wheels_params]
damping_factor = 2; spring_factor = 3; friction_factor = 1.7; 
[front_left_wheel]
break_torque = 0.075; Сила тормозных колодок.(N*m)
hand_break_torque = 0.05; сила торможения пробелом(по умолчанию = break_torque)
damping_factor = 2; spring_factor = 3; friction_factor = 1.65; 
[front_right_wheel]
break_torque = 0.075; Сила тормозных колодок.(N*m)
hand_break_torque = 0.05; сила торможения пробелом(по умолчанию = break_torque)
damping_factor = 2; spring_factor = 3; friction_factor = 1.65; 
[back_left_wheel]
break_torque = 0.05; Сила тормозных колодок.(N*m)
hand_break_torque = 0.02; сила торможения пробелом(по умолчанию = break_torque)
damping_factor = 2; spring_factor = 3; friction_factor = 1.8; 
[back_right_wheel]
break_torque = 0.05; Сила тормозных колодок.(N*m)
hand_break_torque = 0.02; сила торможения пробелом(по умолчанию = break_torque)
damping_factor = 2; spring_factor = 3; friction_factor = 1.8; 
[collide]
not_collide_parts = 1; -------------------------------------------------------------------------------; ------destroyed part---------------------------------------------------------

[autoremove_parts]
time = 60; время удаления обломков(c); -------------------------------------------------------------------------------; ---part impulse_transition---------------------------------------------------

[impulse_transition_to_parts]
random_min = 1.0; величина случайно направленного импульса пропорционально массе нового объекта
random_hit_imp = 1.5; величина случайно направленного импульса пропорционально разрушающему хиту; ref_bone = ; кость из по которой определяется скорость для частей у который связь не задана,по умолчанию рут
imp_transition_factor = 1.0; фактор с которым прикладывается хит по исходному объекту ко всем частям
lv_transition_factor = 0.5; коэффициент передачи линейной скорости
av_transition_factor = 0.5; коэффициент передачи угловой скорости; -------------------------------------------------------------------------------; ------End params-------------------------------------------------------------

 

Теперь осталось только заспаунить машину в игре

Создаем в папке gamedata\config\creatures файл, назовем его vechicles, в нем пишем:


[vehicle_niva_offroad]
$spawn = "vehicles\veh_niva_offroad"
GroupControlSection = spawn_group
class = SCRPTCAR
cform = skeleton
ef_equipment_type = 3
ph_mass = 100000
script_binding = bind_physic_object.init
visual = physics\vehicles\veh_niva_offroad.ogf
actor_visual = physics\vehicles\veh_niva_offroad.ogf

Теперь в файл  system.ltx  добавляем строчку:

#include "creatures\vechicles.ltx"

 

Теперь создаем новый скрипт (в папке scripts), называем его например spawn_car и вписываем в него:


function car_spawn()
	alife():create("vehicle_niva_offroad ",vector():set(-63.113,-9.931,-41.508),212929,78)
end

Теперь в файле info_portions.ltx ищем строчки:
 


<game_information_portions>
  <info_portion id="storyline_actor_start">
    <task>storyline_eliminate_gunslinger</task>
</info_portion>

И заменяем их на:


<game_information_portions>
  <info_portion id="storyline_actor_start">
    <task>storyline_eliminate_gunslinger</task>
          <action> spawn_car. car_spawn </action>
</info_portion>

Заходим в игру, начинаем новую игру и лицезреем нашу машину на кордоне около вагончика.

 

Усе…

Этот урок *.doc файлом. Ссылка.

_______________________________________________________________________________

Усложнённый вариант создания моделей колёсной техники в 3DSMax.

Изменено пользователем Graff46
Добавлял уроки

  • http://www.amk-team.ru/forum/uploads//ratings/bf.gif × 1
  • http://www.amk-team.ru/forum/uploads//ratings/thumb_up.png × 2
  • http://www.amk-team.ru/forum/uploads//ratings/wrench_orange.png × 2

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Han Sola   

Было бы неплохо сделать тутор по возвращению в ТЧ и его аддонах способности ГГ, сидящего в БТР, стрелять по противникам как в LA. А так туторы хороши, а то техника уже давно развития не получает.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Почему не получает? @Дизель вроде занимался этим, даже результаты какие-то были. Конкретизировать не могу, просто сам факт помню.


  • http://www.amk-team.ru/forum/uploads//ratings/tick.png × 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Graff46   
1 час назад, Han Sola сказал:

способности ГГ, сидящего в БТР, стрелять по противникам как в LA

Если использовать X-Ray extensions, то могу попробовать сделать.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Han Sola   
22 часа назад, Graff46 сказал:

могу попробовать сделать.

Я всего лишь предложил, решать то тебе :)

22 часа назад, Murarius сказал:

Почему не получает? @Дизель вроде занимался этим, даже результаты какие-то были. Конкретизировать не могу, просто сам факт помню.

Ну не знаю. Учитывая большинство модов с авто, могу сказать что оно там чисто для галки: "ни физики, ни химии"(даже в OLR и LA). Не знаю почему ещё на АМК никто не додумался перенести авто из Build 1558 с полным функционалом и настроенной физикой и выложить как отдельный проэкт.

Изменено пользователем Han Sola

  • http://www.amk-team.ru/forum/uploads//ratings/tick.png × 2

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Graff46   

В шапку добавлен урок по тонкостям создания моделей машин и их настройке от СДК до конфигов от @Saruman

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 06.10.2017 в 14:09, Han Sola сказал:

Было бы неплохо сделать тутор по возвращению в ТЧ и его аддонах способности ГГ, сидящего в БТР, стрелять по противникам как в LA. А так туторы хороши, а то техника уже давно развития не получает.

Сделано на ЗП, даже лучше чем в Лост-Альфа. https://www.youtube.com/watch?v=osyTSDq-F1g

 

http://www.amk-team.ru/forum/topic/13331-bazovaya-platforma-dlya-razrabotki-modov-zp/?do=findComment&comment=1055355

Изменено пользователем Дизель

  • http://www.amk-team.ru/forum/uploads//ratings/bf.gif × 2
  • http://www.amk-team.ru/forum/uploads//ratings/thumb_up.png × 1
  • http://www.amk-team.ru/forum/uploads//ratings/wrench_orange.png × 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
_Val_   

Поспрашиваю народ...Если над Террой работы не ведутся, могу выложить и скрипты и логику для бэтра.

Смысл. БТР атакует любую враждебную цель. Если это бтр Долга, то атакует мутантов, свободовцев и т.д...ГГ по поршням:-) Надеюсь понятно объяснил.

Если кому нужно конечно:-)

Изменено пользователем _Val_

  • http://www.amk-team.ru/forum/uploads//ratings/wrench_orange.png × 2

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Graff46   
Только что, _Val_ сказал:

могу выложить и скрипты и логику для бэтра.

Не плохо было бы...


  • http://www.amk-team.ru/forum/uploads//ratings/tick.png × 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
_Val_   
6 часов назад, Graff46 сказал:

было бы

Бью челом. Созвонился по скайпу - разработка продолжается. Извиняйте за неоправданные надежды...И кикните мои посты.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Graff46   

Вопрос по машинам, так

Ccar:CurrentVel()

получаем вектор скорости, как с его помощью узнать машина едет вперёд или назад?

Изменено пользователем Graff46

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Graff46   

Использую такой код (ph_car [ТЧ]) для управления движением транспорта

Скрытый текст

    local diff_angle = angle_xz(self.object, self.path_walk:point(pt))
    local accel = move.none
	local napr = math.abs(self.car:CurrentVel():getH() - self.object:direction():getH()) < math.pi/2
    local curVel= self.car:CurrentVel():magnitude()
    printf2("car <move>: curVel = %f, speed = %f", curVel, self.speed)
	
	nt.logfile('spdDir_'..math.abs(self.car:CurrentVel():getH() - self.object:direction():getH()).."_"..curVel.."_"..tostring(napr).."__"..self.target_walk_pt or-1)
	get_console():execute('napr__'..tostring(napr))
	self.val = 0 
	if (curVel*1.15 < self.speed and napr) or (curVel/1.2 > self.speed*1.10 and not napr) then
		accel = move.fwd 
		self.moving2 = 'fwd'
		self.val = self.speed
		nt.logfile('fwd__'..self.val)
		printf2("car <move>: forward")
	elseif curVel/1.15 > self.speed and napr then -- or diff_angle >= math.pi then
		accel = move.back
		self.moving2 = 'back'
		self.val = curVel - self.speed
		nt.logfile('back__'..self.val)
		printf2("car <move>: backward")
	end  
	
	--printf2("car <move>: diff_angle = %f, katet = %f", diff_angle, get_katet(self.object, self.path_walk:point(pt)))
	--if utils.no_need_to_rotate_xz(self.object, self.path_walk:point(pt)) then
	if diff_angle < def_not_rotating_angle then 
		if self.state_moving ~= state_moving_fwd and accel ~= move.none then
			printf2("car <move>: no_need_to_rotate. speed = %f, time = %f", self.speed, self.fc_upd_avg)
			xr_logic.mob_capture(self.object, true)
			action(self.object,
				move(accel, self.val), 
				cond(cond.time_end, time_infinite)) --self.fc_upd_avg))
			self.state_moving = state_moving_fwd
		end
	else

 

 

Но машина постоянно чудит, после 1 - 2го поинта едет задним ходом...

Вот лог от ф-ции: nt.logfile()

Скрытый текст

spdDir_0.014278559014201_0.012593886815012_true__0
fwd__2
spdDir_0.10564518719912_0.013725337572396_true__0
fwd__2
spdDir_0.16357761621475_0.014542282558978_true__0
fwd__2
spdDir_0.17467115819454_0.015221426263452_true__0
fwd__2
spdDir_0.17532566189766_0.015817334875464_true__0
fwd__2
spdDir_0.1566367149353_0.016169246286154_true__0
fwd__2
spdDir_0.1813700646162_0.016585187986493_true__0
fwd__2
spdDir_0.20307944715023_0.016763366758823_true__0
fwd__2
spdDir_0.20176222920418_0.01673267967999_true__0
fwd__2
spdDir_0.22335065901279_0.016573859378695_true__0
fwd__2
spdDir_0.14550393819809_0.40132910013199_true__0
fwd__2
spdDir_0.23000739514828_0.81769108772278_true__0
fwd__2
spdDir_0.24969735741615_1.4038903713226_true__0
fwd__2
spdDir_0.25723189115524_2.0576894283295_true__0
spdDir_0.25095126032829_2.5990877151489_true__0
back__0.59908771514893
spdDir_0.25007790327072_3.1547276973724_true__0
back__1.1547276973724
spdDir_0.25154742598534_3.9149827957153_true__0
back__1.9149827957153
spdDir_0.24882689118385_4.828022480011_true__0
back__2.828022480011
spdDir_0.23291353881359_5.3724675178528_true__0
back__3.3724675178528
spdDir_0.21924336254597_6.0753960609436_true__0
back__4.0753960609436
spdDir_0.20914486050606_6.4568724632263_true__0
back__4.4568724632263
spdDir_0.20305776596069_6.7635250091553_true__0
back__4.7635250091553
spdDir_0.20184892416_6.8378591537476_true__0
back__4.8378591537476
spdDir_0.20586559176445_6.9034485816956_true__0
back__4.9034485816956
spdDir_0.20724061131477_6.9416508674622_true__0
back__4.9416508674622
spdDir_0.20298582315445_6.9373550415039_true__0
back__4.9373550415039
spdDir_0.20326516032219_6.941219329834_true__0
back__4.941219329834
spdDir_0.19856858253479_6.9626235961914_true__0
back__4.9626235961914
spdDir_0.19630861282349_7.0131068229675_true__0
back__5.0131068229675
spdDir_0.19596612453461_7.0552797317505_true__0
back__5.0552797317505
spdDir_0.18721562623978_7.0483746528625_true__0
back__5.0483746528625
spdDir_0.18676716089249_7.023868560791_true__0
back__5.023868560791
spdDir_0.19103157520294_6.9666819572449_true__0
back__4.9666819572449
spdDir_0.19434398412704_6.9083924293518_true__0
back__4.9083924293518
spdDir_0.19337069988251_6.8574771881104_true__0
back__4.8574771881104
spdDir_0.20116680860519_6.8349704742432_true__0
back__4.8349704742432
spdDir_0.2014587521553_6.8226747512817_true__0
back__4.8226747512817
spdDir_0.20201289653778_6.7937660217285_true__0
back__4.7937660217285
spdDir_0.20645320415497_6.7399320602417_true__0
back__4.7399320602417
spdDir_0.20132666826248_6.6989431381226_true__0
back__4.6989431381226
spdDir_0.20871663093567_6.7068982124329_true__0
back__4.7068982124329
spdDir_0.20818889141083_6.7211627960205_true__0
back__4.7211627960205
spdDir_0.2035756111145_6.7344326972961_true__0
back__4.7344326972961
spdDir_0.20062345266342_6.7292413711548_true__0
back__4.7292413711548
spdDir_0.2007098197937_6.7114443778992_true__0
back__4.7114443778992
spdDir_0.20298433303833_6.6987447738647_true__0
back__4.6987447738647
spdDir_0.20703864097595_6.6826496124268_true__0
back__4.6826496124268
spdDir_0.20734083652496_6.6802382469177_true__0
back__4.6802382469177
spdDir_0.20508444309235_6.690637588501_true__0
back__4.690637588501
spdDir_0.21080636978149_6.7201986312866_true__0
back__4.7201986312866
spdDir_0.20921266078949_6.7728290557861_true__0
back__4.7728290557861
spdDir_0.21102285385132_6.7501544952393_true__0
back__4.7501544952393
spdDir_0.21078491210938_6.7966079711914_true__0
back__4.7966079711914
spdDir_0.21505081653595_6.756739616394_true__0
back__4.756739616394
spdDir_0.21179342269897_6.8156423568726_true__0
back__4.8156423568726
spdDir_0.20776951313019_6.8232393264771_true__0
back__4.8232393264771
spdDir_0.21900999546051_6.8700222969055_true__0
back__4.8700222969055
spdDir_0.21817624568939_6.866322517395_true__0
back__4.866322517395
spdDir_0.21759152412415_6.8795208930969_true__0
back__4.8795208930969
spdDir_0.22012257575989_6.8073749542236_true__0
back__4.8073749542236
spdDir_0.22133100032806_6.8302326202393_true__0
back__4.8302326202393
spdDir_0.21625578403473_6.8755927085876_true__0
back__4.8755927085876
spdDir_0.2174631357193_7.0232238769531_true__0
back__5.0232238769531
spdDir_0.21651208400726_7.1242933273315_true__0
back__5.1242933273315
spdDir_0.20888197422028_7.1175470352173_true__0
back__5.1175470352173
spdDir_0.20989835262299_7.1508145332336_true__0
back__5.1508145332336
spdDir_0.20822584629059_7.1389827728271_true__0
back__5.1389827728271
spdDir_0.20488214492798_7.1264429092407_true__0
back__5.1264429092407
spdDir_0.20534896850586_7.1147756576538_true__0
back__5.1147756576538
spdDir_0.20833885669708_7.0819401741028_true__0
back__5.0819401741028
wwwwwwwwwwwwwwwwwwwwwwww_1
spdDir_0.20579493045807_7.1045432090759_true__1
back__5.1045432090759
spdDir_0.20074760913849_7.0890364646912_true__1
back__5.0890364646912
spdDir_0.19134199619293_7.064197063446_true__1
back__5.064197063446
spdDir_0.18451285362244_7.0116362571716_true__1
back__5.0116362571716
spdDir_0.17204594612122_6.9820795059204_true__1
back__4.9820795059204
spdDir_0.16188251972198_6.8498477935791_true__1
back__4.8498477935791
spdDir_0.15140998363495_6.7013721466064_true__1
back__4.7013721466064
spdDir_0.14383172988892_6.5214047431946_true__1
back__4.5214047431946
spdDir_0.13515758514404_6.3070130348206_true__1
back__4.3070130348206
spdDir_0.12569952011108_6.0582032203674_true__1
back__4.0582032203674
spdDir_0.11634206771851_5.775089263916_true__1
back__3.775089263916
spdDir_0.10601568222046_5.4569234848022_true__1
back__3.4569234848022
spdDir_0.097358226776123_5.1434535980225_true__1
back__3.1434535980225
spdDir_0.086802959442139_4.7616248130798_true__1
back__2.7616248130798
spdDir_0.069137334823608_4.3303918838501_true__1
back__2.3303918838501
spdDir_0.061870336532593_4.1496620178223_true__1
back__2.1496620178223
spdDir_0.052635431289673_3.7341251373291_true__1
back__1.7341251373291
spdDir_0.025105476379395_3.0095956325531_true__1
back__1.0095956325531
spdDir_0.0010528564453125_2.5038666725159_true__1
back__0.50386667251587
spdDir_0.0028626918792725_2.2433774471283_true__1
spdDir_0.040377378463745_1.7403585910797_true__1
spdDir_0.16569304466248_1.0046521425247_true__1
fwd__2
spdDir_0.48556566238403_0.33452045917511_true__1
fwd__2
spdDir_1.8806613683701_0.039005003869534_false__1
spdDir_3.2030577659607_0.12685026228428_false__1
spdDir_3.2801151275635_0.12406108528376_false__1
spdDir_3.2418644428253_0.25637617707253_false__1
spdDir_3.2423577308655_0.25332534313202_false__1
spdDir_3.1935448646545_0.40179154276848_false__1
spdDir_3.2046048641205_0.55949348211288_false__1
spdDir_3.216498374939_0.72475647926331_false__1
spdDir_3.2254552841187_0.8962824344635_false__1
spdDir_3.2393260002136_0.89285469055176_false__1
spdDir_3.237811088562_1.2546104192734_false__1
spdDir_3.2597358226776_1.4386873245239_false__1
spdDir_3.2750196456909_1.8076652288437_false__1
spdDir_3.2900087833405_2.0003640651703_false__1
spdDir_3.3051905632019_2.1831839084625_false__1
spdDir_3.3166151046753_2.1786217689514_false__1
spdDir_3.3226108551025_2.3381934165955_false__1
spdDir_3.3375580310822_2.3282976150513_false__1
spdDir_3.354811668396_2.4341387748718_false__1
spdDir_3.3511562347412_2.5794146060944_false__1
spdDir_3.3788588047028_2.7372453212738_false__1
fwd__2
spdDir_3.3963308334351_2.7207510471344_false__1
fwd__2
spdDir_3.3990802764893_2.8657197952271_false__1
fwd__2
spdDir_3.3948802947998_3.0158286094666_false__1
fwd__2
spdDir_3.3998560905457_3.0056970119476_false__1
fwd__2
spdDir_3.3915410041809_3.1430704593658_false__1
fwd__2
spdDir_3.3892650604248_3.278801202774_false__1
fwd__2
spdDir_3.3894000053406_3.409893989563_false__1
fwd__2
spdDir_3.3919291496277_3.536333322525_false__1
fwd__2
spdDir_3.3940272331238_3.6579532623291_false__1
fwd__2
spdDir_3.3917193412781_3.9046683311462_false__1
fwd__2
spdDir_3.3872005939484_4.0168089866638_false__1
fwd__2
spdDir_3.3908843994141_4.1254572868347_false__1
fwd__2
spdDir_3.3911888599396_4.2294950485229_false__1
fwd__2
spdDir_3.3907384872437_4.2202839851379_false__1
fwd__2
spdDir_3.3869478702545_4.3205819129944_false__1
fwd__2
spdDir_3.3937392234802_4.3042583465576_false__1
fwd__2
spdDir_3.3964858055115_4.3973317146301_false__1
fwd__2
spdDir_3.3996336460114_4.4956760406494_false__1
fwd__2
spdDir_3.3964476585388_4.5908389091492_false__1
fwd__2
spdDir_3.3973870277405_4.6888566017151_false__1
fwd__2
spdDir_3.3965511322021_4.7855639457703_false__1
fwd__2
spdDir_3.3960857391357_4.8836588859558_false__1
fwd__2
spdDir_3.3926334381104_5.0923743247986_false__1
fwd__2
spdDir_3.3921775817871_5.1860175132751_false__1
fwd__2
spdDir_3.3969693183899_5.1772346496582_false__1
fwd__2
spdDir_3.396000623703_5.2680969238281_false__1
fwd__2
spdDir_3.3939912319183_5.5775437355042_false__1
fwd__2
spdDir_3.3981552124023_5.6723847389221_false__1
fwd__2
spdDir_3.3955965042114_5.7607016563416_false__1
fwd__2
spdDir_3.3976972103119_5.8536715507507_false__1
fwd__2
spdDir_3.4034459590912_5.9453749656677_false__1
fwd__2
spdDir_3.3961353302002_6.01447057724_false__1
fwd__2
spdDir_3.3821568489075_6.0519909858704_false__1
fwd__2
spdDir_3.3832612037659_6.1053676605225_false__1
fwd__2
spdDir_3.4034616947174_6.0990056991577_false__1
fwd__2
spdDir_3.4175896644592_6.1682257652283_false__1
fwd__2
spdDir_3.430356502533_6.1639246940613_false__1
fwd__2
spdDir_3.4264390468597_6.2174115180969_false__1
fwd__2
spdDir_3.4136743545532_6.2696933746338_false__1
fwd__2
spdDir_3.4104566574097_6.3369078636169_false__1
fwd__2
spdDir_3.403915643692_6.2521319389343_false__1
fwd__2
spdDir_3.3794322013855_6.2006282806396_false__1
fwd__2
spdDir_3.3866925239563_6.2710909843445_false__1
fwd__2
spdDir_3.4127614498138_6.3465104103088_false__1
fwd__2
spdDir_3.4184236526489_6.4273796081543_false__1
fwd__2
spdDir_3.4165344238281_6.5196442604065_false__1
fwd__2
spdDir_3.40758061409_6.6010370254517_false__1
fwd__2
spdDir_3.4174399375916_6.5879955291748_false__1
fwd__2
spdDir_3.4233107566833_6.6506128311157_false__1
fwd__2
spdDir_3.4314329624176_6.7216076850891_false__1
fwd__2
spdDir_3.4374225139618_6.7910814285278_false__1
fwd__2
spdDir_3.463399887085_6.8171052932739_false__1
fwd__2
spdDir_3.488737821579_6.8414516448975_false__1
fwd__2
spdDir_3.5069146156311_6.8880858421326_false__1
fwd__2
spdDir_3.5217008590698_6.9454188346863_false__1
fwd__2
spdDir_3.4746375083923_6.7659616470337_false__1
fwd__2
spdDir_3.4480004310608_6.8539276123047_false__1
fwd__2
spdDir_3.4673225879669_6.6928520202637_false__1
fwd__2
spdDir_3.4791007041931_6.7703886032104_false__1
fwd__2
spdDir_3.4988927841187_6.8475456237793_false__1
fwd__2
spdDir_3.5070905685425_7.0104117393494_false__1
fwd__2
spdDir_3.5133385658264_6.7567710876465_false__1
fwd__2
spdDir_3.5526218414307_6.7480139732361_false__1
fwd__2
spdDir_3.5789239406586_6.7874455451965_false__1
fwd__2
spdDir_3.7533893585205_5.8628263473511_false__1
fwd__2
spdDir_3.7798776626587_5.7585072517395_false__1
fwd__2
spdDir_3.7789680957794_5.7500395774841_false__1
fwd__2
spdDir_3.7783184051514_5.7492747306824_false__1
fwd__2
spdDir_3.7712998390198_5.7721290588379_false__1
fwd__2
spdDir_3.7600162029266_5.7460551261902_false__1
fwd__2
spdDir_3.7228600978851_5.565272808075_false__1
fwd__2
spdDir_3.6702909469604_5.2024545669556_false__1
fwd__2
spdDir_3.6583609580994_4.9212460517883_false__1
fwd__2
spdDir_3.6697671413422_4.7693629264832_false__1
fwd__2

 

 

Изменено пользователем Graff46

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Graff46, вот пример, наподобие твоего. Машина едит по вейпоинтам и превращается в машину для ГГ. https://www.youtube.com/watch?v=XXjxQnhGZYM

 

Логика работает в рамках двух пакетов. Вернее трёх. Старт, езда, дестрой. В рамках езды можно использовать один вейпоинт для цели.

 

 

Изменено пользователем Дизель

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти

  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

×