Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Спавн и логика
denis2000Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Спавн и логика

Создание объектов на локации и логика поведения этих объектов

Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7

Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML
[cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл:
1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R])
2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx"
3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо)
Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#"
Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]

[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти?
Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда.
Для того чтоб найти LOG необходимо зайти вот сюда:

В Win хр лог находится:

C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs

Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.

В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs

Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка:
...
$app_data_root$ = true | false| $fs_root$| users\
(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx)
...
$logs$ = true| false| $app_data_root$| logs\
(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи)
...
[/cut][cut=Получение более подробной информации о вылете (ХОВАН)]
Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...)
Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так:
Code
function abort(fmt, ...)
                    local reason = string.format(fmt, ...)
                    error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Code
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil)

Второй:
Code
Expression    : 0
Function      : ErrorLog
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
Line          : 49
Description   : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic'

[/cut]


Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Вс, 06.04.2014, 12:33 | Сообщение # 856
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV, Глобально причина в том что эта логика не применяется со времен ЧН (да и там была задействована в тестовом режиме на вырезанной локации Генераторы: configs\scripts\generator\gen_snorks_logic.ltx). Придется исправлять ситуацию: переносить скрипты и править существующие.

Цитата NIV ()
о-первых, происходит вылет

Причина в отсутствии скрипта mob_sound.script. Попробуйте скопировать его из ЧН.

В скрипте заявлено три параметра для анимации:
"anim" - строка, видимо набор анимаций тела,
"anim_movement" - бинарный параметр, определяет двигается ли объект в координатах локации в момент анимации,
"anim_head" - набор анимаций головы.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Ср, 09.04.2014, 06:29 | Сообщение # 857
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

denis2000, в ЧН есть интересный файл mob_trader.script, там прописаны анимации торговца. Возможно надо аналогично добавить анимации в mob_remark? Пробую, пока безуспешно.

Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
 
denis2000Дата: Чт, 10.04.2014, 11:03 | Сообщение # 858
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV, По крайней мере можете использовать схему mob_walker, и прописать анимации на точках look - это работает, но только количество ментал-стейт ограничено: attack; capture_prepare; danger; eat; free; lie_idle; look_around; panic; rest; sit_idle; sleep; stand_idle; turn.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Пн, 14.04.2014, 23:25 | Сообщение # 859
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. Каким образом в рестрикторе можно организовать эффект удара по голове и потерю сознания у ГГ?
 
FantomICWДата: Пн, 14.04.2014, 23:56 | Сообщение # 860
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

sergej5500, Сергей, добрый вечер. Вариантов много. Я могу сбросить несколько различных вариаций подобного действа, но было бы лучше определится более точно с эффектом...Рекомендую просмотреть с помощью СГМовского ui_mod_elements.effect_player(), который можно разблокировать и запустить через ui_main_menu.script.


 
sergej5500Дата: Вт, 15.04.2014, 00:42 | Сообщение # 861
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. Сделал НПС с логикой.

[cut=Логика][logic]
active = move@clofelin

[move@clofelin]
meet = meet
move_stop_on_talk = true

[meet]
abuse = true
use = {=see_actor =dist_to_actor_le(8)} self,false
allow_break = false
meet_on_talking = false
trade_enable = false[/cut]

При приближении к ГГ он должен завести разговор. Это все работает. Но данный НПС с кастом-датой должен спавниться в составе сквадов симуляционных сталкеров. Спавн проходит нормально. Но НПС почему-то не хочет двигаться вместе со сквадом. Отделяется от него.

Есть мысль сделать сталкеров-"клофелинщиков". После начала диалога выдается инфопоршень. ГГ телепортируется на край локации без оружия и снаряги. Это все работает. Чтобы "клофелинщика" было труднее выявить, хочу спавнить их в составе симуляционных сквадов. Для них сделан специальный профиль с кастом-датой для того, чтобы они заводили разговор первыми. Но "клофелинщики" отделяются от сквадов. Можно это как-то исправить? Или есть другие варианты логики, не xr_move?

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

FantomICW,
Глеб, добрый вечер. Хотелось бы после определенной инфопорции получить удар прикладом, темный экран. Затем пошатывание и покачивание ГГ.

В Spectrum Project в первом-же диалоге, ГГ получает по морде со всеми последствиями. denis2000
 
ДовакинДата: Сб, 19.04.2014, 10:52 | Сообщение # 862
Командир д.г. быстрого реагирования
Пользователи
Сообщений: 688
Награды: 14
Репутация: [ 552 ]

Здравствуйте. При создании смарта в деревне новичков на Кордоне, НПС не хотят занимать анимпоинты. Как решить эту проблему?

[cut noguest=Алл.Спавн]
[20003]
; cse_abstract properties
section_name = smart_terrain
name = esc_a1_smart
position = -206.718155,-19.708115,-140.413208
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 934
distance = 0.5
level_vertex_id = 25
object_flags = 0xffffff3e
custom_data = <<END
[story_object]
story_id = esc_a1_smart

[smart_terrain]
cfg = scripts\escape\smart\esc_a1_smart.ltx
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 2.50760293006897

; cse_alife_space_restrictor properties
restrictor_type = 3

; se_smart_terrain properties

[20004]
; cse_abstract properties
section_name = camp_zone
name = esc_a1_smart_camp
position = -206.718155,-19.708115,-140.413208
direction = -0.0193850006908178,-0.000144000005093403,-0.00741699989885092

; cse_alife_object properties
game_vertex_id = 934
distance = 0
level_vertex_id = 25
object_flags = 0xffffff3e
custom_data = <<END
[camp]
cfg = scripts\camp.ltx
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 5.84479999542236

; cse_alife_space_restrictor properties
restrictor_type = 3

[20005]
; cse_abstract properties
section_name = smart_cover
name = esc_a1_smart_animpoint_1
position = -209.265015,-19.897654,-138.400360
direction = 0,0,0
; cse_alife_object properties
game_vertex_id = 934
distance = 0
level_vertex_id = 25
object_flags = 0xffffffbf
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 2
; cse_smart_cover properties
cse_smart_cover__unk1_sz = animpoint_sit_low
cse_smart_cover__unk2_f32 = 0
enter_min_enemy_distance = 15
exit_min_enemy_distance = 10
; se_smart_cover properties
last_description = animpoint_sit_low
loopholes = animpoint_sit_low,1

[20006]
; cse_abstract properties
section_name = smart_cover
name = esc_a1_smart_animpoint_2
position = -204.966522,-19.997036,-139.685226
direction = 0,0,0
; cse_alife_object properties
game_vertex_id = 934
distance = 0
level_vertex_id = 25
object_flags = 0xffffffbf
; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 0,0,0
shape0:radius = 2
; cse_smart_cover properties
cse_smart_cover__unk1_sz = animpoint_sit_low
cse_smart_cover__unk2_f32 = 0
enter_min_enemy_distance = 15
exit_min_enemy_distance = 10
; se_smart_cover properties
last_description = animpoint_sit_low
loopholes = animpoint_sit_low,1
[/cut]

[cut noguest=Логика Смарта]
[smart_terrain];esc_a1_smart
squad_id = 1
max_population = 2
respawn_params = respawn@esc_a1

[respawn@esc_a1]
sim_stalker

[sim_stalker]
spawn_squads = stalker_sim_squad_novice
spawn_num = 2

[animpoint@esc_a1_smart_animpoint]
cover_name = esc_a1_smart_animpoint_1, esc_a1_smart_animpoint_2
[/cut]


 
NIVДата: Сб, 19.04.2014, 11:36 | Сообщение # 863
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Довакин, хотелось бы уточнить - для какой игры Вы пишете? ЗП, ТЧ? С виду всё правильно, но для того, чтобы точно не было ошибок, лучше скопировать существующие секции анимпойнтов и менять названия и координаты.

В вашем примере я ни в одной секции не вижу параметров version и script_version.
Так, для ЗП:
Код
version = 128
script_version = 12

Для ТЧ:
Код
version = 118
script_version = 6

Для ЧН:
Код
version = 124
script_version = 8


Это может быть важно.

Также для ЗП не обязательно писать в конфиге [animpoint@esc_a1_smart_animpoint], тем более, что на эту строку вы нигде не ссылаетесь.

Ну и конечно, у НПС target_smart должен совпадать с вашим (esc_a1_smart)


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"

Сообщение отредактировал NIV - Сб, 19.04.2014, 11:38
 
sergej5500Дата: Ср, 23.04.2014, 23:03 | Сообщение # 864
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. Написал рестриктор.

[cut=Логика][logic]
active = sr_idle@1

[sr_idle@1]
on_info = sr_idle@2

[sr_idle@2]
on_info = sr_idle@3

[sr_idle@3]
on_info = sr_idle@1 %=исполняемая функция%[/cut]

Исполняемая ф-ия должна вызываться регулярно в процессе игры. Вопросы такие. Как часто проверяются секции рестриктора? Сколько раз в секунду будет вызываться ф-ия при трехсекционной логике?

Еще интересует такой момент. Допустим, в рестрикторе есть таймер и ф-ия вызывается один раз в секунду реального времени. Возможны ли сбои из-за эффекта Киборга? В СГМ довольно часто Киборг "зависает" из-за переполнения движкового таймера.
 
denis2000Дата: Чт, 24.04.2014, 11:23 | Сообщение # 865
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата sergej5500 ()
Как часто проверяются секции рестриктора?

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

От 5-9 раз в секунду до одного раза в несколько секунд. Причем период сильно зависит как от загруженности скриптового движка, так и от ... расстояния до рестриктора.
Цитата sergej5500 ()
из-за переполнения движкового таймера

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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
alex_xp_77Дата: Сб, 26.04.2014, 17:33 | Сообщение # 866
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

Добрый день всем, у меня вопрос, в самом sdk есть, кошка, химера, излом, скажите как отразить их в панели сдк, у меня их нет в панели, что бы заспавнить, обьясните пожалуйста, вот такие файлы есть: http://SSMaker.ru/b442340e/ чего то наверно не хватает для спавна этих мутантов, пытался ковертировать в object, после попытался заспавнить, но костом дата отсутствует, (это где логику в sdk прописывать), вот тут:http://SSMaker.ru/e911ea50/ , сама модель в ogf текстуры есть тут: http://SSMaker.ru/a5e1fe8e/ ,но почему то не вижу ее, помогите пожалуста разобраться!!Заранее благодарен за чью либо помощь в столь нелегком вопросе!!!(прошу прощения администраторов если не по теме)

 
denis2000Дата: Сб, 26.04.2014, 19:10 | Сообщение # 867
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

alex_xp_77, Добавьте спавн-секции этих мутантов в gamedata SDK.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
alex_xp_77Дата: Сб, 26.04.2014, 20:27 | Сообщение # 868
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

Денис вот тут конфиг химеры, не могли ли вы поточнее обьяснить, что я должен поменять??Будьте добры разясните так как сам я не пойму, что нужно изменить в строчках что бы спавнился монстр на террейне :http://SSMaker.ru/747bd994/

 
denis2000Дата: Сб, 26.04.2014, 21:02 | Сообщение # 869
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

alex_xp_77, Для начала раскоментировать параметр $spawn (который кстати и определяет в структуре SDK, где находится химера в списке)

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
alex_xp_77Дата: Сб, 26.04.2014, 22:12 | Сообщение # 870
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

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

Эти две строчки означают, что вы раскоментировали параметр, а в списке ее все равно нет? denis2000

В списке нет, но я ничего не трогал, все как и было!!

Как потрогаете, сообщите о результате. denis2000




Сообщение отредактировал alex_xp_77 - Сб, 26.04.2014, 21:51
 
Поиск: