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

Цитата progkuchumov ()
для каждого сквада надо отдельный смарт-террейн?

RTFM!
Цитата progkuchumov ()
Я имел ввиду что завел из в камп-зону, чтобы логику прописать. Или сквад надо в смарт-ковер занести?

Вы смешали в кучу три абсолютно разных термина/понятия. КМБ читайте - полезно.
смарт-террейн (smart_terrain) - объект на АИ-сетке к которому приписываются НПС состоящие в сквадах, это лагерь иными словами. Содержит работы для НПС, попадающие в самрт-террен НПС занимают их согласно определенным правилам.
камп-зона (camp_zone) - зона, находящиеся в которой НПС подчиняются необходимости рассказывать истории и играть на муз инструментах.
смарт-ковер (smart_cover) - область пространства для проигрывания определенных циклов анимаций, бывает боевая или мирная.
Цитата progkuchumov ()
такое чувство, что мы с вами на разных языках говорим.

Конечно на разных - вы даже терминов для начала не знаете и не понимаете, а на отсылки прочесть отвечаете, что примеры не рабочие, но текст то там рабочий!
Цитата progkuchumov ()
Я этот кмб смотрел - там кстати многие примеры не рабочие

Конкретно - что там не работает? Поколения модостроителей училось по нему, а у вас не рабочие - проблема в уроках конечно!


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
progkuchumovДата: Пн, 28.11.2016, 20:07 | Сообщение # 1397
Отмычка
Пользователи
Сообщений: 38
Награды: 0
Репутация: [ 40 ]

denis2000, Я лишь предположил, как надо сделать. Вы мне написали, что надо скваду логику прописать. Я не знал как это сделать, и предположил, что надо камп зону создать. Ткните мне бестолочи, где в КМБ написано, как задавать логику определенному скваду. Чтобы неписи из него делали работу по определённым way пойнтам и только по ним, а не перемешивались в работе с другими сквадами. И как скваду прописать, по каким вай пойнтам его неписи должны ходить, а по каким нет.

Добавлено (28.11.2016, 20:01)
---------------------------------------------
sergej5500, Сделал, как Вы написали, последовал вылет:

[cut noguest]
Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...e.r. - call of pripyat\gamedata\scripts\utils.script:469: bad argument #1 to 'gsub' (string expected, got nil)
[/cut]

Насколько я знаю, это типа того, что логика не правильно задана. Где может быть ошибка?

Добавлено (28.11.2016, 20:07)
---------------------------------------------
denis2000, вместо попытки помочь Вы лишь тешите свое самолюбие и топчите тех, кто знает меньше Вас. А потом на ap-pro появляются статьи о том, что моддинг умирает. Конечно умирает, потому что Вы пинаете всех без разбору - на халяву человек пришёл, или он действительно пытается разобраться, но у него не получается, что то он не может понять, приходит на форум - и получает пинки. Простите, что я не такой уникум, как Вы.


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

progkuchumov, Ок. Учитесь - удачи в модостроении.

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

Цитата progkuchumov ()
Насколько я знаю, это типа того, что логика не правильно задана. Где может быть ошибка?


Выложите логику полностью.
 
progkuchumovДата: Пн, 28.11.2016, 20:41 | Сообщение # 1400
Отмычка
Пользователи
Сообщений: 38
Награды: 0
Репутация: [ 40 ]

sergej5500, там вся логика, где я прикладывал. Я не знаю, что там еще должно быть для сквада. Пробовал вот так писать:

[cut noguest]
[logic@sim_7_military_sentinel_1_camp]
active = walker@sim_7_military_sentinel_1_camp
suitable = {=target_squad_name(escape_sim_7_sentinel_1_squad)} true
prior = 120

[walker@sim_7_military_sentinel_1_camp]
path_walk = esc_sim_7_sentinel_walk
[/cut]

Вылет без лога


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

progkuchumov,

Есть две ошибки. Любая из них может привести к вылету.

1. Если ваш смарт называется esc_sim_7, то работа должна называться

path_walk = sentinel_walk

Наименование смарта esc_sim_7 опускается. Или же в all.spawn эта работа должна называться esc_sim_7_esc_sim_7_sentinel_walk

2. Не вижу строки path_look. Она в логике есть?
 
progkuchumovДата: Пн, 28.11.2016, 20:54 | Сообщение # 1402
Отмычка
Пользователи
Сообщений: 38
Награды: 0
Репутация: [ 40 ]

sergej5500, нету, её тоже надо делать? Но ведь тогда будет весь сквад в одну точку глядеть, или нет?

Цитата sergej5500 ()
path_walk = sentinel_walk

Наименование смарта esc_sim_7 опускается. Или же в all.spawn эта работа должна называться esc_sim_7_esc_sim_7_sentinel_walk


Наверно в этом ошибка у меня.


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

Цитата progkuchumov ()
нету, её тоже надо делать? Но ведь тогда будет весь сквад в одну точку глядеть, или нет?


Точек можно сделать несколько. Для каждого из неписей.
 
progkuchumovДата: Пн, 28.11.2016, 21:00 | Сообщение # 1404
Отмычка
Пользователи
Сообщений: 38
Награды: 0
Репутация: [ 40 ]

sergej5500, сделал, но теперь двое на вышке стоят просто, а третий с дороги к ним пошел ходить по уровням вышки. Т.е. мне в логике надо указать точку начала работы path_walk для каждого непися?

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

Цитата progkuchumov ()
логике надо указать точку начала работы path_walk для каждого непися


Обычно каждому неписю делают свой путь path_walk. И свой path_look. Два непися на одной точке плохо смотрятся.
 
progkuchumovДата: Вт, 29.11.2016, 07:48 | Сообщение # 1406
Отмычка
Пользователи
Сообщений: 38
Награды: 0
Репутация: [ 40 ]

sergej5500, Вроде сделал - на вышке теперь нормально неписи ходят, но с дороги один из неписей упорно идёт к ним на вышку - и они оба делают одну работу... Ладно, буду дальше сам разбираться. Огромная благодарность за помощь.



Сообщение отредактировал progkuchumov - Вт, 29.11.2016, 09:34
 
rex44Дата: Ср, 30.11.2016, 16:39 | Сообщение # 1407
Гражданский
Пользователи
Сообщений: 18
Награды: 0
Репутация: [ 0 ]

Народ,напомните мне,как замутить объекты для мп карты ,так что бы они с сервера подкачивались(когда то делал,да забыл как),а то компилить локу каждый раз,как меня "осенит" какая нибудь светлая мысль как то не хочется...
 
ShyrДата: Чт, 01.12.2016, 12:11 | Сообщение # 1408
Отмычка
Пользователи
Сообщений: 38
Награды: 4
Репутация: [ 20 ]

denis2000, здравствуйте.
Получилось создать way- и lookpint-ы, прописал их в логику НПС, однако он все равно убегает. В чем еще может быть проблема?
Прилагаю код логики:
Код
[logic]
active = walker

[walker]
path_walk = aim_walk
path_look  = aim_look
corpse_detection_enabled = false
combat_ignore_keep_when_attacked = true
combat_ignore_cond = true
meet = no_meet
use_camp = false
 
denis2000Дата: Чт, 01.12.2016, 12:26 | Сообщение # 1409
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Shyr, НПС логику не принял, выложите как вы ему прописали.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ShyrДата: Чт, 01.12.2016, 12:36 | Сообщение # 1410
Отмычка
Пользователи
Сообщений: 38
Награды: 4
Репутация: [ 20 ]

denis2000, вот файл секции спавна:
Код
[zat_sh_nikitka_skadovsk]:stalker_trader
$spawn            = "respawn\zat_sh_nikitka_skadovsk"
character_profile = zat_sh_nikitka_skadovsk
spec_rank         = master
community         = stalker
custom_data       = scripts\sh\zat_sh_nikitka_skadovsk.ltx

или вы что-то другое имели в виду?


Сообщение отредактировал Shyr - Чт, 01.12.2016, 13:55
 
Поиск: