Модератор форума: romale |
Форум S.T.A.L.K.E.R. - Моддинг Разбираем S.T.A.L.K.E.R. Разборочная комната ТЧ (Задаем вопросы по скриптам/конфигам и другим файлам игры) |
Разборочная комната ТЧ |
Дата: Вторник, 17.04.2012, 22:43
Сообщение #1
Вы задаёте интересующий вас вопрос и тот, кто может вам на него ответить, пишет свой ответ. Правила темы: 1. Прежде чем задать вопрос, желательно прочитать все предыдущие страницы темы. Даже если вы не найдете там нужного ответа - я уверен, вы узнаете много нового. Второй вариант - воспользоваться поиском по ключевому слову. 2. Вы можете задавать вопросы, только непосредственно касающиеся создания модификаций и редактирования файлов игры 3. Личные вопросы не допускаются 4. Отвечать на вопросы желательно достаточно развернуто, задевая все аспекты касающиеся конкретного вопроса 5. Отвечать вы можете только в том случае если уверены в правильности ответа, если не знаете - просто не отвечайте. Авторы неправильных, вводящих в заблуждение ответов будут наказываться. 6.Соблюдайте грамотность и правильность построения вопросов и ответов, во избежание их удаления. "Спасибо / пожалуйста / не знаю" и прочие односложные и не несущие смысловой нагрузки сообщения, будут удаляться немедленно, а их авторы - наказываться. Основная цель темы - помочь новичкам-модостроителям, второстепенная - свести на нет тенденцию создания новых тем по каждому интересующему новичков вопросу.
|
Дата: Суббота, 13.07.2019, 10:59
Сообщение #1761
Если удалить эту секцию из аллспавна, то Волка у нас не будет.(Естесственно надо будет пересчитать индексы, либо вместо Волка вставить например хотя бы ящик, чтобы не сбилаь нумерация в аллспавне) Есть еще скриптовые персонажи, либо персовнажи в аллспавне, но появляющиеся в игре по условию, например такая секция в аллспавне Спасибо! Кстати ещё спрошу как удалить кат.сцену с грузовиком смерти при новой игре,и допустим поставить свою с пред историей,и можно ли как то убрать маленькие видео типо с asus и nvidia при запуске игры,так же хотел бы спросить как сделать сообщение в чате что, допустим я за группировку военных подойду к деревне новичков и в чате появится сообщение от Сидора: что ты тут забыл вояка? И последнее как сделать квест который будет даваться при новой игре,поговорить с тем-то. Заранее спасибо Добавлено (13.07.2019, 16:03) Сообщение отредактировал DER0N - Суббота, 13.07.2019, 11:21 |
Дата: Суббота, 13.07.2019, 16:17
Сообщение #1762
Кстати ещё спрошу как удалить кат.сцену с грузовиком смерти при новой игре,и допустим поставить свою с пред историей Можно. Записываем свой ролик, обзываем intro_stalker и размещаем по пути gamedata\textures\intro предварительно переименовав либо удалив уже находящийся там файл с таким же именем. Формат видеоролика - ".ogm". Можно. На ярлыке игры жмакаем правой кнопкой, и в свойствах ярлыка через пробел прописываем команду -nointro. Но есть нюанс - тогда вообще не будет никаких стартовых роликов, и придется свое видео запускать другим способом. так же хотел бы спросить как сделать сообщение в чате что, допустим я за группировку военных подойду к деревне новичков и в чате появится сообщение от Сидора: что ты тут забыл вояка? Функция вывода сообщения на экран: Код function may_text() news_manager.send_tip(db.actor, "%c[255,0,255,0]".."Имя_источника:".."\\n".."%c[255,255,255,0]Текст_сообщения.".."".."\n", nil, nil, 10000) end Где "имя_источника" нужный НПС - Сидорович, Лис, Волк и т.д., А "Текст сообщения думаю понятно" Естественно нужно вызвать в нужный момент функцию may_text() например с помощью рестриктора. И последнее как сделать квест который будет даваться при новой игре,поговорить с тем-то. Заранее спасибо В каком либо файле info_имя_стартовой_локации.xml (по пути gamedata\config\gameplay) вписываем свой инфопоршень, по аналогии с другими, например: Код <info_portion id="proba_start_game"> </info_portion> Затем в файле bind_stalker.script по пути gamedata\scripts находим такие строки: Код if self.bCheckStart then printf("SET DEFAULT INFOS") и под ними вставляем вызов своего инфопоршня: Код if not has_alife_info("proba_start_game") then self.object:give_info_portion("proba_start_game") end Сохраняем, закрываем. Теперь при начале новой игры, мы получаем выдачу инфопоршня "proba_start_game". А уж по его выдаче можно сделать практически всё: от простого спавна чего либо, до запуска того же видео, выдачи задания и... да на что фантазия хватит в пределах возможностей Сталкера. |
Дата: Суббота, 13.07.2019, 16:20
Сообщение #1763
Функция вывода сообщения на экран: Код function may_text() news_manager.send_tip(db.actor, "%c[255,0,255,0]".."Имя_источника:".."\\n".."%c[255,255,255,0]Текст_сообщения.".."".."\n", nil, nil, 10000) end Где "имя_источника" нужный НПС - Сидорович, Лис, Волк и т.д., А "Текст сообщения думаю понятно" Естественно нужно вызвать в нужный момент функцию may_text() например с помощью рестриктора. Соррян конечно. Первый раз мод делаю,но можно расположение этого всего? И что такое may text и рестриктор. Где эту функцию добавлять? И что бы в опрделенное время,когда подойду к деревне. И потом заново такого не появлялось Добавлено (13.07.2019, 16:21) --------------------------------------------- Кто может ответить на вопрос. Хочу что бы когда я начинал новую игру был квест поговорить с начальником блок поста. В файлах escap'а есть файл blockpost_commander изменил ему имя всё ок,имя поменялось. Пытаюсь сделать диалог,вроде сделал нормально ,вроде правильно игра вылетает либо когда запускаю,либо когда пытаюсь поговорить с командиром. Мб этому npc нельзя диалог давать,или я делаю диалог неправильно? Добавлено (13.07.2019, 16:34) В каком либо файле info_имя_стартовой_локации.xml (по пути gamedata\config\gameplay) вписываем свой инфопоршень, по аналогии с другими, например: Код <info_portion id="proba_start_game"> </info_portion> Затем в файле bind_stalker.script по пути gamedata\scripts находим такие строки: Код if self.bCheckStart then printf("SET DEFAULT INFOS") и под ними вставляем вызов своего инфопоршня: Код if not has_alife_info("proba_start_game") then self.object:give_info_portion("proba_start_game") end Сохраняем, закрываем. Сделал вроде правильно. При запуске игры игра типо вылетает,но она просто сворачиваеться. Я просто пока ни куда не пределал этот поршень,из-за этого? Сообщение отредактировал DER0N - Суббота, 13.07.2019, 16:25 |
Дата: Суббота, 13.07.2019, 16:59
Сообщение #1764
Соррян конечно. Первый раз мод делаю,но можно расположение этого всего? И что такое may text и рестриктор Гм. Сложно всё как))) прежде чем делать мод, необходимо сначала немного "учить матчасть" хотя бы для того чтобы знать что есть что, с чем его едят, и как это все работает. 1. По пути gamedata\scripts находим файл xr_effects.script открываем, в самый низ вставляем строки: Код function new_game_prob() news_manager.send_tip(db.actor, "%c[255,0,255,0]".."Сидорович:".."\\n".."%c[255,255,255,0]Вояка, а ты то что забыл здесь?.".."".."\n", nil, nil, 10000) end Сохраняем изменения, закрываем. 2. Спейсрестриктор это такая зона, при входе в которую ГГ можно например вызвать какое-то действие. Например вызвать наше сообщение. Итак, спавним рестриктор: В аллспавн (можно и скриптом создать рестриктор, но для начала необходимо понять что это и как с ни работать хотя бы в аллспавне) вставляем секцию Код [1751] ; cse_abstract properties section_name = space_restrictor name = stad_restrictor_kostum position = 37.4219093322754,1.16703701019287,354.676879882813 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 2260 distance = 0 level_vertex_id = 148125 object_flags = 0xffffff3e custom_data = <<END [logic] cfg = scripts\sidor_text.ltx END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 65 ; cse_alife_space_restrictor properties restrictor_type = 0 где name = stad_restrictor_kostum индивидуальное имя рестриктора, ставим любое, только чтобы не повторялись position = 37.4219093322754,1.16703701019287,354.676879882813 центр рестриктора(где он заспавнится) поставить координаты центра деревни. shape0:radius = 65 радиус рестриктора - опытным путем определить нужный Вам, чтобы при подходе к деревне он сработал (можно стать в центр предполагаемого рестриктора и с помощью "дистанция до цели" определить нужную цифру. [1751] - номер секции в аллспавне, необходимо поставить свой номер Если мне память не изменяет, например на кордоне в файле alife_l01_escape.ltx последняя секция имеет номер 869. Соответственно вставляем наш рестриктор в конец файла с номером [870]. Все запаковываем аллспавн и идем дальше. 3. В секции нашего рестриктора есть строка: Код cfg = scripts\sidor_text.ltx Это ссылка на логику рестриктора. Т.е. по пути gamedata\config\scripts создаем файл sidor_text.ltx В него вставляем такие строки: Код [logic] active = sr_idle@one [sr_idle@one] on_actor_inside = %=new_game_prob% Сохраняем, закрываем. Теперь, при подходе к деревне новичков, при попадании ГГ в наш рестриктор, мы получим сообщение от Сидоровича - "Вояка, а ты то что забыл здесь?" Как то так))) |
Дата: Суббота, 13.07.2019, 17:18
Сообщение #1765
Сделал вроде правильно. При запуске игры игра типо вылетает,но она просто сворачиваеться. Я просто пока ни куда не пределал этот поршень,из-за этого? Что-то сделано неправильно, скорее всего в бинд-сталкер. Конечно желательно бы лог посмотреть, но хотя бы выложить под спойлер сделанные изменения в бинд-сталкер (захватив 15-20 строк вверх и вниз от изменений) |
Дата: Суббота, 13.07.2019, 17:18
Сообщение #1766
function new_game_prob() news_manager.send_tip(db.actor, "%c[255,0,255,0]".."Сидорович:".."\\n".."%c[255,255,255,0]Вояка, а ты то что забыл здесь?.".."".."\n", nil, nil, 10000) end Вау. Удивляюсь как люди в этом разобрались,спасибо! Сейчас буду пробовать Добавлено (13.07.2019, 17:23) В аллспавн (можно и скриптом создать рестриктор, но для начала необходимо понять что это и как с ни работать хотя бы в аллспавне) В alife.escape допустим или где? Добавлено (13.07.2019, 17:24) Конечно желательно бы лог посмотреть, но хотя бы выложить под спойлер сделанные изменения в бинд-сталкер (захватив 15-20 строк вверх и вниз от изменений) Сделаю после того что делаю сейчас) |
Дата: Суббота, 13.07.2019, 17:25
Сообщение #1767
|
Дата: Суббота, 13.07.2019, 17:28
Сообщение #1768
[1751] ; cse_abstract properties section_name = space_restrictor name = stad_restrictor_kostum position = 37.4219093322754,1.16703701019287,354.676879882813 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 2260 distance = 0 level_vertex_id = 148125 object_flags = 0xffffff3e custom_data = <<END [logic] cfg = scripts\sidor_text.ltx END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 65 ; cse_alife_space_restrictor properties restrictor_type = 0 Это ты уже замутил мне центр деревни и radius,или мне самому идти мереть мне конечно не проблема но просто. Добавлено (13.07.2019, 17:34) --------------------------------------------- Ещё пару последних вопросов. Можно ли осуществить что бы был напарник в игре,что бы он за тобой ходил и помогал,за квест допустим. И как сделать что бы как в моде возвращение шрама посреди мода сидор ушёл из своего бункера и об этом тоже написалось в чате, и желательно что бы там кто-то другой появился(кастомный созданный торговец). И что бы это произошло тоже после квеста Добавлено (13.07.2019, 17:56) --------------------------------------------- Гм. Сложно всё как))) прежде чем делать мод, необходимо сначала немного "учить матчасть" хотя бы для того чтобы знать что есть что, с чем его едят, и как это все работает. 1. По пути gamedata\scripts находим файл xr_effects.script открываем, в самый низ вставляем строки: Код function new_game_prob() news_manager.send_tip(db.actor, "%c[255,0,255,0]".."Сидорович:".."\\n".."%c[255,255,255,0]Вояка, а ты то что забыл здесь?.".."".."\n", nil, nil, 10000) end Либо я что-то делаю не так,либо ты ошибку допустил. Подхожу хотя бы не вылетает,вымерил все коорды и дистанцию серо не робит. Сохраняем изменения, закрываем. 2. Спейсрестриктор это такая зона, при входе в которую ГГ можно например вызвать какое-то действие. Например вызвать наше сообщение. Итак, спавним рестриктор: В аллспавн (можно и скриптом создать рестриктор, но для начала необходимо понять что это и как с ни работать хотя бы в аллспавне) вставляем секцию Код [1751] ; cse_abstract properties section_name = space_restrictor name = stad_restrictor_kostum position = 37.4219093322754,1.16703701019287,354.676879882813 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 2260 distance = 0 level_vertex_id = 148125 object_flags = 0xffffff3e custom_data = <<END [logic] cfg = scripts\sidor_text.ltx END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 65 ; cse_alife_space_restrictor properties restrictor_type = 0 где name = stad_restrictor_kostum индивидуальное имя рестриктора, ставим любое, только чтобы не повторялись position = 37.4219093322754,1.16703701019287,354.676879882813 центр рестриктора(где он заспавнится) поставить координаты центра деревни. shape0:radius = 65 радиус рестриктора - опытным путем определить нужный Вам, чтобы при подходе к деревне он сработал (можно стать в центр предполагаемого рестриктора и с помощью "дистанция до цели" определить нужную цифру. [1751] - номер секции в аллспавне, необходимо поставить свой номер Если мне память не изменяет, например на кордоне в файле alife_l01_escape.ltx последняя секция имеет номер 869. Соответственно вставляем наш рестриктор в конец файла с номером [870]. Все запаковываем аллспавн и идем дальше. 3. В секции нашего рестриктора есть строка: Код cfg = scripts\sidor_text.ltx Это ссылка на логику рестриктора. Т.е. по пути gamedata\config\scripts создаем файл sidor_text.ltx В него вставляем такие строки: Код [logic] active = sr_idle@one [sr_idle@one] on_actor_inside = %=new_game_prob% Сохраняем, закрываем. Теперь, при подходе к деревне новичков, при попадании ГГ в наш рестриктор, мы получим сообщение от Сидоровича - "Вояка, а ты то что забыл здесь?" Как то так))) Добавлено (13.07.2019, 17:57) Сообщение отредактировал DER0N - Суббота, 13.07.2019, 17:56 |
Дата: Суббота, 13.07.2019, 18:23
Сообщение #1769
Это ты уже замутил мне центр деревни и radius,или мне самому идти мереть мне конечно не проблема но просто. Нет, я даже не помню откуда этот рестриктор, поэтому координаты необходимо снять свои. Можно ли осуществить что бы был напарник в игре,что бы он за тобой ходил и помогал,за квест допустим. Да, осуществляется через логику НПС. И как сделать что бы как в моде возвращение шрама посреди мода сидор ушёл из своего бункера и об этом тоже написалось в чате, и желательно что бы там кто-то другой появился(кастомный созданный торговец). И что бы это произошло тоже после квеста Проблематично, ибо Сидор... монстр))) Просто удаляем его из игры, а другого НПС ставим на его место, но он сидеть не будет. Можно из ЗП попробовать выдернуть анимки (там реализовано "сидение персонажей") и прочее, но это проблематично Вроде всё сделал нету ничего,хотя корды отмерил,дистанцию тоже. в чате сообщенки нет Что-то сделано не так. Спейсрестриктор необходимо поставить по координатам в центре деревни. Запаковать аллспавн, естественно без ошибок. Вставить свой запакованный аллспавн в игру (gamedata\spawns). Вставить функцию в скрипт "эффекты", создать файл логики, вписать в него логику. Начать новую игру. |
Дата: Воскресенье, 14.07.2019, 18:13
Сообщение #1770
Что-то сделано не так. Спейсрестриктор необходимо поставить по координатам в центре деревни. Запаковать аллспавн, естественно без ошибок. Вставить свой запакованный аллспавн в игру (gamedata\spawns). Вставить функцию в скрипт "эффекты", создать файл логики, вписать в него логику. Начать новую игру. Могу скинуть alife escape Последние строки,всё по твоей этой инструкции сделал только корды мои и дистанция Добавлено (14.07.2019, 18:14) --------------------------------------------- Я всё повтороно сделал не помогло Я так понимаю ты мне не будешь объяснять) [870] ; cse_abstract properties section_name = space_restrictor name = stad_restrictor_kostum position = -206.77,-18.73,-147.15. direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 2260 distance = 0 level_vertex_id = 148125 object_flags = 0xffffff3e custom_data = <<END [logic] cfg = scripts\sidor_text.ltx END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 100 ; cse_alife_space_restrictor properties restrictor_type = 0 Сообщение отредактировал DER0N - Воскресенье, 14.07.2019, 19:15 |
Дата: Воскресенье, 14.07.2019, 19:50
Сообщение #1771
Гм... Илья, а давай пока сходим "другим путем"))) Если ты правильно снял координаты (кстати, а гаме-вертекс и левел вертекс тоже свои ставил?) и в аллспавне нет ошибок, попробуй вставить в аллспавн вместо рестриктора вот эту секцию: Код [870] ; cse_abstract properties section_name = physic_object name = mil_physic_object_0995 position = -206.77,-18.73,-147.15 direction = 0,1.76220035552979,0 ; cse_alife_object properties game_vertex_id = 2260 distance = 0 level_vertex_id = 148125 object_flags = 0xffffff3a ; cse_visual properties visual_name = physics\box\seif_01 ; cse_ph_skeleton properties skeleton_flags = 1 ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 Упакуй, вставь в игру начни НИ, и сходи на место спавна, посмотри что получилось. А далее уже будем смотреть по результату. Кстати, обрати внимание на свои координаты: после последней цифры не должно быть никаких знаков! Ни точек, ни запятых, вообще ничего! |
Дата: Понедельник, 15.07.2019, 19:25
Сообщение #1772
Нет) Не знаю что это) Короче сделал корды без знаков не получилось,поменял на эту секцию не помогло,может всё дело в этих называемых гама вертекс и левел вертекс? Сообщение отредактировал DER0N - Понедельник, 15.07.2019, 19:48 |
Дата: Понедельник, 15.07.2019, 19:52
Сообщение #1773
DER0N, вот тебе код:
Код ----Вертексы и координаты на экран--------- if true then local hud = get_hud() local cs = hud:GetCustomStatic("cs_debug" ) if cs == nil then hud:AddCustomStatic("cs_debug", true) cs = hud:GetCustomStatic("cs_debug" ) end local lvid, gvid = db.actor:level_vertex_id(), db.actor:game_vertex_id() local pos, dir = db.actor: position(), db.actor:direction() local pos2 = level.vertex_position(lvid) local valid = pos2:distance_to(pos) <= 0.7 local msg = string.format("lvid: %d\\n", lvid) .. string.format("gvid: %d\\n", gvid) .. string.format("pos: %f,%f,%f\\n", pos.x, pos.y, pos.z) .. string.format("dir: %f,%f,%f\\n", dir.x, dir.y, dir.z) .. string.format("valid: %s", tostring(valid)) if cs ~= nil then cs:wnd():SetTextST(msg) end end ----Вертексы и координаты на экран--------- Скопируй его, открой фаил bind_stalker.scripn, и вставь этот код ну хотя бы под строками: Код --' Вывод сообщения о большой радиации if self.object.radiation >= 0.7 then local hud = get_hud() local custom_static = hud:GetCustomStatic("cs_radiation_danger") if custom_static == nil then hud:AddCustomStatic("cs_radiation_danger", true) hud:GetCustomStatic("cs_radiation_danger"):wnd():SetTextST("st_radiation_danger") end else local hud = get_hud() local custom_static = hud:GetCustomStatic("cs_radiation_danger") if custom_static ~= nil then hud:RemoveCustomStatic("cs_radiation_danger") end end сохрани изменения и загрузи игру. У тебя на экране должны появится координаты твоего местоположения, вот как то так: Так вот. В секции НПС есть строки: position = -206.77,-18.73,-147.15 -собственно координаты места game_vertex_id = 2260 гейм-вертекс локации level_vertex_id = 148125 левел-вертекс локации Они должны соответствовать тем данным, которые ты увидишь на месте предполагаемого спавна (точка где стоит ГГ) Попоробуй снять нормально координаты, вставить их в предложенную чуть выше секцию, упаковать аллспавн, начать НИ и посмотреть что получится. ПС. Я пока отлучусь на час-два. ПСС. Всегда делай копии редактируемых файлов, чтобы потом не было "мучительно больно" ПССС. Если внесешь код для вывода координат правильно - НИ не нужна, работает сразу после загрузки сохранения. |
Дата: Вторник, 16.07.2019, 18:37
Сообщение #1775
Скорее всего неправильно вставил код в бинд-сталкер. 1) Верни все "родные" файлы на место, чтобы все файлы были без изменений. 2) Скачай "нотепад" и пользуйся им. Там в настройках есть подсветка синтаксиса, нумерация строк и т.д., весьма удобно работатью 3) Скачай вот этот файл: https://u.to/mFfeFQ Переименуй свой фаил bind_stakker.script в bind_stalker.bak (это будет твой оригинал "на всякий случай). Вставь скачаный файл по пути gamedata\scripts 4) Загрузи игру. Отпишись что получилось. 5) Внимательно изучи первое сообщение этой темы http://stalker-gamers.ru/forum/23-49-1 чтобы знать что такое лог и как его "добыть". Как правило в логе содержится информация что "накурочено" не так. |
Дата: Вторник, 16.07.2019, 18:45
Сообщение #1776
И так им пользуюсь,но про эти подсветки не шарю, Внимательно изучи первое сообщение этой темы http://stalker-gamers.ru/forum/23-49-1 чтобы знать что такое лог и как его "добыть". Как правило в логе содержится информация что "накурочено" не так. Если винда 10? |
Дата: Вторник, 16.07.2019, 18:53
Сообщение #1777
Хм... Не сталкивался. Как вариант через поисковик найти папку stalker-shok в ней и хранятся логи, сохранения... Или еще вариант: Цитата (Или же после вылета откройте блокнот или любой другой текстовый редактор и выберите в опциях "вставить", либо используйте сочетание клавиш: "ctrl+v" ..(Если имеется ошибка "FATAL ERROR", то она автоматом вставится в блокнот, нужно скопировать текст и вставить его в свое сообщение)).. |
Дата: Понедельник, 31.08.2020, 09:04
Сообщение #1778
Привет Мастерам! Нужна помощь по вылету мода "История снайпера.Ловушка судьбы" (база ТЧ, автор-Артём "-GAS-" Громыч". Авторская версия не поддерживается, репак от Serega_Lus).
Обстоятельства: ГГ говорит с персонажем и должен быть после этого "перекинут" в Бар 100 рентген. При перемещении происходит вылет с логом: Может кто подскажет? |
|
Дата: Понедельник, 31.08.2020, 16:05
Сообщение #1780
Привет Мастерам! Нужна помощь по вылету мода "История снайпера.Ловушка судьбы" (база ТЧ, автор-Артём "-GAS-" Громыч". Авторская версия не поддерживается, репак от Serega_Lus).
Обстоятельства: ГГ говорит с персонажем и должен быть после этого "перекинут" в Бар 100 рентген. При перемещении происходит вылет с логом: Пивкабы_xD, Нет это не то... |
| |||