Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий
_Sk8_AsTeR_ 122 Опубликовано 16 Ноября 2018 Поделиться Опубликовано 16 Ноября 2018 Господа, подскажите пожалуйста, что и где подкрутить чтобы откорректировать цветовую гамму игры? Запустил оригинал сталкера сегодня и чуть не расплакался от той самой оригинальной картинки на мониторе. Солянка делает картинку какой-то желтоватой чтоли... Какой-то менее выразительней в плане цветопередачи, не знаю описать. Будто насыщенность выкрутили и температуру картинки сделали желтой, не знаю. Оригинальная картинка была какая-то розовато-синяя, чтоли. Подскажите пожалуйста? Ссылка на комментарий
Graff46 618 Опубликовано 16 Ноября 2018 Поделиться Опубликовано 16 Ноября 2018 @_Sk8_AsTeR_, Это шейдеры надо править. Ссылка на комментарий
Romann 623 Опубликовано 17 Ноября 2018 Поделиться Опубликовано 17 Ноября 2018 (изменено) Привет, снова я. Имеем такую функцию: Скрытый текст local current_outfit = db.actor:item_in_slot(7) if current_outfit then local outfit_section = current_outfit:section() if outfit_properties[outfit_section] then outfit_protection = outfit_properties[outfit_section] end news_manager.send_tip(db.actor, "%c[250, 0, 255, 0]".."Б-р-р-р, прохладно.", nil, nil, nil) end Проблема в строчке сообщения, во первыx - сообщение надо отправить когда мы снимаем броню, а не когда она в слоте, во вторыx - сообщение отправляется постоянно, а нужно: сняли броню - отправили сообщение, одели броню - не отправляем сообщение, сняли - опять отправили. Кто подскажет, как лучше сделать? Изменено 17 Ноября 2018 пользователем Romann Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz). Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб). Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий
Fenrir02 199 Опубликовано 17 Ноября 2018 Поделиться Опубликовано 17 Ноября 2018 (изменено) @Romann Здравствуйте! Как вариант, можно однократно вызвать сообщение с помощью инфопоршня: Скрытый текст local current_outfit = db.actor:item_in_slot(7) if current_outfit then if not has_alife_info("check_outfit") then db.actor:give_info_portion("check_outfit") -- Здесь одноразовое срабатывание при надевании костюма end local outfit_section = current_outfit:section() if outfit_properties[outfit_section] then outfit_protection = outfit_properties[outfit_section] end else if has_alife_info("check_outfit") then db.actor:disable_info_portion("check_outfit") news_manager.send_tip(db.actor, "%c[250, 0, 255, 0]".."Б-р-р-р, прохладно.", nil, nil, nil) -- Здесь одноразовое срабатывание при снятии костюма end end Изменено 17 Ноября 2018 пользователем Fenrir02 1 1 Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
Norman Eisenherz 349 Опубликовано 17 Ноября 2018 Поделиться Опубликовано 17 Ноября 2018 Здрасьте. При появлении в инвентаре любого нового броника у надетой брони вырубается ПНВ. Скорее всего, проблема решается правкой движка (поправьте меня, если нет), поэтому в качестве простого варианта хочу добавить костыль в скрипты – включать ПНВ обратно через отлов события "поднять предмет". Проблема: обнаруженная в скриптах конструкция "level.add_pp_effector("name.ppe", ###, false)" включает эффектор ненадолго и сразу для всей карты (как дополнительный эффект погоды, что ли), а надо сымитировать включение ПНВ в броне и оставить его до следующего нажатия клавиши "ПНВ вкл./выкл.". Как это сделать? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Graff46 618 Опубликовано 17 Ноября 2018 Поделиться Опубликовано 17 Ноября 2018 Что делает эта ф-ция? Скрытый текст function mob_capture(mob, reset_actions) if reset_actions == nil then abort("mob_capture: reset_actions parameter's value is not specified") end if reset_actions then reset_action(mob, script_name()) else if not mob:get_script() then mob:script(true, script_name()) end end end И что делают эти классы\методы? reset_action(mob, script_name()) mob:script(true, script_name()) Ссылка на комментарий
dsh 3 824 Опубликовано 17 Ноября 2018 Поделиться Опубликовано 17 Ноября 2018 @Graff46, это для установления контроля за мобом. Т.е. он будет выполнять то, что ты ему скриптом скажешь. Например бежать в определенном направлении. Для примера, посмотри вот этот скрипт https://github.com/dsh2dsh/op2ogse/blob/3f7514f804eaf1dc875cc3ce8513d8537dd53bc2/gamedata/scripts/dsh_battle_radius.script#L135 Это аналог mob_home, только без путей. Там как раз используется такой захват контроля над мобом, что бы заставить его вернуться внутрь. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
AndreySol 215 Опубликовано 18 Ноября 2018 Поделиться Опубликовано 18 Ноября 2018 (изменено) 23 часа назад, Norman Eisenherz сказал: а надо сымитировать включение ПНВ в броне и оставить его до следующего нажатия клавиши "ПНВ вкл./выкл.". Это явно из разряда "Овчинка выделки не стоит". Можно, конечно, все это скриптами наворотить(причем объем костылей и извращений будет не маленьким), вот только ради чего ? Изменено 18 Ноября 2018 пользователем AndreySol Ссылка на комментарий
AndreySol 215 Опубликовано 18 Ноября 2018 Поделиться Опубликовано 18 Ноября 2018 В 17.11.2018 в 07:44, Romann сказал: а нужно: сняли броню - отправили сообщение, одели броню - не отправляем сообщение, сняли - опять отправили. Кто подскажет, как лучше сделать? С учетом отсутствия, в оригинале, движковых сообщений(кэллбэков) о манипуляциях с содержимым слотов - видимо как всегда, нагрузить в многострадальный апдейт биндера актера проверку на содержимое слота... Ссылка на комментарий
Norman Eisenherz 349 Опубликовано 18 Ноября 2018 Поделиться Опубликовано 18 Ноября 2018 @AndreySol Ради того, что достало каждый раз оказываться в темноте. В оригинале это еще не такая большая проблема, а в "солянке", где броню можно снимать с трупов, уже основательно надоедает. Я так понимаю, прямой функции "включить ПНВ" нет? Может, есть способ изобразить нажатие определенной клавиши скриптом? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
DoberBull 291 Опубликовано 18 Ноября 2018 Поделиться Опубликовано 18 Ноября 2018 Кто может помочь, знает как сделать так, чтобы фонарики НПС не гасли после их смерти, а оставались светить, как в старых билдах ? Желательно без движковых исправлений. Или может кто знает мод где такое уже есть ? Ссылка на комментарий
Graff46 618 Опубликовано 18 Ноября 2018 Поделиться Опубликовано 18 Ноября 2018 @Norman Eisenherz, В x-ray extensions вроде можно скриптами включать\отключать ПНВ Ссылка на комментарий
AndreySol 215 Опубликовано 18 Ноября 2018 Поделиться Опубликовано 18 Ноября 2018 2 часа назад, DoberBull сказал: как сделать так, чтобы фонарики НПС не гасли после их смерти, а оставались светить Смотри в xr_motivator.script ф-цию motivator_binder:death_callback, в ней есть sr_light.check_light(self.object) ... death_manager.drop_manager(self.object):create_release_item() В sr_light может быть отключение фонарика у померших, а в death_manager может быть удаление фонарика из инвентаря моба, соответственно отключение по факту удаления. 1 Ссылка на комментарий
Fenrir02 199 Опубликовано 18 Ноября 2018 Поделиться Опубликовано 18 Ноября 2018 Из X-Ray extensions: send_event_key_press(int<DIK_keys>) - имитация события нажатия кнопки Как именно применить это на практике? Допустим, при нажатии клавиши F3 нужно вызвать какое-то действие. Как это сделать? Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
Norman Eisenherz 349 Опубликовано 19 Ноября 2018 Поделиться Опубликовано 19 Ноября 2018 @Graff46 Спасибо, попробую. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Shkiper2012 35 Опубликовано 19 Ноября 2018 Поделиться Опубликовано 19 Ноября 2018 В 18.11.2018 в 17:48, Fenrir02 сказал: Как именно применить это на практике? @Fenrir02, в нужную функцию вставляем: level.send_event_key_press(DIK_keys.DIK_F3) -- вместо "DIK_F3" может быть любая другая клавиша. Результатом будет имитация нажатия, как будто ты нажал на кл."F3" (не касаясь пальцем физически). Только вот не помню, должна ли быть локация загружена в этот момент, так как используется пространство "level". На всякий, может проверку поставить, типа "if level then ... end" 1 Адаптация мода "AtmosFear" для мода "Боевая Подготовка" v.2.0.2. Адаптация мода "Магазинное питание" для мода "Боевая Подготовка" v.2.0.2. Ссылка на комментарий
Fenrir02 199 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 И снова здравствуйте! Подскажите, как с помощью скрипта разжечь костёр, к которому подходит ГГ на определённое расстояние? Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
Overfirst 637 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 Какая платформа? Для ЗП делал так: bind_campfire.script: function turn_off_campfire_by_name(name) if name then local campfire = campfire_table_by_name[name] if campfire and campfire:is_on() then campfire:turn_off() end end end function turn_on_campfire_by_name(name) if name then local campfire = campfire_table_by_name[name] if campfire and not campfire:is_on() then campfire:turn_on() end end end В самом верху объявил массив: campfire_table_by_name = {} В методе net_spawn заполняем его: campfire_table_by_name[self.object:name()] = self.campfire Собственно, использование: bind_campfire.turn_off_campfire_by_name("campfire_name") bind_campfire.turn_on_campfire_by_name("campfire_name") Ранее был известен под ником BoBaH_671. Ссылка на комментарий
Fenrir02 199 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 @Overfirst Нет, не в ЗП. Мне нужно для ТЧ, а там биндера костров нет. 1 Важнейшая задача цивилизации - научить человека мыслить. Ссылка на комментарий
Kirgudu 1 307 Опубликовано 22 Ноября 2018 Поделиться Опубликовано 22 Ноября 2018 @Fenrir02, был такой Dynamic campfire mod от kstn. Посмотри, как там реализовано, и переработай под свои нужды. Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти