ted.80 272 Опубликовано 22 Апреля 2020 Поделиться Опубликовано 22 Апреля 2020 44 минуты назад, Graff46 сказал: можно ли тест перенести или урезать? А перенос стоки заюзать не? \\n Личный АРХИВ по S.T.A.L.K.E.R Ссылка на комментарий
Graff46 598 Опубликовано 22 Апреля 2020 Поделиться Опубликовано 22 Апреля 2020 @ted.80, Нет, я смог сделать перенос, внутри CUIListItemEx есть статик, ему надо сделать SetTextComplexMode(true), но тогда текст становится многострочным, и не реагируют на клик нижние строки Ссылка на комментарий
ted.80 272 Опубликовано 22 Апреля 2020 Поделиться Опубликовано 22 Апреля 2020 1 минуту назад, Graff46 сказал: но тогда текст становится многострочным, и не реагируют на клик нижние строки текст и не будет реагировать, реагирует статик - попробуй его увеличить Личный АРХИВ по S.T.A.L.K.E.R Ссылка на комментарий
Graff46 598 Опубликовано 22 Апреля 2020 Поделиться Опубликовано 22 Апреля 2020 @ted.80, Увеличил, теперь текстурка статика (горизонтальная полоска) не растягивается, а становится по середине статика Ссылка на комментарий
Zander_driver 10 334 Опубликовано 22 Апреля 2020 Поделиться Опубликовано 22 Апреля 2020 Только что, Graff46 сказал: ему надо сделать SetTextComplexMode(true), но тогда текст становится многострочным, и не реагируют на клик нижние строки Еще ему надо сделать AdjustHeightToText(); Чтобы принял размер(высоту) в соответствии с размерами текста. А не тупо всегда в одну/всегде в две строки независимо от содержимого. Только что, Graff46 сказал: текстурка статика (горизонтальная полоска) не растягивается SetStretchTexture(true); Но stretch и из XML работать должен. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Graff46 598 Опубликовано 22 Апреля 2020 Поделиться Опубликовано 22 Апреля 2020 @Zander_driver, Скрытый текст class "List1_ListItem"(CUIListItemEx) function List1_ListItem:__init() super() self.text_item = CUIStatic() self.text_item:SetStretchTexture(true) self.text_item:SetTextComplexMode(true) self.text_item:AdjustHeightToText() self.text_item:SetWidth(762) self:AttachChild(self.text_item) self.text_item:SetFont(GetFontLetterica18Russian()) self.text_item:SetTextColor(255,216,186,140) end ------------------- >>> END <<< ------------------- function dialogs2:AddItemTo_List1(item_name) --/Добавление элемента в список List1 local _itm = List1_ListItem() _itm:SetStretchTexture(true) _itm:SetHeight(_itm.text_item:GetHeight()) _itm:SetColor(GetARGB(1, 159, 255, 167)) _itm.text_item:SetText(item_name) _itm.text_item:AdjustHeightToText() self.List1:SetItemHeight(_itm.text_item:GetHeight()) self.List1:AddItem(_itm) end Скрытый текст Ссылка на комментарий
Zander_driver 10 334 Опубликовано 22 Апреля 2020 Поделиться Опубликовано 22 Апреля 2020 (изменено) @Graff46, _itm:SetHeight(_itm.text_item:GetHeight()) // Сначала ты поменял высоту ListItemEx, на основании высоты ПУСТОГО статика. _itm:SetColor(GetARGB(1, 159, 255, 167)) _itm.text_item:SetText(item_name) // Затем засунул текст в статик _itm.text_item:AdjustHeightToText() // И поменял его размер по объему содержимого. // Внимание вопрос: Какой же размер будет у ListItemEx? Ответ - будет размер пустой строки. Что мы на скрине и, наблюдаем. Только что, Graff46 сказал: полоска вообще может растягиваться в высоту? А почему бы нет-то. Цепочка наследования задом наперед: CUIListItemEx < CUIListItem < CUIButton < CUIStatic Во всяком случае, в OGSR движке так, ванильного нет под рукой, но вряд-ли там иначе. А Статик как известно, может. Ищи у себя причины, что делал с этими классами... Судя по показанному коду, должно было быть уже нормально. Или я чего-то не вижу. Изменено 22 Апреля 2020 пользователем Zander_driver Добавил ответ на следующий пост. 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. Ссылка на комментарий
Graff46 598 Опубликовано 22 Апреля 2020 Поделиться Опубликовано 22 Апреля 2020 @Zander_driver, Переписал, толку пора нет Скрытый текст class "List1_ListItem"(CUIListItemEx) function List1_ListItem:__init() super() self.text_item = CUIStatic() self.text_item:SetAutoDelete (true) self:AttachChild(self.text_item) self.text_item:SetWndRect (0,0,230,22) self.text_item:SetStretchTexture(true) self.text_item:SetTextComplexMode(true) self.text_item:AdjustHeightToText() self.text_item:SetFont(GetFontLetterica18Russian()) self.text_item:SetTextColor(255,216,186,140) end ------------------- >>> END <<< ------------------- function dialogs2:AddItemTo_List1(item_name) --/Добавление элемента в список List1 local _itm = List1_ListItem() _itm.text_item:SetWidth(self.List1:GetWidth()) _itm:SetStretchTexture(true) _itm.text_item:SetText(item_name) _itm.text_item:AdjustHeightToText() _itm:SetHeight(_itm.text_item:GetHeight()) self.List1:SetItemHeight(_itm:GetHeight()) self.List1:AddItem(_itm) end А эта полоска вообще может растягиваться в высоту? Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 22 Апреля 2020 Поделиться Опубликовано 22 Апреля 2020 Здрасьте. [ТЧ 1.0006] Задача: добавить в инвентарь кнопку. Проблема на стадии вывода нового окна. Ориентируюсь на следующие инструкции: On 11/14/2010 at 11:31 PM, Kolmogor said: Алгоритм простой: - ждешь пока откроется инвентарь, ловишь ui_inventory в info_callback - получаешь его окно через level.main_input_receiver() - аттачишь свое окно AttachChild и On 2/3/2019 at 1:54 PM, Graff46 said: запускаем диалог level.start_stop_menu(dlg, true/false) или так dlg:GetHolder():start_stop_menu(dlg, true/false) разницы никакой, это фактически одна и та же функция Добавляю окно (+ статик с текстурой для заметности), приклеиваю к инвентарю: никакой реакции. Вывожу то же окно отдельно через level.start_stop_menu() – условная кнопка отображается при открытом инвентаре, но игра вылетает через пару секунд. Вывожу окно через GetHolder() – вылет уже при обращении к инвентарю, ошибка "attempt to index a nil value". Spoiler [bind_stalker.script] function actor_binder:info_callback(npc, info_id) if info_id == "ui_inventory" then local w = CUIScriptWnd() w:Init(0, 0, 70, 25) local b = CUIStatic() b:Init(0, 0, 70, 25) b:InitTexture("ui_button_ordinary_d") b:SetStretchTexture(true) w:AttachChild(b) -- local inv = level.main_input_receiver() -- inv:AttachChild(w) level.start_stop_menu(w, true) -- w:GetHolder():start_stop_menu(w, true) end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Graff46 598 Опубликовано 23 Апреля 2020 Поделиться Опубликовано 23 Апреля 2020 @Norman Eisenherz, Переменная стирается сборщиком мусора 2 Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 23 Апреля 2020 Поделиться Опубликовано 23 Апреля 2020 1. Значит, не только CUIStatic() от этого страдает… 2. Осталась проблема с инвентарем: как приклеить новое окно именно к нему? Строки local inv = level.main_input_receiver() inv:AttachChild(w) никакого эффекта не дают. Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Zander_driver 10 334 Опубликовано 23 Апреля 2020 Поделиться Опубликовано 23 Апреля 2020 Только что, Norman Eisenherz сказал: не только CUIStatic() от этого страдает… Любой GUI-класс от этого "страдает". Правильно надо обращаться с ними. Аттач, детач, и обращение в nil, в правильном порядке делать, ничего не пропуская. Тогда ничего не вылетает. В туториалах malandrinus-a это было подробно описано еще черт-знает-когда. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 23 Апреля 2020 Поделиться Опубликовано 23 Апреля 2020 @Zander_driver Видел расширенное описание оконных классов из lua_help и обсуждение с Garry_Geller по поводу удаления дочерних окон. Это то, что понимается под "подробно" или еще какая-то информация есть? Может, где-то есть уроки уровня "окно с одной кнопкой", а не просто ссылка "смотри numpad"? Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Zander_driver 10 334 Опубликовано 23 Апреля 2020 Поделиться Опубликовано 23 Апреля 2020 Только что, Norman Eisenherz сказал: обсуждение с Garry_Geller Я понятия не имею, кто это, и о каком обсуждении идет речь. Смотрим шапку темы "справочник по функциям и классам". Находим там это и это. Что еще может понадобиться и для чего? Я не знаю. Мне в свое время, этих двух постов, хватило для того чтобы свой скриптовый инвентарь изваять с нуля. Ну и кстати там далее ровно твоя же задача обсуждается. А посты за 2010 год. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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. Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 23 Апреля 2020 Поделиться Опубликовано 23 Апреля 2020 1. При инициализации оконного класса к __init() добавляется super(). Что дает такая конструкция? 2. В обсуждении Malandrinus / Garry_Geller описан вылет при удалении кнопки, который обходится присоединением кнопки к промежуточному окну. Это особенность версии ТЧ 1.0004? Под патчем 1.0006 кнопка успешно обнуляется сразу после отсоединения от инвентаря и не вызывает в дальнейшем вылетов при перезагрузке. Spoiler function on_hide() inventory_wnd:DetachChild(attached_btn) rec_wnd:AttachChild(attached_btn) -- для чего нужно это действие? attached_btn = nil rec_wnd = nil end Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
Zander_driver 10 334 Опубликовано 23 Апреля 2020 Поделиться Опубликовано 23 Апреля 2020 Только что, Norman Eisenherz сказал: Что дает такая конструкция? Вызов конструктора класса-родителя. Только что, Norman Eisenherz сказал: который обходится присоединением кнопки к промежуточному окну. Не припоминаю таких манипуляций в своих интерфейсах. А начинался мой мод вообще-то на 1.0004. Так что это видимо, костыль для более ранних версий или чего-то более иного. В 1.0004 и всем что позднее, не было нужды в таких действиях. function on_hide() inventory_wnd:DetachChild(attached_btn) attached_btn = nil -- убрал ненужные действия - по моему, должно быть так. -- И на 1,0004 / 1,0006 это совершенно точно, работало. end Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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 Опубликовано 23 Апреля 2020 Поделиться Опубликовано 23 Апреля 2020 @Norman Eisenherz, вот тут https://github.com/dsh2dsh/op2ogse/blob/85185bb9cefb3eb78fbb27537c21b2cfc75993c4/gamedata/scripts/dsh/dsh_skat15_control.script#L23 присоединяется кнопка к инвентарю в net_spawn и отсоединяется в net_destroy. Окно инвентаря сущестует постоянно, даже когда инвентарь закрыт. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
naxac 2 447 Опубликовано 24 Апреля 2020 Поделиться Опубликовано 24 Апреля 2020 13 часов назад, Norman Eisenherz сказал: Строки local inv = level.main_input_receiver() inv:AttachChild(w) никакого эффекта не дают. Сделай ещё w:Show(true) Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Norman Eisenherz 316 Опубликовано 24 Апреля 2020 Поделиться Опубликовано 24 Апреля 2020 @naxac Приклеил кнопку к инвентарю напрямую, а не через отдельное окно – отображается сразу, без Show(true). @dsh Каким образом ловится ссылка на скрытое окно инвентаря и можно ли такое повторить в ТЧ? 1 Мини-моды: ТЧ ЧН ЗП Шпаргалка Ссылка на комментарий
mole venomous 3 429 Опубликовано 26 Апреля 2020 Поделиться Опубликовано 26 Апреля 2020 Подскажите, существует ли прямая скриптовая проверка, в зуме ли оружие (ТЧ 1.0006)? Или только через net_packet? Здесь могла быть ваша реклама. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти