Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Общие вопросы и ответы
denis2000Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Помощь тем кто хочет знать больше о игре и модах

Если у вас появились вопросы по модостроению в игре S.T.A.L.K.E.R. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (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)", ее и надо расскомментировать, должно получиться вот так:
Код
function abort(fmt, ...)
                     local reason = string.format(fmt, ...)
                     error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Код
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)

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


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


Посты, для которых есть свои категории, из этой темы будут удаляться или перемещаться в соответсвующую тему. Персональных извещений в ЛС о переносе\удалении поста не будет, ищите сами. Учитывайте, что в системах Ucoz тема не обновляется в статистике при переносе поста.
Посты, написанные здесь-же после переноса, будут расцениваться как кросспостинг, со всеми вытекающими


[cut noguest=Первый юбилей нашей темы]

Здравствуйте господа модостроители, и все так или иначе причастные к этому.
Нашей теме исполнился 1 год.
От души поздравляю Всех Вас дорогие друзья, творческих успехов.
Хочу так же выразить отдельную благодарность denis2000 и ХОВАН.

tracker 23.06.11



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

Цитата Бармен ()
Один из разработчиков скинул мне функцию, что я указал выше и сказал "И в bind_stalker ставь на апдейт".

Очень плохой совет, такого разработчика самого на апдейт поставить нужно. По спавну НПС смотрите КМБ Урок 3 и 4. Или внемлите советам sergej5500.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
БарменДата: Сб, 06.08.2016, 14:52 | Сообщение # 2072
Ветеран
Свобода
Сообщений: 370
Награды: 11
Репутация: [ 105 ]

Цитата sergej5500 ()
Можно заспавнить хоть 100 НПС. Рестриктору без разницы. Спавнить неписей лучше, когда точка спавна далеко от игрока.

Намотаю на ус.

Цитата denis2000 ()
Очень плохой совет, такого разработчика самого на апдейт поставить нужно. По спавну НПС смотрите КМБ Урок 3 и 4. Или внемлите советам sergej5500.

Ну вот я и написал, можно назвать Профи-Разработчику, а можно использовать вот такую функцию. Вместо той, что в уроке 3 и 4?
Код
function spawn_red_greh_voron()
           if not has_alife_info("spawn_red_greh_voron") then
   xr_effects.spawn_object(actor, nil, {"red_greh_voron","red_greh_voron_spawn_point"})
            give_info("spawn_red_greh_voron")
           end           
end

Добавлено (06.08.2016, 14:52)
---------------------------------------------
Всем снова привет, заспавнил я эксклюзивного НПС, через скрипт вот так.

Код
function spawn_black_valley_stalker_base_lider()
           if not has_alife_info("spawn_black_valley_stalker_base_lider") then
   xr_effects.spawn_object(actor, nil, {"black_valley_stalker_base_lider","black_sim_nps_1_spawn_point"})
            give_info("spawn_black_valley_stalker_base_lider")
           end           
end

Вроде заспавнился все отлично, только он на место куда надо не идет. Начинает гулять по территории, будто в симуляции находиться. Что делать, работаю на ЗП если что.
 
sergej5500Дата: Сб, 06.08.2016, 15:42 | Сообщение # 2073
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Бармен ()
только он на место куда надо не идет. Начинает гулять по территории, будто в симуляции находиться.


Вероятнее всего, указан неверный путь к файлу логики.
 
БарменДата: Сб, 06.08.2016, 19:21 | Сообщение # 2074
Ветеран
Свобода
Сообщений: 370
Награды: 11
Репутация: [ 105 ]

Цитата sergej5500 ()
Вероятнее всего, указан неверный путь к файлу логики.

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

Бармен,

Тогда выложите спавн-секцию и файл логики
 
БарменДата: Сб, 06.08.2016, 23:48 | Сообщение # 2076
Ветеран
Свобода
Сообщений: 370
Награды: 11
Репутация: [ 105 ]

sergej5500, Вот spawn_sections:
Код
[black_valley_stalker_base_lider]:stalker
$spawn            = "respawn\black_valley_stalker_base_lider"
character_profile = black_valley_stalker_base_lider
community         = stalker
story_id          = black_valley_stalker_base_lider
custom_data       = scripts\black_valley\npc_logic\stalker_base\black_valley_stalker_base_lider.ltx

А вот логика:
Код
[logic@black_valley_stalker_base_lider]
suitable = {=check_npc_name(black_valley_stalker_base_lider)}
active = animpoint@leader
prior = 200

[animpoint@leader]
cover_name = lider_smart_cover
avail_animations = sit_normal
combat_ignore_cond = false
;out_restr = можно поставить рестиктор вокруг смарта, он не даст уйти с этого места
сombat_ignore = combat_ignore
combat_ignore_keep_when_attacked = false
meet = meet

[meet]
no_move = true
abuse = false
allow_break = false ;не разрешаем ему прерывать диалог
meet_on_talking = false ; не разрешаем ему начинать разговор
trade_enable = true ; разрешаем ему торговать с ГГ
close_distance = 5 ; на расстоянии 5 метров от ГГ
close_anim = wait_na
close_victim = actor
use = {=actor_has_weapon} false, true ; на откликнется, если у ГГ нет в руках ствола
snd_on_use = {=actor_has_weapon} meet_hello, nil ; если у ГГ ствол - попросит убрать
 
sergej5500Дата: Вс, 07.08.2016, 09:28 | Сообщение # 2077
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Бармен,
Если вы пишете ссылку на логику в кастом-дате, то это НПС несквадовый.

В логике вы написали

[logic@black_valley_stalker_base_lider]
suitable = {=check_npc_name(black_valley_stalker_base_lider)}

Эта форма применима только для сквадовых НПС. Естественно, что движок не находит логику вашего НПС.

Вместо [logic@black_valley_stalker_base_lider] пишите просто [logic]

Строку suitable = {=check_npc_name(black_valley_stalker_base_lider)} вообще можно не писать.
 
БарменДата: Вс, 07.08.2016, 12:24 | Сообщение # 2078
Ветеран
Свобода
Сообщений: 370
Награды: 11
Репутация: [ 105 ]

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

И да не знаешь с чем связан, вот этот вылет?
Код
FATAL ERROR

[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ....r. - Зов Припяти\gamedata\scripts\state_mgr.script:489: attempt to index field '?' (a nil value)


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

Бармен, Указано несуществующее анимационное состояние?

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Вс, 07.08.2016, 13:54 | Сообщение # 2080
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата Бармен ()
sit_normal

Неправильно. Правильно: animpoint_sit_normal smile


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Вс, 07.08.2016, 18:24
 
БарменДата: Вс, 07.08.2016, 21:51 | Сообщение # 2081
Ветеран
Свобода
Сообщений: 370
Награды: 11
Репутация: [ 105 ]

denis2000, Все разобрался, как и написал asd123 забыл прописать animpoint. Такой вопрос, как запретить вставать НПС, при подходе к нему.
 
sergej5500Дата: Вс, 07.08.2016, 22:04 | Сообщение # 2082
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Бармен ()
Такой вопрос, как запретить вставать НПС, при подходе к нему.


У меня было похожее затруднение. Взял из логики персов из оригинала Зова Припяти следующие строки.

close_anim = nil
close_victim = nil
far_anim = nil
far_victim = nil
close_distance = 0
far_distance = 0

После этого неписи вставать перестали. Ведут себя правильно. Которая из этих строк запрещает вставание, не знаю. Добавляю все.

Строки нужно добавить в секцию meet персонажа.
 
БарменДата: Пн, 08.08.2016, 00:37 | Сообщение # 2083
Ветеран
Свобода
Сообщений: 370
Награды: 11
Репутация: [ 105 ]

Цитата sergej5500 ()
У меня было похожее затруднение. Взял из логики персов из оригинала Зова Припяти следующие строки.

Благодарю попробую.
 
Voland-777Дата: Сб, 13.08.2016, 17:21 | Сообщение # 2084
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

Здравствуйте (снова, надеюсь, не достану со своим очередным вопросом). Как можно продлить время работы батареек к детектору в СГМ 2.2?

Сообщение отредактировал Voland-777 - Сб, 13.08.2016, 23:58
 
sergej5500Дата: Сб, 13.08.2016, 17:37 | Сообщение # 2085
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Voland-777,

Файл gamedata\configs\misc\items\sgm_devices.

Параметр battery_power.
 
Поиск: