Это популярное сообщение. Zander_driver 10 334 Опубликовано 21 Августа 2015 Это популярное сообщение. Поделиться Опубликовано 21 Августа 2015 (изменено) Раньше в этой теме находились всякие полезности. Соответствующие определенным правилам и требованиям, которые были указаны в шапке. Но т.к. со временем в тему стали постить материалы не соответствующие этим требованиям - шапка более не имеет смысла. В старых постах еще может быть что-то полезное, в новых по всей видимости - вряд ли. Изменено 1 Декабря 2021 пользователем Zander_driver Привел в соответствие современным реалиям. 2 4 4 12 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Kirgudu 1 216 Опубликовано 10 Августа 2016 Поделиться Опубликовано 10 Августа 2016 Обновил комплект модулей Artos'а в этом посте - было найдено и исправлено несколько ошибок в модулях lua_helper и m_timers. @Zander_driver, просьба обновить шапку. Во время заливки я обнаружил, что модули Артоса качают в основном из поста, на который ведёт ссылка «Модули Артоса и xStream». Но они там заведомо содержат ошибки, которые уже были исправлены позднее! Из того поста можно брать только xs_sandbox от xStream.Под модули Артоса нужно сделать новую ссылку, ведущую на вышеуказанный пост.А ссылка «Установка модулей Artos`a на ЗП» должна вести не на этот же пост, а напрямую в соответствующую часть темы «скриптование». Инструмент Ссылка на комментарий
Это популярное сообщение. Serge! 127 Опубликовано 17 Августа 2016 Это популярное сообщение. Поделиться Опубликовано 17 Августа 2016 (изменено) Недавно, просматривая старые публикации, наткнулся на некоторые проблемы сообщества, которые я для себя уже давно решил. Привёл эти, некоторые, свои решения в удобочитаемый вид и решил выложить (постепенно, разумеется).Проблема 1. ComboBox для ТЧ (и ЧН я так думаю) Уже в далёком 2010 году Malandrinus в своём классичесом посте об оконных классах написал: : "CUIComboBox - выпадающий список. В ТЧ есть, но недоэкспортирован, в связи с чем применять его можно только в ЗП". И он был прав. В том же году IQDDD сказал: "а по идее можно создать собственный ComboBox, используя классы CUIButtonWnd, CUIStaticWnd и CUIListWnd.". И тоже был прав. А вот далее много лет т и ш и н а! Но ведь это действительно не так уж и сложно. Например, можно сделать так. Можно, если нет желания замарачиваться с текстурами, использовать визуал ComboBox из ТЧ (gamedata\textures\ui\ui_common.dds). Но, он мне не нравится и поэтому я использую, чуть подправленный, аналог из ЗП (файл dds есть в секции ссылок). Однако, в любом случае, требуется файл описания текстур. В моём случае он имеет вид: <ui_texture> <!-- файл текстуры --> <file_name>ui\ui_ComboBoxEx</file_name> <!-- фон поля текста --> <texture id="ui_cbEx_text" x="1" y="0" width="38" height="19" /> <!-- кнопка --> <texture id="ui_cbEx_btn" x="45" y="0" width="19" height="19" /> <!-- фон списка --> <texture id="ui_cbEx_list" x="1" y="1" width="38" height="17" /> </ui_texture> Ну и наконец сам сприпт класса ComboBoxEx: --[[-------------------------------------------------- ui_ComboBoxEx.script Authors: Serge! Version: 1.0 Date: 2016 ------------------------------------------------------ Описание: Платформа - ТЧ ver 1.004 (без расширений) ------------------------------------------------------ Содержание: Класс (псевдо) ComboBoxEx (поле с выпадающим списом для ТЧ) ------------------------------------------------------ Необходимые файлы: gamedata\scripts\ui_ComboBoxEx.script, gamedata\config\ui\ui_ComboBoxEx.xml, gamedata\textures\ui\ui_ComboBoxEx.dds --]]-------------------------------------------------- -- класса строки выпадающего списка class "cb_item" (CUIListItemEx) function cb_item:__init() super() self.sn = CUIStatic() self:AttachChild(self.sn) self.sn:ClipperOn() self.sn:SetFont(GetFontLetterica16Russian()) end function cb_item:__finalize() end -- скрытые члены класса local tcb = { own = nil, X = 0, y = 0, width = 0, height = 19, listSize = 0, itemScroll = 4, listHeight = 73, showList = false, vScroll = true, enable = true, show = true, autoDelete = true, wndName = "", ComBox = nil, curItem = 0, cbTxt = nil, cbList = nil, frmList = nil, cbBtn = nil, } -- скрытые методы класса -- добавить строку в список local function InstItem(text) local _itm = cb_item() _itm.sn:SetWndRect(2,0, tcb.width-22,18) _itm.sn:SetTextColor(255,216,186,140) _itm.sn:SetText(tostring(text)) tcb.cbList:AddItem(_itm) end -- показать/скрыть список local function DidplayHideList() tcb.showList = not tcb.showList tcb.frmList:Show(tcb.showList) end -- показать текущий выбор local function ShowCurID() tcb.curItem = tcb.cbList:GetSelectedItem() local str = tcb.cbList:GetItem(tcb.curItem) tcb.cbTxt:SetText(str.sn:GetText()) end -- вернуть выбор в списке (от 1 до ListSize) local function GetItemList() DidplayHideList() tcb.own:GetComboBox(tcb.curItem+1) end -- определение класса/конструктор class "ComboBoxEx" (CUIScriptWnd) function ComboBoxEx:__init(owner) super() tcb.own = owner self:SetAutoDelete(true) tcb.ComBox = CUIStatic() tcb.ComBox:SetAutoDelete(tcb.autoDelete) owner:AttachChild(tcb.ComBox) end -- деструктор function ComboBoxEx:__finalize() end -- публичные методы класса -- инициализация function ComboBoxEx:Init(x,y,w) tcb.x = x; tcb.y = y; tcb.width = w -- полный ComboBox с раскрытым списком tcb.ComBox:Init(x,y,w,tcb.listHeight+tcb.height) local ctl -- поле полоски текста ctl = CUIStatic() ctl:Init(0,0,tcb.width-tcb.height,tcb.height) tcb.ComBox:AttachChild(ctl) ctl:InitTexture("ui_cbEx_text") ctl:SetStretchTexture(true) -- поле самого текста tcb.cbTxt = CUIStatic() ctl:AttachChild(tcb.cbTxt) tcb.cbTxt:Init(5,1,tcb.width-tcb.height-7,17) -- кнопка раскрытия/свёртования списка ctl = CUIButton() tcb.ComBox:AttachChild(ctl) ctl:Init(tcb.width-tcb.height,0,tcb.height,tcb.height) ctl:InitTexture("ui_cbEx_btn") self:Register(ctl,"but_cb") -- прерывание кнопки self:AddCallback("but_cb", ui_events.BUTTON_CLICKED, DidplayHideList) -- поле вывода списка tcb.frmList = CUIStatic() tcb.frmList:Init(0,tcb.height,tcb.width,tcb.listHeight+5) tcb.ComBox:AttachChild(tcb.frmList) tcb.frmList:InitTexture("ui_cbEx_list") tcb.frmList:SetStretchTexture(true) tcb.frmList:Show(showList) -- сам список tcb.cbList = CUIListWnd() tcb.frmList:AttachChild(tcb.cbList) tcb.cbList:Init(3,3,tcb.width-5,tcb.listHeight) tcb.cbList:SetItemHeight(18) tcb.cbList:Enable(true) tcb.cbList:EnableScrollBar(true) tcb.cbList:ShowSelectedItem(true) self:Register(tcb.cbList,"list_wnd") -- прерывания списка self:AddCallback("list_wnd", ui_events.LIST_ITEM_CLICKED, ShowCurID) self:AddCallback("list_wnd", ui_events.WINDOW_LBUTTON_DB_CLICK, GetItemList) end -- добавление строки/массива строк в список function ComboBoxEx:AddComBox(text) if type(text) == "table" then for _, value in pairs(text) do InstItem(value) end tcb.listSize = tcb.listSize + #text elseif text ~= nil then InstItem(text) tcb.listSize = tcb.listSize + 1 end end -- возврат текущией позиции в списке ( от 1 до size) function ComboBoxEx:CurrentID() return (tcb.curItem + 1) end -- установить режим доступа к полю ComboBox function ComboBoxEx:Enable(val) tcb.enable = val tcb.ComBox:Enable(tcb.enable) end -- получить режим доступа к полю ComboBox function ComboBoxEx:IsEnable() return tcb.enable end -- установить режим вывода поля ComboBox function ComboBoxEx:Show(val) tcb.show = val tcb.ComBox:Show(tcb.show) end -- получить режим вывода поля ComboBox function ComboBoxEx:IsShow() return tcb.show end Просто скопировать файлы в соответствуюшие папки с установленной игрой. В Родительском скрипте определяем переменную класса ComboBoxEx (см. код примера) и после этого получаем 2 основных метода (их чуть больше, но я не усерствовал):1. Инициализации - Init()2. Формирование выпадающего списка - AddComBox()Также в родительском скрипте необходимо создать метод получения результатов монипуляций с ComboBox. Это функция с предопределённым именем GetComboBox(numItem).Данная реализация предоставляет следующие методы (я сам использую только 3 основных и поэтому мне их писать было просто лениво):1. ComboBoxEx(self) - определение класса2. Init(x,y,w) - инициализация3. AddComBox(text) - добавление строки/массива строк в список (text - string или table)4. number CurrentID() - возврат текущией позиции в списке ( от 1 до size)5. Enable(bool val) - установить режим доступа к полю ComboBox6. bool IsEnable() - получить режим доступа к полю ComboBox7. Show(bool val) - установить режим вывода поля ComboBox8. bool IsShow() - получить режим вывода поля ComboBoxЕсли Вам надо больше, то Вы можете легко, по данному шаблону, добавить свои. Это пример использования данного класса. --[[-------------------------------------------------- ui_test_cb.script Authors: Serge! Version: 1.0 Date: 2016 ------------------------------------------------------ Описание: Платформа - ТЧ ver 1.004 (без расширений) ------------------------------------------------------ Содержание: Пример использования класса ComboBoxEx (поле с выпадающим списом для ТЧ) ------------------------------------------------------ Необходимые файлы: gamedata\scripts\ui_test_cb.script, gamedata\scripts\ui_ComboBoxEx.script, gamedata\config\ui\ui_ComboBoxEx.xml, gamedata\textures\ui\ui_ComboBoxEx.dds, gamedata\textures\ui\ui_pda.dds --]]-------------------------------------------------- -- точка входа из внешних скриптов -- или вызываем так: ui_test_cb.test_cb() function main() ui_test_cb.test_cb() end -- локальные переменные local cb -- надёжнее всегда её делать внешней локальной, а не внутри конструктора -- определяем класс окна и активируем его class "test_cb" (CUIScriptWnd) function test_cb:__init() super() -- создаём фон self:SetFont(GetFontMedium()) self:SetWndRect(312,150,400,543) local fon = CUIStatic() fon:SetAutoDelete(true) self:AttachChild(fon) fon:Init(0,0,400,543) fon:InitTexture("ui\\ui_pda") -- это просто ПДА из дистрибутива, которое просто повернуто на 90 гр. fon:SetStretchTexture(true) -- определяем элемент класса ComboBox cb = ui_ComboBoxEx.ComboBoxEx(self) cb:SetAutoDelete(true) cb:Init(65,60,280) -- можно задать любые (в пределах разумного) -- вставим несколько строк (массивом) cb:AddComBox({"String 1","String 2","String 3","String 4","String 5"}) -- покажем всё это level.start_stop_menu(self, true) end function test_cb:__finalize() end -- обработка результата манипуляций в ComboBox (должна быть обязательно! и именно с таким именем) function test_cb:GetComboBox(numItem) -- просто выводим сообщение с результатом news_manager.send_tip(db.actor, "Строка из ComboBox: "..tostring(numItem)) end P.S. Напоминаю, что в любом случае имя файла описания текстур требуется добавить в секцию [texture_desc] файла system.ltx https://yadi.sk/d/YlzEnHHCuGgWj https://disk.yandex.ru/client/disk Изменено 17 Августа 2016 пользователем Serge! 1 6 Ссылка на комментарий
Serge! 127 Опубликовано 17 Августа 2016 Поделиться Опубликовано 17 Августа 2016 (изменено) @Карлан, Наверное Вы и правы, но я пользуюсь таким давно и без всяких нареканий и последствий. А править движок? я хоть и могу это, но не делаю такого принципиально (у каждого в голове свои тараканы). У всех свой путь и они все (эти тропинки) правильны для идушего, но не все они оптимальны и верны. Нужно переписывать, писать родительский класс, который можно было бы использовать везде, а текущий движковый далее чистить и наследовать от нашего новосозданного Вот именно такой подход мне и претит! Вы заметили, что я не трогал "родительский класс"? Я просто сделал свой. Не надо шуровать там, где не ты ничего не сделал. Творите дополнения, dll-ки, которые пользователи подключают по СВОЕМУ желанию или не подключают, а не правьте то, к созданию чего вы не имели никакого отношения. Правильно же решили проблемы Atros и RVP с нет-пакетами и io? без всяких правок движка и удачно, спасибо им за это. А Вы? Теория это конечно замечательно, но практика она более доходчива и востребована, как правило. Я, к примеру, ни один мод, требущий версию отличную от 1.004, даже не рассматриваю. я уже неоднократно писал в чем кроется загадка этих "недоэкспортированных" классов Да дело же не в "загадках", а в их решениях и доступности/популярности этих решений. Вы это понимаете? Творите и дальше, и удачи Вам в этом творчестве. Никакой иронии. Изменено 17 Августа 2016 пользователем Serge! 3 Ссылка на комментарий
Это популярное сообщение. naxac 2 445 Опубликовано 21 Августа 2016 Это популярное сообщение. Поделиться Опубликовано 21 Августа 2016 (изменено) Пофиксенный m_netpk от Artos'a: ! исправлен разбор num_items и чтение некоторых параметров update-части пакета объектов, наследованных от cse_alife_inventory_item; ! исправлено чтение update-части в net_cse_alife_item_weapon_magazined_w_gl; + добавлены функции для работы с шейпами из OGSE (см.конец модуля); ~ в shape для кубических шейпов теперь размеры читаются не векторами, а одной матрицей; * чтобы подключить модуль, надо где-нибудь на загрузке вызвать m_netpk.init() (я это делаю в начале _g.script). Всё остальное - оставлено как было, разве что местами повырезаны дебаговые сообщения. Ссылка Изменено 21 Августа 2016 пользователем naxac 5 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Kirgudu 1 216 Опубликовано 22 Августа 2016 Поделиться Опубликовано 22 Августа 2016 @naxac, спасибо. Какая из версий скрипта, выложенных Artos'ом (либо кем-то ещё позднее) послужила основой? Интересуюсь с целью интеграции исправлений в свой комплект "на все случаи жизни". По сравнению с тем, что есть у меня, изменений довольно много и не всегда очевидно, что они связаны именно с вышеперечисленными исправлениями. Заметил, кстати, что твой вариант требует реализации в каком-либо виде функции table.size() (например, путём подключения Artos'овского же модуля lua_extension), поскольку в скачиваемом скрипте она отсутствует. Тем, кто "в теме" всё равно, а остальным следует об этом знать. Инструмент Ссылка на комментарий
naxac 2 445 Опубликовано 23 Августа 2016 Поделиться Опубликовано 23 Августа 2016 (изменено) @Kirgudu, я даже не помню, что за версия.. В конфиге написано "last edit: 27.09.2013". Да, про table.size забыл совсем - у меня xrLua Extensions от RvP стоит, это оттуда. Если нужно, могу скинуть диф с изменениями. Изменено 23 Августа 2016 пользователем naxac Добавлено Kirgudu, 23 Августа 2016 Эта дата, в конфиге, никем не менялась с момента публикации Artos'ом. Что ж, будем разбираться. Добавлено Kirgudu, 23 Августа 2016 Если не сложно. В личку, разумеется, не будем тему засорять. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Serge! 127 Опубликовано 1 Сентября 2016 Поделиться Опубликовано 1 Сентября 2016 Немного ранее я показал как скриптами, не трогая движок, можно сделать в ТЧ поле с выпадающим списком. Там все работает, но не всё меня до конца устраивало. Вот ещё один исправленный и доработанный вариант. 1. В каждом диалоговом окне можно определить любое количество элементов ComboBox. Раньше правильно работал только один. 2. Каждый элемент имеет свой собственный обработчик выбора, имя которого определяется разработчиком. Раньше имя процедуры было предопределено.3. Добавлен метод предустановки выбора. Иногда такое бывает очень удобно.4. Исправлено кое-что по мелочам. --[[-------------------------------------------------- ui_ComboBoxEx.script Authors: Serge! Version: 1.01 Date: 2016 ------------------------------------------------------ Описание: Платформа - ТЧ ver 1.004 (без расширений) ------------------------------------------------------ Содержание: Класс (псевдо) ComboBoxEx (поле с выпадающим списом для ТЧ) ------------------------------------------------------ Необходимые файлы: gamedata\scripts\ui_ComboBoxEx.script, gamedata\config\ui\ui_ComboBoxEx.xml, gamedata\textures\ui\ui_ComboBoxEx.dds требуется корректировка файла system.ltx --]]-------------------------------------------------- -- определение класса строки выпадающего списка class "cb_item" (CUIListItemEx) function cb_item:__init() super() self.sn = CUIStatic() self:AttachChild(self.sn) self.sn:ClipperOn() self.sn:SetFont(GetFontLetterica16Russian()) end function cb_item:__finalize() end -- определение класса ComboBoxEx (через параметр получаем родителя) class "ComboBoxEx" (CUIScriptWnd) function ComboBoxEx:__init(owner) super() self.owner = owner end function ComboBoxEx:__finalize() end -- инициализация function ComboBoxEx:Init(pX,pY,w) -- скрытые члены класса local width = w and w or 120 -- если ширина не задана, то устанавливается 120 local height = 19 -- высота поля текста local itemScroll = 4 -- строк в списке local listHeight = 73 -- высота списка (для 4-х строк) local listItHeight = 18 -- высота строки списка local own = self.owner -- родитель local retFun -- функция возврата -- полный ComboBox с раскрытым списком local ComBox = CUIStatic() ComBox:SetAutoDelete(true) self.owner:AttachChild(ComBox) ComBox:Init(pX,pY,width,listHeight+height) -- поле полоски текста local ctl = CUIStatic() ctl:Init(0,0,width-height,height) ComBox:AttachChild(ctl) ctl:InitTexture("ui_cbEx_text") ctl:SetStretchTexture(true) -- поле самого текста local cbTxt = CUIStatic() ctl:AttachChild(cbTxt) cbTxt:Init(5,1,width-height-7,17) -- кнопка раскрытия/свёртования списка local btn = CUIButton() ComBox:AttachChild(btn) btn:Init(width-height,0,height,height) btn:InitTexture("ui_cbEx_btn") self:Register(btn,"but_cb") -- поле вывода списка local frmList = CUIStatic() ComBox:AttachChild(frmList) frmList:Init(0,height,width,listHeight+5) frmList:InitTexture("ui_cbEx_list") frmList:SetStretchTexture(true) local showList = false frmList:Show(showList) -- показать/скрыть список local DidplayHideList = function() showList = not showList frmList:Show(showList) end -- сам список local cbList = CUIListWnd() cbList:SetAutoDelete(true) frmList:AttachChild(cbList) cbList:Init(3,3,width-5,listHeight) cbList:SetItemHeight(listItHeight) cbList:Enable(true) cbList:EnableScrollBar(true) cbList:ShowSelectedItem(true) self:Register(cbList,"list_wnd") -- добавить строку в список self.InstItem = function(text) local _itm = cb_item() _itm.sn:SetWndRect(2,0, width-22,listItHeight) _itm.sn:SetTextColor(255,216,186,140) _itm.sn:SetText(tostring(text)) cbList:AddItem(_itm) end -- установим функцию возврата результата выбора self.SetRetFun = function(fun) retFun = fun end -- вернуть родителю выбор в списке (первая строка - 1) local GetItemList = function () DidplayHideList() local curItem = cbList:GetSelectedItem() local str = cbList:GetItem(curItem) cbTxt:SetText(str.sn:GetText()) if retFun then retFun(curItem+1) end end -- установить выбор в списке self.SetSelectItem = function (num) if num <= cbList:GetSize() then local curItem = num-1 cbList:SetFocusedItem(curItem) local str = cbList:GetItem(curItem) cbTxt:SetText(str.sn:GetText()) if retFun then retFun(curItem+1) end end end -- прерывания self:AddCallback("but_cb", ui_events.BUTTON_CLICKED, DidplayHideList) self:AddCallback("list_wnd", ui_events.WINDOW_LBUTTON_DB_CLICK, GetItemList) end -- заполнение списка function ComboBoxEx:AddComBox (text) if type(text) == "table" then for _, value in pairs(text) do self.InstItem(value) end elseif text ~= nil then self.InstItem(text) end end --[[-------------------------------------------------- ui_test_cb.script Authors: Serge! Version: 1.01 Date: 2016 ------------------------------------------------------ Описание: Платформа - ТЧ ver 1.004 (без расширений) ------------------------------------------------------ Содержание: Пример использования класса ComboBoxEx (поле с выпадающим списом для ТЧ) ------------------------------------------------------ Необходимые файлы: gamedata\scripts\ui_test_cb.script, gamedata\scripts\ui_ComboBoxEx.script, gamedata\config\ui\ui_ComboBoxEx.xml, gamedata\textures\ui\ui_ComboBoxEx.dds, gamedata\textures\ui\ui_pda.dds требуется корректировка файла system.ltx --]]-------------------------------------------------- -- точка входа из внешних скриптов -- или вызываем так: ui_test_cb.test_cb() function main() ui_test_cb.test_cb() end -- локальные переменные local cb1, cb2 -- надёжнее определять внешней локальной, а не внутри конструктора, чтобы их не убрал сборщик class "test_cb" (CUIScriptWnd) function test_cb:__init() super() -- создаём фон для примера self:SetFont(GetFontMedium()) self:SetWndRect(312,150,400,543) local fon = CUIStatic() fon:SetAutoDelete(true) self:AttachChild(fon) fon:Init(0,0,400,543) fon:InitTexture("ui\\ui_pda") -- это просто ПДА из дистрибутива, которое повернуто на 90 гр. fon:SetStretchTexture(true) -- определяем 1-й элемент класса ComboBoxEx cb1 = ui_ComboBoxEx.ComboBoxEx(self) cb1:SetAutoDelete(true) -- инициализация. Координаты - относительно родительского окна, ширину элемента можно опустить. cb1:Init(65,60,280) -- вставим несколько строк (массивом). Круглые скобки в данном случае можно не указывать. cb1:AddComBox {"String 1","String 2","String 3","String 4","String 5"} cb1.SetRetFun (self.get_cb1) -- устанавливаем обработчик cb1.SetSelectItem(3) -- устанавливам предопределённый выбор строки списка -- определяем 2-й элемент класса ComboBoxEx cb2 = ui_ComboBoxEx.ComboBoxEx(self) cb2:SetAutoDelete(true) cb2:Init(65,260) -- зададим ширину по умолчанию -- вставим несколько строк (по одной). Здесь тоже скобки можно опустить cb2:AddComBox "Строка 1" cb2:AddComBox ("Строка 2") -- при добавдении по одному можно также использовать InstItem() cb2.InstItem "Строка 3" cb2.SetRetFun (self.get_cb2) -- устанавливаем обработчик -- покажем всё это level.start_stop_menu(self, true) end function test_cb:__finalize() end -- определим функции возврата из ComboBoxEx (своя для каждого ComboBox) test_cb.get_cb1 = function(num) -- просто выводим сообщение news_manager.send_tip(db.actor, "1: ".."Строка: "..tostring(num)) end test_cb.get_cb2 = function(num) -- просто выводим сообщение news_manager.send_tip(db.actor, "2: ".."Строка: "..tostring(num)) end ui_ComboBoxExПример Всё гарантировано работает на чистой ТЧ 1.004. На других версиях и расширениях просто не проверял, т.к. не пользуюсь. 1 Ссылка на комментарий
dsh 3 824 Опубликовано 1 Сентября 2016 Поделиться Опубликовано 1 Сентября 2016 @Serge!, судя по названиям, ссылки перепутаны. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Serge! 127 Опубликовано 1 Сентября 2016 Поделиться Опубликовано 1 Сентября 2016 судя по названиям, ссылки перепутаны.Увы да. Но править не буду, т.к. движок форума так устроен, что придется иправлять все скрытые элементы и коды. Просто лениво. Ссылка на комментарий
Serge! 127 Опубликовано 4 Сентября 2016 Поделиться Опубликовано 4 Сентября 2016 (изменено) Подправил немного код и ссылки уж заодно. ui_ComboBoxExПример Картинка Изменено 4 Сентября 2016 пользователем Serge! 1 1 1 Ссылка на комментарий
dsh 3 824 Опубликовано 25 Сентября 2016 Поделиться Опубликовано 25 Сентября 2016 Народ, вчера наступил на граблю, которая лежит в m_netpk, что тут публиковали. Имейте ввиду. Вот проблемная строка str = str:trim( str:gsub(";.-\n", "\n") ) --/ cleanup comments, symbol ';' is denied in sections names and keys/values! Грабля в том, что комментарии не удалялись. В результате, m_netpk превращает вот такую кастомную дату ;[logic] cfg = scripts\gar_dm_novice.ltx [smart_terrains] gar_dram = {-gar_dm_novice_change_st} esc2_bandit_les = {+gar_dm_novice_change_st} вот в такую [logic] cfg = scripts\gar_dm_novice.ltx [smart_terrains] gar_dram = {-gar_dm_novice_change_st} esc2_bandit_les = {+gar_dm_novice_change_st} Что бы исправить, эту строчку нужно заменить на str = str:gsub(";.-\n", "\n"):trim() --/ cleanup comments, symbol ';' is denied in sections names and keys/values! 2 2 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Kirgudu 1 216 Опубликовано 25 Сентября 2016 Поделиться Опубликовано 25 Сентября 2016 (изменено) @dsh, или так: str = string.trim( str:gsub(";.-\n", "\n") )Спасибо, взял себе и обновил свою выкладку в этой теме (ссылки те же). Изменено 25 Сентября 2016 пользователем Kirgudu Инструмент Ссылка на комментарий
Zander_driver 10 334 Опубликовано 17 Октября 2016 Автор Поделиться Опубликовано 17 Октября 2016 @naxac, @Kirgudu, @dsh, ссылки в шапке дополнил. Было бы неплохо многообразие Артосо-модулей со всевозможными правками и дополнениями от разных авторов привести к некоему единому массиву полезностей... 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. Ссылка на комментарий
dsh 3 824 Опубликовано 18 Октября 2016 Поделиться Опубликовано 18 Октября 2016 Так у меня ничего нет. Это единственное исправление было. У меня только переработанные подсистемы из OGSE: универсальное хранилище, таймеры, менеджер сигналов. Подумывал пару раз изолировать их и выложить, да все руки не доходят. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Kirgudu 1 216 Опубликовано 18 Октября 2016 Поделиться Опубликовано 18 Октября 2016 Было бы неплохо многообразие Артосо-модулей со всевозможными правками и дополнениями от разных авторов привести к некоему единому массиву полезностей... В моей подборке модулей Артоса учтены все исправления, когда-либо сделанные разными участниками, кроме тех, что выложил @naxac в этом посте. Всё никак руки не дойдут до интеграции и проверки. Очень надеюсь, что получится заняться этим в ближайшем будущем. Возможно, если б кто-нибудь независимый подтвердил, что правки @naxac работают так, как ожидается, и они действительно нужны - это ускорило бы объединение. Инструмент Ссылка на комментарий
naxac 2 445 Опубликовано 19 Октября 2016 Поделиться Опубликовано 19 Октября 2016 (изменено) @Kirgudu, модуль m_netpk, который я выкладывал, с теми же правками чтения/записи (кроме матрицы вместо векторов) используется в моде ОП-2.1. Его как раз правили, основываясь на движке, для того, чтобы нетпакет правильно читался. Бетатест идет уже давно, до сих пор никаких глюков с этим модулем обнаружено не было. Кроме того, что уже написал dsh. Вот это исправлен разбор num_items и чтение некоторых параметров update-части пакета объектов, наследованных от cse_alife_inventory_item; исправлено чтение update-части в net_cse_alife_item_weapon_magazined_w_gl точно нужно добавить в подборку. Изменено 19 Октября 2016 пользователем naxac Добавлено Kirgudu, 19 Октября 2016 Понял, спасибо за информацию. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
dsh 3 824 Опубликовано 19 Октября 2016 Поделиться Опубликовано 19 Октября 2016 Бетатест идет уже давно, до сих пор никаких глюков Безотносительно к ОП 2.1, процитированная фраза не говорит ни о чем. Та ошибка, на которую наступил я, существовала очень давно и "никаких глюков" тоже не было. Просто, в качестве примечания. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
naxac 2 445 Опубликовано 19 Октября 2016 Поделиться Опубликовано 19 Октября 2016 (изменено) Та ошибка, на которую наступил я, существовала очень давно и "никаких глюков" тоже не было. Эту ошибку исправили чуть ли не первым делом, когда начали использовать этот модуль. Просто я за основу брал старое, и этот момент пропустил. А про остальное - в новом движке сейчас стоит проверка, которая крашит игру при попытке чтения за границы нет-пакета. До указанных в предыдущем посте правок ошибки чтения были, после них - нет. Изменено 19 Октября 2016 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
dsh 3 824 Опубликовано 19 Октября 2016 Поделиться Опубликовано 19 Октября 2016 (изменено) Мой пост был не о том, когда исправили, а когда нет. А о том, что утверждения вида "никаких глюков" и "бетатест длится долго" никак друг с другом не связаны. Просто второе не означает, автоматически, первое. Изменено 19 Октября 2016 пользователем dsh 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Kirgudu 1 216 Опубликовано 19 Октября 2016 Поделиться Опубликовано 19 Октября 2016 (изменено) Обновил подборку модулей @Artos'а в этом посте (третья по счёту ссылка в текущей шапке). Изменению подвергся модуль m_netpk - интегрированы следующие правки от @naxac: - исправлен разбор num_items и чтение некоторых параметров update-части пакета объектов, наследованных от cse_alife_inventory_item; - исправлено чтение update-части в net_cse_alife_item_weapon_magazined_w_gl; Работу с кубическими шейпами с помощью векторов переделывать на матрицы не стал - пусть в этой части модуль останется таким, каким его задумывал автор. Текущий способ задания шейпов может использоваться уже во многих модах, и если его менять, можно потерять в совместимости. Также не стал брать кое-какие частные исправления, предназначенные для работы с внешними amk-скриптами. Правки других авторов, проскальзывавшие в этой или других темах в разное время, взяты в полной мере. Изменено 19 Октября 2016 пользователем Kirgudu Инструмент Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти