KD87 718 Опубликовано 10 Октября 2011 7.9, с инвентарностью - никак. Все инвентарные объекты имеют и мировую модель, вот вся эта физика и относится к ней. Кстати, upd:torque и upd:force вряд ли работают (по крайней мере в ЗП). В оригинальном спавне все 24 байта, отведенные под эти переменные заполнены случайным мусором. То ли глюк xrAI, то ли он их специально так корежит. Поделиться этим сообщением Ссылка на сообщение
KD87 718 Опубликовано 12 Декабря 2011 malandrinus, по game_object я подобное начал делать. Пока рассортировал методы по классам, около трети методов описал и проверил в игре. Могу выслать в качестве затравки, чтобы с нуля не пришлось начинать. Поделиться этим сообщением Ссылка на сообщение
KD87 718 Опубликовано 16 Декабря 2011 AndreySol, например - в acdc. В нем каждый package соответствует серверному классу. Логику чтения нет-пакета (порядок и формат параметров) смотри в методах state_read/update_read. Еще вариант - функции перепаковки нет-пакета из АМК мода, но там ограниченный набор классов. Поделиться этим сообщением Ссылка на сообщение
KD87 718 Опубликовано 10 Января 2013 (изменено) В таблице экспорта xr_3da.exe есть метод RayPick. Вот сигнатура: int CObjectSpace::RayPick(CObjectSpace *this, _vector3<float> *start, _vector3<float> *dir, float range, collide::rq_target tgt, collide::rq_result *R, CObject *ignore_object) Назначение аргументов, в целом, очевидно: start - стартовая точка, dir - направление трассировки (нормализованный вектор), range - диапазон трассировки. ignore_object - игнорируемый при трассировке объект, tgt - флаги геометрии: enum collide::rq_target { rqtNone = 0x0, - не определять ничего rqtObject = 0x1, - определять динамические объекты rqtStatic = 0x2, - определять статическую геометрию rqtShape = 0x4, rqtObstacle = 0x8, rqtBoth = 0x3, rqtDyn = 0xD, }; Результат доступен через R, там будет лежать объект типа collide::rq_result: struct collide::rq_result { CObject *O; float range; int element; }; В случае статической геометрии объект O будет пустой. Если нужно получить больше информации по статической геометрии, можно поковырять методы CDB::COLLIDER. Если стоит задача работать с трассировкой луча из скриптов, можно посмотреть xray-extensions. В одной из последних ревизий malandrinus экспортировал RayPick в скрипты. Изменено 10 Января 2013 пользователем KD87 2 Поделиться этим сообщением Ссылка на сообщение
KD87 718 Опубликовано 11 Января 2013 (изменено) Не совсем. "Опорная" ось: angle = clamp(wind_velocity * wind_strength * 0.05, 0, 1) axis.x = -sin(wind_direction) * cos(drop_max_angle * angle - 1.57) axis.y = sin(drop_max_angle * angle - 1.57) axis.z = cos(wind_direction) * cos(drop_max_angle * angle - 1.57) drop_max_angle ~ 10 градусов Плюс для отдельных капель направления рандомизируются в диапазоне +-3 градуса от опорной оси, если я правильно помню. Изменено 11 Января 2013 пользователем KD87 2 Поделиться этим сообщением Ссылка на сообщение