Модостроение. Общие вопросы и ответы
|
|
denis2000 | Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Помощь тем кто хочет знать больше о игре и модах Если у вас появились вопросы по модостроению в игре 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]
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
makdm | Дата: Чт, 03.08.2017, 20:39 | Сообщение # 2581 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата UncleFester ( ) Оно упадёт, если a или b будут nil. Это ваша проблема. Если вы в функцию передаёте NIL вместо таблиц, то это говорит о вашей полной безграмотности, как скриптера. Причём тут сам скрипт?
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
Voland-777 | Дата: Чт, 03.08.2017, 20:39 | Сообщение # 2582 |
Эмиссар
Пользователи
Сообщений: 1702
| Цитата sergej5500 ( ) Это универсальная текстура. Применяется там, где нужно ответить "да" или "нет". Т. е. за все похожие диалоговые окна?
|
|
|
Эти 0 пользователя(ей) поблагодарили Voland-777 за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 03.08.2017, 20:55 | Сообщение # 2583 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата 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]
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 03.08.2017, 21:12 | Сообщение # 2584 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| UncleFester, Трупы чистит release_body_manager.script
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
UncleFester | Дата: Чт, 03.08.2017, 21:41 | Сообщение # 2585 |
Гражданский
Пользователи
Сообщений: 23
| Цитата 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 |
|
|
Эти 0 пользователя(ей) поблагодарили UncleFester за это полезное сообщение: |
|
|
makdm | Дата: Чт, 03.08.2017, 22:28 | Сообщение # 2586 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата UncleFester ( ) Автору SGM, который писал smart_terrain.script, Николай сильный скриптер, поэтому не надо на него тыкать пальцем. А то что вы приводите как пример, написано не им, а разрабами Сталкера. Так что вам с претензиями прямая дорога в GSC. Там им и объясните их полную некомпетентность.
Цитата UncleFester ( ) Глянул твой патч к SGM. Жаль, это не оттуда, а было бы смешно. Не дождётесь.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
UncleFester | Дата: Пт, 04.08.2017, 01:07 | Сообщение # 2587 |
Гражданский
Пользователи
Сообщений: 23
| Цитата 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 |
|
|
Эти 0 пользователя(ей) поблагодарили UncleFester за это полезное сообщение: |
|
|
makdm | Дата: Пт, 04.08.2017, 07:41 | Сообщение # 2588 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата UncleFester ( ) просто обязана принимать всегда только валидные аргументы. Ну, так это не так Вся ваша речь - полная ахинея. Задача программиста - исключить саму возможность передачи аргумента NIL в функцию, если это приводит к нежелательным результатам. Если это сделано до вызова абстрактной функции, то никогда и ниоткуда NIL не прилетит.
Заканчиваем оффтоп-полемику. denis2000
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
UncleFester | Дата: Сб, 05.08.2017, 23:19 | Сообщение # 2589 |
Гражданский
Пользователи
Сообщений: 23
| Чем редактируют текстуры прицелов?
|
|
|
Эти 0 пользователя(ей) поблагодарили UncleFester за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 06.08.2017, 11:16 | Сообщение # 2590 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| UncleFester, Photoshop, Paint.NET с плагинами для dds.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Donny_Kovalsky | Дата: Вс, 06.08.2017, 20:41 | Сообщение # 2591 |
Отмычка
Пользователи
Сообщений: 30
| Цитата sergej5500 ( ) Это делается только через апгрейд оружия.
Можно уточнить, каким образом? Если создать в линейке апгрейда секцию на установку несъемного прицела, то это будет работать?
|
|
|
Эти 0 пользователя(ей) поблагодарили Donny_Kovalsky за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 07.08.2017, 20:24 | Сообщение # 2592 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата Donny_Kovalsky ( ) Можно уточнить, каким образом?
Смотрите этот пост. Там рассматривается установка детектора целей на несъемный прицел.
Ночной прицел ставится так же. В секцию апгрейда нужно дописать строку
scope_nightvision = scope_nightvision
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Donny_Kovalsky | Дата: Вт, 08.08.2017, 22:42 | Сообщение # 2593 |
Отмычка
Пользователи
Сообщений: 30
| Цитата sergej5500 ( ) Смотрите этот пост. Там рассматривается установка детектора целей на несъемный прицел.
Ночной прицел ставится так же. В секцию апгрейда нужно дописать строку
scope_nightvision = scope_nightvision
Не выходит Ставлю прицел на АКСу(модель позволяет), но ночной из него все равно не получается даже через апгрейд. Делаю отдельную секцию оружия в файле АКСу (как модифицированное), прописываю 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 в самом апгрейде - даже прицел не появляется.
|
|
|
Эти 0 пользователя(ей) поблагодарили Donny_Kovalsky за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 09.08.2017, 11:50 | Сообщение # 2594 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Donny_Kovalsky, Конфиг ствола приводим!
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Donny_Kovalsky | Дата: Ср, 09.08.2017, 13:54 | Сообщение # 2595 |
Отмычка
Пользователи
Сообщений: 30
| denis2000, https://fex.net/?gclid=....5434084
|
|
|
Эти 0 пользователя(ей) поблагодарили Donny_Kovalsky за это полезное сообщение: |
|
|
|