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

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

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
alex_xp_77Дата: Сб, 12.07.2014, 16:21 | Сообщение # 527
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

Доброго дня всем !! У меня вопрос очень наверняка простой, по 3 ds Max*y, т.к. накладываю в лаборатории х-24 текстуры, я не профи и обьясню по простому, там есть шарики с текстурами в материал эдитор, так вот наибольшее их количество это 6*4, подскажите, как мне быть, если у меня закончились свободные ячейки, а больше 24 сделать эти шарики не получается, но мне нужны свободные , так как не хватает их что бы наложить нужную текстуру!! Надеюсь правильно поставил свой вопрос, помогите пожалуста кто понимает о чем речь!!

На будущее, вот нашел , может кому то понадобится!!

Когда у тебя заканчиваются шарики, а все материалы с них применены к соответствующим объектам в сцене, ты смело можешь сделать обнуление слотов материал эдитора. Для этого следует зайти в меню Utilities редактора материалов и выбрать пункт Reset Material Editor Slots.
Тогда все шарики снова станут чистыми, как в пустой сцене и ты сможешь продолжить создание новых материалов.
В случае если тебе понадобится снова вернуться к какому-то материалу, созданному до обнуления, то ты просто воспользуйся инструментом Pick Material from Object (пиктограммка в виде пипетки). Выбери его и пикни нужный тебе материал с соответствующего объекта в сцене




Сообщение отредактировал alex_xp_77 - Вс, 13.07.2014, 13:56
 
Ay49MihasДата: Сб, 12.07.2014, 17:19 | Сообщение # 528
Полевой исследователь
Ученые сталкеры
Сообщений: 218
Награды: 9
Репутация: [ 83 ]

Зравствуйте!
Не могу раскомпилировать и скомпилировать all.spawn к SGM 2.2 сборка от Albora, используя средства из gamedata/spawns/. При распаковке ругается на секции оружия (wpn_glock, иногда на irp-p), при запаковке --- на повторяющиеся секции в way_military.ltx. Может уже боян, но не подскажете, в какую сторону копать?
Спасибо!

win8 (WinXP sp3 то же самое), ActivePerl 5.16.3 x64/x86, ACDC 1.24
Сборка Albor'а, фикс, текстурный пак.

PS: линуксовый perl 5.10 ваще ерунду выдаёт, не относящуюся к игре.
 
sergej5500Дата: Сб, 12.07.2014, 18:30 | Сообщение # 529
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Ay49Mihas,
Для нормальной распаковки надо добавить недостающие стволы в файл sections. Там много строк типа:

'wpn_ak74' = cse_alife_item_weapon_magazined_w_gl.

Допишите аналогичным способом недостающие стволы и прочие предметы. Рано или поздно спавн разберется.

Если разобранный спавн при сборке будет ругаться на файл way_military, то возьмите этот файл из папки Compiler ЗП. Его можно найти в папке gamedata\spawns в чистом СГМ 2.2.
 
Ay49MihasДата: Сб, 12.07.2014, 20:00 | Сообщение # 530
Полевой исследователь
Ученые сталкеры
Сообщений: 218
Награды: 9
Репутация: [ 83 ]

Вот спасибо! Почему-то нигде такого не нагуглил. После добавления пары десятков классов, спавн разобрался, и после этого успешно собрался smile
 
a4927860Дата: Ср, 16.07.2014, 10:35 | Сообщение # 531
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Затянуло меня чтото... Но скоро уже весь функционал дотяну. можно будет за квесты браться.

Вопрос - в SGM есть активаторы смены ножей и биноклей
какой скрипт отвечает за их смену?
Если можно - то конкретно с куском (то есть какой кусок)
Я пока нашел только вот этот
Код
function relocate_actor_inventory_to_box(actor, npc, p)
  local function transfer_object_item(item)
   if item:section() ~= "wpn_binoc" and item:section() ~= "wpn_knife" and item:section() ~= "device_torch" then
    db.actor:transfer_item(item, inv_box_1)
   end
  end
  inv_box_1 = get_story_object (p[1])
  actor:inventory_for_each(transfer_object_item)
end


в xr_effect.script - но найти где предметы заменяются я не смог...
Хочу добавить нормальное оружие для выживания, саперную лопату, мачете, гарпун в конце концов...

Добавлено (16.07.2014, 10:35)
---------------------------------------------
ПС: как сделать не исчезающие при попадании снаряды? (стрелы)
нужно ли писать скрипт который спаунит снаярд в точке попадания (тогда как определить что снаряд долетел (как спаунить я уже знаю)) или есть какой то параметр в конфигах?

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

Цитата a4927860 ()
в SGM есть активаторы смены ножей и биноклей какой скрипт отвечает за их смену?

Файл sgm_dialogs.script функции типа install_bino_***.

Цитата a4927860 ()
нужно ли писать скрипт который спаунит снаярд в точке попадания

А по другому никак, поскольку пуль как физических объектов в Сталкере нет.

Цитата a4927860 ()
тогда как определить что снаряд долетел

Никак не определить, кроме того что некий живой объект получил хит от некоего живого объекта. Проведя по этомук факту расследование установить, что хит нанес ГГ и в момент нанесения хита в руках ГГ было некое оружие стреляющее стрелами.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Чт, 17.07.2014, 00:18 | Сообщение # 533
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

denis2000, Спасибо - а где то же но относительно ножей?

Круто, тоесть придется задействовать xr_motivator, bind_monster и собственно сам файл сравнения... Ок попытка не пытка..
 
denis2000Дата: Чт, 17.07.2014, 08:16 | Сообщение # 534
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата a4927860 ()
а где то же но относительно ножей?

Файл sgm_callbacks.script в строках активируються ножи и бинокли если они получены в качестве бустеров:
[cut]
Код
if sgm_functions.ReadActivateKnife(item_name) then
        if sgm_functions.ReadActivateSection(db.actor:item_in_slot(1):section()) then
           give_object_to_actor(sgm_functions.ReadActivateSection(db.actor:item_in_slot(1):section()))
           remove_item_from_slot(db.actor,1)
           give_object_to_actor(sgm_functions.ReadActivateKnife(item_name))
        end
     elseif sgm_functions.ReadActivateBinocular(item_name) then
        if sgm_functions.ReadActivateSection(db.actor:item_in_slot(5):section()) then
           give_object_to_actor(sgm_functions.ReadActivateSection(db.actor:item_in_slot(5):section()))
           remove_item_from_slot(db.actor,5)
           give_object_to_actor(sgm_functions.ReadActivateBinocular(item_name))
        end
     end
[/cut]


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Ay49MihasДата: Пт, 18.07.2014, 06:55 | Сообщение # 535
Полевой исследователь
Ученые сталкеры
Сообщений: 218
Награды: 9
Репутация: [ 83 ]

Здравствуйте! Не могли бы просвятить, или ткнуть носом (поиск завёл в тупик), насчёт секций в логике неписей animpoint. Статью на Inside Wiki читал, яснее не стало. В случае с неписями для перемещений по сценарию почему исползуются animpoint'ы, а не walker'ы с той же траекторией? Спасибо!
 
denis2000Дата: Пт, 18.07.2014, 09:05 | Сообщение # 536
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Ay49Mihas, параметры секции animpoint для ЗП.
cover_name - имя анимпоинта (укрытия/бойницы), специальная точка на которую станет НПС (обязана находиться на АИ-сетке).
use_camp - использует или нет НПС "правила поведения в лагере" (анекдоты, игра на инструментах и т.п.). По умолчанию - true.
reach_distance - растояние от анимпоинта на котором НПС считается достигшим его. По умолчанию - 0.75.
reach_movement - тип перемещения НПС который он использует при достижении анимпоинта. По умолчанию - walk.
avail_animations - Перечень доступных анимаций в анимпоинте.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Ay49MihasДата: Пт, 18.07.2014, 10:05 | Сообщение # 537
Полевой исследователь
Ученые сталкеры
Сообщений: 218
Награды: 9
Репутация: [ 83 ]

Цитата denis2000 ()
параметры секции animpoint для ЗП.

получается, эта статья не про ЗП?

Эта статья про ЗП. denis2000


Сообщение отредактировал Ay49Mihas - Пт, 18.07.2014, 10:05
 
a4927860Дата: Пт, 18.07.2014, 10:20 | Сообщение # 538
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Спасибо за предыдущие советы (добавил оружие скрытого ношения)

Следующий мой вопрос к вам:
Именение параметров в ltx скриптом. Если конкретнее - мне нужно в зависимости от наличия в рюкзаке предмета определенной категории менять переносимый ГГ вес.
Хочу сделать первоначальный переносимый вес 15 кг и дать ему набор не стакающихся рюкзаков, вешь мешок +15, разгруз +5, рюкзак +20 ну и т.д.
проверка на наличие рюкзака и сам рюкзак я сделаю не проблема - вопрос как менять вес у гг
еще интересует параметр высоты прыжка (артефакт какой забабахать или улучшение к ехо) (сам параметр я знаю - вопрос как его скриптом менять)

Заранее спасибо!


Сообщение отредактировал a4927860 - Пт, 18.07.2014, 12:04
 
Ay49MihasДата: Пт, 18.07.2014, 10:55 | Сообщение # 539
Полевой исследователь
Ученые сталкеры
Сообщений: 218
Награды: 9
Репутация: [ 83 ]

Цитата Ay49Mihas ()
Эта статья про ЗП.

По-прежнему ничего не понимаю. Там сказано, что анимпоинты используются для того, чтобы непись шёл по нужному вейпоинту (с чем вполне справляется walker с незацикленным path_walk). Грубо говоря, по моему разумению, в данном примере animpoint от такого же walker'а отличается тоько лишь наличием cover_name (некоего рестриктора), с которым что-то связано (я так понял, не логика). Почему там использованы именно animpoint'ы? Спасибо!
 
denis2000Дата: Пт, 18.07.2014, 11:53 | Сообщение # 540
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата Ay49Mihas ()
Там сказано, что анимпоинты используются для того, чтобы непись шёл по нужному вейпоинту

Где там такое сказано?
Цитата Ay49Mihas ()
Почему там использованы именно animpoint'ы?

Потому, что анимпоинты позволяют просто и быстро организовать место где НПС будет отыгрывать определенный комплекс анимаций и звуков. Анимпоинты бывают боевые и небоевые. В боевых он прячеться выставляя оружие, в небоевых сидит или стоит совершая дополнительные случайные движения, в том числе рассказывает анекдоты/истории, реагирует на истории других НПС, ест, пьет играег на гитаре или гармошке.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Поиск: