|
Модостроение. Общие вопросы и ответы
|
|
| 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 | Дата: Пн, 16.05.2016, 22:32 | Сообщение # 1846 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Лог вылета какой? По идее если НПС не в скваде то get_object_squad(npc) == nil и значит условие далее должно быть таким:
Код if squad == nil or squad:commander_id() ~= npc:id() then return false end
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| ZmeеY | Дата: Пн, 16.05.2016, 23:20 | Сообщение # 1847 |
 Новичок
Пользователи
Сообщений: 54
| Здравствуйте. Не подскажите, реально ли сделать цену продажи предмета торговцем более 1.000.000? В конфиге предмета ставлю цену (costs) допустим 3.000.000, но торговец всё равно дороже 1.000.000 не продаёт.
Я один, но это не значит, что я одинок... _________________________________ В.Цой
|
| |
|
| Эти 0 пользователя(ей) поблагодарили ZmeеY за это полезное сообщение: |
|
|
| denis2000 | Дата: Вт, 17.05.2016, 11:32 | Сообщение # 1848 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| ZmeеY, Вероятнее всего - нет, уткнулись в ограничения переменных движка. Кстати даже если у НПС бесконечные деньги то более 1000000 он тоже не заплатит (не хватит "бесконечных" денег).
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| =Stalker123= | Дата: Вт, 17.05.2016, 13:08 | Сообщение # 1849 |
|
Гражданский
Пользователи
Сообщений: 6
| Цитата denis2000 (  ) =Stalker123=, Могу сказать одно, условие из скрипта: Код if self.item and system_ini():section_exist(self.item) then
не выполняется. Или в таблицу в принципе ничего не попадает или секции с именем которое содержит переменная self.item нет в конфиге. Поэтому нет текстовой подсказки на Бюрере нет колбека на объект при юзанье.
Хорошо, спасибо за помощь в этом деле. Буду пытаться сделать что-то толковое.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили =Stalker123= за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вт, 17.05.2016, 19:49 | Сообщение # 1850 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата denis2000 (  ) sergej5500, Лог вылета какой?
[cut=Лог вылета]FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ...g\Зов Припяти\gamedata\scripts\travel_manager.script:88: attempt to index local 'squad' (a nil value)
stack trace:[/cut]
Вылет получаю при любой попытке разговора с несквадовым сталкером с дефолтными диалогами.
[cut=Глючная функция]function uni_traveler_precond(actor, npc) local squad = get_object_squad(npc) local new_target = xr_logic.pick_section_from_condlist(db.actor, squad, squad.action_condlist) --88строка if new_target ~= nil and new_target ~= "nil" then return false end if squad ~= nil and squad:commander_id() ~= npc:id() then return false end if npc:character_community() == "bandit" then return false end if level.name() == "jupiter_underground" then return false end if npc:character_community() == "army" then return false end local smart = xr_gulag.get_npc_smart(npc) if (smart) then if smart:name() == "jup_b41" then return false end end return true end[/cut]
Фрагмент кода
local new_target = xr_logic.pick_section_from_condlist(db.actor, squad, squad.action_condlist) if new_target ~= nil and new_target ~= "nil" then return false end
был добавлен по совету Дмитрия (makdm). Подробности тут. Для сквадовых сталкеров он работает отлично.
Если этот код убрать (закоментировать), то диалоги становятся доступными. Но при инициации травел-диалога (Чем сейчас занимаешься?) получаю другой вылет.
[cut=Лог]FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ...g\Зов Припяти\gamedata\scripts\travel_manager.script:184: attempt to index local 'npc_squad' (a nil value)
stack trace:[/cut]
[cut=Функция]function squad_action_description(actor, npc, dialog_id, phrase_id) local npc_squad = get_object_squad(npc) if npc_squad.current_action == nil or npc_squad.current_action.name == "stay_point" then --184 строка return "dm_" .. "stalker" .."_doing_nothing_"..tostring(math.random(1,3)) --npc:character_community() end local target_id = npc_squad.assigned_target_id -- if target_id == nil then -- return "dm_" .. npc:character_community() .."_doing_nothing" -- end local target_obj = alife():object(target_id) if target_obj == nil then abort("SIM TARGET NOT EXIST %s, action_name %s", tostring(target_id), tostring(npc_squad.current_action.name)) end local target_clsid = target_obj:clsid() if target_clsid == clsid.script_actor then abort("Actor talking with squad, which chasing actor") elseif target_clsid == clsid.online_offline_group_s then return "dm_" .. "stalker" .."_chasing_squad_"..alife_character_community(target_obj) --npc:character_community() elseif target_clsid == clsid.smart_terrain then local smart_name = target_obj:name() local travel_class = get_travel_class() local desc = travel_class.smart_to_stringtables[smart_name] if desc == nil then abort("wrong smart name [%s] in travel_manager.ltx", tostring(smart_name)) end return desc end abort("wrong target clsid [%s]", tostring(target_clsid)) end[/cut]
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| denis2000 | Дата: Вт, 17.05.2016, 21:38 | Сообщение # 1851 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500,
Код function uni_traveler_precond(actor, npc) local squad = get_object_squad(npc) if squad == nil then return false end local new_target = xr_logic.pick_section_from_condlist(db.actor, squad, squad.action_condlist) if new_target ~= nil and new_target ~= "nil" then return false end if squad:commander_id() ~= npc:id() then return false end
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Наблюдатель | Дата: Чт, 19.05.2016, 01:44 | Сообщение # 1852 |
 Ветеран
Пользователи
Сообщений: 402
| Приветствую почтеннейшую Публику! Джентльмены, помогите мудрым напутствием, пжл. В последнее время озаботился... нет, не Гондурасом, а печальным фактом отсутствия во многих модах на ЗП мини-карты. В самом лучшем моде всех времён и народов, Sigerose, умные Люди оставили файлы архивов мини-карты в папках мода. К моему величайшему сожалению, незрелые умы авторов модов попроще, не смогли осмыслить значимость мини-карты для человека тонкого и ранимого, типа меня. Я скорблю! Буду весьма признателен, если кто-то из уважаемых Мастеров, укажет мне точный перечень файлов мини-карты в оригинальном Зове Припяти. А то все манипуляции Вашего покорного слуги с папкой ui, приводят либо в вылетам, либо к тому, что вожделенная карта так и не появляется. Помогите, плиз, умные Люди!
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
| denis2000 | Дата: Чт, 19.05.2016, 12:44 | Сообщение # 1853 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Наблюдатель, ui\zone_map.xml
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Наблюдатель | Дата: Сб, 21.05.2016, 08:03 | Сообщение # 1854 |
 Ветеран
Пользователи
Сообщений: 402
| Снова здравствуйте всем! Умные Люди, подскажите пожалуйста, можно ли прописать "неизвестному оружию", что бы механики его чинили сразу после его захвата, до квеста у Кардана, на поиск документации на гаусс-пушку? Если конечно для этого не надо вносить много правок?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
| denis2000 | Дата: Сб, 21.05.2016, 13:17 | Сообщение # 1855 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Наблюдатель, А смысл? Боеприпасов кот наплакал!
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Наблюдатель | Дата: Сб, 21.05.2016, 18:14 | Сообщение # 1856 |
 Ветеран
Пользователи
Сообщений: 402
| Цитата denis2000 (  ) Наблюдатель, А смысл? Боеприпасов кот наплакал! Уважаемый denis2000, я как всегда в своём репертуаре. Просто решил поиграть в Путь Бандита, там игра только на Затоне и по квестам надо отдать уничтожитель(гаусс) Султану. Я при помощи своих скромных знаний по ЗП, естественно пробрался и на Юпитер, и в Припять. Там спавнится всяких злых гоблинов(химер, псевдогигантов, бюреров) очень много. Так вот, в моде, Кардан посылает в подземную лабораторию за документами на гаусс, до Припяти в обычной игре. Гаусс, по квестам, я отдал Султану, потом подобрал неизвестное оружие в Припяти, приношу его Кардану, а тот на него ну никак не реагирует. Пишет "неизвестное оружие" и т.п. Так и остался я мальчиком для битья, со сломанным гауссом. В этом моде "неизвестное оружие" ещё убойнее обычного гаусса. Ну я и хотел его активировать, но конечно только в том случае, если это делается где-то просто одной строкой. Если для этого надо реально возиться в скриптах, то тогда, абсолютно согласен, смысла возиться с этим нет.
Сообщение отредактировал Наблюдатель - Сб, 21.05.2016, 18:19 |
| |
|
| Эти 0 пользователя(ей) поблагодарили Наблюдатель за это полезное сообщение: |
|
|
| STALKER_ICEBERG | Дата: Вс, 22.05.2016, 12:22 | Сообщение # 1857 |
 Сталкер
Пользователи
Сообщений: 180
| Итак, вопрос про звуки. Скачал с американской википедии звуки выстрелов Мосина, Спрингфилда и Кар98к (вот такой я извращенец). Хочу заменить стандартные. Ставил сборку от albor, но, думаю, это ничего не меняет. Где и какие файлы нужно менять? Нашел папку sounds, но вроде нужно еще где-то что-то менять. Боюсь навредить. И да, Наблюдатель, в третий раз прошу Вас скинуть мне проклятый файл бессмертия. Теперь уже не телохранителей (они доказали свою бесполезность). Да и с ними не интересно играть. Нужен файл бессмертия Давида. Ну или где его править. Мне до квеста с ним еще далеко (вся игра - только начал), поэтому надеюсь на Ваш ответ.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили STALKER_ICEBERG за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вс, 22.05.2016, 13:42 | Сообщение # 1858 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| STALKER_ICEBERG,
Файл Давида gamedata\configs\scripts\SGM\zaton\zat_barge_commander. В секции move@waiting и move@defence добавьте строку invulnerable = true
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| denis2000 | Дата: Вс, 22.05.2016, 13:59 | Сообщение # 1859 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| STALKER_ICEBERG, Пути и имена звуков оружия (относительно папки sounds) указаны в их конфигурационных файлах строками типа: snd_draw = weapons\ak74_draw
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| STALKER_ICEBERG | Дата: Вс, 22.05.2016, 16:18 | Сообщение # 1860 |
 Сталкер
Пользователи
Сообщений: 180
| Цитата sergej5500 (  ) Файл Давида gamedata\configs\scripts\SGM\zaton\zat_barge_commander. В секции move@waiting и move@defence добавьте строку invulnerable = true
У меня эта строка в секции waiting выглядит так: invulnerable = {-zat_monsters_wave_fail -zat_monsters_wave_reward} true, false Следующая, в defence, так: invulnerable = {-zat_monsters_wave_appeared_1_controller} true, false Я просто стер лишнее, оставив true. Думаю, это то, что нужно. Это можно провернуть с остальными сталкерами с баржи? И можно ли сделать так с Эльбрусом? Хочу сделать его невосприимчивым только на время квеста, дальше - пусть бродит смертным.
Цитата denis2000 (  ) Пути и имена звуков оружия (относительно папки sounds) указаны в их конфигурационных файлах строками типа: snd_draw = weapons\ak74_draw Там я трогать ничего не стал - просто сделал у своих файлов название как у тех, которые были там раньше и заменил. Например, там был звук sks_shoot.ogg. Я заменил его на свой sks_shoot.ogg (из Call of Duty). Считаю это правильным - никаких конфликтов быть не должно.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили STALKER_ICEBERG за это полезное сообщение: |
|
|
|