Перейти к содержанию

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

 
 

Pavel2000 флаги контролируют, может ли объект выходит в онлайн и выходить в оффлайн. То есть чтобы арт исчез, нужно поставить флаги can switch online = false и can switch offline = true (ставить через скрипт, либо через СДК можно заранее задать на некоторых типах объектов). Чтобы появился, после этого по условию выставлять can switch online = true. По идее этого достаточно. Если оба флага ставить в false, то предмет просто останется в состоянии, в котором он был в последний раз, навсегда.

С предметами это 100% работает, в моем последнем моде я так спавню объект сканера, например. Но с некоторыми типами вещей это не работает или работает криво, например с аномалиями (вывод аномалии в онлайн через такой скрипт сработает только после сейв-лоада). А вертолет, например, по умолчанию имеет флаг can switch offline = false (то есть он всегда в онлайн) и его обязательно нужно выводить в true. Кажется некоторые предметы еще вообще не делают проверки на расстояние (собственно, вертолет вроде к ним тоже относится), то есть их выход в онлайн и оффлайн всегда контролируется только вручную через флаги. Для них нужно, чтобы один из флагов был true, а другой false, иначе они не перейдут в другое состояние. Так что если просто сдеать can switch online = true на артефакт не работает, то можно одновременно с этим попробовать сделать can switch offline = false. 

Сами скриптовые команды используются так:

alife():set_switch_online (obj_id, false)

alife():set_switch_offline (obj_id, true)

 

  • Лайк 1

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


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

Pavel2000 Лучше спавнить объект скриптом, чем играться переключением. Тем боле, что чем меньше объектов в игре тем лучше для производительности.


RomaL23 Каких именно объектов не наблюдаете: статической геометрии или же спавн объектов?

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

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

denis2000 на статической геометрии скорее всего. Я объекты спавнил просто и всё через вкладку objects

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


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

Лучше спавнить объект скриптом

Я пробовал через логику рестриктора spawn_object использовать но почему-то некоторые предметы проваливаются под текстуры(пробовал вейпоинты поднять непомогло).


Дополнено 25 минуты спустя
10 часов назад, denis2000 сказал:

Тем боле, что чем меньше объектов в игре тем лучше для производительности

Это то понятно но как я понял, другого способа как заспавнить закреплённый в пространстве объект нету

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


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

RomaL23 Значит по стандарту для статической геометрии:
1. Спавн в редакторе
2. Привязка к секторам
3. Билд локации
4. Компиляция локации
5. Перенос скомпилированной локации в папу игры.


Pavel2000 Тогда задача понятнее, для этого применяют спавн при помощи SDK и story_ids (наследие ТЧ и ЧН):
1. Объект спавнится и точно позиционируется в SDK.
2. Ему в настройках назначается story_ids из внесенных в файл game_story_ids.ltx
3. Также эти объекты вносятся в файл game_spawn_story_ids.ltx
4. В начале игры удаляем объекты из списка файла game_spawn_story_ids.ltx
5. По мере необходимости спавним их командой alife():create(alife():spawn_id(ID))

Смысл всей этой движухи назначить динамическому объекту конкретный идентификатор (16-битный цифровой параметр с которым движок и работает), а не позволить ему выбрать рандомный свободный. Тогда зная его можно манипулировать объектом как нам нужно.
 

Изменено пользователем denis2000
  • Мастер! 2
  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

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

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

Изменено пользователем Policai
  • Мастер! 1

Группа мода в VK
Мод делался и тестировался на железе
i5-11400, 32Гб ОЗУ, Radeon RX580  Разрешение 2560 х 1440.  ВСЕ на максималке

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


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

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

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


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

denis2000 

--game_story_ids.ltx
[story_ids]
  1 = "af_mahovik_1"
--game_spawn_story_ids.ltx
[spawn_story_ids]
1 = af_mahovik_1

[story_ids_spawn]
af_mahovik_1 = 1
Спойлер

[1437]
; cse_abstract properties
section_name = af_mahovik
name = af_mahovik_1
position = 105.39070892334,-2.434730052948,183.659927368164
direction = -0.000326404260704294,1.96891409426359e-011,4.87808392790612e-005

; cse_alife_object properties
game_vertex_id = 0
distance = 0
level_vertex_id = 293223
object_flags = 0xffffff3f
custom_data = <<END
[physics_common]
fixed_bones = link
[story_object]
story_id = af_mahovik_1
END

story_id = 1
spawn_story_id = 1

; cse_visual properties
visual_name = dynamics\arts\af_mahovik

; cse_alife_item properties
condition = 1
upgrades = 

 

Спойлер

function delete_object_by_story_id(actor, obj, p)
	if p then
		local story_obj_id
		for k,v in pairs( p ) do
			story_obj_id = get_story_object_id( v )
			if story_obj_id then
				local se_obj = alife():object( story_obj_id )
				if se_obj then
					alife():release( se_obj, true )
				end
			end
		end
	end
end

function spawn_object_by_sid(actor, obj, p)
	if p then
		local ini = ini_file( "game_spawn_story_ids.ltx" )
		for k,v in pairs( p ) do
			local spawn_story = ini:r_string( "story_ids_spawn" , v )
			local section_number = alife():spawn_id( tonumber( spawn_story ) )
			alife():create( section_number )
		end
	end
end

 

Спойлер

[logic]
active = sr_idle@wait

[sr_idle@wait]
on_info = sr_idle@1 %=delete_object_by_story_id(af_mahovik_1)%

[sr_idle@1]
on_info = {=actor_has_item(af_mahovik)} sr_idle@2 %=actor_punch =spawn_object_by_sid(af_mahovik_1) =play_sound(af_hit_actor)%

 

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

Спойлер

Line          : 30
Description   : Specified story object is already in the Story registry!
 

т.е получается у меня не получается его удалить... или я тупой и чего то не понимаю

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

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


Ссылка на сообщение
Поделиться на другие сайты
 
40 минут назад, RomaL23 сказал:

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

При компиляции на драфте прозрачность не работает... поднимайте качество компиляции..


Дополнено 5 минуты спустя

Pavel2000  Не та функция. насколько понимаю выдернул функцию аномалии на свалке...  а для артефактов функция есть только в крайней версии... Я честно не помню, есть две версии мода, одна тут эпилог, а вторая в свободном доступе отсутствует, она только  у друзей, а вот в какой версии Денис мне написал функцию я не помню..(((

 function switch_artefact_visibility

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

Группа мода в VK
Мод делался и тестировался на железе
i5-11400, 32Гб ОЗУ, Radeon RX580  Разрешение 2560 х 1440.  ВСЕ на максималке

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


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

у меня гемдата от Dead City Special Release

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


Ссылка на сообщение
Поделиться на другие сайты
 
2 минуты назад, Pavel2000 сказал:

у меня гемдата от Dead City Special Release

Там точно этого нету

 


Группа мода в VK
Мод делался и тестировался на железе
i5-11400, 32Гб ОЗУ, Radeon RX580  Разрешение 2560 х 1440.  ВСЕ на максималке

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


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

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

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


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

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


Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

или я тупой и чего то не понимаю

У меня получилось 

function delete_af()
    local lc = alife():story_object(story_ids.af_mahovik_1)
    alife():release(lc, true)
end

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

 

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


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

denis2000 Уже 2 час компилирую на high качестве армейские склады... надеюсь не напрасно

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


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

Pavel2000 Я так понял у тебя проблема что айтем падает сквозь текстуры на аи сетку? В кастомных движках (OpenXray, IX-Ray, OGSR точно есть, за другие не скажу) можно в секции айтема прописать use_ai_locations = false и тогда он будет игнорить аи сетку и будет лежать там где заспавнился. В ванили не могу сказать, есть такое или нет.

  • Лайк 1

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


Ссылка на сообщение
Поделиться на другие сайты
 
9 минут назад, StrawFlux сказал:

Я так понял у тебя проблема что айтем падает сквозь текстуры на аи сетку? В кастомных движках (OpenXray, IX-Ray, OGSR точно есть, за другие не скажу) можно в секции айтема прописать use_ai_locations = false и тогда он будет игнорить аи сетку и будет лежать там где заспавнился. В ванили не могу сказать, есть такое или нет.

Есть это и в оригинале, только работает если в сдк ставишь. А при спавне  по скрипту игнорируется, всё равно падает на аи сетку.


Дополнено 1 минуту спустя
21 минуту назад, RomaL23 сказал:

denis2000 Уже 2 час компилирую на high качестве армейские склады... надеюсь не напрасно

До суток компилится, зависит от наполнения локации и мощности компа...


Группа мода в VK
Мод делался и тестировался на железе
i5-11400, 32Гб ОЗУ, Radeon RX580  Разрешение 2560 х 1440.  ВСЕ на максималке

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


Ссылка на сообщение
Поделиться на другие сайты
 
4 минуты назад, Policai сказал:

А при спавне  по скрипту игнорируется, всё равно падает на аи сетку.

А если по прямым координатам спавнить, а не через вейпоинт, то тоже будет такое поведение? Если да, то тогда реально есть резон заранее в СДК объект поставить и включать\выключать его онлайн-статус.

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


Ссылка на сообщение
Поделиться на другие сайты
 
16 минут назад, Mawrak сказал:

А если по прямым координатам спавнить, а не через вейпоинт, то тоже будет такое поведение? Если да, то тогда реально есть резон заранее в СДК объект поставить и включать\выключать его онлайн-статус.

Да этот вопрос впринципе решён уже, именно так,  в сдк ставить и отключать\включать...  так у меня и сделано, Денис думаю подскажет как правильно функцию написать, просто я лично по скриптовой части дубль пусто...))) И всё что касается скриптов прошу сделать Дениса, или Диму (makdm). Даже сейчас, эта функция есть в скриптах у меня, но сала в черепе не хватит найти где она..))) Меня приспичило так как нужно было установить штурвал в правильном положении и под правильным углом, и там где невозможно поставить аи сетку...


