Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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]
 
makdmДата: Чт, 03.08.2017, 20:39 | Сообщение # 2581
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата UncleFester ()
Оно упадёт, если a или b будут nil.

Это ваша проблема.
Если вы в функцию передаёте NIL вместо таблиц, то это говорит о вашей полной безграмотности, как скриптера. Причём тут сам скрипт?


Терпение......
И все получится!
 
Voland-777Дата: Чт, 03.08.2017, 20:39 | Сообщение # 2582
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

Цитата sergej5500 ()
Это универсальная текстура. Применяется там, где нужно ответить "да" или "нет".

Т. е. за все похожие диалоговые окна?
 
sergej5500Дата: Чт, 03.08.2017, 20:55 | Сообщение # 2583
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Voland-777 ()
за все похожие диалоговые окна?


В общем, да. Большинство окон задано в файле ui_message_box

[cut=Пример кода] <message_box_quit_windows type="quit_windows" x="173" y="256" width="677" height="255" stretch="1">
<texture>ui_inGame2_message_box</texture>
<message_text x="62" y="28" width="577" height="150" complex_mode="1">
<text align="c" vert_align="c" font="letterica18">ui_mm_quit_windows_message</text>
</message_text>
<button_yes x="209" y="212" width="127" height="28" check_mode="0">
<window_name>button_yes</window_name>
<text font="letterica18">Btn_Yes</text>
<texture>ui_inGame2_Mp_bigbuttone</texture>
</button_yes>
<button_no x="341" y="212" width="127" height="28" check_mode="0">
<window_name>button_no</window_name>
<text font="letterica18">Btn_No</text>
<texture>ui_inGame2_Mp_bigbuttone</texture>
</button_no>
</message_box_quit_windows>
<message_box_quit_game type="quit_game" x="173" y="256" width="677" height="255" stretch="1">
<texture>ui_inGame2_message_box</texture>
<message_text x="62" y="28" width="577" height="150" complex_mode="1">
<text align="c" vert_align="c" font="letterica18">ui_st_want_to_leave_game_q</text>
</message_text>
<button_yes x="209" y="212" width="127" height="28" check_mode="0">
<window_name>button_yes</window_name>
<text font="letterica18">Btn_Yes</text>
<texture>ui_inGame2_Mp_bigbuttone</texture>
</button_yes>
<button_no x="341" y="212" width="127" height="28" check_mode="0">
<window_name>button_no</window_name>
<text font="letterica18">Btn_No</text>
<texture>ui_inGame2_Mp_bigbuttone</texture>
</button_no>
</message_box_quit_game>
<message_box_confirm_load_save type="yes_no" x="173" y="256" width="677" height="255" stretch="1">
<texture>ui_inGame2_message_box</texture>
<message_text x="62" y="28" width="577" height="150" complex_mode="1">
<text align="c" vert_align="c" font="letterica18">ui_st_load_game_confirm</text>
</message_text>
<button_yes x="209" y="212" width="127" height="28" check_mode="0">
<window_name>button_yes</window_name>
<text font="letterica18">Btn_Yes</text>
<texture>ui_inGame2_Mp_bigbuttone</texture>
</button_yes>
<button_no x="341" y="212" width="127" height="28" check_mode="0">
<window_name>button_no</window_name>
<text font="letterica18">Btn_No</text>
<texture>ui_inGame2_Mp_bigbuttone</texture>
</button_no>
</message_box_confirm_load_save>[/cut]
 
denis2000Дата: Чт, 03.08.2017, 21:12 | Сообщение # 2584
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

UncleFester, Трупы чистит release_body_manager.script

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
UncleFesterДата: Чт, 03.08.2017, 21:41 | Сообщение # 2585
Гражданский
Пользователи
Сообщений: 23
Награды: 0
Репутация: [ 0 ]

Цитата makdm ()
Это ваша проблема.
Если вы в функцию передаёте NIL вместо таблиц, то это говорит о вашей полной безграмотности, как скриптера. Причём тут сам скрипт?


Теперь давай тоже самое, но уже правильному адресату. Автору SGM, который писал smart_terrain.script, у которого вот эта строка привела к вылету на десктоп из-за того, что в функцию сортировки прилетел b равный nil во время игры.

Код
table.sort(jobs, function(a,b) return a._prior > b._prior end )


Глянул твой патч к SGM. Жаль, это не оттуда, а было бы смешно.


Сообщение отредактировал UncleFester - Чт, 03.08.2017, 21:43
 
makdmДата: Чт, 03.08.2017, 22:28 | Сообщение # 2586
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата UncleFester ()
Автору SGM, который писал smart_terrain.script,

Николай сильный скриптер, поэтому не надо на него тыкать пальцем.
А то что вы приводите как пример, написано не им, а разрабами Сталкера.
Так что вам с претензиями прямая дорога в GSC.
Там им и объясните их полную некомпетентность. cool

Цитата UncleFester ()
Глянул твой патч к SGM. Жаль, это не оттуда, а было бы смешно.

Не дождётесь. biggrin


Терпение......
И все получится!
 
UncleFesterДата: Пт, 04.08.2017, 01:07 | Сообщение # 2587
Гражданский
Пользователи
Сообщений: 23
Награды: 0
Репутация: [ 0 ]

Цитата makdm ()
Николай сильный скриптер, поэтому не надо на него тыкать пальцем.
А то что вы приводите как пример, написано не им, а разрабами Сталкера.
Так что вам с претензиями прямая дорога в GSC.
Там им и объясните их полную некомпетентность.


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

function(a, b) return a.field < b.field end

просто обязана принимать всегда только валидные аргументы. Ну, так это не так, в одних случаях оправдано полагаться на то, что вместо объекта nil не придёт, в других - нет и проверять аргументы. Для абстрактной функции, не зная контекста её применения, невозможно сказать, является или нет безграмотностью ситуация, когда туда прилетает nil. В каком-нибудь парсере данных легко может что-то некорректное на вход прилететь, к примеру. И точно также неразумно делать заявления, что b.filed может быть nil, а если само b в подобной функции nil, то это безграмотность.

Заканчиваем оффтоп-полемику.
denis2000


Сообщение отредактировал UncleFester - Пт, 04.08.2017, 01:10
 
makdmДата: Пт, 04.08.2017, 07:41 | Сообщение # 2588
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата UncleFester ()
просто обязана принимать всегда только валидные аргументы. Ну, так это не так

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

Заканчиваем оффтоп-полемику.
denis2000


Терпение......
И все получится!
 
UncleFesterДата: Сб, 05.08.2017, 23:19 | Сообщение # 2589
Гражданский
Пользователи
Сообщений: 23
Награды: 0
Репутация: [ 0 ]

Чем редактируют текстуры прицелов?
 
denis2000Дата: Вс, 06.08.2017, 11:16 | Сообщение # 2590
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

UncleFester, Photoshop, Paint.NET с плагинами для dds.

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

Цитата sergej5500 ()

Это делается только через апгрейд оружия.

Можно уточнить, каким образом? Если создать в линейке апгрейда секцию на установку несъемного прицела, то это будет работать?
 
sergej5500Дата: Пн, 07.08.2017, 20:24 | Сообщение # 2592
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Donny_Kovalsky ()
Можно уточнить, каким образом?


Смотрите этот пост. Там рассматривается установка детектора целей на несъемный прицел.

Ночной прицел ставится так же. В секцию апгрейда нужно дописать строку

scope_nightvision = scope_nightvision
 
Donny_KovalskyДата: Вт, 08.08.2017, 22:42 | Сообщение # 2593
Отмычка
Пользователи
Сообщений: 30
Награды: 0
Репутация: [ 0 ]

Цитата sergej5500 ()
Смотрите этот пост. Там рассматривается установка детектора целей на несъемный прицел.

Ночной прицел ставится так же. В секцию апгрейда нужно дописать строку

scope_nightvision = scope_nightvision


Не выходит sad
Ставлю прицел на АКСу(модель позволяет), но ночной из него все равно не получается даже через апгрейд.
Делаю отдельную секцию оружия в файле АКСу (как модифицированное), прописываю
scope_status = 1
scope_texture = wpn_crosshair_spec_8
scope_name = wpn_addon_scope (или wpn_addon_scope_night - всё одно)
И прописываю апгрейд, котором есть строка "scope_nightvision = scope_nightvision"

Но не работает ночник. Если прописывать scope_status = 1 в самом апгрейде - даже прицел не появляется.
 
denis2000Дата: Ср, 09.08.2017, 11:50 | Сообщение # 2594
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Donny_Kovalsky, Конфиг ствола приводим!

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Donny_KovalskyДата: Ср, 09.08.2017, 13:54 | Сообщение # 2595
Отмычка
Пользователи
Сообщений: 30
Награды: 0
Репутация: [ 0 ]

denis2000, https://fex.net/?gclid=....5434084
 
Поиск: