Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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]
 
Ay49MihasДата: Пт, 01.08.2014, 13:21 | Сообщение # 586
Полевой исследователь
Ученые сталкеры
Сообщений: 218
Награды: 9
Репутация: [ 83 ]

Цитата suhar_ ()
Кроме того, новые продукты не хотят принимать заблудившиеся наёмники на цехах подстанции (ЗП), то же самое обстоит с ранеными сталкерами, которые не хотят брать новую уптечку.

Опять же идём в конфиги. Ищем квест, из него узнаём название функции проверки наличия еды, ищем функцию, находим и видим:
Код

function zat_b103_actor_has_needed_food(first_speaker, second_speaker)
  local item_sections    = {
   [1] = "bread",
   [2] = "kolbasa",
   [3] = "conserva",
                 --/ SGM in
   [4] = "nuts",
   [5] = "sardina",
   [6] = "olivki",
                 --/ SGM out
  }

То есть проверяется лишь наличие предметов из указанного множества. Если другая еда (для SGM'а это, например, ИРП-П и ИРП-Б), то наёмники её за еду считать не будут.
 
denis2000Дата: Пт, 01.08.2014, 14:48 | Сообщение # 587
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата suhar_ ()
то же самое обстоит с ранеными сталкерами, которые не хотят брать новую уптечку

Проверка на наличие аптечки и передача аптечки в файле dialogs.script функции actor_have_medkit и transfer_medkit.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
suhar_Дата: Сб, 09.08.2014, 08:52 | Сообщение # 588
Бывалый
Пользователи
Сообщений: 106
Награды: 0
Репутация: [ 0 ]

Понадобилось внести поправки в файл gamedata\scripts\dialogs_zaton.script после чего столкнулся с безлоговым вылетом на Затоне при разговоре с Карданом. Опытным путём выявил, что вылет происходит при наличии у ГГ водки.
Самым странным оказался факт, что игра вылетает и с оригинальным (не правленным) файлом dialogs_zaton.script. Т.е. создаю совершенно пустую папку gamedata, в ней scripts и в уже в неё копирую наш файл и на выходе всё равно имею вылет при наличии водки О_о. Если же полностью удаляю геймдату, такого вылета не происходит. Вначале, подумал, что мой dialogs_zaton.script имеет внутри себя какую-то ошибку, из-за которой всё это происходит. Но убедился, что это не так: целенаправленно распаковал .db ресурсы (уж коли без геймдаты на этом месте вылета нет, то этот скрипт 100% рабочий) и использовал его. Вылет не пропал. Получается, что игра по каким-то причинам не принимает свой собственный файл. В чём может быть причина?
 
denis2000Дата: Сб, 09.08.2014, 13:42 | Сообщение # 589
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

suhar_, Убери двойной прекондишен в диалоге zat_b3_stalker_tech_drink_1.

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

Цитата denis2000 ()
двойной прекондишен

О каком именно идёт речь?
[cut]<dialog id="zat_b3_stalker_tech_drink_1">
<precondition>dialogs_zaton.if_actor_has_vodka</precondition> Первый
<dont_has_info>zat_b3_tech_drink_no_more</dont_has_info>
<dont_has_info>zat_b3_tech_have_one_dose</dont_has_info>
<phrase_list>
<phrase id="2">
<text>zat_b3_stalker_tech_drink_1_2</text>
<give_info>zat_b3_tech_drink_no_more</give_info>
<has_info>zat_b3_tech_see_produce_62</has_info>
</phrase>
<phrase id="0">
<text>zat_b3_stalker_tech_drink_1_0</text>
<precondition>dialogs_zaton.if_actor_has_vodka</precondition> Второй
<has_info>zat_b3_tech_drink_first_time</has_info>
<next>1</next>
<next>2</next>
</phrase>
<phrase id="1">
<text />
<action>dialogs.break_dialog</action>
<action>dialogs_zaton.give_vodka</action>
<dont_has_info>zat_b3_tech_see_produce_62</dont_has_info>
<give_info>zat_b3_tech_have_one_dose</give_info>
<give_info>zat_b3_tech_drinking</give_info>
</phrase>
</phrase_list>
</dialog>[/cut]
Двойного здесь вроде как нет.
 
denis2000Дата: Сб, 09.08.2014, 21:34 | Сообщение # 591
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата suhar_ ()
Двойного здесь вроде как нет.

Тоесть как нет? Ты же сам отметил:
Цитата suhar_ ()
<precondition>dialogs_zaton.if_actor_has_vodka</precondition> Первый

Цитата suhar_ ()
<precondition>dialogs_zaton.if_actor_has_vodka</precondition> Второй

Так зачем второй?


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

Создал нового механика. Функции починки и апгрейда работают, но в диалоге с ним нет кнопки вызова меню ремонта, как у дефолтных мехов. Как её добавить?
 
sergej5500Дата: Чт, 14.08.2014, 16:24 | Сообщение # 593
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Lipton,
В логике механика должна быть строка trade_enable = true.
 
KoshaДата: Сб, 16.08.2014, 21:57 | Сообщение # 594
Отмычка
Пользователи
Сообщений: 32
Награды: 0
Репутация: [ 0 ]

Подскажите пожалуйста от чего возникает вылет с таким логом: There is no kamp path in smart[pri_smart_terrain_1] - (добавил припять из ТЧ в ЧН)
 
denis2000Дата: Вс, 17.08.2014, 10:53 | Сообщение # 595
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

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

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
KoshaДата: Вс, 17.08.2014, 21:56 | Сообщение # 596
Отмычка
Пользователи
Сообщений: 32
Награды: 0
Репутация: [ 0 ]

[error]Arguments : LUA error: ... - чистое небо\gamedata\scripts\smart_terrain.script:76: bad argument #1 to 'pairs' (table expected, got nil)

stack trace: - можете пояснить причину появления? Этот файл не редактировался, т.е работал из оригинальной игры

пришел после скриптовой попытки спавна отряда на новом смарте

По ходу на новом смарте нет ни одной работы для НПС. Нужно сделать несколько работ (по количеству не менее чем по одной на каждого НПС сквада) типа walker, guard и т.п. denis2000

Это получается нужно им поставить смарт_коверы? или я не правильно понял?


Сообщение отредактировал Kosha - Вс, 17.08.2014, 23:12
 
denis2000Дата: Пн, 18.08.2014, 09:49 | Сообщение # 597
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата Kosha ()
Это получается нужно им поставить смарт_коверы? или я не правильно понял?

Нет. Им нужно предоставить работы на смарте: KAMP, SLEEP, WALKER, PATROL, Commander point, Conductor point, GUARD. Подробнее посмотри в скрипте gulag_general.script


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
KoshaДата: Пн, 18.08.2014, 21:25 | Сообщение # 598
Отмычка
Пользователи
Сообщений: 32
Награды: 0
Репутация: [ 0 ]

А работа должна прописываться как точки в файле way_локация.ltx в алл спавне?
 
FantomICWДата: Пн, 18.08.2014, 21:54 | Сообщение # 599
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Kosha, именно. К примеру, kamp:
Код
while level.patrol_path_exists(gname.."_kamp_"..it) do

Схема названия путей выглядит так:
Код
навзание_смарта_kamp_№

gname - название смарта
it - число (изначально - 1)



 
KoshaДата: Чт, 21.08.2014, 18:39 | Сообщение # 600
Отмычка
Пользователи
Сообщений: 32
Награды: 0
Репутация: [ 0 ]

хотел уточнить: а для монстров нужны отдельные работы или они универсальны?
 
Поиск: