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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/
AndrewMor 535 Опубликовано 18 Апреля 2015 Поделиться Опубликовано 18 Апреля 2015 @Карлан, Именно, что не додумался. Но я сделал маленько по другому, не вынося обработку в отдельный файл, все в биндерах прописал. Теперь работает, как задумывал. Но твой скрипт все равно помог допереть до истины. Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-931890
Romann 628 Опубликовано 23 Апреля 2015 Поделиться Опубликовано 23 Апреля 2015 Всем доброго времени суток, вопрос такой: я выдернул тепловизор из ОГСЕ на ОП2, прописал его в экзе, работает, включается, но выключаться не хочет, так и работает, даже если сменить или снять броню, до перезагрузки - подскажите это ему надо отдельный скрипт написать? Мать: 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. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-932788
Сталкер-Стрелок 12 Опубликовано 23 Апреля 2015 Поделиться Опубликовано 23 Апреля 2015 (изменено) Номера аи-нод статичны? Как получить номер нужной ноды (всяких выкрутасов с позицией не предлагать, неточно работает)? Наверное вопрос даже так стоит: как получить размеры ноды? Она же не всегда 0.7 на 0.7. Изменено 23 Апреля 2015 пользователем Сталкер-Стрелок Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-932870
V92 417 Опубликовано 24 Апреля 2015 Поделиться Опубликовано 24 Апреля 2015 Всем привет. Столкнулся с такой проблемой - двери как-то странно работают. Похоже, это связано с логикой, но я так и не понял, в чем именно проблема. Выглядит это так: http://rghost.ru/6D4cy5cpN Это с большинством новых дверей, хотя файлы логики одни и те же. Особенно запущенно всё на Предбаннике, там вообще непонятно что происходит: http://rghost.ru/6fhtHB9qY При этом и закрытые, и открытые двери имеют надписи, хотя в спавне прописана только одна пара. Но закрытую пару никак не открыть, а открытая ведет себя как на первом скрине. Такая же ситуация со всеми дверьми предбанника, которые были до меня. Те, что поставил я - просто ведут себя как на первом скрине. На остальных локаж тоже встречаются подобные двери. Подскажите, что это такое, и как исправить? И дело точно не в моделях - точно такие же двери на других локах могут вести себя и корректно, и нет. Мой музыкальный аддон для ОП-2 + Музыкальные флешки для плеера - для тех, кому не нравится оригинальная музыка. Более 150 новых треков различных направлений и исполнителей, каждый найдёт музыку на свой вкус. Апдейт 1.1 от 30.03.2015 - в плеер добавлены записи реальных радиостанций + наиболее подходящие миксы. Торрент.Пак измененных локаций из ОГСЕ 0.6.9.3 для ОП-2. Скачать можно здесь. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-932964
AndrewMor 535 Опубликовано 24 Апреля 2015 Поделиться Опубликовано 24 Апреля 2015 V92, в логике дело. Выложи логику. А если двери спавнил сам, смотри дирекцию по Y. Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-933028
V92 417 Опубликовано 24 Апреля 2015 Поделиться Опубликовано 24 Апреля 2015 @AndrewMor, дело не в дирекции, двери в сдк расставлял. Логика стандартная: [logic] active = ph_door@close[ph_door@close]locked = falseclosed = truesnd_open_start = trader_door_open_startsnd_close_start = trader_door_close_startsnd_close_stop = trader_door_close_stopon_use = ph_door@openhit_on_bone = 1|ph_door@free|2|ph_door@free[ph_door@open]locked = falseclosed = falsesnd_open_start = trader_door_open_startsnd_close_start = trader_door_close_startsnd_close_stop = trader_door_close_stopon_use = ph_door@closehit_on_bone = 1|ph_door@free|2|ph_door@free[ph_door@free]locked = falseclosed = trueno_force = trueon_use = ph_door@open [logic]active = ph_door@close[ph_door@close]locked = falseclosed = truesnd_open_start = wood_large_opensnd_close_start = wood_large_close_startsnd_close_stop = wood_large_close_stopon_use = ph_door@openhit_on_bone = 1|ph_door@free|2|ph_door@free[ph_door@open]locked = falseclosed = falsesnd_open_start = wood_large_opensnd_close_start = wood_large_close_startsnd_close_stop = wood_large_close_stopon_use = ph_door@closehit_on_bone = 1|ph_door@free|2|ph_door@free[ph_door@free]locked = falseclosed = trueno_force = trueon_use = ph_door@open Мой музыкальный аддон для ОП-2 + Музыкальные флешки для плеера - для тех, кому не нравится оригинальная музыка. Более 150 новых треков различных направлений и исполнителей, каждый найдёт музыку на свой вкус. Апдейт 1.1 от 30.03.2015 - в плеер добавлены записи реальных радиостанций + наиболее подходящие миксы. Торрент.Пак измененных локаций из ОГСЕ 0.6.9.3 для ОП-2. Скачать можно здесь. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-933051
AndrewMor 535 Опубликовано 25 Апреля 2015 Поделиться Опубликовано 25 Апреля 2015 V92, а зачем тебе сия строка "hit_on_bone = 1|ph_door@free|2|ph_door@free"? Вот моя логика, все отлично работает: [logic]аctive = ph_door@locked[ph_door@locked]closed = truelocked = truesnd_open_start = trader_door_open_startsnd_close_start = trader_door_close_startsnd_close_stop = trader_door_close_stopon_use = ph_door@unlocked[ph_door@unlocked]closed = falselocked = truesnd_open_start = trader_door_open_startsnd_close_start = trader_door_close_startsnd_close_stop = trader_door_close_stopon_use = ph_door@locked Сталкер - наше всё! Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-933196
V92 417 Опубликовано 25 Апреля 2015 Поделиться Опубликовано 25 Апреля 2015 а зачем тебе сия строка А без понятия, это стандартная логика двери из оригинала еще. Я там ничего не правил, только путь до нее прописал в спавне. Попробую твою, вдруг и прокатит. Мой музыкальный аддон для ОП-2 + Музыкальные флешки для плеера - для тех, кому не нравится оригинальная музыка. Более 150 новых треков различных направлений и исполнителей, каждый найдёт музыку на свой вкус. Апдейт 1.1 от 30.03.2015 - в плеер добавлены записи реальных радиостанций + наиболее подходящие миксы. Торрент.Пак измененных локаций из ОГСЕ 0.6.9.3 для ОП-2. Скачать можно здесь. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-933270
Zander_driver 10 358 Опубликовано 28 Апреля 2015 Поделиться Опубликовано 28 Апреля 2015 А мы можем в открытом через ini_file файле, скриптово обнаружить инклюд? речь идет о том чтобы из игры построить таблицу вида local opened_file = { section1 = {line_1, line_2, ..., line_n}, section2 = {...}, included_file = { section = {...}, included_file = {...} } } Известных мне методов для такого не хватит, section_exist вообще как для самого открытого файла, так и для всех вложенных в него, работает. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-933730
abramcumner 1 234 Опубликовано 28 Апреля 2015 Поделиться Опубликовано 28 Апреля 2015 @Zander_driver, нет, нельзя. Инклудов нет даже в движке, они убираются прямо при загрузке конфигов. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-933731
Zander_driver 10 358 Опубликовано 29 Апреля 2015 Поделиться Опубликовано 29 Апреля 2015 (изменено) А будут ли какие непредвиденные последствия, если методы биндера, являющиеся колбеками движковых событий, будет дергать не только движок? Допустим я получил объект биндера актора, и дернул у него actor_binder:on_item_take (obj), передав ему (методу) некий итем. но не давая этот итем актору на самом деле. Вопрос собственно в том, будет ли из-за этого что-нибудь кроме того, что очевидно вытекает из поведения биндера как скриптового класса. Ну неужели никто не пробовал, "прикинуться движком", для биндера? Я вот попробовал уже. И пока это, полет нормальный. Изменено 29 Апреля 2015 пользователем Zander_driver Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-933955
Dennis_Chikin 3 665 Опубликовано 29 Апреля 2015 Поделиться Опубликовано 29 Апреля 2015 А чего ему сделается-то ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-933998
Zander_driver 10 358 Опубликовано 29 Апреля 2015 Поделиться Опубликовано 29 Апреля 2015 В самом деле ничего, просто на всякий случай спросил. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-934001
Nazgool 251 Опубликовано 1 Мая 2015 Поделиться Опубликовано 1 Мая 2015 (изменено) А мы можем в открытом через ini_file файле, скриптово обнаружить инклюд? речь идет о том чтобы из игры построить таблицу И по этой же теме цитата из ковырялки Можно ли при таком описании узнать что item* наследуются от std_item? Стандартных способов конечно нет, но если бы мне это нужно было, то я бы распарсил все конфиги с помощью io и "пар(с)ился" бы. Это заняло бы это несколько секунд при загрузке (текста ведь не мало) и 3-4 Мб памяти. Но если очень нужно, то можно пережить. Изменено 1 Мая 2015 пользователем Nazgool Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-934354
nego 35 Опубликовано 15 Мая 2015 Поделиться Опубликовано 15 Мая 2015 (изменено) Здравствуйте ВАМ. Есть скрипт рабочий. Написан по урокам скриптования. Кто может сделать Замечания и Советы? Прошу отписатся о том как можно улучшить. function ceck_medkits()if db.actor:object("medkit") ~= nil thenlocal news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю медицинскую аптечку. %c[default]"db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)db.actor:eat(db.actor:object("medkit"))elseif db.actor:object("medkit_army") ~= nil thenlocal news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю армейскую аптечку. %c[default]"db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)db.actor:eat(db.actor:object("medkit_army"))elseif db.actor:object("medkit_scientic") ~= nil thenlocal news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю научную аптечку. %c[default]"db.actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000)db.actor:eat(db.actor:object("medkit_scientic"))elseif db.actor:object("medkit") == nil anddb.actor:object("medkit_army") == nil anddb.actor:object("medkit_scientic") == nil thenmed.mcomplex_open()endend Очевидно - понять, как он работает, и что делает, и выбросить лишнее.А при постах сюда - использовать кнопку "код". dc Изменено 16 Мая 2015 пользователем Dennis_Chikin Одна голова хорошо, а две лучше. А вот три, это уже змей Горыныч. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-936919
Nazgool 251 Опубликовано 16 Мая 2015 Поделиться Опубликовано 16 Мая 2015 (изменено) @nego, Можно так local medkits = { {'medkit' , 'медицинскую'}, {'medkit_army' , 'армейскую' }, {'medkit_scientic', 'научную' }, } function ceck_medkits() local actor = db.actor for i = 1, #medkits do local medkit = actor:object(medkits[i][1]) if medkit then local news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю "..medkits[i][2].." аптечку. %c[default]" actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000) actor:eat(medkit) return end end med.mcomplex_open() end Или так function ceck_medkits() local actor = db.actor local medkit = actor:object('medkit') or actor:object('medkit_army') or actor:object('medkit_scientic') if medkit then local section = medkit:section() local what = (section == 'medkit') and 'медицинскую' or (section == 'medkit_army') and 'армейскую' or (section == 'medkit_scientic') and 'научную' local news_text = "%c[155,160,160,160]Автоматическая система ввода медицинских препаратов\\n%c[default]Выполняю:%c[255,160,160,160] Принимаю "..what.." аптечку. %c[default]" actor:give_game_news(news_text, "ui\\ui_iconsTotal",Frect():set(0,188,83,47), 0, 5000) actor:eat(medkit) return end med.mcomplex_open() end В принципе вариантов не мало. Замечания : 1. Взять любое из условий. Например если у ГГ есть медицинская аптечка, то 4 раза производится обращение к глобальным данным "db". Правильнее кешировать эту глобальную "db" в локальной переменной. local actor = db.actor 2. Если снова взять это же условие, то происходит два раза получение одного и того же объекта db.actor:object("medkit") ... db.actor:eat(db.actor:object("medkit")) Напрасная трата процессорного времени. Достаточно получить один раз и потом использовать local medkit = actor:object(medkits[1]) ... actor:eat(medkit) 3. В каждом из условий объявлена переменная local news_text = ... Компилируется каждая из трех строк. Они отличаются одним словом. Напрасная трата памяти. Есть возможность съэкономить. local news_text = ... ..medkits[2].. ... 4. Последние проверки лишние elseif db.actor:object("medkit") == nil and db.actor:object("medkit_army") == nil and db.actor:object("medkit_scientic") == nil then Если ни одно из условий выше не сработает, то очевидно что аптечек нет. Изменено 16 Мая 2015 пользователем Nazgool 2 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-936982
Zander_driver 10 358 Опубликовано 19 Мая 2015 Поделиться Опубликовано 19 Мая 2015 Состояние заклиненности оружия, обнаруживается ли по изменению какого-нибудь ключа в его нетпакете? вообще, как на стороне скриптов узнать о том что оружие заклинило. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил. Я понял что моя старая подпись что-то нарушает. Удалил все ссылки. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-937639
Kirgudu 1 370 Опубликовано 19 Мая 2015 Поделиться Опубликовано 19 Мая 2015 (изменено) @Zander_driver, смотри свойство нет-пакета weapon_state. Если оружие заклинило, будет иметь значение 7. Свойство есть и в стандартной, и в update-части. Изменено 19 Мая 2015 пользователем Kirgudu 2 Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD Полезное: модули Артоса, XML парсер Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-937641
svarog2741 83 Опубликовано 21 Мая 2015 Поделиться Опубликовано 21 Мая 2015 @Nazgool,соглашусь с тобой насчёт local *** = bla, bla, bla. А вот насчёт текстов и иконок, мне кажется было бы лучше сделать через xml'ку. НС - шлак, солянки - шлак. Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-938255
Неравнодушный сталкер vampirnik77 126 Опубликовано 23 Мая 2015 Неравнодушный сталкер Поделиться Опубликовано 23 Мая 2015 (изменено) Всем здравия! Возник вопрос, спавню скриптом итем и хочу поставить на него метку, но не отлавливается его id, где я ошибся? local taynik_tbl = {"rykzak", "konteiner", "yashik"} local taynik = taynik_tbl[math.random(#taynik_tbl)]local taynik_id = taynik.idalife():create(taynik, vector():set(-660.22509765625,19.935060501099,72.809051513672), 125131, 314)level.map_add_object_spot_ser(taynik_id, "ui_pda2_actor_box_location" , "DEBAG") Изменено 23 Мая 2015 пользователем vampirnik77 Вернулся получается... Ссылка на комментарий https://www.amk-team.ru/forum/topic/6185-skriptovanie/page/310/#findComment-938667
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти