Модостроение. Общие вопросы и ответы
|
|
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 за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 21.10.2016, 20:21 | Сообщение # 2161 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата Voland-777 ( ) prepay_refused А если перевести?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Voland-777 | Дата: Сб, 22.10.2016, 00:40 | Сообщение # 2162 |
Эмиссар
Пользователи
Сообщений: 1702
| denis2000, refuse - отказаться... Все-таки надежней было переспросить у знающих людей, чтобы потом на свою задницу не ловить глупых вылетов)
|
|
|
Эти 0 пользователя(ей) поблагодарили Voland-777 за это полезное сообщение: |
|
|
men_stalker | Дата: Сб, 22.10.2016, 14:09 | Сообщение # 2163 |
Инженер «Свободы»
Свобода
Сообщений: 184
| Здравствуйте, хотел бы спросить куда ссылается 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] Которые в сумме ничего путного не дают, а в самом файле это полупрозрачные окна.
|
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 23.10.2016, 21:52 | Сообщение # 2164 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| men_stalker, Имхо это текстура-пустышка.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 30.10.2016, 22:53 | Сообщение # 2165 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый вечер.
В каком-то моде на Тени Чернобыля видел фишку. Обыск трупов монстров. Точно так же, как сталкеров. У монстров открывалось инвентарное окно. В инвентаре можно было найти хвост собаки, например.
Можно ли сделать подобное в Зове Припяти?
Каким образом открыть окно обыска у трупа монстра? Как монстру (собаке) заспавнить в инвентарь хвост?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Наблюдатель | Дата: Пн, 31.10.2016, 00:40 | Сообщение # 2166 |
Ветеран
Пользователи
Сообщений: 400
| Здравствуйте Всем! Други, недавно нашёл у наших западных партнёров мод на ЗП - S.T.A.L.K.E.R.: Call of Chernobyl 1.4.12. Там на ЗП прикручены локации со всех сталкеров и можно в начале выбирать за какую группировку играть и ещё всякие фичи! Но там в папке gamedata многие файлы запакованы в формате db и файла actor я не нашёл. Никто из уважаемых Профи не играл в этот мод? Может кто-то извлекал файл actor для личных нужд? Поделитесь, пжл! Ну очень хочется по всем этим бесчисленным локациям Терминатором пошарить.
|
|
|
Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 31.10.2016, 10:50 | Сообщение # 2167 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата sergej5500 ( ) В каком-то моде на Тени Чернобыля видел фишку. Обыск трупов монстров. Эта "фишка" есть и в оригинальном ТЧ. Забыли? Реализовано в движке. За то какие предметы и в с какой вероятностью попадают к монстрам отвечают параметры в их конфигах: Spawn_Inventory_Item_Section, Spawn_Inventory_Item_Probability. В ЗП это насколько я помню не работает - отключено в движке. Для реализации в ЗП есть два метода: спавн частей монстров рядом с трупом убитого мутанта (например SGM), скриптовая реализация GUI обыска трупа монстра (вроде в Misery и СВ сделано).
Наблюдатель, Ну так распакуйте архивы или возьмите файл из оригинального ЗП.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Наблюдатель | Дата: Пн, 31.10.2016, 14:17 | Сообщение # 2168 |
Ветеран
Пользователи
Сообщений: 400
| Цитата denis2000 ( ) Наблюдатель, Ну так распакуйте архивы или возьмите файл из оригинального ЗП. Благодарю уважаемый denis2000! Попробую.
Сообщение отредактировал Наблюдатель - Вт, 08.11.2016, 00:02 |
|
|
Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
Бармен | Дата: Ср, 09.11.2016, 15:45 | Сообщение # 2169 |
Ветеран
Свобода
Сообщений: 370
| Всем привет! Народ что делать, как на НПС монстры нападают, они начинают на месте крутиться. Если НПС не трогать то спокойна сидят на места. Платформа ЗП. Все решил проблему!
Сообщение отредактировал Бармен - Чт, 10.11.2016, 18:56 |
|
|
Эти 0 пользователя(ей) поблагодарили Бармен за это полезное сообщение: |
|
|
Pavlov | Дата: Сб, 12.11.2016, 00:47 | Сообщение # 2170 |
Удаленные
| Цитата denis2000 ( ) Цитата Pavlov Ной например. story_id это лучший способ? Это вполне приемлемый способ. Более того он по сути и является таким дополнительным параметром. Вовзращаюсь к проблеме разделения квестовых персонажей от неквестовых. npc:story_id() возвращает число 4294967296 для абсолютно всей неписей, и квестовых и неквестовых. То же самое с npc.m_story_id.
Есть какой-то стандартный метод отличения квестовых от неквестовых неписей?
|
|
|
Эти 0 пользователя(ей) поблагодарили Pavlov за это полезное сообщение: |
|
|
makdm | Дата: Сб, 12.11.2016, 08:16 | Сообщение # 2171 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата Pavlov ( ) Есть какой-то стандартный метод отличения квестовых от неквестовых неписей? Есть метод, который ввели разработчики игры сталкер. Это проверка на наличие метки story_id. Стандартная проверка на квестового НПС:
if get_object_story_id(obj:id()) ~= nil then printf("Object << "..obj:name().." >> presence_in_story") -- помечен как сюжетный end
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
suhar_ | Дата: Вт, 15.11.2016, 08:41 | Сообщение # 2172 |
Бывалый
Пользователи
Сообщений: 106
| Цитата 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 |
|
|
Эти 0 пользователя(ей) поблагодарили suhar_ за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 15.11.2016, 18:47 | Сообщение # 2173 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата 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 и объект перейдет в онлайн. Если объект оффлайн, то одних флагов недостаточно. теперь по вылету - причина мне неизвестна, лог не информативен, но у меня такого вылета нет.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Kapitan_komandor | Дата: Вт, 15.11.2016, 20:35 | Сообщение # 2174 |
Диггер Вольных
Вольные сталкеры
Сообщений: 12054
| Парни...играю в SGM v.1.7 новый артифакт мод...нашёл гаус под деревом. Взял и...батареи на 10 выстрелов есть в рюкзаке,а самой гауса нет. Что делать?
Жизнь это миг.за него и держись.
|
|
|
Эти 0 пользователя(ей) поблагодарили Kapitan_komandor за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 15.11.2016, 21:13 | Сообщение # 2175 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата Kapitan_komandor ( ) Что делать?
Это шутка автора мода. Если хотите получить гаусс "честно" (без правки файлов), то можно выстрелами выбить гаусс из под дерева. Затем выстрелами вытолкать его на 50 метров от этого дерева. После этого гаусс можно будет подобрать.
Стоит ли этим заниматься, не знаю. Патроны для гаусса в товарных количествах мы получим только в Припяти. А там уже на подходе гаусс из оригинала. Кроме того, гаусс из под дерева будет убит в ноль.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|