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 Ссылка на комментарий
Zander_driver 10 343 Опубликовано 8 Апреля 2016 Поделиться Опубликовано 8 Апреля 2016 А теперь обратный вопрос есть у меня Как можно функцией в ствол запихать N количество патронов? Посмотреть методы класса game_object, что-то про set_ammo_elapsed 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
vampirnik77 121 Опубликовано 8 Апреля 2016 Поделиться Опубликовано 8 Апреля 2016 (изменено) @Zander_driver, Да именно. Но тип патронов не установить. Нужно попробовать капнуть через нет пакет. Изменено 8 Апреля 2016 пользователем vampirnik77 Официальная страница проекта Neof-One Crew Ссылка на комментарий
Zander_driver 10 343 Опубликовано 8 Апреля 2016 Поделиться Опубликовано 8 Апреля 2016 Тип патронов именно через нетпакет и ставится Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Logger 1 Опубликовано 9 Апреля 2016 Поделиться Опубликовано 9 Апреля 2016 всем привет , у меня такой вопрос (даже 2):1) Подскажите функцию чтобы через нет пакет сменить direction предмета (при спавне через alife:....)2) Как узнать vector (направление) на обьект относительно другого обьекта (грубо говоря делаю самонаводящиеся ракеты (нужно узнать направление в котором находится target цель относительно установки)) Ссылка на комментарий
Romann 623 Опубликовано 9 Апреля 2016 Поделиться Опубликовано 9 Апреля 2016 грубо говоря делаю самонаводящиеся ракеты В вертолётах Кирага есть ПЗРК с самонаводкой - подсмотри там в скриптах. Мать: 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. Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить? © Болотный Доктор Ссылка на комментарий
Zander_driver 10 343 Опубликовано 9 Апреля 2016 Поделиться Опубликовано 9 Апреля 2016 Как узнать vector (направление) на обьект относительно другого обьекта http://www.amk-team.ru/forum/topic/7450-spravochnik-po-funktciiam-i-klassam/#entry249938 вспоминаем векторную математику и присматриваемся к методу sub. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
FonSwong 33 Опубликовано 11 Апреля 2016 Поделиться Опубликовано 11 Апреля 2016 (изменено) Не понятно почему, но у меня вообще не получается скриптово создать CUIScrollView(), в то время как CUIListBox() дочерний от скрола успешно создаётся... Собственно не суть, могу и его использовать. Сам вопрос: у меня есть поля с текстом(заполняется автоматически разной длины текста), при большом объёме текст вылазиет, а размер окна с текстом остаётся таким же, и когда появляется новое окно ниже, верхнее залезает на нижнее. Как можно увеличивать размер окна с текстом по мере того как увеличивается объём текста(чтобы начало следущего окна было там, где уже нет текста), или же какой-то другой способ побороть это есть? Ну и при смене разрешения так же может залезать. Изменено 11 Апреля 2016 пользователем FonSwong Ссылка на комментарий
naxac 2 477 Опубликовано 12 Апреля 2016 Поделиться Опубликовано 12 Апреля 2016 @FonSwong, в ЗП в классе CUITextWnd для этого есть метод AdjustHeightToText. В ТЧ такой же метод добавлен в класс CUIStatic в проекте X-Ray Extensions, в чистом его нет. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
FonSwong 33 Опубликовано 12 Апреля 2016 Поделиться Опубликовано 12 Апреля 2016 (изменено) В общем я уже пожалел что решил перенести с .xml файлов полностью на скрипты. При попытке приаттачить CUIScrollView, CUIEditBox, CUIEditBoxEx к чему либо - тупо вылет. У CUIListBox почему-то скролл слева а не справа. Может конечно я сам туплю, но как можно ошибиться в двух строках: self.scroll_chat = CUIScrollView() self : AttachChild(self.scroll_chat) Жесть какая-то... Изменено 12 Апреля 2016 пользователем FonSwong Ссылка на комментарий
Malandrinus 615 Опубликовано 13 Апреля 2016 Поделиться Опубликовано 13 Апреля 2016 @FonSwong, В твоём коде самом по себе ошибки нет, но твой контрол скорее всего недоинициализирован. Создай его по-человечески с инициализацией через xml и не парься. А зачем было полностью переходить на скрипты? Можешь как-то обосновать необходимость этого? Я кстати встречал подобные экстремальные замашки и почему-то в основном среди скриптёров-новичков. Из подобного припоминаю один запущенный случай, когда человек создавал диалоги исключительно скриптами, полностью игнорируя xml. Зачем? Ну вот так хотелось, может считал, что это круто или что-то в этом роде. Что это не даёт никаких преимуществ, что создаёт совершенно несопровождаемый код, и такие диалоги невозможно редактировать никакими редакторами, а только вручную, человека не волновало. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
FonSwong 33 Опубликовано 13 Апреля 2016 Поделиться Опубликовано 13 Апреля 2016 (изменено) @Malandrinus, ды когда прописываешь в .xml ведь не сделаешь полносью динамическим наполнение, вот я и того, подумал что посредством лишь скрипта организовал бы... А hint(то что появляется при наведении) можно как-то скриптом сделать? Что даёт SetAutoDelete(boolean) до сих пор не пойму? Где можно увидеть все опции для прописки в xml файлах для окон? Изменено 13 Апреля 2016 пользователем FonSwong Ссылка на комментарий
naxac 2 477 Опубликовано 13 Апреля 2016 Поделиться Опубликовано 13 Апреля 2016 Где можно увидеть все опции для прописки в xml файлах для окон? В исходниках: xrGame\ui\UIXmlInit.cpp Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
FonSwong 33 Опубликовано 13 Апреля 2016 Поделиться Опубликовано 13 Апреля 2016 В исходниках: xrGame\ui\UIXmlInit.cpp как-то мне это не особо помогло, глянул- ничего не понял, вопрос актуален:/ Ссылка на комментарий
Zander_driver 10 343 Опубликовано 14 Апреля 2016 Поделиться Опубликовано 14 Апреля 2016 В твоём коде самом по себе ошибки нет, но твой контрол скорее всего недоинициализирован. Создай его по-человечески с инициализацией через xml и не парься. А еще можно создавать по человечески и нормально инициализировать скриптами и без использования xml Что это не даёт никаких преимуществ, что создаёт совершенно несопровождаемый код, и такие диалоги невозможно редактировать никакими редакторами, а только вручную, человека не волновало. http://www.amk-team.ru/forum/topic/13216-sborochnyj-tcekh/#entry959170 Почему у меня такое ощущение, что я догадываюсь о каком новичке идет речь. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Malandrinus 615 Опубликовано 15 Апреля 2016 Поделиться Опубликовано 15 Апреля 2016 (изменено) А еще можно создавать по человечески и нормально инициализировать скриптами и без использования xml Не всё можно, а главное, зачем это надо - чистое скриптовое создание? Разделение кода и данных - не причуда бюрократов от софтверной индустрии, а вполне себе правильная вещь. Почему у меня такое ощущение, что я догадываюсь о каком новичке идет речь. Нет, я говорил совершенно о другом человеке (и вообще странно, что ты счёл, что я бы мог назвать тебя новичком=). Раз уж ты привел в пример твою наработку, то это как раз не скриптовое создание, а также создание с помощью данных. Просто ты реализовал для этого альтернативный парсер. Замечу при этом, что истинно динамические диалоги, т.е. с созданием на лету диалога с произвольным графом, так всё равно не сделать. Поэтому выходит, как я и сказал, попросту другой механизм разделения кода и данных, не xml + движковый парсер, а ltx + скриптовый парсер. На мой взгляд, перечисляемые в твоём посте недостатки xml преодолеваются с помощью нормальных инструментов редактирования. Утилита из SDK - это как раз пример крайне плохого инструмента. Я пытался сделать лучше, на мой взгляд получилось неплохо. Будут силы и время, доработаю свою утилиту до приемлемого состояния. когда прописываешь в .xml ведь не сделаешь полносью динамическим наполнение А что значит "полностью динамическим"? Ты всерьёз собираешься скриптами менять ВООБЩЕ ВСЕ параметры окна или контрола? Что даёт SetAutoDelete(boolean) ...? Когда ты размещаешь окно как дочернее, то установка этого параметра в true приведёт к тому, что это окно удалится автоматически при удалении своего родительского. Изменено 15 Апреля 2016 пользователем Malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
UnLoaded 313 Опубликовано 15 Апреля 2016 Поделиться Опубликовано 15 Апреля 2016 когда прописываешь в .xml ведь не сделаешь полностью динамическим наполнение, вот я и того, подумал что посредством лишь скрипта организовал бы Согласен с Malandrinus'ом - что мешает создать окно на основе xml-описания, а затем скриптово крутить\вертеть его как хочется ? Ссылка на комментарий
Zander_driver 10 343 Опубликовано 15 Апреля 2016 Поделиться Опубликовано 15 Апреля 2016 (изменено) Разделение кода и данных - вполне себе правильная вещь.Уже не первый раз я наблюдаю у вас странный стереотип - если речь идет о том чтобы что то делать "только скриптом" - вы вспоминаете про разделение кода и данных и толкуете о том что это полезно. А кто же против? Полезно конечно, непонятно только, почему высказывания в пользу "чисто-скриптового" делания чего-нибудь, воспринимаются как высказывания против разделения кода и данных. При этом мою же наработку для скриптового создания диалогов приводите в пример как разделение на скрипт - код и ltx - данные. Если уж на то пошло, в любом достаточно сложном коде, не важно на каком языке он написан, так или иначе присутствует необходимость управления - передачи в него каких-то внешних данных. Разделение кода и данных на самом деле существует всегда, в любом языке программирования и любом достаточно сложном коде, вне зависимости от пожеланий программиста который этот код пишет. Я попробую проиллюстрировать свою мысль. Допустим мы выводим некий элемент на худ. Как мы можем это сделать? Вот 3 варианта: --################################################################################## -- #1 где-то в каком-то файле лежит такой код: STATIC = CUIStatic() STATIC:Init(10, 10, 156, 24) STATIC:InitTexture("empty_texture") get_hud():AddDialogToRender(STATIC) --################################################################################## -- #2 где-то в папке скриптов лежит модуль управления худом --- где то в его начале лежат настройки local static_x, static_y, static_width, static_height = 10, 10, 156, 24 --- эти настройки можно сопровождать комментариями local static_texture = "empty_texture" --- пояснящими что для чего и зачем --- * * * -- далее где-то в файле такой код: STATIC = CUIStatic() STATIC:Init(static_x, static_y, static_width, static_height) STATIC:InitTexture(static_texture) get_hud():AddDialogToRender(STATIC) --################################################################################## -- #3 где-то в папке конфигов лежит файл настроек -- а в папке скриптов лежит модуль управления худом, и в нем есть что-то такое function Load_params() local ltx = system_ini() local static_x = ltx:r_u32("секция_настроек", "static_x") ... return static_x, static_y, static_width, static_height, static_texture end --- * * * -- далее где-то в файле такой код: local static_x, static_y, static_width, static_height, static_texture = this.Load_params() STATIC = CUIStatic() STATIC:Init(static_x, static_y, static_width, static_height) STATIC:InitTexture(static_texture) get_hud():AddDialogToRender(STATIC) В первом варианте все данные содержатся прямо в строках программного кода. Чтобы их осознанно а не наугад менять, пользователь должен иметь определенные познания в скриптах, т.е. понимать что тут и зачем. Строго говоря первый вариант - это просто плохой код. Но и в нем, есть код, а есть данные. Просто они смешаны в одну кучу. Во втором варианте данные вынесены в начало файла, сопровождаются яснопонятными комментариями и назначение их понятно любому кто не поленится заглянуть в этот файл. Хотя это все еще, файл кода. Как бы. В третьем варианте данные вынесены в ltx-конфиг, и читаются оттуда. Бонус для тех кто по каким то психологическим соображениям боится открывать файлы *.script, не более того. Хотя это конечно актуально и дает массу плюсов. Можно еще соорудить четвертый вариант - написать интерфейс для ввода каких-либо данных прямо в игре, и предоставить игроку возможность прямо из игры вводить входящие данные для какого-либо скрипта. Чем отличаются эти 3 (4) варианта? Что, в каких то из них есть разделение кода и данных, а в каких то нет? мне представляется что это ошибочный стереотип, т.к. данные - есть во всех 4-х вариантах, и код выполняет одну и ту же задачу. Разница между ними заключается в простоте доступа к изменению этих данных. Если в первом варианте программист утверждает - "я сам тут все настроил как я хочу, и нечего и незачем тут менять, а если хотите менять то лезьте в скрипты и разбирайтесь в моем (чужом для вас) коде." То в последних вариантах программист доверяет пользователю управление своим кодом. Могут быть случаи когда программист пишет что-то такое, что вряд ли кому понадобится менять - и тут вполне имеет место быть первый вариант. Сам все настроил и в коде оставил. А может быть код предназначенный для широкого применения в разных ситуациях - и он должен быть управляем, иначе пользоваться им будет неудобно. Все это не имеет никакого отношения к беседе о "пользе разделения кода и данных". Необходимость этого разделения определяется лишь тем, может ли возникнуть нужда изменить какие-то входные данные для этого кода. И если да, может, а удобного (достаточно удобного в данной ситуации) доступа к данным нет - такой код можно признать плохим, а программиста его написавшего - недальновидным. И вот после этого таки вернемся к "чисто скриптовому созданию". То что его наличие или отсутствие не имеет никакого отношения к разделению кода и данных, надеюсь уже стало понятно. То что скрипт изменить проще чем движок, надеюсь не надо объяснять? и скриптово реализованный интерфейс гораздо проще поддается доработкам в функциональном плане, т.е. в области кода. Ну и наконец. xml как "хранилище данных" - это просто ужас что такое. Горбатое нагромождение тегов и неочевидных правил, неудобное для чтения и редактирования. Просто для того чтоб хранить данные использовать это? Да ну бросьте. ltx-конфиг подходит для этого не сопоставимо лучше, хотя бы потому что организован в простой и понятной структуре "ключ = значение". И каждую пару ключ-значение можно сопроводить каким угодно комментарием. что еще надо для хранения данных? назвать тебя новичкомЯ сам себя новичком считаю. Новичок - тот кто с интересом учится новому, тот кто всегда допускает вероятность что чего-то не знает, И когда находит незнакомое то с интересом изучает. то это как раз не скриптовое создание, а также создание с помощью данныхсм. выше. любой код написанный на любом языке, использующий какие-то данные, работает с помощью этих данных. Разница лишь в том где эти данные лежат, откуда берутся. И разницы этой, о которой вы говорите - ее то как раз, почти и нету. Куда больше разница между кодом в скрипте, и тем же кодом но в движке.И опять про возможность доработки функционала, доработки кода... я в своем моде использую диалоги, которые будучи построенными в игре, содержат тысячи и десятки тысяч фраз. Вы же не думаете что я все их в ltx описывал? Замечу при этом, что истинно динамические диалоги, т.е. с созданием на лету диалога с произвольным графом, так всё равно не сделатьЕсли в движке убрать сохранение диалоговых графов, чтобы он запрашивал их создание при каждом обращении к нпс, то как раз этим способом - можно. На мой взгляд, перечисляемые в твоём посте недостатки xml преодолеваютсяПри большом желании и приложении достаточных усилий, преодолевается абсолютно все. Вопрос в другом. В удобстве и наглядности. И в затратах человеко часов на редактирование в практических целях.Возвращаясь к вышеприведенному примеру со статиком на худе, и беря в качестве испытуемого какого-нибудь допустим ученика 5 класса, троечника-прогульщика который впервые для себя решил покопаться в файлах игры и что-то там сделать. В чем он разберется быстрее, в ltx-кофиге состоящем из пар ключей и значений, сопровождаемых комментариями на русском, или в непонятной xml-мешанине тегов? Ах да, можно возразить "мы же пишем свой код не для того чтоб его школьник ковырял". Ну так вот господа. Тот программист который писал код по варианту #1, он тоже тешил себя мыслями что "кто не скриптер - тот не разберется". А на самом деле есть просто плохой код и хороший. И промежуточные стадии конечно И можно дальше упражняться в ограничении круга избранных, кому будет дозволено разобраться в том что было создано великими, а можно задуматься об удобстве пользователя и сэкономить его время. Не интересуясь тем, кто он. Ты всерьёз собираешься скриптами менять ВООБЩЕ ВСЕ параметры окна или контрола?А почему бы собственно нет? Изменено 15 Апреля 2016 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Malandrinus 615 Опубликовано 15 Апреля 2016 Поделиться Опубликовано 15 Апреля 2016 @Zander_driver,Данные разумеется есть всегда. Идея отделения их от кода в том, чтобы менять их, не меняя код. Если данные смешаны с кодом, то по очевидной причине, придётся менять код, чтобы менять данные. Поэтому твой пример кода №1 - это как раз типичное грубое смешение кода и данных. В том числе, хотя и менее плохо, вынесение данных в отдельный блок кода, поскольку и тогда придётся править файл кода. В идеале должен быть отдельный файл данных, чтобы его правка вообще бы не трогала ни одной строчки и ни одного файла кода. Собственно, так и задумана работа с файлами игры. Я откровенно не понял про "мифы и стереотипы". Для начала, не я это придумал, а умные люди пришли к этому многие десятки лет назад. Этот принцип реально помогает упростить жизнь. Данные легче менять, чем код. Меняя данные мы описываем результат, а код - это описание процесса достижения результата, и его изменение заведомо более сложное, нежели данных. Заключается это в массе мелочей: необходимость отладки, больше возможностей по внесению ошибок, больше усилий на понимание и т.п. Это касается как написания, так и всех этапов последующего сопровождения. xml как "хранилище данных" - это просто ужас что такое Это промышленный стандарт, для которого не надо делать парсеры, поскольку они уже есть во множестве. Редактирование же в свою очередь не должно быть руками. Нужны адекватные инструменты, о чём я тоже говорил. Применительно к разным задачам модостроя такие инструменты уже появились или появляются. И это - правильный путь. В чем он разберется быстрее, в ltx-кофиге состоящем из пар ключей и значений, сопровождаемых комментариями на русском, или в непонятной xml-мешанине тегов? Быстрее того и другого разберётся в инструменте визуального редактирования. Если в движке убрать сохранение диалоговых графов Но сейчас то нельзя. Чтобы это сделать, тебе надо залезть в движок. А если ты можешь залезть в движок, то зачем тебе скриптовый парсер? Я бы тогда уж сделал парсер движковый, пусть и не на xml, а на ltx. В любом случае, что ты хочешь мне доказать? Ты же делаешь инструмент как раз для архитектурно правильного разделения кода и данных, так о чём вообще спор? Твой парсер - это не "чисто скриптовое создание", с которого начался разговор. Хотелось тебе сделать всё по своему - право твоё. Хотя я бы и не стал так делать, а направил бы усилия на развитие инструментов для того же xml (что я и делаю по мере сил). В любом случае, здесь разговор вообще не об этом. Твой пример №1 - вот то, о чём я говорил. Люди продолжают так делать сплошь и рядом: окна, диалоги, что ни попадя. Конкретно то, что я имел в виду, это когда человек создавал каждую фразу отдельным вызовом функции и отдельными ручными вызовами пришпиливал к ним предусловия, инфопорции и т.п. Это - зло в чистом виде. > Ты всерьёз собираешься скриптами менять ВООБЩЕ ВСЕ параметры окна или контрола?А почему бы собственно нет? Лучше бы ответил не ты, а @FonSwong. Потому что это конкретный вопрос, а не "вообще". Практически всегда, когда я задаю конкретный вопрос "что за задачу вы собираетесь решать вот этим извращённым способом?" ответа либо нет, либо он так и звучит "а вдруг надо будет" или "а почему бы и нет". Лично я уже давно излечился от этого и решаю только те задачи, которые передо мной реально возникают. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
advisor890 1 Опубликовано 15 Апреля 2016 Поделиться Опубликовано 15 Апреля 2016 Я использую функцию проверки близости к аномалии вызываемую через bind_anomaly_field.scripts Вот функция: function anom_field_update(anomaly) if db.actor then local act_pos = db.actor:position() local anom_pos = anomaly:position() if act_pos:distance_to_sqr(anom_pos) < 4 then --[[Код который выполняется если ГГ на расстоянии менее 2 метров от аномалии, переменная anomaly содержит объект-аномалию, параметры которой можно считать]] end end end Теперь мне допустим нужно после "< 4 then" вывести на мини карту метку обозначающую аномалию к которой я подхожу. Я так понял мне нужно сделать проверку секции конкретной аномалии, а потом выводить на мини карту через level.map_add_object_spot_ser(obj.id, "blue_location", text)? Или все же как-то по другому? Ссылка на комментарий
Malandrinus 615 Опубликовано 15 Апреля 2016 Поделиться Опубликовано 15 Апреля 2016 @advisor890, идея примерно как ты написал, хотя реализация будет сложнее. Поскольку метку на объект надо ставить только один раз, то надо держать массив помеченных аномалий, и периодически их все проверять на предмет того, что актор вышел из радиуса. Если вышел, то метку снимать и удалять из массива. Кроме того, лучше наверное использовать не level.map_add_object_spot_ser, которая ставит постоянную метку, а level.map_add_object_spot, которая ставит метку, не сохраняющуюся в сейве. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти