Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


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


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

Цитата denis2000 ()
Флаг то нулевой не будет работать, единицу ставьте

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


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

Цитата alex_xp_77 ()
кроме сидора, которого посадили на стул и все, он так и спавнится ...сидя!

У Сидоровича уникальный скелет и соответственно анимации.

Штатные анимационные состояния описаны в файле state_lib.script берите какие нравятся, каких нет придется самим добавить.


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

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

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

Вопрос, какой функцией, вызываемой из логики рестриктора, можно воспользоваться, что убить ГГ радиацией? Игрока надо убивать в любом костюме и с любыми читерскими артефактами.
 
denis2000Дата: Сб, 08.11.2014, 10:15 | Сообщение # 1024
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Поможет %=kill_actor%

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ДизельДата: Сб, 08.11.2014, 10:48 | Сообщение # 1025
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

denis2000, вопросы такие, хотя я догадываюсь в чём ответ:

Почему самолёты сделанные по классу вертолёта, летают иногда боком, с креном? Это быват редко, но бывает.

Почему автомобили, заспауненные на локации не на север, меняют заднюю на переднюю передачу?

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

Еще вопрос, зачем в ЗП вырезали анимацию ГГ в авто? Тут опять dll покоцана, забыли прописать команду?

Разрабы убили ТЧ наработки в ЗП, жаль. Чем дальше в лес, тем ближе вылез.


andreyholkin

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

Цитата Дизель ()
Почему самолёты сделанные по классу вертолёта, летают иногда боком, с креном?

Правь скрипты управляющие вертолетом, это там.

На остальные вопросы ответить не могу.


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

Доброго времени суток уважаемые форумчане, у меня возник вопрос по спавну, дело в том что при убийстве любого нпс в игре он, или оно, больше не спавнится, у меня sdk04 к сожалению , спавн у 04 не встроенн, в отличии от более поздних версий (05)-(06), я уже задавал вопрос, но информация крайне скудна, и для новичка спавна, просто нет шансов разобраться самостоятельно, просьба у более грамотных коллег более подробно описать, как спавнить через sdk!!! Всьма благодарен за любую помощь!!

 
ДизельДата: Вт, 11.11.2014, 03:34 | Сообщение # 1028
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

alex_xp_77, спаунить можно к любой заковырке типа вей-поинт, граф-поинт. Только надо рестриктор заспаунить еще на событие и типа там ссылку на логику указать, а в логике написать примерно так:

[logic]
active = sr_idle@game_start

[sr_idle@game_start]
on_info = sr_idle@timer % =spawn_object(avto_lider_post:avto_lider_post_spawn) %

[sr_idle@timer]
on_game_timer = 40 | sr_idle@nil

[sr_idle@nil]

Может я туплю и забыл как в ТЧ работает это, но в ЗП так точно можно.

=spawn_object(avto_lider_post:avto_lider_post_spawn)

в скобках (название перса : вейпоинт)


andreyholkin
 
denis2000Дата: Вт, 11.11.2014, 07:29 | Сообщение # 1029
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

alex_xp_77, А чем не устраивают видеоуроки Непряхина?

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

Цитата denis2000 ()
А чем не устраивают видеоуроки Непряхина?

Доброго дня Денис!! У Андрея(genior) к сожалению именно по спавну, что мне надо, нету, я с ним лично занят созданием мода,точнее он мне помогает (технический директор проекта) и он говорит что не знаком системой спавна, можно делать по нескольким методикам, кстати урок называется создание спавна, но имеется в виду, создание дефолтной логике нпс, look, walk, sleep, и тд. и тп. Он мне скидывал создание спавна на тетради(текстовый урок) но он очень сложен, и по ходу не для sdk, но попробую делать по методу Дизеля, уж больно он подробно разжевал, думаю попыхтеть и все получится!!!




Сообщение отредактировал alex_xp_77 - Вт, 11.11.2014, 13:04
 
denis2000Дата: Вт, 11.11.2014, 21:42 | Сообщение # 1031
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

alex_xp_77, То есть то что происходит в уроке "Спавн элементы на локации. Часть 1" начиная с 4:45 это не спавн? Тогда почему в названии урока затесалось слово спавн - это досадная ошибка?

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

Ну да согласен есть елементы спавна, но все на уровне invertori_box, но разница ощутимая между ящиком и нпс, я же писал что в спавне чайник уважаемый Денис, поэтому и просил как именно заспавнить нпс, но вроде как получил подробный ответ, хотя если подумать, наверное, это мое мнение, то поменять логику в спавн_рестикторе, и он подойдет и для нпс!!Очень благодарен вам!!

Добавлено (14.11.2014, 22:06)
---------------------------------------------
wacko Доброго вечера , подскажите че я упустил, видео тут http://www.youtube.com/watch?v....n=share Почему нпс на корточках спит


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

Цитата alex_xp_77 ()
подскажите че я упустил

Упустили прочитать и выполнить последний параграф шапки темы.


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

Добрый день.

Написал рестриктор управления зоной уборки оружия для СГМ 2.1.

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

[sr_universal@1]
scheme_type = noweap_zone
noweap_zone_cond = true
on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_idle@end
on_info2 = {+esc_b1_monster_attack_task_start} sr_idle@esc_b1_monster_attack_task

[sr_idle@esc_b1_monster_attack_task]
on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_idle@end
on_info2 = {+esc_b1_monster_attack_task_final} sr_universal@2
on_info3 = {+esc_b1_monster_attack_task_fail} sr_universal@2

[sr_universal@2]
scheme_type = noweap_zone
noweap_zone_cond = true
on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_idle@end

[sr_idle@end][/cut]

После начала квеста esc_b1_monster_attack_task_start рестриктор переключается на 2-ю секцию с глюком. На первой секции уборка оружия работает отлично. После перехода на 2-ю секцию оружие достать нельзя не только в зоне рестриктора, но и за её пределами. Помогает только запись сейва и загрузка с него.

В таком варианте логика работает без сбоев.

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

[sr_universal@1]
scheme_type = noweap_zone
noweap_zone_cond = true
on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_universal@4
on_info2 = {+esc_b1_monster_attack_task_start} sr_universal@2

[sr_universal@2]
scheme_type = noweap_zone
noweap_zone_cond = false
on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_universal@4
on_info2 = {+esc_b1_monster_attack_task_final} sr_universal@3
on_info3 = {+esc_b1_monster_attack_task_fail} sr_universal@3

[sr_universal@3]
scheme_type = noweap_zone
noweap_zone_cond = true
on_info = {=squad_exist(esc_b1_military_squad) =is_squad_enemy_to_actor(esc_b1_military_squad)} sr_universal@4

[sr_universal@4]
scheme_type = noweap_zone
noweap_zone_cond = false[/cut]

Можно ли схемы sr_idle и sr_universal применять в одном рестрикторе?
 
ДизельДата: Пн, 17.11.2014, 19:53 | Сообщение # 1035
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

sr_universal - что то новое? Лезь в скрипты и смотри там, прописано ли...

Вообще в рестрикторе, можно в логике хоть sr_kupe написать, будет ли связь с функциями?


andreyholkin
 
Поиск: