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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
БабайДата: Ср, 09.05.2012, 09:11 | Сообщение # 136
Ветеран
Пользователи
Сообщений: 484
Награды: 9
Репутация: [ 233 ]

Quote (iApler)
Хотелось бы увеличить количество НПС на карте

Почитай здесь конфиги конфигурации смартов.


Правильно заданный вопрос - половина правильного ответа!
 
iAplerДата: Ср, 09.05.2012, 15:36 | Сообщение # 137
Гражданский
Пользователи
Сообщений: 23
Награды: 0
Репутация: [ 0 ]

Quote (Бабай)
Почитай здесь конфиги конфигурации смартов.

Пишет что текста на странице нет, при переходе куда то пишет что страницы не существует плюс они с иероглифами грузится(

Попробуй еще раз. denis2000

Добавлено (09.05.2012, 15:36)
---------------------------------------------
spawn_num = {+pri_a18_use_idol_done}2, 0 - не могу понять эту строку за что отвечает 2 и 0. И если не сложно обясните что такое СКВАРД

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

Quote (iApler)
spawn_num = {+pri_a18_use_idol_done}2, 0 - не могу понять эту строку за что отвечает 2 и 0. И если не сложно обясните что такое СКВАРД

СКВАД (анг. squad) - (военное) отделение, расчет; команда; группа. В игре STALKER так называется группа НПС составляющее единое целое.
spawn_num = {+pri_a18_use_idol_done}2, 0. Количество отрядов (сквадов) для спавна при наличии инфопорции pri_a18_use_idol_done - два отряда, по умолчанию ноль.


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

Делал торговца, двигатель ругается:
[cut=Лог]FATAL ERROR

[error]Expression : no_assert
[error]Function : CXML_IdToIndex<class CCharacterInfo>::GetById
[error]File : d:\prog_repository\sources\trunk\xrserverentities\xml_str_id_loader.h
[error]Line : 112
[error]Description : item not found, id
[error]Arguments : sidorovich

stack trace:[/cut]

Нет дескрипшена персонажа sidorovich. denis2000


На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
slava1990Дата: Ср, 23.05.2012, 17:21 | Сообщение # 140
Удаленные



день добрый. можно ли в sgm 1.7 сделать так что бы вообще не было монстров на локации? а вместо них больше сталкеров и представителей разных группировок.

Нечто подобное обсуждалось, готовы задавать конкретные вопросы - прошу. denis2000
 
stalker_DOLGaДата: Сб, 26.05.2012, 22:22 | Сообщение # 141
Гражданский
Пользователи
Сообщений: 15
Награды: 0
Репутация: [ 0 ]

Доброго времени суток у меня три вопроса: Первый при создании НПС у меня они все смотрят в одну сторону где и как нужно указать что бы смотрели в определеную точку. Второй: в файле Аll.spawn в стартовый набор ГГ добавляю wpn_ak74 = 1 /n , и ammo_5.45x39_ap = 3 /n но при старте игры вылет может я что-то не то сделал? Третий: где в all.spawn SoC поменять старт. Позицию ГГ? И еще два вопроса: когда новому НПС прописоваю анимацию Допустим sleep я к нему подхожу он просыпается отхожу на 100 м. Он все равно на меня смотрит и дальше спать отказывается. И как убрать сюжетную линию в ТЧ прошу прощения за столько вопросов. Если несложо обьясните спасибо.

2. Перепутали слеш \\ Если пишите про вылет - пишите его обязательно, если безлоговый - то так и пишите
4. Пишите логику с ремарками, переходите по условию дистанции до ГГ
5. Как вырезать сюжет. XOBAH


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

stalker_DOLGa, У меня для тебя пять ответов:
1. Обычно куда смотрит НПС указывается в его логике.
2. А лог а подробнее правки.
3. В секции actor вестимо.
4. Подробнее правки.
5. В интернете море информации по отключению основного сюжета в SoC, даже где то в этом разделе обсуждалось.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
stalker_DOLGaДата: Вс, 27.05.2012, 06:16 | Сообщение # 143
Гражданский
Пользователи
Сообщений: 15
Награды: 0
Репутация: [ 0 ]

Это безлоговый вылет

Добавлено (27.05.2012, 06:16)
---------------------------------------------
И все таки как отключить сюжет в ТЧ а то в инете не нашел. Заранее спасибо.

Как вырезать сюжет. XOBAH


здесь был чёрный сталкер
 
ALEXXXisДата: Вт, 29.05.2012, 01:10 | Сообщение # 144
Проповедник
Монолит
Сообщений: 1869
Награды: 12
Репутация: [ 266 ]

хочу в оригинальную Зов Припяти добавить Гр.Зомби, Изломов и Котов!
что бы они были заспавнены по всем локациям!
в модерстве не разбираюсь, если кто скинет нужные файлы буду благодарен! smile


Если хочешь обрести врагов, попробуй что-то изменить.


 
AnarxisTДата: Вт, 29.05.2012, 10:54 | Сообщение # 145
Тень «Свободы»
Свобода
Сообщений: 7317
Награды: 34
Репутация: [ 1324 ]

ALEXXXis, http://sigerous.ru/forum/17-208-66094-16-1293311149 Урок №14 wink smile

 
LazurДата: Ср, 30.05.2012, 18:36 | Сообщение # 146
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

Вот, не могу разобраться с логикой:
[logic@krovos_stan] --Имя секции
suitable = {=check_npc_name(stan_bloodsucker)} true --Это что?
active = mob_home@krovos_stan --Ссылка на подсекцию
monster_job = true --Возможна ли работа для монстра
prior = 150 --Приоритет

[mob_home@krovos_stan] --Тож имя подсекции
path_home = krovos_stan_walk --Путь по которому непись ходит
aggressive = true --Будет ли атаковать
home_min_radius = 15 --Минимальный радиус, от коего не отходит после спавна
home_max_radius = 35 --Максимальный радиус, от коего не отходит после спавна

Правильно думаю?
А теперь вопрос следующий: "Для каждого непися нужно делать подобную логику? Или для сквада?"

Это - эксклюзивная логика, поэтому для всего сквада ее использовать нельзя (в принципе можно, если весь сквад будет состоять из stan_bloodsucker, но получится не шибко красиво)
suitable = {=check_npc_name(stan_bloodsucker)} true - Это проверка на то, чтобы эту логику принял только stan_bloodsucker
XOBAH

Спасибо, а для сквада логика как будет выглядеть?

Никак! Для сквада логики нет, логика может быть написана только для отдельных объектов. Просто файл может быть один, а в нем все равно для каждого объекта своя. denis2000

То есть, для параметра suitable нужно прописать премерно такую штуку: suitable = пёс1, кабан1, пес2, кабан3...?


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


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

Lazur, suitable может принимать только два значения true (подходит) или false (не подходит).
Пример реализации однотипной логики для сквада снорков:
[cut]
Code
[smart_terrain]
squad_id = 47
max_population = 1

[exclusive]
snork_01 = zaton\zat_b12_bridge_snorks.ltx
snork_02 = zaton\zat_b12_bridge_snorks.ltx
snork_03 = zaton\zat_b12_bridge_snorks.ltx
snork_04 = zaton\zat_b12_bridge_snorks.ltx


Code
[logic@snork_01]
active = mob_home@snork
prior = 80
suitable = {=is_monster_snork} true
monster_job = true

[mob_home@snork]
path_home = snorks_home
aggressive = true
home_min_radius = 5
home_max_radius = 25

[logic@snork_02]
active = mob_home@snork
prior = 80
suitable = {=is_monster_snork} true
monster_job = true

[logic@snork_03]
active = mob_home@snork
prior = 80
suitable = {=is_monster_snork} true
monster_job = true

[logic@snork_04]
active = mob_home@snork
prior = 80
suitable = {=is_monster_snork} true
monster_job = true
[/cut]


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

Всем добрый день!
Через sgm_spawner.scripts заспавнил квестового НПС. На мини-карте он отображается точкой. Можно ли сделать так, что бы он отозначался звездой, как командиры сквадов.
P.S. Добился результата, заспанив этого НПС в эксклюзивном скваде без указания target_smart. НПС принял свою логику.
Вопрос, можно ли пометить звездой НПС, не входящего в сквад.

В логику дописать commander = true. XOBAH


Сообщение отредактировал sergej5500 - Сб, 02.06.2012, 16:09
 
LazurДата: Сб, 02.06.2012, 18:57 | Сообщение # 149
Новичок
Пользователи
Сообщений: 82
Награды: 3
Репутация: [ 96 ]

denis2000, И всё равно не могу понять: Вот, делаю смарт, делаю на него логику (спавнить собак), делаю логику на собак, но как игра узнает, к какому псу какая логика?

Игра увидит свободную работу на смарте и начнет ее "заполнять". Если логика эксклюзивна (как в вышеприведенных примерах) она будет пускать всех NPC на эту работу, поэтому в логике производится "отсев" лишних NPC с помощью suitable. XOBAH


На пыльных тропинках аномальных полей
Заспавнятся наши следы...
 
sergej5500Дата: Сб, 02.06.2012, 23:59 | Сообщение # 150
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Всем Добрый Вечер.
Последовал совету Хована:
В логику дописать commander = true.
Результат нулевой. Приведу логику персонажа.
[cut=логика][logic]
active = move@stalker_commander

[move@stalker_commander]
move_dest_number = 129360
move_look_vertex = 146447
move_state_when_center = ward_noweap
move_state_when_move = walk
move_combat_disable = true
move_home_teleport = true
meet = meet
invulnerable = true
combat_ignore_cond = true
combat_ignore_keep_when_attacked = true
on_info = {+kosmonavt_artefact_quests_init =dist_to_actor_ge(45)} nil %=release_npc%

[meet]
abuse = false
use = true
allow_break = false
meet_on_talking = false
trade_enable = false[/cut]
НПС стоит там, куда его поставили. Дает квесты, исчезает, когда нужда в нем отпадет. Логика сделана на примере логики Меча. Звездой он отображаться не хочет. Строку commander = true пробовал вставлять во все абзацы логики. Если его спавнить через сквад, то он после выхода из зоны alife и последующего входа в нее обычно уходит со своего места. Есть ли способ повесить на него "звезду". Заранее благодарен за советы.


Сообщение отредактировал sergej5500 - Вс, 03.06.2012, 00:03
 
Поиск: