Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 (изменено) Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском.Возможно, ответ на Ваш вопрос уже есть.Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. Изменено 23 Февраля 2016 пользователем warwer 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Hind 28 Опубликовано 14 Мая 2023 Поделиться Опубликовано 14 Мая 2023 Скрытый текст [logic] active = ph_sound [ph_sound] snd = script_magnitofon_music6 looped = true on_info = {=actor_has_item(magnitofon_portable)} ph_sound@stop [ph_sound@stop] snd = silence on_signal = sound_end|nil %=delme% Подскажите, всё ли чисто в этом коде? ----- Забуксовал я короче, на вводе магнитофона. Потянуло меня его состряпать, прикольно же - пришел в свой лагерь в заднице зоны, включил приемник, музычка играет, сидишь у костра и читаешь ПДА, паралелльно за окном раздолбанной хаты наступают сумерки. Ладно, это я в лирику ушёл. Решил всё слямзить у многоуважаемого Жекана из мода "Золотой Шар: завершение". Как идёт система: при "сьедании" магнитофона, он пропадает из инвентаря, вместе с этим спавнится 2 обьекта - сам магнитофон (script_magnitofon) и точка (script_magnitofon_point#), проигрывающая музычку. Если нам надо закругляться с дискотекой - тыкаем на рестриктор вокруг приемника, и он складывается в инвентарь. При чем точка, проигрывающая музычку убирается при получении инфы, что у нас в инвентаре появился магнитофон. Собственно проблема в чём - я всё сделал как надо, всё везде подключил. Магнитофон выдается при начале новой игры, тыкаю - появляется панелька, там тыкаешь на те кнопки, которые доступны (при наличии соответствующих кассет), и под ногами спавнится магнитофон, начиная проигрывать музычку. Однако при попытке свернуть его обратно в инвентарь, после нажатия кнопки действия, игра вылетает с логом Итак, ниже моя писанина с кодом Скрытый текст function magnitofon_interface() local spwn = script_magnitofon(get_hud()) level.start_stop_menu(spwn,true) end class "script_magnitofon" (CUIScriptWnd) function script_magnitofon:__init(owner) super() self.dlg = self self.owner = owner self:InitControls() self:InitCallBacks() end function script_magnitofon:__finalize() end function script_magnitofon:InitControls() -- здесь определяем координаты левого верхнего угла и ширину-высоту self:Init(0,0,1024,768) -- файл-описатель наших элементов local xml = CScriptXmlInit() xml:ParseFile("script_magnitofon.xml") -- текстура xml:InitStatic("ramka", self) xml:InitStatic("name", self) xml:InitStatic("text1", self) -- кнопки self.btn_1 = xml:Init3tButton("btn_1", self) self:Register(self.btn_1, "btn_1") self.btn_1:Enable(false) self.btn_2 = xml:Init3tButton("btn_2", self) self:Register(self.btn_2, "btn_2") self.btn_2:Enable(false) self.btn_3 = xml:Init3tButton("btn_3", self) self:Register(self.btn_3, "btn_3") self.btn_3:Enable(false) self.btn_4 = xml:Init3tButton("btn_4", self) self:Register(self.btn_4, "btn_4") self.btn_4:Enable(false) self.btn_5 = xml:Init3tButton("btn_5", self) self:Register(self.btn_5, "btn_5") self.btn_5:Enable(false) self.btn_6 = xml:Init3tButton("btn_6", self) self:Register(self.btn_6, "btn_6") self.btn_6:Enable(false) self.btn_7 = xml:Init3tButton("btn_7", self) self:Register(self.btn_7, "btn_7") self.btn_7:Enable(false) self.btn_8 = xml:Init3tButton("btn_8", self) self:Register(self.btn_8, "btn_8") self.btn_8:Enable(false) self.btn_9 = xml:Init3tButton("btn_9", self) self:Register(self.btn_9, "btn_9") self.btn_9:Enable(false) self.btn_10 = xml:Init3tButton("btn_10", self) self:Register(self.btn_10, "btn_10") self.btn_10:Enable(false) -- кнопка офф self:Register(xml:Init3tButton("btn_quit", self),"btn_quit") -- определяем доступность кнопки if db.actor:object("casette_1") ~= nil then self.btn_1:Enable(true) end if db.actor:object("casette_2") ~= nil then self.btn_2:Enable(true) end if db.actor:object("casette_3") ~= nil then self.btn_3:Enable(true) end if db.actor:object("casette_4") ~= nil then self.btn_4:Enable(true) end if db.actor:object("casette_5") ~= nil then self.btn_5:Enable(true) end if db.actor:object("casette_6") ~= nil then self.btn_6:Enable(true) end if db.actor:object("casette_7") ~= nil then self.btn_7:Enable(true) end if db.actor:object("casette_8") ~= nil then self.btn_8:Enable(true) end if db.actor:object("casette_9") ~= nil then self.btn_9:Enable(true) end if db.actor:object("casette_10") ~= nil then self.btn_10:Enable(true) end end function script_magnitofon:InitCallBacks() -- тут интерактивные элементы, при определенном действии выполняется заданная ф-ия self:AddCallback("btn_1", ui_events.BUTTON_CLICKED, self.btn1, self) self:AddCallback("btn_2", ui_events.BUTTON_CLICKED, self.btn2, self) self:AddCallback("btn_3", ui_events.BUTTON_CLICKED, self.btn3, self) self:AddCallback("btn_4", ui_events.BUTTON_CLICKED, self.btn4, self) self:AddCallback("btn_5", ui_events.BUTTON_CLICKED, self.btn5, self) self:AddCallback("btn_6", ui_events.BUTTON_CLICKED, self.btn6, self) self:AddCallback("btn_7", ui_events.BUTTON_CLICKED, self.btn7, self) self:AddCallback("btn_8", ui_events.BUTTON_CLICKED, self.btn8, self) self:AddCallback("btn_9", ui_events.BUTTON_CLICKED, self.btn9, self) self:AddCallback("btn_10", ui_events.BUTTON_CLICKED, self.btn10, self) self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.on_quit, self) end function script_magnitofon:btn1() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point1', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:btn2() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point2', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:btn3() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point3', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:btn4() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point4', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:btn5() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point5', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:btn6() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point6', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:btn7() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point7', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:btn8() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point8', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:btn9() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point9', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:btn10() self:on_quit() alife():create('script_magnitofon', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) alife():create('script_magnitofon_point10', db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id()) amk.remove_item(db.actor:object("magnitofon_portable")) HUM_food.actor_disable_inventory() end function script_magnitofon:on_quit() self:GetHolder():start_stop_menu (self,true) self.dlg = nil collectgarbage("collect") end Скрытый текст [logic] active = ph_sound [ph_sound] snd = script_magnitofon_music1 looped = true on_info = {=actor_has_item(magnitofon_portable)} ph_sound@stop [ph_sound@stop] snd = silence on_signal = sound_end|nil %=delme% Скрытый текст [logic] active = ph_idle [ph_idle] tips = magnitofon_use on_use = %=give_items_to_actor(magnitofon_portable) =play_snd(characters_voice\scenario\afscanner_off)% Скрытый текст [script_magnitofon]:magnitofon_script visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon.ltx [script_magnitofon_point1]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point1.ltx [script_magnitofon_point2]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point2.ltx [script_magnitofon_point3]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point3.ltx [script_magnitofon_point4]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point4.ltx [script_magnitofon_point5]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point5.ltx [script_magnitofon_point6]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point6.ltx [script_magnitofon_point7]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point7.ltx [script_magnitofon_point8]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point8.ltx [script_magnitofon_point9]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point9.ltx [script_magnitofon_point10]:place_sleep visual = physics\decor\priemnik_gorizont.ogf radius = 1 custom_data = scripts\HUM\script_magnitofon_point10.ltx Ну и плюс файлы типо items.ltx devices.ltx, sound_theme.script, я их подредачил, в первых двух сделал сами предметы, в последнем вгрузил всё музло. При этом всё соотвествует тому, чему надо. Если подитожить - при поднятии магнитофона, идёт вылет, с логом: Скрытый текст [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ....a.l.k.e.r. hum 1.1\gamedata\scripts\xr_logic.script:612: attempt to call field '?' (a nil value) По-мо-ги-те! Не то, чтобы это смертельно, магнитофон всё таки больше фича, но я реально не вкуриваю, где я ошибся Hind Upgrade Mod Ссылка на комментарий
Ali_Babai_45 19 Опубликовано 15 Мая 2023 Поделиться Опубликовано 15 Мая 2023 Доброго времени суток Всем! Скачал ТЧ 1.0006 от Хаттаба. Перёс в файл ui_main_menu.script функцию ремонта из припасённого ui_main_menu.script от ТЧ 1.0004. Функцию когда-то выдернул из мода на ремкомплекты, только ремонт стал производиться по нажатии клавиши. При этом на экран выводится текст с результатами ремонта. Проблема в том, что вместо русского текста отображаются кракозябры. Я думал, что дело в кодировке. Файл из 6 патча показывает кодировку в UTF-8, а из 4 патча - кириллица макинтош. Пробовал конвертировать и исходный файл из 4 патча в UTF-8, и измененный файл из 6 патча - толку никакого. С файлами работаю в редакторе Notepad++. Если что, Винда 10. Пробовал исправить кириллицу в Региональных стандартах и через реестр. Не помогло. Ссылка на комментарий
Купер 2 518 Опубликовано 15 Мая 2023 Поделиться Опубликовано 15 Мая 2023 @Ali_Babai_45 , 1. Стандартный блокнот в новых версиях Win (8+) по умолчанию как раз сохраняет файлы в "неправильной" для Сталкера кодировке. UTF with BOM (на всякий случай). 2. У N++, к сожалению, очень давно поломано автоопределение кодировки при открытии (есть такая настройка у него) - кодировка открываемого файла определяется наобум. ANSI / Windows 1251 для скриптов. Вот это вот: "кириллица макинтош" точно жуть. тынц тынц тынц 3. Вообще, кириллица в скриптах - дичайший моветон на самом деле, хотя мы все так и делаем . game.translate_string("...") - почему бы не использовать? 1 2 1 Ссылка на комментарий
Hind 28 Опубликовано 18 Мая 2023 Поделиться Опубликовано 18 Мая 2023 Подскажите, есть ли какой то способ, изменить "зрение" неписей, через скрипт? Вот, чтобы надел ты костюм - и у всех неписей зрение уменьшилось, чтобы тебя не палили.... Hind Upgrade Mod Ссылка на комментарий
Norman Eisenherz 254 Опубликовано 19 Мая 2023 Поделиться Опубликовано 19 Мая 2023 Маскировочный экзоскелет в "солянке" работает через npc:set_range(num) По умолчанию 80 метров, 3–5 метров достаточно для обхода противников вблизи. При значении 0 с ними даже говорить можно. Применять в онлайне. Есть еще какой-то мод с переодеванием, который правит логику поведения NPC добавлением условий "костюм такой-то = не считать врагом" с высшим приоритетом. 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Hind 28 Опубликовано 19 Мая 2023 Поделиться Опубликовано 19 Мая 2023 Возникла идея сделать систему "захоронения" трупов. Обьясню, как оно должно работать: При юзании лопаты в инвентаре, открывается текстовое поле, в котором можно написать что угодно. По нажатии на кнопку "Похоронить" в радиусе 5 метров от игрока убираются все трупы, спавнится крест, при наведении на который надпись, которую мы ввели. Конкретно интересует - как строку, получаемую из текстового поля скрипта, запрячь в строку, которая будет выводится как tip в логике? 1 Hind Upgrade Mod Ссылка на комментарий
boneset-hq 3 Опубликовано 22 Мая 2023 Поделиться Опубликовано 22 Мая 2023 Есть вопрос. Как добавить свой айди в game_story_ids. Проблема в том что там нету изначально командира южного блокпоста на кордоне. Поэтому мне надосделать свой АЙДИ. "Do you like what you see?" © Billy Herrington Ссылка на комментарий
bsanek628 1 Опубликовано 23 Мая 2023 Поделиться Опубликовано 23 Мая 2023 Господа. подсобите, в dialog_manager не пойму несколько фраз: вокруг бара и мимо бара. Бара - в смысле, локация Бар, или бар - бар "100 рентген"? "У старых складов база "свободовцев" находится. Они ребята беспечальные, душевные; с ними под бутылочку чего хорошего посидеть - одно удовольствие. И "Долг", как вокруг бара, не мельтешит." "Это ты зачем здесь? На Янтарь собрался или артефакты втихую мимо бара пронести хочешь?" Ссылка на комментарий
aromatizer 4 369 Опубликовано 23 Мая 2023 Поделиться Опубликовано 23 Мая 2023 39 минут назад, bsanek628 сказал: бар "100 рентген" Именно он имеется ввиду в обоих случаях. 1 Отношения между людьми- главная ценность в человеческом обществе.Любая полученная информация- это только повод для размышлений, а не побуждение к действию.Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAEНакопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt Ссылка на комментарий
imcrazyhoudini 180 Опубликовано 24 Мая 2023 Поделиться Опубликовано 24 Мая 2023 @boneset-hq по аналогии и сделай... В чём проблема? ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
boneset-hq 3 Опубликовано 25 Мая 2023 Поделиться Опубликовано 25 Мая 2023 @imcrazyhoudini Просто я не пойму как именно это делается. Где надо что прописать. Я зелень полная не разбираюсь Ещё question для крутых мододелов. Командир блокпоста на Кордоне днём уходит на своё место как в логике и стоит не разговаривает, даже внимания не обращает просто стоит и тупит в стену. Сколько логику и скрипты не ковырял так и не понял что не так. "Do you like what you see?" © Billy Herrington Ссылка на комментарий
aromatizer 4 369 Опубликовано 25 Мая 2023 Поделиться Опубликовано 25 Мая 2023 9 минут назад, boneset-hq сказал: не понял что не так. Бэкапы и откаты в помощь. Отношения между людьми- главная ценность в человеческом обществе.Любая полученная информация- это только повод для размышлений, а не побуждение к действию.Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAEНакопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt Ссылка на комментарий
Купер 2 518 Опубликовано 26 Мая 2023 Поделиться Опубликовано 26 Мая 2023 (изменено) @boneset-hq , по умолчанию для военных логика схемы meet не назначается. xr_meet.script Скрытый текст elseif npc_community == "military" or npc_community == "monolith" or npc_community == "killer" or npc_community == "bandit" or npc_community == "zombied" then def.meet_state = "" def.meet_state_wpn = "" def.init_meet = "" def.victim = "" def.victim_wpn = "" def.use = "false" def.use_wpn = "false" def.syndata = "" def.precond = "visibility" def.abuse = "false" Перенастроить/добавить для нужного перса обработку этой схемы в соответствии с соответствующими параметрами для требуемой секции логики его логики. gulag_escape.ltx: Скрытый текст [camper@esc_blockpost_commander_day] path_walk = commander_walk path_look = commander_look meet = meet@abc --* примерно так [meet@abc] <--* примерно так meet_state =... meet_state_wpn =... victim =... victim_wpn =... use =... use_wpn =... syndata =... meet_dialog =... Ориентируясь, например, на того же Кузнецова под мостом. Изменено 26 Мая 2023 пользователем Купер 1 Ссылка на комментарий
boneset-hq 3 Опубликовано 26 Мая 2023 Поделиться Опубликовано 26 Мая 2023 @Купер Респект что ещё сказать. Хотя когда я сам meet добавлял не получалось но хоть как-то. "Do you like what you see?" © Billy Herrington Ссылка на комментарий
Graff46 598 Опубликовано 26 Мая 2023 Поделиться Опубликовано 26 Мая 2023 Я хочу создать рестриктор в который не должны заходить НПС. Какой тип рестриктора ставить и нужно ли его потом регистрировать у НПС? На древнем форуме вычитал, что нужно сделать рестриктор с типом eRestrictorTypeNone но зарегистрировать как in рестриктор. Если использовать eDefaultRestrictorTypeIn или eRestrictorTypeIn, то нужно ли их регистрировать в НПС? Ссылка на комментарий
boneset-hq 3 Опубликовано 26 Мая 2023 Поделиться Опубликовано 26 Мая 2023 Цитата Expression : assertion failed Function : CKinematicsAnimated::Load File : E:\stalker\sources\trunk\xr_3da\SkeletonAnimated.cpp Line : 589 Description : set_cnt<MAX_ANIM_SLOT Лог. Что не так сделано? "Do you like what you see?" © Billy Herrington Ссылка на комментарий
imcrazyhoudini 180 Опубликовано 26 Мая 2023 Поделиться Опубликовано 26 Мая 2023 @Graff46 определённые нпс или все нпс? @boneset-hq объясни что делал, откати назад, что-то со слотами накосячил. ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
Graff46 598 Опубликовано 26 Мая 2023 Поделиться Опубликовано 26 Мая 2023 (изменено) @imcrazyhoudini все, кроме 2 специальных нпс. У меня есть палатка, она динамическим объектом сделана, в нее вечно нпс упираются, но 2 нпс под специальной логикой стоят в палатке. Мб, как вариант сделать шейп рестриктора четко по геометрии палатки, т. к. 2 нпс стоят не внутри палатки, а впритык к ней. Я для простоты хотел сферическим шейпом окружить палатку, но тогда сфера много пространства занимает вокруг палатки. Изменено 26 Мая 2023 пользователем Graff46 Ссылка на комментарий
imcrazyhoudini 180 Опубликовано 26 Мая 2023 Поделиться Опубликовано 26 Мая 2023 @Graff46 если спавнишь через сдк или акдк можно назначить им то ли в in то ли в out рестриктор, в который они не могут зайти. В ЧН эти настройки прямо в логику перенесли, так что можешь оттуда взять это если не через сдк/акдк спавнишь. ищу человека, который смог бы заняться разработкой погоды на OGSR. кто может помочь - пишите в ЛС. Ссылка на комментарий
Купер 2 518 Опубликовано 28 Мая 2023 Поделиться Опубликовано 28 Мая 2023 26.05.2023 в 13:54, boneset-hq сказал: Что не так сделано? это 1 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти