Вопросы по созданию модов

Форум Модификации для игр серии Ex Machina Вопросы по созданию модификаций
Сообщений: 1744 • Страница 69 из 88 1 ... 66676869707172 ... 88
Аватара
Получилось создать автомобиль-караван, который появляется в момент,когда игрок оказывается в определенном месте по примеру из меридиана.
Только вот были замечены странности: в первый неудачный раз автомобиль (я сделал урал) встал посередине маршрута и стал дергаться и ездить взад вперед на месте, потом я решил выйти в главное меню чтобы разобраться и игра вылетела без каких-либо сообщений об ошибке. :sceptic: Пробовал проверять маршрут еще раз и опять же автомобиль вставал в том же месте, правда игра уже не вылетала
Затем я заново в мэппере проложил ему маршрут, и тут он уж доехал до конца :)
И еще кто нибудь может знает как сделать, чтобы этот автомобиль мог отстреливаться от бандитов, а то он на них ноль внимания.

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

__________!///_ _____
_________( @@ )_____
_______ooO-(_)-o o____
Пришёл, увидел, забанил. Ещё вопросы?


Если у Вас нет бана - это не Ваша заслуга - это наше упущение.
Уровень профиля от John
Аватара

"kto" писал(а):

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


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

Никогда не думал, что Ex Machina начнет мне причинять боль...
Аватара

"Rusya_27" писал(а):

"kto" писал(а):

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


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


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

__________!///_ _____
_________( @@ )_____
_______ooO-(_)-o o____
Пришёл, увидел, забанил. Ещё вопросы?


Если у Вас нет бана - это не Ваша заслуга - это наше упущение.
Уровень профиля от John
Аватара
Нет на стрельбу он тоже не реагирует, видимо это особенность скрипта :( , делал я его точно по примеру уже написанных

Никогда не думал, что Ex Machina начнет мне причинять боль...
Аватара
Смотри, я когда делал караван - было 2 варианта - жесткое движение прямо от одной координаты до другой, без объезда препятствий и реакции на окружающий, второй - тот что сейчас в kto MOD. Сверься с моим скриптом ещё раз.
Хотя хрен его знает, может на меридиане и по другому работает...

__________!///_ _____
_________( @@ )_____
_______ooO-(_)-o o____
Пришёл, увидел, забанил. Ещё вопросы?


Если у Вас нет бана - это не Ваша заслуга - это наше упущение.
Уровень профиля от John
Аватара
Скорее всего по другому, я попробовал скопировать триггер трактора около южного и мэппер его даже не обнаружил, хотя... Распиши пожалуйста поподробнее как обещал. Триггер так то не сложный, но повторюсь я не понял где он берет детали маршрута. Просто я тут небольшой мод меридиану делаю и он почти готов вот только мысль с караванами мне не дает покоя - либо их сделать, либо на них забить :)

Никогда не думал, что Ex Machina начнет мне причинять боль...
Аватара
Код: Ctrl+A, Ctrl+C
       <trigger Name="CARAVAN_02_TOWN_TRUCK" active="1">

название триггера, активируется сам при переходе на карту.
Код: Ctrl+A, Ctrl+C
       <event timeout="15.6" eventid="GE_TIME_PERIOD" />

Тип активации - через 15.6 секунд после запроса к триггеру выполнить содержание в <script>

<script>
Код: Ctrl+A, Ctrl+C
       TeamCreateWithWarez("KARAVANTOWN_02", 1003, CVector(getPos("loc_LisaRunOut") ), {"Bug01Caravan"}, nil, 1)

Создать объект с логикой и лутом типа TeamCreateWithWarez, название KARAVANTOWN_02, белонг 1003 в координатах CVector(getPos("loc_LisaRunOut") (искать координаты точки в dynamicscene по названию loc_LisaRunOut). Прототип машины Bug01Caravan, задан в vehicleparts

Код: Ctrl+A, Ctrl+C
       local t = GetEntityByName("KARAVANTOWN_02")

обявляем переменную t и присваеваем к ней наш объект GetEntityByName("KARAVANTOWN_02")

Код: Ctrl+A, Ctrl+C
       if t then
t:StackOpen()
t:SetDestination( CVector(getPos("TheTown_deploy") ))
t:SetDestination( CVector(getPos("TheOilVillage_deploy") ))
t:SetDestination( CVector(getPos("ToR1M2") ))
t:SetDestination( CVector(getPos("TheTown_deploy") ))
t:SetDestination( CVector(getPos("loc_LisaRunOut") ))
t:StackLoop()
t:StackClose()
end

Если это переменная t, то открыть стек и пустить по координатам указаным в теле запроса (координаты как у точки спавна искать по названию в dynamicscene)

Код: Ctrl+A, Ctrl+C
       TActivate( "CARAVAN_02_TOWN_TRUCK_DIE" )

Активировать скрипт, который отслеживает не убит ли караван.

Код: Ctrl+A, Ctrl+C
       TActivate( "CARAVAN_02_TOWN_1" )

Активировать скрипт, который перемещает точку входа в город за караваном, что бы с ним можно было торговать.
Тебе не нужен.

Код: Ctrl+A, Ctrl+C
       trigger:Deactivate()

Деактивировать этот триггер.
Код: Ctrl+A, Ctrl+C
      
</script>
</trigger>

Конец триггера.

Код: Ctrl+A, Ctrl+C
       <trigger Name="CARAVAN_02_TOWN_TRUCK_DIE" active="0">

Активируется другим событием, имя триггера, по умолчанию не активен.

Код: Ctrl+A, Ctrl+C
       <event eventid="GE_OBJECT_DIE" ObjName="KARAVANTOWN_02_vehicle_0" />

условие активации - активируется в случае если объект KARAVANTOWN_02_vehicle_0 погибает (GE_OBJECT_DIE)

Код: Ctrl+A, Ctrl+C
       <script>
TDeactivate( "CARAVAN_02_TOWN_1" )
TDeactivate( "CARAVAN_02_TOWN_2" )
TActivate( "CARAVAN_02_TOWN_HIDE" )
TActivate( "CARAVAN_02_TOWN_TRUCK_WAIT" )
trigger:Deactivate()
</script>
</trigger>

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

Код: Ctrl+A, Ctrl+C
      
<trigger Name="CARAVAN_02_TOWN_1" active="0">
<event timeout="1.5" eventid="GE_TIME_PERIOD" />
<script>
local caravanpos = getObj("KARAVANTOWN_02_vehicle_0"):GetPosition()
getObj("CaravanTown_2_enter"):SetPosition(CVector(caravanpos))
TActivate( "CARAVAN_02_TOWN_2" )
trigger:Deactivate()
</script>
</trigger>
<trigger Name="CARAVAN_02_TOWN_2" active="0">
<event timeout="1.5" eventid="GE_TIME_PERIOD" />
<script>
local caravanpos = getObj("KARAVANTOWN_02_vehicle_0"):GetPosition()
getObj("CaravanTown_2_enter"):SetPosition(CVector(caravanpos))
TActivate( "CARAVAN_02_TOWN_1" )
trigger:Deactivate()
</script>
</trigger>

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

Код: Ctrl+A, Ctrl+C
       <trigger Name="CARAVAN_02_TOWN_HIDE" active="0">
<event timeout="0.1" eventid="GE_TIME_PERIOD" />
<script>
local caravanpos = getObj("Caravan_Hide"):GetPosition()
getObj("CaravanTown_2_enter"):SetPosition(CVector(caravanpos))
trigger:Deactivate()
</script>
</trigger>

Триггер скрывающий точку входа в город, что бы нельзя было торговать с погибшим караваном.
Перемещает вход в город в точку 0,0,0, если мне память не изменяет, посмотри dynamicscene если интересно.

Код: Ctrl+A, Ctrl+C
       <trigger Name="CARAVAN_02_TOWN_TRUCK_WAIT" active="0">

Активируется другим событием, имя триггера, по умолчанию не активен.
Код: Ctrl+A, Ctrl+C
       <event timeout="60.0" eventid="GE_TIME_PERIOD" />

Выполнение через минуту после активации.
Код: Ctrl+A, Ctrl+C
       <script>
TActivate( "CARAVAN_02_TOWN_TRUCK" )
trigger:Deactivate()
</script>
</trigger>
<!-- "kto". Торговый караван 02 конец -->

Активирует первый Триггер.
Деактивирует себя.


Вроде всё довольно подробно, хоть и по памяти)

__________!///_ _____
_________( @@ )_____
_______ooO-(_)-o o____
Пришёл, увидел, забанил. Ещё вопросы?


Если у Вас нет бана - это не Ваша заслуга - это наше упущение.
Уровень профиля от John
Аватара
Спасибо, действительно подробно, но все же уточню: обычно караваны ездят по множеству координат, прописанных в external_paths, а тут у тебя в триггерах их всего лишь несколько, их что-ли достаточно, или есть еще какая-то фишка?
Оффтоп:
Если вдруг мне вздумается выложить свой мод, то куда лучше: в тему "выкладываем свои моды" или же создать в этом разделе свою тему

Никогда не думал, что Ex Machina начнет мне причинять боль...
Аватара
В external_paths прописываются координаты движения для отдельно взятой машины, а SetDestination задаёт движение для всех машин, входящих в караван. Это первое отличие.

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

"Семимахов" писал(а):

В external_paths прописываются координаты движения для отдельно взятой машины, а SetDestination задаёт движение для всех машин, входящих в караван. Это первое отличие.

И все же мне тугому не понятно как мне эти координаты расставить, судя по вашим словам external_paths и SetDestination это два разных способа прокладки маршрута, но по логике раз в external_paths есть координаты, то и в SetDestination они должны быть. Не может же караван ездить по извилистой карте всего по пяти точкам. Или же я неправ?

Никогда не думал, что Ex Machina начнет мне причинять боль...
Аватара
Rusya_27, Не зацикливайся. Машина будет ехать от точки к точке по разрешенному для NPC пасмапу.
То есть если мобам запрещено залазить на гору, то и заспавненная скриптом машина не будет через неё ехать.
То есть маршрут от точки к точке рассчитывается сам исходя из разрешенных пространств. Как правило формируется самая короткая дорога.

У меня был случай, когда караван объезжал Атомную станцию вокруг, вместо того, что бы проехать через проезд. На поверу оказался пассмап закрыт в этом месте. Когда его отредактировал - всё нормально, машина ездит как положено.

__________!///_ _____
_________( @@ )_____
_______ooO-(_)-o o____
Пришёл, увидел, забанил. Ещё вопросы?


Если у Вас нет бана - это не Ваша заслуга - это наше упущение.
Уровень профиля от John
Аватара
До Гадада я не доехал.
Код: Ctrl+A, Ctrl+C
      E Vehicle.cpp[5160]24/01 16:20:11 Error: LoadPoint not found: LP_SSP03L for model 'dozerChassis'
E ComplexPhysicObj.cpp[0542]24/01 16:20:11 Error: couldn't create part for Vehicle id = 2966 prototype = 'ktoCruiser02' part name = CABIN_SIDE_GUN_L, part prototype id = -1, part prototype is NULL
Аватара
Привет.

Возник вопрос.

Прописал свой прототип кузова на основе уже существующего, а именно на основе прототипа кузова под названием "Бокс" ( 3 прототип кузова для автомобиля под названием "Молоковоз" ), собственно изменил ему только слот для оружия, вместо большого поставил маленький.

Возникла проблема, когда я ставлю маленькое оружие в данный слот ( SMALL_GUN ), то пушка не стоит на кузове как ей положено, она стоит внутри кузова ( В текстуре ), как это исправить!?
Аватара

"LookOut" писал(а):

Привет.

Возник вопрос.

Прописал свой прототип кузова на основе уже существующего, а именно на основе прототипа кузова под названием "Бокс" ( 3 прототип кузова для автомобиля под названием "Молоковоз" ), собственно изменил ему только слот для оружия, вместо большого поставил маленький.

Возникла проблема, когда я ставлю маленькое оружие в данный слот ( SMALL_GUN ), то пушка не стоит на кузове как ей положено, она стоит внутри кузова ( В текстуре ), как это исправить!?


очень много раз описывалось.
Поищите.

__________!///_ _____
_________( @@ )_____
_______ooO-(_)-o o____
Пришёл, увидел, забанил. Ещё вопросы?


Если у Вас нет бана - это не Ваша заслуга - это наше упущение.
Уровень профиля от John
Аватара
Привет.

Возник вопрос.

Прописал свой прототип кузова на основе уже существующего, а именно на основе прототипа кузова под названием "Бокс" ( 3 прототип кузова для автомобиля под названием "Молоковоз" ), собственно изменил ему только слот для оружия, вместо большого поставил маленький.

Возникла проблема, когда я ставлю маленькое оружие в данный слот ( SMALL_GUN ), то пушка не стоит на кузове как ей положено, она стоит внутри кузова ( В текстуре ), как это исправить!?

Ребята, ответьте пожалуйста, очень нужно!
Аватара
Возможны ли слоты оружия (и само оружие) нестандартных размеров - 3х3, 2х4, этц.?
Как задаются максимальные углы горизонтальной наводки для оружия?
Аватара

"LookOut" писал(а):

Прописал свой прототип кузова на основе уже существующего, а именно на основе прототипа кузова под названием "Бокс" ( 3 прототип кузова для автомобиля под названием "Молоковоз" ), собственно изменил ему только слот для оружия, вместо большого поставил маленький.

Возникла проблема, когда я ставлю маленькое оружие в данный слот ( SMALL_GUN ), то пушка не стоит на кузове как ей положено, она стоит внутри кузова ( В текстуре ), как это исправить!?

Ребята, ответьте пожалуйста, очень нужно!

===========================================================
Теория:
Пушка, при установке, ищет свой лоадпоинт (прописанный в vehicles.xml) на кабине или кузове. (Смотря куда ставится)
Если на кабине (или кузове) не тот лоадпоинт, который ей прописан (в vehicleparts.xml), она автоматически ставится на лоадпоинт LP_CAB01 (для кабины) или LP_BSK01 (для кузова)
То-есть "внутрь" кузова или кабины.
=============================================================
Практика:
Ошибки могут быть две.
1. Неправильно прописано само оружие (слот в vehicles.xml).
2. Изменён лоадпоинт оружию или кабине/кузову (в vehicles.xml или в vehicleparts.xml)
Чего делать категорически нельзя. Лоадпоинт должен быть тот, что реально (физически) существует на модели кузова/кабины.
====================================================================
Поэтому, задавая такой вопрос, надо сразу подать используемые коды.
1. Настройки вооружения самой машины из vehicles.xml
Спойлер
Код: Ctrl+A, Ctrl+C
       <MainPartDescription id = "CHASSIS" partResourceType = "MOLOKOVOZ_CHASSIS">
<PartDescription id = "CABIN" partResourceType = "MOLOKOVOZ_CABIN" lpName = "LP_CAB01" >
<PartDescription id="CABIN_SMALL_GUN" partResourceType = "SMALL_GUN" lpName = "LP_SML01" />
</PartDescription>
<PartDescription id = "BASKET" partResourceType="MOLOKOVOZ_BASKET" lpName = "LP_BSK01" >
<PartDescription id="BASKET_SMALL_GUN_0" partResourceType = "SMALL_GUN" lpName = "LP_SML01" />
<PartDescription id="BASKET_BIG_GUN_0" partResourceType = "BIG_GUN" lpName = "LP_BIG01" />
<PartDescription id="BASKET_SPECIAL_WEAPON" partResourceType = "SPECIAL_WEAPON"/>
</PartDescription>
</MainPartDescription>

2. Настройки вооружения в кузове или кабине из vehicles.xml
Спойлер
Код: Ctrl+A, Ctrl+C
       LoadPoints = "LP_BIG01" >

<RepositoryDescription
RepositorySize = "6 8">

<Slot
Name = "BASKET_BIG_GUN_0"
Pos = "9 1"
/>

</RepositoryDescription>

Без этих данных однозначно ответить на вопрос сложно. :(

"AndrewN" писал(а):

Возможны ли слоты оружия (и само оружие) нестандартных размеров - 3х3, 2х4, этц.?


Естественно, у Танка 4х7, у Боссов они рамок не имеют, можно создать и свои.
Файл data\gamedata\resourcetypes.xml
Спойлер
Код: Ctrl+A, Ctrl+C
       <Type Name="GUN">
<Type Name="BIG_GUN" geomsize="2 3" />
<Type Name="SMALL_GUN" geomsize="2 2" />
<Type Name="SIDE_GUN" geomsize="3 2" />
<Type Name="GIANT_GUN" geomsize="3 4" />
<Type Name="SPECIAL_WEAPON" geomsize="2 1" />
<Type Name="TANK_GUN" geomsize="4 7" />

<Type Name="BOSS03_GUN" />
<Type Name="BOSS04_DRONE_GUN" />
</Type>
Это Махиновские, в Меридиане и Аркаде их ещё больше.

"AndrewN" писал(а):

Как задаются максимальные углы горизонтальной наводки для оружия?

В Майе, при создании модели, на этапе настройки лоадпоинтов.
Спойлер

Третий Закон: Любая достаточно развитая технология неотличима от магии. (Кларк)
Аватара

"Rusya_27" писал(а):

И все же мне тугому не понятно как мне эти координаты расставить


Сначала их нужно получить. Для этого надо с помощью своей машины проехать по желаемому маршруту и считать координаты в точках между которыми допустимо, чтобы грузовик ехал по прямой. То есть, доезжаешь до нужной точки, открываешь консоль и жмёшь plp() - координаты текущей точки записываются в лог exmachina.log. Там появляется строка вида
Код: Ctrl+A, Ctrl+C
      I console_string[0035]24/01 22:51:07 SetPosition( CVector(3381.334, 364.333, 3195.505))

Координаты задаёт CVector(). Первая и последняя — это координаты машины на поверхности, средняя — высота. Высота для маршрута несущественна, можно там поставить даже ноль.

"Rusya_27" писал(а):

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


В обоих способах указываются одни и те же координаты.

В случае external_paths координаты записываются в файл external_paths.xml. Берутся первая и последняя координаты из CVector(), последовательность такая же. Вновь добавленному пути даётся имя.

В случае SetDestination координаты записываются в стек команды машин ака каравана.
Скажем, есть в игре караван с именем «wild_cats». Тогда:

[list=1][*]Получаем указатель на караван и записываем в локальную переменную, скажем, wc:
Код: Ctrl+A, Ctrl+C
      local wc=getObj("wild_cats")
[/*:m]
[*]Заносим в стек каравана координаты движения:
Код: Ctrl+A, Ctrl+C
      if wc then
wc:StackOpen()
wc:SetDestination( CVector(<координаты точки 1>) )
wc:SetDestination( CVector(<координаты точки 2>) )
...
wc:SetDestination( CVector(<координаты точки n>) )
wc:StackLoop()
wc:StackClose()
end
[/*:m][/list:o]

StackOpen() - открывает стек, StackClose() - закрывает стек, а StackLoop() зацикливает стек. Когда стек зациклен, то караван, достигнув последней точки из буфера стека, продолжает двигаться к первой точке, и так — по кругу. Если стек не зациклен, то есть отсутствует StackLoop(), то в последней точке караван просто останавливается. CVector() берётся из лога один в один.

"Rusya_27" писал(а):

Не может же караван ездить по извилистой карте всего по пяти точкам. Или же я неправ?

Может даже по двум. В обеих способах можно задать только начальную и конечную точку маршрута. В этом случае машина будет ехать также, как и караваны в игре — через горы и овраги. )
Аватара
Код: Ctrl+A, Ctrl+C
      E Vehicle.cpp[5160]24/01 16:20:11 Error: LoadPoint not found: LP_SSP03L for model 'dozerChassis'
E ComplexPhysicObj.cpp[0542]24/01 16:20:11 Error: couldn't create part for Vehicle id = 2966 prototype = 'ktoCruiser02' part name = CABIN_SIDE_GUN_L, part prototype id = -1, part prototype is NULL


Как лечить-то? Понимаю, достал уже...)
Сообщений: 1744 • Страница 69 из 88 1 ... 66676869707172 ... 88