Дополнено 3 минуты спустя
1 час назад, Pavel2000 сказал:

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

У меня логика прописана так :

 

Спойлер

[logic]
active = sr_idle

[sr_idle]
on_info = sr_idle@2 %=switch_artefact_visibility(fir_af_shturval_id:false)%

[sr_idle@2]
on_info1 = {=actor_in_zone(fir_shturval_done_sr) +fir_search_shron_4_done} sr_idle@3 %+fir_art_shturval_done%

[sr_idle@3]
on_info2 = {+fir_art_shturval_done} sr_idle@nil %=switch_artefact_visibility(fir_af_shturval_id:true)%

[sr_idle@nil]
 

 

  • Лайк 1
  • Дурка 1

Группа мода в VK
Мод делался и тестировался на железе
i5-11400, 32Гб ОЗУ, Radeon RX580  Разрешение 2560 х 1440.  ВСЕ на максималке

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


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

В ЗП симуляционные НПС могут умереть в оффлайн-стычке, так? Насколько я знаю, могут, но хочу удостовериться. А то в ЗП как оказалось много всего вырезали, например перемещения НПС между локациями.

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


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

Policai скомпилил, потом сетку скомпилил но вылет стабильный, не может найти АИ сетку, хотя я ее компилил и кидал в папку с локацией, level.ai

. Пробовал ее в разном качестве компилить, толку ноль. Займусь через недельку, щас уже голова болит от этого 

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


Ссылка на сообщение
Поделиться на другие сайты
 
41 минуту назад, RomaL23 сказал:

Policai скомпилил, потом сетку скомпилил но вылет стабильный, не может найти АИ сетку, хотя я ее компилил и кидал в папку с локацией, level.ai

. Пробовал ее в разном качестве компилить, толку ноль. Займусь через недельку, щас уже голова болит от этого 

Что и куда Вы кидали???? Зачем???  Всё что Вы компилили изначально лежит в куче, в папке с локой, в игру надо перекидывать всю локу,  а старую папку с локой убирать.
Так же как  и олспавн, нужно кидать новой , скомпиленный с этой сеткой, старый олспавн будет вылетать именно с жалобой на не совпадающую аи сетку. Да и при вылете прикладывают лог.

Изменено пользователем Policai
  • Жму руку 1

Группа мода в VK
Мод делался и тестировался на железе
i5-11400, 32Гб ОЗУ, Radeon RX580  Разрешение 2560 х 1440.  ВСЕ на максималке

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


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

Насколько я знаю, могут, но хочу удостовериться.

А насколько я помню в оригинале - нет. Сквады в оффлайне никак не взаимодействуют и лишь при выходе в онлайн враги начнут бой и пока к ним подойдете могут нескольких положить.
Хотите удостовериться - лучше всего проверить это в игре.

Изменено пользователем denis2000
  • Спасибо 1

Путь во мгле. Связь времен.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)

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


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

Policai спасибо за ответ, я просто не думал что алл спавн тоже надо компилить отдельно.

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 29.11.2024 в 19:59, Mawrak сказал:

В ЗП симуляционные НПС могут умереть в оффлайн-стычке, так? Насколько я знаю, могут, но хочу удостовериться. А то в ЗП как оказалось много всего вырезали, например перемещения НПС между локациями.

В оффлайне симуляции нет точно. А перемещения НПС между локациями можно попробовать восстановить, если сделать переходы для ИИ между локациями (как в ТЧ и ЧН задаются переходы для актора и для НПС и мобов) В ЗП переходы только для актора. По аналогии с ЧН добавить переходы и добавить, допустим на Затон смарты для долга и Свободы и проверить. Должно получиться.


Дополнено 36 минуты спустя
В 29.11.2024 в 19:59, Mawrak сказал:

перемещения НПС между локациями

Вот тебе для примера.

Спойлер

 

Затон. Переход для актора

1718169107_.jpg.50e6dcdd2e2a7277024bd334bee977b9.jpgКордон ТЧ переход для актора.

 

814911249_1.jpg.fb02bc93db666dd6104fd04f60bb9c3d.jpg

Кордон ТЧ переход для НПС и мобов

1781948330_2.jpg.e27200cb65099eff2f8e271d9a2052e4.jpg

Безымянный1.jpg

Для актора переходы отличаются потому, что В ТЧ можно переходить самому через диалоговое окно. Хотя на ЗП я Переходы для актора с диалоговым окном тоже делал, они стопудово работают.

 

 

Изменено пользователем sumrak6835
  • Спасибо 1

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   1 пользователь онлайн