Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Overfirst 630 Опубликовано 25 Октября 2016 Поделиться Опубликовано 25 Октября 2016 @dPlayer, схема рестриктора sr_timer. Ранее был известен под ником BoBaH_671. Ссылка на комментарий
dPlayer 451 Опубликовано 26 Октября 2016 Поделиться Опубликовано 26 Октября 2016 @BoBaH_671, т.е мне всю локацию рестриктором накрывать? На ЧАЭС1 так и сделано? А скриптового решения без амк-функций нет? Ссылка на комментарий
naxac 2 445 Опубликовано 26 Октября 2016 Поделиться Опубликовано 26 Октября 2016 (изменено) мне всю локацию рестриктором накрывать?Не обязательно. Можно поставить небольшой рестриктор где угодно с логикой вроде[logic] active = sr_idle [sr_idle] on_info = {+infoportion} sr_timer [sr_timer] ... Рестрикторы все равно всегда в онлайне, при получении инфопоршня включится таймер. Само собой, будет работать только в пределах одной локации. Изменено 26 Октября 2016 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
dPlayer 451 Опубликовано 26 Октября 2016 Поделиться Опубликовано 26 Октября 2016 @naxac, @BoBaH_671, спасибо. Кстати, нашёл на каких-то полумёртвых сайтах и скриптовый таймер, не знаю, работает или нет. "Таймер" "Вариант без вывода на худ" Код local iTimer function Start_Timer_5_minutes() --/ (пере)запуск таймера (из диалога) iTimer = time_global() + 5*1000 --/ взводим таймер на 5cek end function Timer_N_minutes() --/ вызывается из ':update' сталкер-биндера if iTimer and iTimer < time_global() then --/ проверка текущего значения iTimer = nil --/ выключаем таймер скрипт.функция() --/ выполняем действие end end "Вариант с выводом на худ" Код local iTimer local last function start_timer_minutes_test(seconds) if last~= nil then iTimer = time_global()+last --/ взводим таймер на остаток времени last else iTimer = time_global() + 7*1000 --/ взводим таймер например 7 сек. end end function timer_n_minutes_test() --/ вызывается из ':update' сталкер-биндера if iTimer then last=iTimer-time_global() -- присваиваем переменной остаток времени до конца работы таймера if iTimer < time_global() then iTimer = nil --/ выключаем таймер last=nil СКРИПТ.ФУНКЦИЯ--/ выполняем действие end end end -- выводим значение таймера в обратном отсчете на худ function hud_static() --/ вызывается из ':update' сталкер-биндера local hud = get_hud() local st if iTimer then st = hud:GetCustomStatic("hud_timer") if st==nil then hud:AddCustomStatic("hud_timer", true) st = hud:GetCustomStatic("hud_timer") end if last~=nil then local hours = math.floor(last/3600000) local minutes = math.floor(last/60000 - hours*60) local seconds = math.floor(last/1000 - hours*3600 - minutes*60) local text = string.format("%02d:%02d:%02d",hours,minutes,seconds) -- выводим время в формате 00:00:00 --local text=string.format("%.f",last/1000) st:wnd():SetTextST(text) end else if hud:GetCustomStatic("hud_timer")~=nil then hud:RemoveCustomStatic("hud_timer") end end end --------------------------------------------- Ссылка на комментарий
Карлан 1 049 Опубликовано 26 Октября 2016 Поделиться Опубликовано 26 Октября 2016 @dPlayer, от тебя здесь только утаивают тот факт, что время (и вообще все состояние) таймера не сохраняется. Иными словами при перезагрузке в рестрикторе, или выходе за пределы этого рестриктора у тебя этот таймер перезапустится (так как в обоих случаях предполагается что ты в него зайдешь вновь) и начнет отсчет сначала. Проведи эксперимент на той же ЧАЭС, когда таймер начнется подожди минуты две, и сохранись/загрузись, поймешь о чем я. По таймерам, возьми готовый модуль таймеров, точно знаю, что у @Malandrinus'a есть в коробке худовый таймер. sr_timer сам по себе чудесен, в том смысле, что его кастомизация не позволяет настроить сохранение, где-то оно действительно не нужно (х-16, и то я бы там сделал речардж пси-каски, но если мы уже в рестрикторе бегаем, то конечно сохранять нужно), а где-то без него никак (выброс на ЧАЭС). 1 1 Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 26 Октября 2016 Поделиться Опубликовано 26 Октября 2016 не знаю, работает или нет. Работает, проверял. Не соответствует правилам. Ссылка на комментарий
ins33 16 Опубликовано 26 Октября 2016 Поделиться Опубликовано 26 Октября 2016 @dPlayer, >>Таймеры<< Менеджер универсальных таймеров (SHoC:6/7(118),CS:8(124),SCoP:12(128))m_timers.script==============================================================================================Модуль (скрипт) реализует в игре удобный интерфейс для работы с таймерами различного назначения (реального и игрового времени).Для работы требуются скрипты "Расширения Lua"(lua_extension) и "Общие полезные функции" (lua_helper).Для хранения в сэйвах игры табличных данных запущенных таймеров может использоваться модуль "Универсальное хранилище" (se_stor),в противном случае данные сохраняются в pstor актора (что может вызвать переполнение при интенсивном использовании таймеров).--/---------------------------------------------------------------------Подключение:1. Скопировать в папку скриптов игры скрипт: m_timers.script;2. Добавить в биндер актора (см. bind_stalker.script) вызовы событий "сохранение игры", "загрузки сохранения" и запуска обновлений модуля;3. Добавить в _g.script инициализацию дополнительного функционала (lua_extension и lua_helper).4. (настоятельно рекомендуется) Подключить модуль "Универсальное хранилище" (se_stor).Примечание:В комплекте файл '_g_ADD.script является строками, которые требуется добавить в исходный _g.script.Файл bind_stalker.script от оригинальной версии игры SHoC v.1.0006 дан в качестве рабочего примера.В файл bind_stalker.script добавляются строки (в три разных метода биндера) отмеченные знаком --/#+# и имеющие подстроки 'm_timers.'Использование:1. Запрос существования (запущенного) таймера (по имени):timer_exists("my_timer_name") --/ boolean2. Получение объекта таймера (по имени):get_timer("my_timer_name") --/ object from class 'RealTimer|GameTimer'3. Получение текущего значения таймера:get_timer("my_timer_name"):get_time_rest()4. Удаление запущенного таймера:get_timer("my_timer_name"):remove()5. Таймер на игровом экране (HUD-Timer) допускается в единственном экземпляре:get_hud_timer() --/ object 'HUD-Timer' from class 'RealTimer'6. quick-таймеры не имеют имен и недоступны извне.7. Имена таймерам выдаются автоматически и эксклюзивны.При необходимости имя может быть задано при запуске таймера (см.ниже).8. Запуск таймера производится одной из соответствующих функций start_XXX_timer:start_real_timer - таймер реального времени;start_game_timer - таймер игрового времени;start_quick_timer - таймет реального или игрового времени без возможности сохранения;start_hud_timer - таймер реального времени с HUD-дом на игровом экране;start_multi_timer - цикличный таймер.- 1-й аргумент - время в секундах;- 2-й аргумент - функция, которая будет вызвана таймером по окончании времени;- 3-й аргумент - параметры передаваемые таймеру;- 4-й аргумент - (опционально):-- для 'real' и 'game' таймеров - имя таймера;-- для 'hud' - тип hud'а (с текстурой или только текст);-- для 'multi' - тип времени (реальное или игровое).Имя таймера (кроме 'hud') может быть задано так (заменяется "выданное имя"):start_real_timer(0.5, "my_file.my_func"):set_name("my_timer_name") --/ 0.5 real-seconds + (re)set nameФункция может быть задана прямым указанием или строкою или таблицей.При отсутствии указанной функции и наличии 3-го аргумента (параметров) будет вызван внутренний обработчик.Внутренний обработчик позволяет при соответствующих именах параметров выполнять:а) выдача инфопоршня или нескольких:start_game_timer(3*60, nil, {info_id = "my_infoportion"}) --/ 3 game-minutesб) Вывод сообщения на экран (через news_manager):start_real_timer(5*60, nil, {tip = {"Text tip_RT"}})в) Вывод строки в лог:start_quick_timer(8, nil, {log = "test QT8"})г) Вывод звука:start_quick_timer(8, nil, {snd = "device\\pda\\pda_sos"})и др.Примеры использования:start_real_timer(6, "my_file.my_func") --/ 6 real-secondsstart_real_timer(5*60, nil, {tip = {"st_tip", "Text test_RT"}}, "RT_test") --/ 5 real-minutes + set namestart_real_timer(0.5, "my_file.my_func"):set_name("my_timer_name") --/ 0.5 real-seconds + (re)set namestart_game_timer(3*60, nil, {info_id = "my_infoportion"}) --/ 3 game-minutesstart_hud_timer (10*60, nil, {log = "test_HT"}) --/ 10 real-minutesstart_hud_timer (45, nil, {log = "caption_HT"}, "blowout") --/ 45 real-seconds + text captionstart_hud_timer (45, nil, {log = "only_text_HT"}, false) --/ 45 real-seconds + only text-timestart_quick_timer(4, my_file.my_func) --/ 4 real-seconds + call functionstart_quick_timer(8, nil, {info_id = "my_infoportion"}, log = "tip QT8"}) --/ 8 real-minutes + logstart_multi_timer(2*60, nil, {log = "tip_MR"}) --/ 120 real-seconds + log + cyclicalstart_multi_timer(3*60, nil, {tip = {nil, "tip_MG"}, log = "tip_MG"},true) --/ 120 game-minutes + tip + log + cyclical--/ для объекта таймера доступны:timer:id() --/ чтение(получение) идентификатора запущенного таймера (не путать с игровыми идентификаторами объектов!)timer:name() --/ чтение(получение) имени запущенного таймераtimer:set_name(timer_name) --/ установка/изменение имени таймераtimer:restart(time_sec, action, properties, timer_name) --/ перезапуск работающего таймера (аргументы аналогичгы запуску)timer:get_time_rest() --/ получение оставшегося времени работающего таймера (real mseconds or game seconds)timer:get_time_end() --/ получение времени (число mseconds), когда таймер сработаетtimer:get_time_end(true) --/ получение времени (строка), когда таймер сработаетtimer:get_property(property) --/ чтение значения параметра заданного таймеруtimer:set_property(property,value) --/ установка/замена параметра заданного таймеруtimer:remove() --/ удаление таймера--/---------------------------------------------------------------------Artos (22.09.2013) 1 1 1 Ссылка на комментарий
Badmodst74 0 Опубликовано 26 Октября 2016 Поделиться Опубликовано 26 Октября 2016 Привет, есть вопрос касательно Умного Мародера 1.5... В игре при обыскивании трупа появляется костюм, но в идеальном состоянии. Как правильно сделать кондишн, чтобы состояние было рандомным при выпадении? Добавлено Kirgudu, 27 Октября 2016 Перенёс из "уроков по модостроению" Ссылка на комментарий
Kirgudu 1 204 Опубликовано 27 Октября 2016 Поделиться Опубликовано 27 Октября 2016 @Badmodst74, math.randomseed(device():time_global()) obj:set_condition(math.random()) 1 Инструмент Ссылка на комментарий
dPlayer 451 Опубликовано 27 Октября 2016 Поделиться Опубликовано 27 Октября 2016 А heli_combat в оригинале рабочая? Ссылка на комментарий
Badmodst74 0 Опубликовано 27 Октября 2016 Поделиться Опубликовано 27 Октября 2016 @Kirgudu, нашел почти ту же функию в funcs.scr, но она почему то не работает local a if select_string=="otf" thena = level.object_by_id(tonumber(params_string))a:set_condition((math.random(25)+40)/100)end Как ее включить? Ссылка на комментарий
Kirgudu 1 204 Опубликовано 27 Октября 2016 Поделиться Опубликовано 27 Октября 2016 @Badmodst74, вопрос из разряда "У меня автомобиль не заводится. Как завести?" с количеством потенциальных ответов, приближающимся к бесконечности; всегда такие нравились. Но телепаты традиционно в отпуске. Судя по знакомому коду, эта функция из мода типа AMK или OGSM и предназначена для срабатывания по истечении таймера определённого типа ("otf"). Таймер запускал? Id конкретного предмета ему передал? Никому, кроме тебя, сие не известно. А проще всего будет поискать в модулях своей сборки места использования метода set_condition(...) (легко делается разными средствами, например TC) и там, где оно явно связано с установкой состояния брони, заменить расчёт аргумента на простой math.random(), как предложено в примере выше. Сложности в этом нет никакой, вполне можно справиться самостоятельно. Инструмент Ссылка на комментарий
dPlayer 451 Опубликовано 27 Октября 2016 Поделиться Опубликовано 27 Октября 2016 В ТЧ ведь можно на клавишу tab повешать любое действие, хоть скрипт, не выходя в главное меню? Как это сделать, где-то тут ведь обсуждалось, не могу найти( Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 27 Октября 2016 Поделиться Опубликовано 27 Октября 2016 @dPlayer, держи! 1 Ссылка на комментарий
dPlayer 451 Опубликовано 27 Октября 2016 Поделиться Опубликовано 27 Октября 2016 (изменено) @Kober(BRUC), спасибо, хотя как раз клавишу tab автор пропустил) @Kober(BRUC), да в принципе, это то. что мне нужно, но вариант от Руси для моих ковыряшек подходит больше) HellRatz, спасибо. Изменено 28 Октября 2016 пользователем dPlayer Добавлено HellRatz, 27 Октября 2016 [soC] Как назначить выполнение скрипта на кнопку в игре Ссылка на комментарий
Kober(BRUC) 99 Опубликовано 27 Октября 2016 Поделиться Опубликовано 27 Октября 2016 @dPlayer,т.е. это не то что вам нужно? Если так, то пользователь с аватаркой Ёжика в Тумане выкладывал что-то про клавишу Tab. Было это где-то в 2012 году. Это усе что могу подсказать. 1 Ссылка на комментарий
dPlayer 451 Опубликовано 29 Октября 2016 Поделиться Опубликовано 29 Октября 2016 Что-то не могу сообразить, как отпустить мужика из логики в свободное плавание? И если у него в кастом_дате будет написан какой-либо смарт, он туда попрётся? Ссылка на комментарий
AKKK1 6 Опубликовано 29 Октября 2016 Поделиться Опубликовано 29 Октября 2016 Да в любой на любой локации. Ссылка на комментарий
MADMAX666 49 Опубликовано 30 Октября 2016 Поделиться Опубликовано 30 Октября 2016 (изменено) Всем привет. Нужна помощь. Хотел перенести из АА2 не просто текстуры деревьев, а именно расположение их. Какой файл в папке levels отвечает за это? А то в обычном Сталкере пустовато как то на локации Изменено 30 Октября 2016 пользователем MADMAX666 Ссылка на комментарий
MADMAX666 49 Опубликовано 31 Октября 2016 Поделиться Опубликовано 31 Октября 2016 (изменено) Хотел сделать текстуры загрузки intro на полный экран, а там формат seq и просто dds формат игра не воспринимает выкидывает с ошибкой. Правка движка стоит. Что можно сделать? Я как понял что в оригинале используется dds формат, а в некоторых модах seq. Где можно поправить использование формата? Изменено 31 Октября 2016 пользователем MADMAX666 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти