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

Цитата Voland-777 ()
prepay_refused

А если перевести?


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Voland-777Дата: Сб, 22.10.2016, 00:40 | Сообщение # 2162
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

denis2000, refuse - отказаться... Все-таки надежней было переспросить у знающих людей, чтобы потом на свою задницу не ловить глупых вылетов)
 
men_stalkerДата: Сб, 22.10.2016, 14:09 | Сообщение # 2163
Инженер «Свободы»
Свобода
Сообщений: 184
Награды: 5
Репутация: [ 40 ]

Здравствуйте, хотел бы спросить куда ссылается ui_inGame2_pda_buttons_background? если схожее id имеют только
[cut=много id]<texture id="ui_inGame2_pda_buttons_background_lt" x="0" y="29" width="20" height="19" />
<texture id="ui_inGame2_pda_buttons_background_l" x="0" y="40" width="20" height="11" />
<texture id="ui_inGame2_pda_buttons_background_lb" x="0" y="52" width="20" height="11" />
<texture id="ui_inGame2_pda_buttons_background_t" x="20" y="29" width="56" height="19" />
<texture id="ui_inGame2_pda_buttons_background_back" x="20" y="40" width="56" height="11" />
<texture id="ui_inGame2_pda_buttons_background_b" x="20" y="52" width="56" height="11" />
<texture id="ui_inGame2_pda_buttons_background_rt" x="76" y="29" width="20" height="19" />
<texture id="ui_inGame2_pda_buttons_background_r" x="241" y="38" width="20" height="11" />
<texture id="ui_inGame2_pda_buttons_background_rb" x="76" y="52" width="20" height="11" />[/cut]
Которые в сумме ничего путного не дают, а в самом файле это полупрозрачные окна.
 
denis2000Дата: Вс, 23.10.2016, 21:52 | Сообщение # 2164
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

men_stalker, Имхо это текстура-пустышка.

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

Добрый вечер.

В каком-то моде на Тени Чернобыля видел фишку. Обыск трупов монстров. Точно так же, как сталкеров. У монстров открывалось инвентарное окно. В инвентаре можно было найти хвост собаки, например.

Можно ли сделать подобное в Зове Припяти?

Каким образом открыть окно обыска у трупа монстра?
Как монстру (собаке) заспавнить в инвентарь хвост?
 
НаблюдательДата: Пн, 31.10.2016, 00:40 | Сообщение # 2166
Ветеран
Пользователи
Сообщений: 400
Награды: 1
Репутация: [ 59 ]

Здравствуйте Всем! Други, недавно нашёл у наших западных партнёров мод на ЗП - S.T.A.L.K.E.R.: Call of Chernobyl 1.4.12. Там на ЗП прикручены локации со всех сталкеров и можно в начале выбирать за какую группировку играть и ещё всякие фичи! Но там в папке gamedata многие файлы запакованы в формате db и файла actor я не нашёл. sad Никто из уважаемых Профи не играл в этот мод? Может кто-то извлекал файл actor для личных нужд? wink Поделитесь, пжл! Ну очень хочется по всем этим бесчисленным локациям Терминатором пошарить. smile
 
denis2000Дата: Пн, 31.10.2016, 10:50 | Сообщение # 2167
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата sergej5500 ()
В каком-то моде на Тени Чернобыля видел фишку. Обыск трупов монстров.

Эта "фишка" есть и в оригинальном ТЧ. Забыли?
Реализовано в движке. За то какие предметы и в с какой вероятностью попадают к монстрам отвечают параметры в их конфигах: Spawn_Inventory_Item_Section, Spawn_Inventory_Item_Probability.
В ЗП это насколько я помню не работает - отключено в движке.
Для реализации в ЗП есть два метода: спавн частей монстров рядом с трупом убитого мутанта (например SGM), скриптовая реализация GUI обыска трупа монстра (вроде в Misery и СВ сделано).


Наблюдатель, Ну так распакуйте архивы или возьмите файл из оригинального ЗП.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
НаблюдательДата: Пн, 31.10.2016, 14:17 | Сообщение # 2168
Ветеран
Пользователи
Сообщений: 400
Награды: 1
Репутация: [ 59 ]

Цитата denis2000 ()
Наблюдатель, Ну так распакуйте архивы или возьмите файл из оригинального ЗП.

Благодарю уважаемый denis2000! Попробую.


Сообщение отредактировал Наблюдатель - Вт, 08.11.2016, 00:02
 
БарменДата: Ср, 09.11.2016, 15:45 | Сообщение # 2169
Ветеран
Свобода
Сообщений: 370
Награды: 11
Репутация: [ 105 ]

Всем привет! Народ что делать, как на НПС монстры нападают, они начинают на месте крутиться. Если НПС не трогать то спокойна сидят на места. Платформа ЗП. Все решил проблему!

Сообщение отредактировал Бармен - Чт, 10.11.2016, 18:56
 
PavlovДата: Сб, 12.11.2016, 00:47 | Сообщение # 2170
Удаленные



Цитата denis2000 ()
Цитата Pavlov
Ной например. story_id это лучший способ?


Это вполне приемлемый способ. Более того он по сути и является таким дополнительным параметром.

Вовзращаюсь к проблеме разделения квестовых персонажей от неквестовых. npc:story_id() возвращает число 4294967296 для абсолютно всей неписей, и квестовых и неквестовых. То же самое с npc.m_story_id.

Есть какой-то стандартный метод отличения квестовых от неквестовых неписей?
 
makdmДата: Сб, 12.11.2016, 08:16 | Сообщение # 2171
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата Pavlov ()
Есть какой-то стандартный метод отличения квестовых от неквестовых неписей?

Есть метод, который ввели разработчики игры сталкер.
Это проверка на наличие метки story_id.
Стандартная проверка на квестового НПС:

if get_object_story_id(obj:id()) ~= nil then
printf("Object << "..obj:name().." >> presence_in_story") -- помечен как сюжетный
end


Терпение......
И все получится!
 
suhar_Дата: Вт, 15.11.2016, 08:41 | Сообщение # 2172
Бывалый
Пользователи
Сообщений: 106
Награды: 0
Репутация: [ 0 ]

Цитата denis2000 ()
движек тупо не успел сделать то что вы от него хотели

Целенаправленно отодвинул операцию по переводу НПС в онлайн.
Создал таблицу айди НПС, которых нужно заонлайнить; элементы таблицы проверяются каждый апдейт.
Если соответствующий НПС в оффлайне, то пытаюсь его перевести в онлайн так:
alife():set_switch_online(npc_id, true)
alife():set_switch_offline(npc_id, false)
alife():set_interactive(npc_id, true)
snpc:switch_online()
Опытным путём выявил, что 1-3 строки никаких результатов не имеют. После их выполнения НПС всё так же остаётся в оффлайне, что подтверждает проверка на текущее состояние. По прошествии 15-20 апдейтов картина не меняется, хотя полагаю, что этого времени движку вполне достаточно, чтобы осуществить перевод. Выполнение четвёртой строки приводит к вылету с таким логом:
stack trace:
001B:045C8478 xrGame.dll, CDialogHolder::IgnorePause()
Что это такое и с чем связано - мне не понятно.
Кроме того заметил, что для перевода НПС в оффлайн
alife():set_switch_online(npc_id, false)
alife():set_switch_offline(npc_id, true)
alife():set_interactive(npc_id, false)
snpc:switch_offline()
строки 1-3 таким же образом ничего не изменяют. НПС переходит в оффлайн только после выполнения строки 4.
npc_id и snpc - айди и серверный объект соответственно. ЗП.


Сообщение отредактировал suhar_ - Вт, 15.11.2016, 09:40
 
denis2000Дата: Вт, 15.11.2016, 18:47 | Сообщение # 2173
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата suhar_ ()
Опытным путём выявил, что 1-3 строки никаких результатов не имеют.

Бессмысленная работа с нулевым результатом! А всего то прочитать в интернете комментарии к данным методам:
set_switch_online - устанавливает флажок flSwitchOnline, который определяет возможность перехода в онлайн
set_switch_offline - устанавливает флажок flSwitchOffline, который определяет возможность перехода в оффлайн
set_interactive - устанавливает флажок flInteractive.
То есть первые три метода, только подготовка объекта. Собственно само переключение происходит при использовании метода switch_online или switch_offline. Исключением из правила является нахождение объекта онлайн, тогда достаточно выставить флаги методами set_switch_online, set_switch_offline и объект на текущем апдейте клиента перейдет в оффлайн, а вернув флаги методами set_switch_online, set_switch_offline и объект перейдет в онлайн. Если объект оффлайн, то одних флагов недостаточно. теперь по вылету - причина мне неизвестна, лог не информативен, но у меня такого вылета нет.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Kapitan_komandorДата: Вт, 15.11.2016, 20:35 | Сообщение # 2174
Диггер Вольных
Вольные сталкеры
Сообщений: 12054
Награды: 15
Репутация: [ 1122 ]

Парни...играю в SGM v.1.7 новый артифакт мод...нашёл гаус под деревом.
Взял и...батареи на 10 выстрелов есть в рюкзаке,а самой гауса нет.
Что делать?



Жизнь это миг.за него и держись.
 
sergej5500Дата: Вт, 15.11.2016, 21:13 | Сообщение # 2175
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Kapitan_komandor ()
Что делать?


Это шутка автора мода. Если хотите получить гаусс "честно" (без правки файлов), то можно выстрелами выбить гаусс из под дерева. Затем выстрелами вытолкать его на 50 метров от этого дерева. После этого гаусс можно будет подобрать.

Стоит ли этим заниматься, не знаю. Патроны для гаусса в товарных количествах мы получим только в Припяти. А там уже на подходе гаусс из оригинала. Кроме того, гаусс из под дерева будет убит в ноль.
 
Поиск: