Перейти к контенту

[SoC] Ковыряемся в файлах


Halford

Рекомендуемые сообщения

Возник вопрос , аналогичный этому посту - НПС на Радаре у костров (15 штук) заспавнены через all.spawn с жестко указанным visual (аналогично Фанату, у которого нельзя изменить физуал через character_desc_esc.xml). при таком спавне, хотя они и спавнятся из класса, указанного в character_desc_radar.xml - игра игнорирует параметр visual из этого файла, поэтому у нас 15 близнецов. Как то можно обойти данный спавн? не редактируя непосредственно all.spawn?

 

Благодарю!

Поделиться этим сообщением


Ссылка на сообщение

ТЧ 1.006

Пытаюсь разобраться с object_binder. Присоединяю к предмету в инвентаре через script_binding.

function bind( obj )
   obj:bind_object( winsor_object( obj ) )
end

function 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)
end

function 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)
end

function winsor_object:use_callback(obj,who)
   get_console():execute("use_callback")
end

function winsor_object:drop_callback(obj)
   get_console():execute("drop_callback")
end

 

 

Но при спавне в инвентаре и попытке использования в логах ни строчки о вызовах callback-ов (только вызов reinit). Для предметов в инвентари это не работает?

Благодарю за подсказки!

 

[winsor_std_item]:identity_immunities
GroupControlSection = spawn_group
discovery_dependency =
class = II_ANTIR
cform = skeleton
cost = 0
eat_health = 0
eat_satiety = 0
eat_power = 0
eat_radiation = 0
wounds_heal_perc = 0
eat_portions_num = 1
eat_alcohol = 0.3
animation_slot = 4
slot = -1
hud = wpn_vodka_hud
quest_item = true
can_trade = false
inv_grid_width = 1
inv_grid_height = 1
inv_grid_x = 18
inv_grid_y = 38
inv_weight = 0.1
description = playboy_desc
script_binding = winsor_binder.bind

 

Изменено пользователем Winsor

Поделиться этим сообщением


Ссылка на сообщение

 

 

function winsor_object:__init(obj) super(obj) end

это все есть. просто вырезал из паста. Может ли класс предмета влиять на срабатывание этих каллбеков? class = II_ANTIR - какой то другой? 

Поделиться этим сообщением


Ссылка на сообщение

 

 

use_object по идее
- у актора эти коллбеки работают, а на предмет в инвентари у актора - почему то нет, т.е. если добавить вывод в консоль на net_spawn/net_destoy моего объекта - то при добавлении, использовании из инвентаря - в консоли вывод есть (типа таки да, мой биндер прибинделся). А вот коллбеки - тишина, предмет просто "съедается", в консоли просто появляется сообщение о том что он удаляется (sv destroy с моим классом)...

Поделиться этим сообщением


Ссылка на сообщение

Т.е. использование биндера на предмет в инвентаре, на который я хочу повесить custom callback- такого функционала нет? только через actor_binder? в моей внутренней логике callback.on_use_item должен был вызываться у прибинженого объекта при нажатии на клавищу "Использовать" в инвентаре :) .
В связи с этим следующие вопросы, на которые не смог найти ответа на форуме-
1)можно ли через конфиг создать инвентарный предмет используемый но не съедаемый (какой либо другой class), или только переспавнивать в калбеке?
2) цепочка калбеков у актора - use_object->"съедается" итем->drop_item, или "съедается" итем->use_object->drop_item
3)почему в биндере актора большинство обработок на использование, например в НС, повешено на drop_item, а не на use_object? в drop_item ведь итем все еще существует, так какая разница?
 
Благодарю!

http://www.amk-team.ru/forum/index.php?showtopic=13054
В каких-то древних версиях, типа 1.0, это не работало. dc

Изменено пользователем Dennis_Chikin

Поделиться этим сообщением


Ссылка на сообщение
[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 к инвентарным итемам смысла нет . или это чисто описательная способность конфигов?

Поделиться этим сообщением


Ссылка на сообщение

Наследование по предметам очень упростило бы групповую обработку (при условии что правильно описаны конфиги предметов), инклюды - было бы удобно, скорее всего для некого "виртуального редактора" всей структуры скриптов сталкера (ИМХО).

 

Уважаемые знающие, не могу найти на форуме описание классов для работы с GUI (в том числе и в теме GUI :( ) и соответственно описание структуры xml для этих классов. Интересуют всякие табы, фреймы, выпадающие списки. Благодарю за любую инфомауцию!

Изменено пользователем Winsor

Поделиться этим сообщением


Ссылка на сообщение

Очень кратко, к сожалению, и там только список классов, без описания xml конфигов к ним. и хотел пример использования TabControl.

 

И да, к сожалению - цитата из этого поста "В неохваченном осталась тема о создании окон на основе XML описания." Данный вопрос очень интересует, после вдумчивого прочтения существующих xml-ек озарение не наступило, ибо вариантов таких описаний очень много, а хочется почитать какой нибудь единый справочник.

Изменено пользователем Winsor

Поделиться этим сообщением


Ссылка на сообщение

Уважаемые знающие, вопрос по UI - после изучения соурсов движка и lua_help заметил некоторые расхождения - например SetAccelerator к кнопке, в коде движке в CUIXmlInit вызов есть такого метода (в хидере UIButton.h метод описан ), в lua_help - в CUIButton такого метода нет. в связи с тем что таких функций несколько - кому верить  - исходникам движка и использовать из своего скрипта (50% что будет работать :) ), или lua_help и тогда делать через CUIXmlInit только?

Поделиться этим сообщением


Ссылка на сообщение

Уважаемые, пытаюсь нарисовать окошко с границами

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>

 

 

post-35264-0-22449000-1431030657_thumb.png

 

т.е. левый и верхний фреймы нормальные, а нижний и правый "расколбасило" (вернее растянуло, если не ошибаюсь - по горизонтали на непонятную величину), хотя если смотреть в dds на эти ui\ui_frame_r и ui\ui_frame_b - все нормально, stretch не влияет никак, без OriginalRect текстура еще больше корячится... в чем может быть ошибка?

Изменено пользователем Winsor

Поделиться этим сообщением


Ссылка на сообщение

 

 

А InitFrame не устраивает
- может и устраивает, но я не понял по какому принципу строятся границы. Есть у Вас пример использования InitFrame с куском описания в xml?

Благодарю!

Поделиться этим сообщением


Ссылка на сообщение

Подскажите, пожалуйста, для какого 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 в скриптовых функциях (временное отключение реакции на события и вывод чего либо для сигнализации занятости, например, при загрузке большой структуры)? 

 

Благодарю за любую информацию и разъяснения!

Изменено пользователем Winsor

Поделиться этим сообщением


Ссылка на сообщение

 

 

сделать это ну очень небыстрым
- а какие способы есть сделать это быстрее (кроме пожатия текстуры) средствами движка? 

Поделиться этим сообщением


Ссылка на сообщение

Уважаемые, нет ли у кого более развернутой информации о классах объектов игры и ограничений на их использование, чем здесь

Например, там не написано, что если O_INVBOX заспавнить себе в инвентарь - игра вылетает :)

к сожалению, даже в xray source не смог найти описания.

также очень непонятен параметр nonscript_usable  - есть ли смысл его вообще использовать? и каким образом? и где - в описании предмета, либо в custom_data?

благодарю!

Поделиться этим сообщением


Ссылка на сообщение

ТЧ 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)
культурный шок... Для чего этот класс....

 

Благодарю за информацию!

Изменено пользователем Winsor

Поделиться этим сообщением


Ссылка на сообщение

Уважаемые, у ТЧ UI есть возможность управления z-order для элементов? что ни будь типа SentToTop(), BringToFront() ... а то только порядком создания элементов получается...

Благодарю!

Поделиться этим сообщением


Ссылка на сообщение

 

 

AttachChild \ DetachChild
- как вариант да, но надо знать родителя. не всегда получается, а получить вызовом какой либо функции парента зная контрол - наверное, как всегда , забыли доэкспортировать...

Поделиться этим сообщением


Ссылка на сообщение

ТЧ 1.0006

Подскажите пожалуйста, как определить что итем висит на поясе, зная его секцию? он не в слотах (db.actor:item_in_slot(0-12)) - тогда где он?

Благодарю!

 

Если item при просмотре инвентаря найден после последнего, помещенного в инвентарь, но при этом не в слоте, значит - он на поясе. Cм. обсуждающийся выше inventory.script

dc

Изменено пользователем Dennis_Chikin

Поделиться этим сообщением


Ссылка на сообщение

dc - спасибо. inventory.script - странная штука...

1)не могу найти на форуме описание предмета netpacket_pda - мозгом понимаю что нужен для хранения наверное данных пда, но объяснить не могу, данный итем ни в слотах, ни на поясе, просто в инвентори без визуала. кроме как по имени данный специализированный итем пропустить нельзя никак? 

2)netpacket_pda - кто или что пишет/читает данные для данного класса?

 

Благодарю за разъяснения.

Поделиться этим сообщением


Ссылка на сообщение

Уважаемые форумчане, те кто прошел этот тернистый путь -поделитесь примером использования 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.dll
0023:05728D22 xrGame.dll
0023:057285D8 xrGame.dll
0023:057285D8 xrGame.dll
0023:05739C5D xrGame.dll
0023: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()

Благодарю за помощь!
 
может водку рисовать только с колбасой и батоном вместе надо? отдельно нельзя!!!!

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...