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

Справочник по функциям и классам


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

7.9, с инвентарностью - никак. Все инвентарные объекты имеют и мировую модель, вот вся эта физика и относится к ней. Кстати, upd:torque и upd:force вряд ли работают (по крайней мере в ЗП). В оригинальном спавне все 24 байта, отведенные под эти переменные заполнены случайным мусором. То ли глюк xrAI, то ли он их специально так корежит.
Ссылка на комментарий

Тема не совсем об этом, но в другой теме это просто потеряется.

Может кому пригодится - http://dl.dropbox.com/u/23885395/sm_wpns.script

 

Скрипт для отлова выстрела из оружия. Работает тока с перехватчиком нажатия клавиш, который может отследить, что нажата\зажата кнопка стрельбы (а какая именно кнопка отвечает за стрельбу, это уже другая задача, при желании тоже решаемая, по умолчанию это левая клавиша мыши) В частности я пользовался этим - http://www.darkstalker.ru/forum/viewtopic.php?id=7

Есть ещё keyloger от kstn (у меня он перестал давно работать) и вроде как правки движка существуют.

 

В sm_wpns.script находится только та часть, которая отвечает за контроль патронов в оружии и следит, чтобы колбек на стрельбу не сработал, если например открыт инвентарь (защита от разрядки оружия, т.к жмётся левая кнопка мыши, и кол-во патронов тоже меняется)

 

Для работы необходимо поставить функцию sm_wpns.update() на, собстно, апдейт.

А в скрипте, где у вас отлавливается момент зажатия кнопки стрельбы - sm_wpns.left_btn_clicked = true

 

Точность практически стопроцентная, есть защита на случаи, если апдейт идёт медленнее, чем игрок стреляет. По крайнем мере у меня с лагами и бешеным RPM стрельбы ни одного патрона не потерялось.

 

Работает с любым стрелковым оружием, будь то автомат или однозарядное РПГ, лишь бы питалось от патронов. Не работает с гранатами, биноклями, ножами (хотя его не проверил) да и вообще со всем, где счётчик патронов не меняется, хотя при желании, можно доработать.

 

Сам скрипт прост, но зачем занаво изобретать велосипед. :)

 

 

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Для нажатий клавиш есть колбеки для ТЧ и ЧН в модифицированных dll.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Эх, забыл совсем... в ЗП работать не будет, т.к там вырезали функцию level.main_input_receiver(), а ею я проверяю, что не открыто никакого UI

Так что её придётся как то заменить.

В принципе она нужна, чтобы сделать защиту от срабатывания колбека на выстрел в момент разрядки оружия в инвенторе. Я уже делал её без использования level.main_input_receiver() (скрипт проверял, что в инвенторе новый предмет появлялся, не важно какой секции, и на 1 апдейт блочил срабатывание колбека на выстрел), там был тока глюк со сменой оружия в инвенторе, если кликнуть двойным шелчком мыши на оружие, т.к менялось оружие и патроны в нём + была нажата левая кнопка мыши, скрипт считал, что это был выстрел. Это можно предотвратить, если сравнивать ещё id текущего и предыдущего оружия, но я этим заниматься уже не буду. Так что в принципе после переделки, на ЗП работать будет тоже, просто чутка более громоздко.

 

С ТЧ-ЧН работать должно. Сам тестировал на ЧН.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

*Shoker*

ИМХО, скрипт 'отлова' ... сыроват.

Уже говорил, что при смене режима стрельбы на подствольник - будет врать.

При смене типа патронов (<Y>) - так же будет врать, если кол-во нового типа будет меньше.

При использовании в слотах иных чем оружейные типы предметов (тех же артефактов/капсул при активации) - будут баги.

... и т.п.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos

Дельные замечания... к сожалению их исправление потребовало больше усилий, чем я думал, также пришлось использовать нет-пакеты.

 

http://dl.dropbox.com/u/23885395/sm_wpns.rar - в архиве две версии, для ТЧ-ЧН и для ТЧ-ЗП (более громоздкая)

Также был использован скрипт для разбора нет-пакета из Simbion Mod-а от Artos

Всё это добро тестировалось в ЧН, и я не могу дать гарантии, что скрипт sm_net_utils.script не устарел или будет корректно работать в ТЧ\ЗП

Напоминаю, что скрипт работает лишь в связке с программой для отлова нажатия клавиш\кнопок мыши в игре.

 

Новое в версии: Теперь в колбек стрельбы, помимо самого оружия, передаётся:

Вторым аргументом - секция используемого патрона (есть тонкости с дробовиками, также определяет тип гранат в подстволе)

Третим аргументом - true, если выстрел был из подствольника

Четвёртым - таблица с разобранными параметрами оружия из его нет-пакета

 

Исправлен баг со сменой патрона, и максимально минимизирована вероятность ошибки при стрельбе из подствола (см. ниже)

 

1) Баг, который не смог побороть, если в подствольном гранатомёте останется 1 граната, а в обойме 0 патронов

(или обратная ситуация, когда в магазине 1 патрон, а в подстволе 0), то если зажать кнопку стрельбы, и жать на кнопку V (вкл\выкл гранатомёт)

то каждое второе нажатие на V будет засчитываться как выстрел. Думаю что баг связан с особенностью определения того, что включён режим гранатомёта. К счастью, вероятность повторить баг случайно довольно низкая, т.к для него нужно слишком много условий.

2) В дробовики можно зарядить одновременно разные типы патронов, но скрипт определяет только последний заряженный тип патрона,

так что если например в Винчестр зарядить 2 жекана, 2 дротика и 2 дроби, то все 6 выстрелов зачтутся как дробь.

3) Существует маленькая, но всё же вероятность не срабатывания колбека на выстрел. От чего зависет - не выяснил.

Случается крайне редко с автоматами. А вот с ружьём один раз вышло около 4 пропусков.

Подозреваю это связано с плохой работой используемого мной кейлогера, и некоторые нажатия на кнопку выстрела

просто не срабатывают\опаздывают или не успевают обработаться скриптом.

 

 

 

Во время стрельбы, каждый апдейт разбирается нет-пакет оружия. Я багов и тормозов не заметил, но не факт что какая то бяка не вылезет во время длительной игры. Также всё это тестировалось под ЧН, корректная работа скрипта sm_net_utils в ТЧ/ЗП не гарантируется, и возможно его придётся заменить на другой аналог.

 

 

 

 

 

 

В любом случае, мне стопроцентная точность не нужна, поэтому дальше работать над скриптом я не буду, но если у кого то появятся идеи, как излечить данные баги\улучшить скрипт, то я попробую их реализовать.

 

PS: Artos, хотел спросить, при разборе update-пакета оружия я нашёл в твоём скрипте (m_net_utils.script, не уверен, что последней версии) флаг updgrenade_mode, но он мне возвращал значение nil, так что пришлось проверку на подствольник делать через weapon_state, это не совсем корректно, но выстрел из гранаты определяет точно. Ты не знаешь, для чего тогда этот флаг? И почему он не работает.

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

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

*Shoker*, зря ты вместо топиков по ковыряниям в скриптах стал "увековечивать" в топике-справочнике ...

Во-первых, там, где требуется скорость выполнения вычислений порой использование стандартных библиотек и избыточно и приводит к протере скорости. По сути тебе всего то требуется считывать последние параметры из нет-пакета оружия, что можно было гораздо проще организовать.

Модуль нет-пакетов, использованный тобою, полностью рабочий для ТЧ/ЧН/ЗП.

Параметр 'updgrenade_mode', о котором ты срашиваешь, никуда не делся с 2008 года. Он относится к оружию, которое имеет подствольник или возможность его установки. Как раз этот параметр мог бы помочь еще более оптимизировать скорость, т.к. и оружие не класса 'cse_alife_item_weapon_magazined_w_gl' или с параметром не равным 1 (подствольник штатно не установлен) и т.п. - можно не проверять на подствольные заряды.

Чтобы получать параметры типа 'upd' (UPDATE_Read|UPDATE_Write) - требуется вызывать с флагом 'true':

local p = sm_net_utils.Get_Data_Weapon(sobj,true) --/ полный пакет

В общем, подобные функции, на которую ты замахнулся, не могут быть простыми, т.к. имеют множество и входных условий и вариаций, и пишутся исходя из потребностей и возможностей конкретного мода. ИМХО.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Кстати, об update-пакете. Считать данные оттуда - без вопросов, а вот получалось ли у кого-нибудь данные туда результативно записать?

Допустим, спавн оружия. В state-пакет вписываю, что надо, и спавнится с нужным визуалом, типом-количеством патронов и т.д. - все прекрасно работает. Пытаюсь одновременно в update-пакет прописать тот же updgrenade_mode - толку ноль, все равно спавнится в обычном режиме, с выкл подстволом. Режим стрельбы тоже только по умолчанию, что бы не вписывал. Причем сразу после записи (в тот же момент времени) пытался update-пакет считать снова - вроде все и прекрасно записалось, да только толку с того ноль - на состоянии оружия не отражается.

Может, с update-пакетом надо как-то по-другому работать, чем со state-пакетом?

 

P.S. В корректности разбора update-пакета полностью уверен, учитывал и класс оружия, и порядок следования данных, результаты чтения тоже вполне ожидаемые.

 

Artos

Попробую с НПС. Хотя, у них же еще и state-здоровье есть, непонятно, которое из них срабатывает...

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

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

Kirag, насчет оружия и update-пакетов для него - только что в топике по скриптованию есть информация для размышлений и сведений.

А вот на вопрос: " а вот получалось ли у кого-нибудь данные туда результативно записать?" - могу ответить утвердительно.

Тот же параметр здоровья (health + upd:health) для неписей (хоть в он-лайне, хоть в офлайне) очень помогает и убивать и ранить и оживлять.

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий
CUIWindow - базовый класс для всех остальных оконных классов

Вопрос такой возник по базовым методам оконных классов:

local hud = get_hud() 
local cs = hud:GetCustomStatic("hud_show_time") 
if cs == nil then 
    hud:AddCustomStatic("hud_time_static", true) 
    hud:AddCustomStatic("hud_show_time", true) 
    cs = hud:GetCustomStatic("hud_show_time") 
end

local time_h = level.get_time_hours() 
local time_m = level.get_time_minutes() 
local msg = string.format("%02d:%02d", time_h, time_m) 

if cs ~= nil then
    cs:wnd():SetText(msg) -- это работает
    cs:wnd():SetTextColor(100,250,10,10) -- это работает
    cs:wnd():SetWndPos(100, 200) -- это работает
    cs:wnd():Show(false) -- а вот это не работает !!!
end

есть какое-то объяснение такой не любви движка к этому методу класса ?

И еще, вышеуказанным способом

local hud = get_hud() 
local cs = hud:GetCustomStatic("static_weapon") 
if cs == nil then
......................

получить доступ к любому базовому статику на худе не получается, cs всегда == nil. У меня по крайней мере. В чем проблема ?

 

И еще, будет или нет дополнение описания этого базового класса ? К примеру методы

SetAutoDelete(bool);

bool IsAutoDelete();

для чего они ?

 

Изменено пользователем AndreySol
Ссылка на комментарий

AndreySol,

local cs = hud:GetCustomStatic("hud_show_time") 
...
cs:wnd():Show(false) -- а вот это не работает !!!

есть какое-то объяснение такой не любви движка к этому методу класса ?

кастомстатики, создаваемые через ui_custom_msgs.xml, - достаточно специфические. Если нужны с ними изыски, то лучше всего непосредственно в ui_custom_msgs.xml ничего не создавать, только пустое окно без текстуры и вообще всего. А само наполнение сделать отдельно и поместить на статик с помощью AttachChild. С этим окном уже все операции будут работать без проблем.

 

И еще, вышеуказанным способом

...

получить доступ к любому базовому статику на худе не получается, cs всегда == nil.

Я ничего не понял. Что такое базовый статик?

 

SetAutoDelete(bool);

bool IsAutoDelete();

для чего они ?

ставят/снимают флажок автоудаления окна при его отсоединении от родительского или удалении родительского.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

в xml-файлах описания окна ивентаря есть такой статик

<dragdrop_belt x="645" y="136" width="410" height="60" cell_width = "60" cell_height="60" rows_num="1" cols_num="5"/>

какой из оконных классов используется для этого статика ?

Ссылка на комментарий

AndreySol,

в xml-файлах описания окна ивентаря есть такой статик

<dragdrop_belt x="645" y="136" width="410" height="60" cell_width = "60" cell_height="60" rows_num="1" cols_num="5"/>

какой из оконных классов используется для этого статика ?

Первое, это не статик. Статик - это вполне конкретный класс CUIStatic, один из многих оконных классов.

Второе, класс для этого элемента не экспортирован и никак в скриптах не доступен.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
класс для этого элемента не экспортирован и никак в скриптах не доступен.

Весело !

А как тогда реализовать подобный функционал ? Особенно, с учетом того, что скорее всего, события начала перетаскивания\сброса объекта то-же не доступны для скриптера ?

 

никак не реализовать, бывает и такое в модостроении =)

Изменено пользователем malandrinus
Ссылка на комментарий

Список параметров с пояснениями, которые можно указать в xml файлах. Там где знал что означают параметры ставил коментарий

db_click - Не используется (Мысли: возможно устанавливает возможность записи в editBox только после дабл клика, а не после одиночного клика)
numonly - (bool) установка возможности вводить только цифры в EditBox.
float - (bool) установка возможности вводить только цифры с плавающей запятой(float)
password - (bool) установка скрытия вводимых символов под знаком звёздочка (*)
max_symb_count - (int) Максимальное поличество символов

 

 

accel - (string) событие клика кнопки, при нажатии указанной клавиши на клавиатуре.
shadow_offset_x - (int) позиция тени
shadow_offset_y - (int) позиция тени
hint - (string) установка всплывающей подсказки при наведении.
check_mode - (bool)

 

 

x_offset
y_offset
frames
duration
columns
frame_width
frame_height
cyclic
autoplay

 

 

accel - (string) событие клика кнопки, при нажатии указанной клавиши на клавиатуре.
accel_ext - (string) Видимо выход
shadow_offset_x - (int) Смещение тени по х
shadow_offset_y - (int) Смещение тени по у
push_off_x     - (int) Смещение при нажатии по х
push_off_y     - (int) Смещение при нажатии по х
hint - (string) установка всплывающей подсказки при наведении.

 

 

list_length     - (int) Длина списка. Зачем указывается - без понятия
always_show_scroll - (bool) Всегда показывать скрол бар

 

 

vertical - (bool) вертикальная линия или горизонтальная

 

 

align - (string - (l, c, r)) выравнивание текста по горизонтали относительно виджета.
Где:
"l" --по левому краю
"c" --по центру
"r" --по правому краю

 

 

item_height - (int) Высота каждого элемента
active_bg - (bool) Назначение неизвестно, используется, но используется только в положении 0    
scroll_profile - (string) Используется только со значением pda    
always_show_scroll - (bool) Всегда показывать скрол
always_hide_scroll - (bool) Никогда не показывать скролл
flip_vert - (bool)

 

 

horz     - (bool) горизонтальный или вертикальный
min - (int) Минимальное положение        
max - (int) Максимальное положение
pos - (int) Начальная позиция
inertion - Не используется

 

 

right_ident - (int)
left_ident - (int)
top_indent     - (int)
bottom_indent - (int)
vert_interval - (int) Возможно интервал, на сколько пикселей опускается лист при скролле
scroll_profile - (string) Используется только со значением pda    
flip_vert - (bool)
always_show_scroll - (bool) Всегда показывать скрол
can_select - (bool) Возможно возможность выбрать элемент

 

 

heading - (bool)
light_anim - (string)
la_cyclic
la_text
la_texture
la_alpha
xform_anim
xform_anim_cyclic
highlight_text - (bool) Преобразует строчные буквы в заглавные
hA - (int)
hR - (int)
hG - (int)
hB - (int)
clipper - (bool) обрезание элементов виджета, если они выходят за пределы его размеров.
complex_mode - (bool) Возможность установки нескольких строк

 

 

radio - (bool) Возможность установки нескольких элементов

 

 

is_integer - (bool)
invert - (bool)
step - (float) Размер шага

 

 

 

 

 

Freedom

Ссылка на комментарий

open_inventory_box

Данная функция была добавлена в r17.

Судя по названию и коду, должна открывать инвентарь.

Но как именно её использовать кто-нибудь знает?

И передавать нужно серверный объект того ящика, который хотим открыть?

Ссылка на комментарий

Real Wolf, не нужно путать справочник по 'штаным' классам/функциям оригинальных игр с различными расширителями.

Твой вопрос уместен в топике "X-Ray extensions"

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Может быть я где-то и ошибаюсь, но помоему обнаружил неувязку в сведениях шапки темы.

Тут читаем:

int parent() –- кому принадлежит. Для предметов в инвентаре и в ящиках. Если никому, то -1

Из этого можно сделать вывод что parent() возвращает id того, кому принадлежит.

Совсем недавно один код у меня не заработал так как ожидалось, дальнейшее разбирательство обнаружило следующий факт:

type(obj:parent())

возвратило "userdata" в то время как obj был клиентским объектом артефакта.

Далее, обнаружилось что следующий код очень даже рабочий:

    local obj = level.object_by_id(b)
    local parent = obj:parent()
    local sectp = parent:section()
    news_manager.send_tip(db.actor, sectp, nil, nil, 5000)

 

Версия игры - ТЧ 1.0004

Получается, parent возвращает *game_object того объекта, которому принадлежит данный.

 

Добавлено через 40 мин.:

Кстати еще. Для ничейного артефакта, лежащего на земле, obj:parent() вернул nil. А не -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.

Ссылка на комментарий

В дополнение к таблице соответствия серверных и клиентских классов (пост №29): в файле xr_game.dll ближе к концу есть упоминания соответствий серверных и клиентских классов (причём внутри движка имена этих классов могут отличаться от тех, что экспортированы в LUA). Кроме этого, классы делятся на парные и непарные. Непарные остаются без соответстия, т.е. они "чисто серверные" или "чисто клиентские". Если я правильно понял, непарные классы наследованы от неэкспортируемого класса CObjectItemSingle, парные - от CObjectItemClientServer.

 

Вырезка из файла xr_game.dll (убраны нечитаемые символы) под спойлером.

 

CObjectItemClientServerSingleMp<class CActor,class CActorMP,class CSE_ALifeCreatureActor,class CSE_ActorMP>::server_object

CObjectItemSingle<class CLevel,1>::server_object

CObjectItemSingle<class CGamePersistent,1>::server_object

CObjectItemSingle<class CHUDManager,1>::server_object

CObjectItemSingle<class game_sv_Single,1>::server_object

CObjectItemSingle<class game_sv_Deathmatch,1>::server_object

CObjectItemSingle<class game_sv_TeamDeathmatch,1>::server_object

CObjectItemSingle<class game_sv_ArtefactHunt,1>::server_object

CObjectItemSingle<class game_cl_Single,1>::server_object

CObjectItemSingle<class game_cl_Deathmatch,1>::server_object

CObjectItemSingle<class game_cl_TeamDeathmatch,1>::server_object

CObjectItemSingle<class game_cl_ArtefactHunt,1>::server_object

CObjectItemSingle<class CUIGameSP,1>::server_object

CObjectItemSingle<class CUIGameDM,1>::server_object

CObjectItemSingle<class CUIGameTDM,1>::server_object

CObjectItemSingle<class CUIGameAHunt,1>::server_object

CObjectItemSingle<class CSE_ALifeGroupTemplate<class CSE_ALifeMonsterBase>,0>::client_object

CObjectItemSingle<class CSE_ALifeGraphPoint,0>::client_object

CObjectItemSingle<class CSE_ALifeOnlineOfflineGroup,0>::client_object

CObjectItemClientServer<class CSpectator,class CSE_Spectator>::server_object

CObjectItemClientServer<class CAI_Flesh,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CChimera,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CAI_Dog,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CAI_Stalker,class CSE_ALifeHumanStalker>::server_object

CObjectItemClientServer<class CAI_Bloodsucker,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CAI_Boar,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CAI_PseudoDog,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CPsyDog,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CPsyDogPhantom,class CSE_ALifePsyDogPhantom>::server_object

CObjectItemClientServer<class CBurer,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CPseudoGigant,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CController,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CPoltergeist,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CZombie,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CFracture,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CSnork,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CCat,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CTushkano,class CSE_ALifeMonsterBase>::server_object

CObjectItemClientServer<class CPhantom,class CSE_ALifeCreaturePhantom>::server_object

CObjectItemClientServer<class CAI_Trader,class CSE_ALifeTrader>::server_object

CObjectItemClientServer<class CAI_Crow,class CSE_ALifeCreatureCrow>::server_object

CObjectItemClientServer<class CCar,class CSE_ALifeCar>::server_object

CObjectItemClientServer<class CHelicopter,class CSE_ALifeHelicopter>::server_object

CObjectItemClientServer<class CMercuryBall,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CBlackDrops,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CBlackGraviArtefact,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CBastArtefact,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CDummyArtefact,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CZudaArtefact,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CThornArtefact,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CFadedBall,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CElectricBall,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CRustyHairArtefact,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CGalantineArtefact,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CGraviArtefact,class CSE_ALifeItemArtefact>::server_object

CObjectItemClientServer<class CWeaponMagazined,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponMagazinedWGrenade,class CSE_ALifeItemWeaponMagazinedWGL>::server_object

CObjectItemClientServer<class CWeaponFN2000,class CSE_ALifeItemWeaponMagazinedWGL>::server_object

CObjectItemClientServer<class CWeaponAK74,class CSE_ALifeItemWeaponMagazinedWGL>::server_object

CObjectItemClientServer<class CWeaponLR300,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponHPSA,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponPM,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponFORT,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponBinoculars,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponShotgun,class CSE_ALifeItemWeaponShotGun>::server_object

CObjectItemClientServer<class CWeaponSVD,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponSVU,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponRPG7,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponVal,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponVintorez,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponWalther,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponUSP45,class CSE_ALifeItemWeaponMagazined>::server_object

CObjectItemClientServer<class CWeaponGroza,class CSE_ALifeItemWeaponMagazinedWGL>::server_object

CObjectItemClientServer<class CWeaponKnife,class CSE_ALifeItemWeapon>::server_object

CObjectItemClientServer<class CWeaponBM16,class CSE_ALifeItemWeaponShotGun>::server_object

CObjectItemClientServer<class CWeaponRG6,class CSE_ALifeItemWeaponShotGun>::server_object

CObjectItemClientServer<class CWeaponAmmo,class CSE_ALifeItemAmmo>::server_object

CObjectItemClientServer<class CScope,class CSE_ALifeItem>::server_object

CObjectItemClientServer<class CSilencer,class CSE_ALifeItem>::server_object

CObjectItemClientServer<class CGrenadeLauncher,class CSE_ALifeItem>::server_object

CObjectItemClientServer<class CBolt,class CSE_ALifeItemBolt>::server_object

CObjectItemClientServer<class CMedkit,class CSE_ALifeItem>::server_object

CObjectItemClientServer<class CAntirad,class CSE_ALifeItem>::server_object

CObjectItemClientServer<class CFoodItem,class CSE_ALifeItem>::server_object

CObjectItemClientServer<class CBottleItem,class CSE_ALifeItem>::server_object

CObjectItemClientServer<class CExplosiveItem,class CSE_ALifeItemExplosive>::server_object

CObjectItemClientServer<class CInfoDocument,class CSE_ALifeItemDocument>::server_object

CObjectItemClientServer<class CInventoryItemObject,class CSE_ALifeItem>::server_object

CObjectItemClientServer<class CScientificOutfit,class CSE_ALifeItemCustomOutfit>::server_object

CObjectItemClientServer<class CStalkerOutfit,class CSE_ALifeItemCustomOutfit>::server_object

CObjectItemClientServer<class CMilitaryOutfit,class CSE_ALifeItemCustomOutfit>::server_object

CObjectItemClientServer<class CExoOutfit,class CSE_ALifeItemCustomOutfit>::server_object

CObjectItemClientServer<class CF1,class CSE_ALifeItemGrenade>::server_object

CObjectItemClientServer<class CRGD5,class CSE_ALifeItemGrenade>::server_object

CObjectItemClientServer<class CExplosiveRocket,class CSE_Temporary>::server_object

CObjectItemClientServer<class CMPPlayersBag,class CSE_ALifeItem>::server_object

CObjectItemClientServer<class CCustomZone,class CSE_ALifeCustomZone>::server_object

CObjectItemClientServer<class CMosquitoBald,class CSE_ALifeAnomalousZone>::server_object

CObjectItemClientServer<class CMincer,class CSE_ALifeAnomalousZone>::server_object

CObjectItemClientServer<class CRadioactiveZone,class CSE_ALifeAnomalousZone>::server_object

CObjectItemClientServer<class CHairsZone,class CSE_ALifeZoneVisual>::server_object

CObjectItemClientServer<class CLevelChanger,class CSE_ALifeLevelChanger>::server_object

CObjectItemClientServer<class CScriptZone,class CSE_ALifeSpaceRestrictor>::server_object

CObjectItemClientServer<class CSmartZone,class CSE_ALifeSmartZone>::server_object

CObjectItemClientServer<class CTeamBaseZone,class CSE_ALifeTeamBaseZone>::server_object

CObjectItemClientServer<class CTorridZone,class CSE_ALifeTorridZone>::server_object

CObjectItemClientServer<class CSpaceRestrictor,class CSE_ALifeSpaceRestrictor>::server_object

CObjectItemClientServer<class CAmebaZone,class CSE_ALifeZoneVisual>::server_object

CObjectItemClientServer<class CNoGravityZone,class CSE_ALifeAnomalousZone>::server_object

CObjectItemClientServer<class CSimpleDetector,class CSE_ALifeItemDetector>::server_object

CObjectItemClientServer<class CTorch,class CSE_ALifeItemTorch>::server_object

CObjectItemClientServer<class CPda,class CSE_ALifeItemPDA>::server_object

CObjectItemClientServer<class CProjector,class CSE_ALifeObjectProjector>::server_object

CObjectItemClientServer<class CWeaponMounted,class CSE_ALifeMountedWeapon>::server_object

CObjectItemClientServer<class CWeaponStatMgun,class CSE_ALifeStationaryMgun>::server_object

CObjectItemClientServer<class CHangingLamp,class CSE_ALifeObjectHangingLamp>::server_object

CObjectItemClientServer<class CPhysicObject,class CSE_ALifeObjectPhysic>::server_object

CObjectItemClientServer<class CScriptObject,class CSE_ALifeDynamicObjectVisual>::server_object

CObjectItemClientServer<class CBreakableObject,class CSE_ALifeObjectBreakable>::server_object

CObjectItemClientServer<class CClimableObject,class CSE_ALifeObjectClimable>::server_object

CObjectItemClientServer<class CPhysicsSkeletonObject,class CSE_ALifePHSkeletonObject>::server_object

CObjectItemClientServer<class CDestroyablePhysicsObject,class CSE_ALifeObjectPhysic>::server_object

CObjectItemClientServer<class CInventoryBox,class CSE_InventoryBox>::server_object

 

 

 

Как видно, клиентскому классу CZombie соответствует серверный CSE_ALifeMonsterBase.

Изменено пользователем Полтергейст
Ссылка на комментарий

в классе CUIListWnd есть метод ShowSelectedItem(...). Работает, но отображение выделения эл-та не соответствует высоте самого эл-та. Это можно побороть ?

 

Добавлено через 16 мин.:

класс Frect - 6 переменных, ф-ция set инициализирует только 4. Какие из них ? Зачем две остальных. Как это использовать ?

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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

×
×
  • Создать...