Winsor 177 Опубликовано 24 Апреля 2015 Возник вопрос , аналогичный этому посту - НПС на Радаре у костров (15 штук) заспавнены через all.spawn с жестко указанным visual (аналогично Фанату, у которого нельзя изменить физуал через character_desc_esc.xml). при таком спавне, хотя они и спавнятся из класса, указанного в character_desc_radar.xml - игра игнорирует параметр visual из этого файла, поэтому у нас 15 близнецов. Как то можно обойти данный спавн? не редактируя непосредственно all.spawn? Благодарю! Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 27 Апреля 2015 (изменено) ТЧ 1.006 Пытаюсь разобраться с object_binder. Присоединяю к предмету в инвентаре через script_binding. function bind( obj ) obj:bind_object( winsor_object( obj ) )endfunction winsor_object:net_destroy() self.object:set_callback(callback.use_object, nil) self.object:set_callback(callback.on_item_drop, nil) object_binder.net_destroy(self)endfunction winsor_object:reinit() object_binder.reinit(self) self.object:set_callback(callback.use_object, self.use_callback, self) self.object:set_callback(callback.on_item_drop, self.drop_callback, self)endfunction winsor_object:use_callback(obj,who) get_console():execute("use_callback")endfunction winsor_object:drop_callback(obj) get_console():execute("drop_callback")end Но при спавне в инвентаре и попытке использования в логах ни строчки о вызовах callback-ов (только вызов reinit). Для предметов в инвентари это не работает? Благодарю за подсказки! [winsor_std_item]:identity_immunitiesGroupControlSection = spawn_groupdiscovery_dependency =class = II_ANTIRcform = skeletoncost = 0eat_health = 0eat_satiety = 0eat_power = 0eat_radiation = 0wounds_heal_perc = 0eat_portions_num = 1eat_alcohol = 0.3animation_slot = 4slot = -1hud = wpn_vodka_hudquest_item = truecan_trade = falseinv_grid_width = 1inv_grid_height = 1inv_grid_x = 18inv_grid_y = 38inv_weight = 0.1description = playboy_descscript_binding = winsor_binder.bind Изменено 27 Апреля 2015 пользователем Winsor Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 28 Апреля 2015 function winsor_object:__init(obj) super(obj) end это все есть. просто вырезал из паста. Может ли класс предмета влиять на срабатывание этих каллбеков? class = II_ANTIR - какой то другой? Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 28 Апреля 2015 use_object по идее - у актора эти коллбеки работают, а на предмет в инвентари у актора - почему то нет, т.е. если добавить вывод в консоль на net_spawn/net_destoy моего объекта - то при добавлении, использовании из инвентаря - в консоли вывод есть (типа таки да, мой биндер прибинделся). А вот коллбеки - тишина, предмет просто "съедается", в консоли просто появляется сообщение о том что он удаляется (sv destroy с моим классом)... Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 28 Апреля 2015 (изменено) Т.е. использование биндера на предмет в инвентаре, на который я хочу повесить custom callback- такого функционала нет? только через actor_binder? в моей внутренней логике callback.on_use_item должен был вызываться у прибинженого объекта при нажатии на клавищу "Использовать" в инвентаре .В связи с этим следующие вопросы, на которые не смог найти ответа на форуме-1)можно ли через конфиг создать инвентарный предмет используемый но не съедаемый (какой либо другой class), или только переспавнивать в калбеке?2) цепочка калбеков у актора - use_object->"съедается" итем->drop_item, или "съедается" итем->use_object->drop_item3)почему в биндере актора большинство обработок на использование, например в НС, повешено на drop_item, а не на use_object? в drop_item ведь итем все еще существует, так какая разница? Благодарю!http://www.amk-team.ru/forum/index.php?showtopic=13054В каких-то древних версиях, типа 1.0, это не работало. dc Изменено 28 Апреля 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 28 Апреля 2015 [std_item]:identity_immunities parent_props [item1]:std_item child_props [item2]:std_item child_props [item3]:std_item child_props Можно ли при таком описании узнать что item* наследуются от std_item? section() возвращает item*, parent к инвентарным итемам смысла нет . или это чисто описательная способность конфигов? Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 30 Апреля 2015 (изменено) Наследование по предметам очень упростило бы групповую обработку (при условии что правильно описаны конфиги предметов), инклюды - было бы удобно, скорее всего для некого "виртуального редактора" всей структуры скриптов сталкера (ИМХО). Уважаемые знающие, не могу найти на форуме описание классов для работы с GUI (в том числе и в теме GUI ) и соответственно описание структуры xml для этих классов. Интересуют всякие табы, фреймы, выпадающие списки. Благодарю за любую инфомауцию! Изменено 30 Апреля 2015 пользователем Winsor Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 30 Апреля 2015 (изменено) Очень кратко, к сожалению, и там только список классов, без описания xml конфигов к ним. и хотел пример использования TabControl. И да, к сожалению - цитата из этого поста "В неохваченном осталась тема о создании окон на основе XML описания." Данный вопрос очень интересует, после вдумчивого прочтения существующих xml-ек озарение не наступило, ибо вариантов таких описаний очень много, а хочется почитать какой нибудь единый справочник. Изменено 30 Апреля 2015 пользователем Winsor Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 4 Мая 2015 Уважаемые знающие, вопрос по UI - после изучения соурсов движка и lua_help заметил некоторые расхождения - например SetAccelerator к кнопке, в коде движке в CUIXmlInit вызов есть такого метода (в хидере UIButton.h метод описан ), в lua_help - в CUIButton такого метода нет. в связи с тем что таких функций несколько - кому верить - исходникам движка и использовать из своего скрипта (50% что будет работать ), или lua_help и тогда делать через CUIXmlInit только? Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 7 Мая 2015 (изменено) Уважаемые, пытаюсь нарисовать окошко с границами self.main_form=xml:InitStatic("main_form", self) xml:InitStatic("main_form:top_border",self.main_form) xml:InitStatic("main_form:left_border",self.main_form) xml:InitStatic("main_form:right_border",self.main_form) xml:InitStatic("main_form:bottom_border",self.main_form) <main_form x="312" y="134" width="400" height="500" stretch="1"> <texture x="312" y="134" width="400" height="500">ui\ui_fog_of_war</texture> <top_border x=0 y=0 width=400 height=5 stretch=1> <texture x=0 y=0 width=400 height=5 >ui\ui_frame_t</texture> </top_border> <left_border x=0 y=0 width=5 height=500 stretch=1> <texture x=0 y=0 width=5 height=500>ui\ui_frame_l</texture> </left_border> <right_border x=300 y=0 width=5 height=500 stretch=1 complex_mode="1"> <texture x=300 y=0 width=5 height=500>ui\ui_frame_r</texture> </right_border> <bottom_border x=0 y=495 width=400 height=5 stretch=0> <texture x=0 y=495 width=400 height=5>ui\ui_frame_b</texture> </bottom_border> </main_form> т.е. левый и верхний фреймы нормальные, а нижний и правый "расколбасило" (вернее растянуло, если не ошибаюсь - по горизонтали на непонятную величину), хотя если смотреть в dds на эти ui\ui_frame_r и ui\ui_frame_b - все нормально, stretch не влияет никак, без OriginalRect текстура еще больше корячится... в чем может быть ошибка? Изменено 7 Мая 2015 пользователем Winsor Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 8 Мая 2015 А InitFrame не устраивает - может и устраивает, но я не понял по какому принципу строятся границы. Есть у Вас пример использования InitFrame с куском описания в xml?Благодарю! Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 8 Мая 2015 (изменено) Подскажите, пожалуйста, для какого UI элемента используются текстуры с окончанием _e, _back, _b? Отвечаю сам - для InitFrameLine , которые используется для создания Label (InitLabel). <caption x="100" y="3" width="200" height="25" stretch="1"> <texture>ui_linetext_e</texture> <text r="238" g="153" b="26" font="letterica18" vert_align="c" align="c" complex="1">Каптион интересный</text> </caption> Уважаемые, накопилась куча вопросов о файловой системе сталкера и текстурах, размещенных на ней. Опытным путем было выявлено, что игра индексирует список доступных для использования текстур при своем запуске 1) как получить этот список? т.е. как узнать, какие текстуры доступны для, например, InitTexture во время игры? 2) как заставить игру перечитать этот список не перезапуская саму игру? при большом размере текстуры (тестировалось на 1,2 м/б) первая загрузка такой текстуры происходит 1,5-2 секунды 3) это мне не повезло с компом или так долго движок их кеширует? 4) все следующие обращения к данной структуре, прописанной в xml происходят очень быстро - из скрипта InitTexture результат будет такой же или механика отличается? 5) что произойдет с кешем при загрузке 100 таких структур по очереди, например, в баграунд UIStatic? 6) можно ли этот кеш чистить принудительно? 7) есть ли аналог Cursors.WaitCursor в скриптовых функциях (временное отключение реакции на события и вывод чего либо для сигнализации занятости, например, при загрузке большой структуры)? Благодарю за любую информацию и разъяснения! Изменено 8 Мая 2015 пользователем Winsor Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 9 Мая 2015 сделать это ну очень небыстрым - а какие способы есть сделать это быстрее (кроме пожатия текстуры) средствами движка? Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 10 Мая 2015 Уважаемые, нет ли у кого более развернутой информации о классах объектов игры и ограничений на их использование, чем здесь? Например, там не написано, что если O_INVBOX заспавнить себе в инвентарь - игра вылетает к сожалению, даже в xray source не смог найти описания. также очень непонятен параметр nonscript_usable - есть ли смысл его вообще использовать? и каким образом? и где - в описании предмета, либо в custom_data? благодарю! Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 16 Мая 2015 (изменено) ТЧ 1.0006 + НС Уважаемые, подскажите пожалуйста, каким образом можно наполнить CUIComboBox своими данными? Все что встречал в скриптах и конфигах - это использование, например <options_item entry="renderer" group="mm_opt_video"/> - но как туда попадают типы рендеров - не вижу нигде... Судя по тому что в lua_help в классе CUIComboBox нет функции AddItem - такое чувство что данный класс предназначен для использования только с опциями игры и движок заполняет их как то самостоятельно? в движке вообще нашел // .def("AddItem", (void (CUIComboBox::*)(LPCSTR, bool)) CUIComboBox::AddItem) // .def("AddItem", (void (CUIComboBox::*)(LPCSTR)) CUIComboBox::AddItem) культурный шок... Для чего этот класс.... Благодарю за информацию! Изменено 16 Мая 2015 пользователем Winsor Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 17 Мая 2015 Уважаемые, у ТЧ UI есть возможность управления z-order для элементов? что ни будь типа SentToTop(), BringToFront() ... а то только порядком создания элементов получается... Благодарю! Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 17 Мая 2015 AttachChild \ DetachChild - как вариант да, но надо знать родителя. не всегда получается, а получить вызовом какой либо функции парента зная контрол - наверное, как всегда , забыли доэкспортировать... Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 19 Мая 2015 (изменено) ТЧ 1.0006 Подскажите пожалуйста, как определить что итем висит на поясе, зная его секцию? он не в слотах (db.actor:item_in_slot(0-12)) - тогда где он? Благодарю! Если item при просмотре инвентаря найден после последнего, помещенного в инвентарь, но при этом не в слоте, значит - он на поясе. Cм. обсуждающийся выше inventory.script dc Изменено 19 Мая 2015 пользователем Dennis_Chikin Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 19 Мая 2015 dc - спасибо. inventory.script - странная штука... 1)не могу найти на форуме описание предмета netpacket_pda - мозгом понимаю что нужен для хранения наверное данных пда, но объяснить не могу, данный итем ни в слотах, ни на поясе, просто в инвентори без визуала. кроме как по имени данный специализированный итем пропустить нельзя никак? 2)netpacket_pda - кто или что пишет/читает данные для данного класса? Благодарю за разъяснения. Поделиться этим сообщением Ссылка на сообщение
Winsor 177 Опубликовано 22 Мая 2015 Уважаемые форумчане, те кто прошел этот тернистый путь -поделитесь примером использования CUIScrollView и добавлением в него своих CUIStatic... на данный момент собственные потуги --inventory_scroll - CUIScrollView 400x300 например local section="vodka" local x = system_ini():r_u32(section, "inv_grid_x")*50 local y = system_ini():r_u32(section, "inv_grid_y")*50 local w = system_ini():r_u32(section, "inv_grid_width")*50 local h = system_ini():r_u32(section, "inv_grid_height")*50 local static=CUIStatic() static:SetWindowName(section) static:SetAutoDelete(true) static:InitTexture("ui\\ui_icon_equipment") static:SetOriginalRect(x, y, w, h) static:SetStretchTexture(true) static:Init(x,y,w/2,h/2) --нужно ли это делать для контрола внутри скролла? inventory_scroll:AddWindow(static,true) inventory_scroll:ScrollToBegin() после отображения бутылки водки закончились вылетом с 0023:05809A68 xrGame.dll 0023:05728D22 xrGame.dll0023:05728D22 xrGame.dll0023:057285D8 xrGame.dll0023:057285D8 xrGame.dll0023:05739C5D xrGame.dll0023:00637041 xrLUA.dll, luabind::detail::get_class_name()0023:0063E918 xrLUA.dll, luabind::detail::class_rep::function_dispatcher()0023:0061A772 xrLUA.dll, lua_getinfo()0023:00612115 xrLUA.dll, lua_call()0023:0061AB08 xrLUA.dll, lua_yield()0023:00643AF1 xrLUA.dll, luabind::detail::pcall() Благодарю за помощь! может водку рисовать только с колбасой и батоном вместе надо? отдельно нельзя!!!! Поделиться этим сообщением Ссылка на сообщение