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

Цитата progkuchumov ()
то же оружие, оно в одних конфигах со всякими приставками пишется, в других без них - и как тут разобраться?

Все на самом деле очень просто: различие хоть в одном символе - это разные предметы.

mp_ammo_12x70_buck - да это дробь, несколько модифицированная для мультиплеерной игры и только там встречавшаяся.
Вам нужно прописывать НПС боеприпас для синглплеерной игры ammo_12x70_buck и его же соответственно запрещать к торговли.


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

denis2000, ясно, спасибо большое, объяснили... я не понимал различие между ними... можно было сразу сказать, и я бы не отнимал у вас столько времени...

Добавлено (16.09.2016, 20:29)
---------------------------------------------
Поэтому и просил нормальный мануал - но видимо такого нет, везде надо сотни раз перепроверить, перечитать, и все равно не будешь знать, куда рыть... Простите.




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

Цитата progkuchumov ()
можно было сразу сказать

Как только я увидел дескрипшен вашего персонажа, так сразу вам и стал об этом говорить. Немного терпения.

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


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

denis2000, я все понимаю, поверьте. Но не надо лишний раз мстить за это - информации действительно море сейчас, но в этом и беда - ориентируешься на нее, а она вдруг тебе дает ошибочные сведения. В итоге стараешься разобраться сам - и возникают такие глупые ошибки, как у меня. А заходишь на форум, чтобы спросить - и встречаешь непонимание. Мне бы не хотелось, чтобы меня считали за дурака. Если есть направление - я дальше сам иду и буду знать, где копать. Мне нужно лишь правильное направление.

 
MagadanДата: Сб, 17.09.2016, 17:53 | Сообщение # 1370
Удаленные



denis2000, как же я с тобой согласен.
тот же читер клуб-всё по полочкам,бери и пользуйся.
а нам раньше такое и не снилось.
 
sergej5500Дата: Ср, 02.11.2016, 23:11 | Сообщение # 1371
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. Возник вопрос.

В смарте полтергейст и 4 собаки. Все под логикой home.

Существует схема companion. Когда НПС следует за ГГ.

Возможно ли сделать так, чтобы собаки ходили за полтергейстом в режиме companion или в эквивалентной схеме? Какой логикой можно воспользоваться?

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

sergej5500, Готовой схемы поведения конечно нет, поэтому если хотите можете взять за основу логику companion и на ее базе написать свою совершенно новую или есть возможность использовать логику mob_walker тогда можно попытаться запустить ваших монстров по статическим маршрутам, причем собак направить за полтергейстом.

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

Доброго времени суток.
Решил пройти первый урок КМБ "Создание нового игрового персонажа"
Сделал все по инструкции не отклоняясь от нее.
В уроке, файл описания персонажа создается на основе уже существующего персонажа, а спавн осуществляется с помощью клавиши F6 (осуществляется через ui_main_menu.script)
Однако после загрузки игры, последующего выхода в меню и нажатия клавиши F6 игра вылетает с логом:
Код
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 : zat_sh_nikitka_skadovsk

stack trace:


Я подозреваю, что ошибка допущена в файле описания персонажа.
Подскажите, верно-ли это и в чем может быть ошибка?

P.s.
Код фала описания персонажа прилагается:
Код
<?xml version='1.0' encoding="windows-1251" ?>
<xml>
<specific_character id="zat_sh_nikitka_skadovsk" team_default = "1">
<name>zat_sh_nikitka_skadovsk_name</name>
<icon>ui_inGame2_Soldier_4</icon>
<map_icon x="0" y="0"></map_icon>
<bio>esc_wolf_bio</bio>
<class>zat_sh_nikitka_skadovsk</class>
<community>stalker</community>
<terrain_sect>stalker_terrain</terrain_sect>
<money min="4000 " max="120000" infinitive="0"></money>
<rank>999</rank>
<reputation>0</reputation>
<visual>actors\stalker_mercenary\stalker_mercenary_1_helm</visual>
<snd_config>characters_voice\human_01\stalker\</snd_config>
<crouch_type>-1</crouch_type>
<panic_treshold>0</panic_treshold>
<supplies>
[spawn] \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_drugs.xml" \n
#include "gameplay\character_food.xml"
    </supplies>
<start_dialog>hello_dialog</start_dialog>
</specific_character>
</xml>


Сообщение отредактировал Shyr - Пт, 25.11.2016, 18:17
 
denis2000Дата: Сб, 19.11.2016, 19:33 | Сообщение # 1374
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Shyr, Судя по логу не находиться секция объекта: [zat_sh_nikitka_skadovsk], проверяйте файл sh_stalkers.ltx и регистрацию его в spawn_sections.ltx.

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

denis2000, решил проблему: в КМБ, Урок 1, пункт 2 "Создать файл описания классов"
в этом пункте имеется вставка с кодом:
Код
<character id="zat_sh_nikitka_skadovsk">
<class>zat_sh_nikitka_skadovsk</class>
</character>


так вот, в нем упущены строчки открытия и закрытия XML документа, а так-же описание подключенной к документу таблицы кодировок. После правки документ должен выглядеть такким образом:
Код
<?xml version='1.0' encoding="UTF-8"?>
<xml>
    <character id="zat_sh_nikitka_skadovsk">
    <class>zat_sh_nikitka_skadovsk</class>
    </character>
</xml>


тогда НПС спавнится и все работает.

Добавлено (21.11.2016, 22:25)
---------------------------------------------
Еще такой вопрос: есть у меня НПС, (созданный по КМБ уроку 1).
По ходу урока он делается бессмертным и, соответственно, если открыть по нему огонь, то он никак на это не среагирует. Однако моей целью является создать его смертным и статичным(недвижимым). Пробовал просто отключить строку отвечающую за бессмертие значением false, однако тогда НПС переходит на универсальный комбат (верно?) и начинает передвигаться в неизвестном направлении.
Вопрос: как мне правильно реализовать эту задумку?


Сообщение отредактировал Shyr - Пт, 25.11.2016, 18:17
 
denis2000Дата: Вт, 22.11.2016, 07:51 | Сообщение # 1376
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата Shyr ()
как мне правильно реализовать эту задумку?

Изучать уроки далее. По 7-ой включительно.


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

denis2000, подскажите, пожалуйста в каком файле (в случае для Никитки из КМБ урок1) задается on/off-line режим?
 
denis2000Дата: Пт, 25.11.2016, 08:24 | Сообщение # 1378
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Shyr, Не совсем понятно, что вам требуется.

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

denis2000, идея заключается в том, что-бы создать неподвижного НПС-мишень, который будет враждебен для ГГ.
Поискав в интернете, наткнулся на свой вопрос: человек тоже делал НПС-мишень, с такой логикой:
Код
[logic]
active = remark@search

[remark@fire]
combat_ignore_cond = always
danger_ignore = danger_ignore
radius = 0
anim = ward
wounded = wounded@work
sniper = true

[smart_terrains]
none = true

[remark@search]
combat_ignore_cond = always
combat_ignore_keep_when_attacked = true
danger_ignore = danger_ignore
anim = ward
target = actor
wounded = wounded@work

[wounded@work]
hp_state = 0|wounded_heavy@help_heavy
hp_state_see = 0|wounded_heavy@help_heavy
hp_victim = 0|nil
hp_fight = 0|false
hp_cover = 0|false

Однако его НПС при виде ГГ срывался в бег. Что-бы пресечь такую реакцию НПС, этому человеку посоветовали убрать из логики флаг sniper = true и перевести НПС в режим offline.

Поискав в интернете варианты перевода НПС в offline режим, наткнулся на статью, где этот перевод осуществляется через скрипт. Однако через какой именно скрипт не указано. Вот я и хочу узнать через какой скрипт это осуществляется.


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

Shyr, Приведенная вами логика некого умельца, представляет собой авангард абсурда, а совет по ее улучшению выводит модостроение на такие вершины, что я плачу от смеха.
Лучше читайте статьи на сталкер-инсаде по вопросам логики НПС или изучайте уроки в КМБ.

Некоторые вопросы к приведенной схеме:
1. Зачем секция remark@fire если она не используется?
2. Зачем писать флаг sniper = true в скекцию в которой он принципиально не работает (он читается только в camper)?
3. Зачем писать параметр danger_ignore если он никуда не ссылается и в принципе не известен в логике?
4. Зачем писать combat_ignore_cond = always если в этом параметре ожидается кондлист или на худой конец true/false?
5. За использование логики remark в качестве базовой вообще расстрел на месте.

Цитата Shyr ()
идея заключается в том, что-бы создать неподвижного НПС-мишень, который будет враждебен для ГГ

Что проще то? Логика волкера с игнорированием всех опасностей и соблазнов:
Код
[walker]
path_walk = ***_walk
path_look  = ***_look
corpse_detection_enabled = false
combat_ignore_keep_when_attacked = true
combat_ignore_cond = true
meet = no_meet
use_camp = false


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Поиск: