Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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Дата: Чт, 22.03.2012, 17:52 | Сообщение # 121
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

xardaslich,
1. В ЗП эту аномалию убрали, что бы возродить поковыряй конфиги аномальных зон из ЧН (вроде [zone_mincer])
2. Да верно мыслите - видимо опечатка.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LazurДата: Вс, 25.03.2012, 16:52 | Сообщение # 122
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Здравствуйте. Пара вопросов возникло: "Если собираюсь спавнить аномалию, то в каком файле прописывать её спавн?" и "Если я в bind_stalker.script спавню авто, то как я узнаю, на какой локации она заспавнится? За это отвечает Level vertex?". Заранее благодарен.

На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
denis2000Дата: Вс, 25.03.2012, 17:25 | Сообщение # 123
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Lazur,
1. Проще через all.spawn
2. Level vertex и game vertex


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LazurДата: Пн, 26.03.2012, 08:36 | Сообщение # 124
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

denis2000, Через All.spawn нашёл только как зону аномальную делать, а я хочу одиночную (кисель, например). Чем их постановка отличается?

anomal_zone - накрывает группу одиночных аномалий, образуя из этого зону, в которой спавнятся артефакты, меняется позиция од. аномалий после выброса. А простая аномалия - и есть простая аномалия, просто ставите ее, и ничем не накрываете. Информация по теме: link раз, link два. XOBAH

Благодарю!
------------
Ещё вопрос: как по английски название аномалии "трамплин" (на какой "позывной" откликается аномалия)?


На пыльных тропинках аномальных полей
Заспавнятся наши следы...


Сообщение отредактировал Lazur - Ср, 28.03.2012, 14:11
 
KoshaДата: Вс, 01.04.2012, 23:46 | Сообщение # 125
Отмычка
Пользователи
Сообщений: 32
Награды: 0
Репутация: [ 0 ]

тупой наверное вопрос, но: можно ли создать смарт-террайн на новой локаций (игра ЧН) не пользуясь СДК? (через ACDC к примеру)

Только два пути и есть через SDK или ACDC. denis2000

Добавлено (01.04.2012, 22:39)
---------------------------------------------
каков путь через acdc?

КМБ! denis2000

Добавлено (01.04.2012, 23:46)
---------------------------------------------
во время компиляций алл.спавна получил:
unknown section 'camp_zone' - там в примере идет для ЗП описание а в ЧН есть аналог этой функций?

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

sergej5500, Свалят как пить дать. Тогда нужно делать по другому:
[cut]1. В секции сквада ставить target_smart.
2. В секции сквада добавть on_death = %+dolg_squad_1_dead%
3. сделать рестриктор с подобной логикой:
Code
[logic]
active = sr_idle@respawn

;------------------Респавн сквадов-------------------------------------------
[sr_idle@respawn]
on_info  = {+dolg_squad_1_dead !squad_exist(dolg_squad_1)} %=create_squad(dolg_squad_1:dolg_1_smart) -dolg_squad_1_dead%

Логика предельно упрощенная.[/cut]


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
GeonezisДата: Вс, 08.04.2012, 13:41 | Сообщение # 127
Разработчик «Смерти вопреки»
Свобода
Сообщений: 2360
Награды: 30
Репутация: [ 71 ]

sergej5500, они спавняться все как прописаны (11 и 14). но логика заставит их перемещаться в
Code

target_smart = mar_smart_terrain_2


Смерти Вопреки
Spectrum Project
AP_Prodaction
 
LazurДата: Сб, 14.04.2012, 13:44 | Сообщение # 128
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Здравствуйте. Создал аномальную зону на Свалке (ЗП)при компиляции вижу [cut=Это]ссылка скрина на народе[/cut]
кусьман из all.[cut=spawn][6532]
; cse_abstract properties
section_name = zone_mine_steam_weak
name = xim_garbage9
position = 98.787094,-2.055592,-99.886077
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 1189
distance = 32.0
level_vertex_id = 246951
object_flags = 0xffffff3e

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

; cse_alife_space_restrictor properties
restrictor_type = 3 ;Тип рестриктора

; cse_alife_custom_zone properties
max_power = 0

; cse_alife_anomalous_zone properties
offline_interactive_radius = 30
artefact_spawn_count = 5
artefact_position_offset = 0x460

; se_zone_anom properties

[6533]
; cse_abstract properties
section_name = anomal_zone
name = gar_xim_anomal_zone
position = 98.787084,-2.055592,-99.886077
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 1189
distance = 0
level_vertex_id = 246951
object_flags = 0xffffff3e
custom_data = <<END
[anomal_zone]
cfg = scripts\garbage\anomaly\gar_xim_zone.ltx
END

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

; cse_alife_space_restrictor properties
restrictor_type = 3

[6534]
; cse_abstract properties
section_name = space_restrictor
name = gar_xim_anomaly_spot
position = 98.787194,-2.055592,-99.886077
direction = 0,0,0

; cse_alife_object properties
game_vertex_id = 1189
distance = 0
level_vertex_id = 246951
object_flags = 0xffffff3e
custom_data = <<END
[story_object]
story_id = gar_xim_anomaly_spot
END

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

; cse_alife_space_restrictor properties
restrictor_type = 3[/cut]

В представленных строках ошибок нет кроме комментария после назначения параметра (;Тип рестриктора), плюс дубликаты секций возможны. denis2000


На пыльных тропинках аномальных полей
Заспавнятся наши следы...


Сообщение отредактировал Lazur - Сб, 14.04.2012, 13:45
 
БабайДата: Ср, 18.04.2012, 21:51 | Сообщение # 129
Ветеран
Пользователи
Сообщений: 484
Награды: 9
Репутация: [ 233 ]

Всем Привет! Какой параметр отвечает за реакцию НПС на выброс?

Никакой. Ручками-ручками. denis2000

В смысле "ручками"?

В смысле в логике НПС настраиваются его действия при выбросе. denis2000
Вот для примера логика Мстителя
[cut noguest]
[logic]
active = move@avenger

[move@avenger]
move_avail_speak = 15|wait|false|true
move_dest_number = 1147189
move_look_vertex = 1147196
move_state_when_center = sit
move_state_when_move = walk
move_combat_disable = true
move_home_teleport = true
meet = meet
invulnerable = true
on_info = {+zat_danger_parcel_otdano} nil %=remove_npc%
on_info2 = {=dist_to_actor_ge(80) +zat_danger_parcel_fail} nil %=release_npc%

[meet]
abuse = false
use = true
allow_break = false
meet_on_talking = false
trade_enable = true
[/cut]
Какие действия тут описаны?


Правильно заданный вопрос - половина правильного ответа!

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

Бабай, Вот логика прятаться в укрытии:
Code

[walker@work]
on_info ={=surge_started} walker@surge

[walker@surge]
path_walk = surge_walk
path_look = surge_look
def_state_moving1 = sprint
def_state_moving2 = sprint
def_state_moving3 = sprint
on_info = {!surge_started} walker@work


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
lychagin0Дата: Чт, 26.04.2012, 12:54 | Сообщение # 131
Легенда Зоны
Вольные сталкеры
Сообщений: 1303
Награды: 9
Репутация: [ 278 ]

Добрый день,подскажите что в этой логике за что отвечает,а то боюсь упустить что ни будь.
[cut noguest=Логика рестриктора]
[logic]
active = sr_universal

[sr_universal]
scheme_type = level_change_zone
level_change_cond = {+esc_key_from_gate_founded} true, false
level_change_on_use = %+level_change_to_marsh_from_escape%
level_change_travel_coord = 15.017832756042,19.779502868652,712.16851806641
level_change_throw_coord = 18.188539505005,16.269477844238,676.32806396484,3.187,esc_key_from_gate_needed
level_change_travel_time = 2,30
level_change_spot = level_change_up_location,st_level_change_to_marsh,false
level_change_autosave = st_save_travel_escape_to_marsh
level_change_silent_travel = false
level_change_hidden_mode = {+esc_uncoupling_halt_searched} false, true
level_change_message_impossible = st_level_change_zone_ok_need_key_text[/cut]


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

[cut][logic] - Базовая секция
active = sr_universal - Ссылка на активную секцию (то есть ту которая работает сразу после появления рестриктора)

[sr_universal] - логика универсального рестриктора из файла sr_universal.script
scheme_type = level_change_zone - тип схемы (универсальный имеет несколько схем в одном скрипте sound_zone, noweap_zone, throw_zone и тд. и тп.)
level_change_cond = {+esc_key_from_gate_founded} true, false - условие при котором рестриктор работает (true) или не работает (false)
level_change_on_use = %+level_change_to_marsh_from_escape% - действия при срабатывании рестриктора (скрипт или выдача/отбор инфопорций)
level_change_travel_coord = 15.017832756042,19.779502868652,712.16851806641 - координаты точки в которой происходит сохранение, прокрутка времени и подготовка к телепортации (затемнение отбор управления у игрока и тп.) и в этих координатах собственно и расположен сам левел ченджер заспавненый через all.spawn
level_change_throw_coord = 18.188539505005,16.269477844238,676.32806396484,3.187,esc_key_from_gate_needed - координаты точки, направление взгляда при телепортации на йтекущую локацию и инфопорции которые выдаются.
level_change_travel_time = 2,30 - время в пути (час, мин)
level_change_spot = level_change_up_location,st_level_change_to_marsh,false - три параметра: имя тега с иконкой перехода, подпись под иконкой, скрывать иконку в случае скрытого перехода (true) или нет (false)
level_change_autosave = st_save_travel_escape_to_marsh - имя тега с названием автосохранения при активации рестриктора
level_change_silent_travel = false - показывать (false) или нет (true) окно разрешения игроком перехода
level_change_hidden_mode = {+esc_uncoupling_halt_searched} false, true - условие при котором иконка рестриктора скрыта (true) или присутствует на карте (false)
level_change_message_impossible = st_level_change_zone_ok_need_key_text - имя тега с названием причины неработоспособности перехода, например нет ключа от ворот.[/cut]


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

Lazur, Так попробуй спавнить не сквады крыс, а например плотей.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
LazurДата: Пт, 04.05.2012, 10:34 | Сообщение # 134
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

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

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

Посмотри здесь. denis2000


На пыльных тропинках аномальных полей
Заспавнятся наши следы...


Сообщение отредактировал Lazur - Сб, 05.05.2012, 09:54
 
iAplerДата: Ср, 09.05.2012, 01:20 | Сообщение # 135
Гражданский
Пользователи
Сообщений: 23
Награды: 0
Репутация: [ 0 ]

Всем привет smile в модах я еще полный нуб так что строго не судите. Хотелось бы увеличить количество НПС на карте и также чтоб они больше ходили по зоне и воевали а не сидели на базах, а то очень скушно. Буду всем благодарен за помощ smile
Забыл сказать мод 2.2 smile


Сообщение отредактировал iApler - Ср, 09.05.2012, 01:21
 
Поиск: