Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
xd76, также можно порекомендовать какое-нибудь пособие по ООП. Если не найдешь никакой книжки, то посмотри в Викиучебники - это очень хорошо открывает глаза и развязывает руки, если они прямые и подключена голова, конечно же.
Добавлено (09.02.2012, 15:34) --------------------------------------------- Все, кто делал альтернативный огонь, направьте нуба. Процедуру альтернативного огня кроме PlayerWeapons.es еще где-то нужно прописывать?
Добавлено (09.02.2012, 17:36) --------------------------------------------- ура я от регулировал альт фир поздравьте кто хочет я не хочу хвастаться я просто обрадовался
Сообщение отредактировалxd76 - Четверг, 09.02.2012, 17:36
Помогите, пожалуйста, до конца понять, как работают функции RelativeToAbsolute и AbsoluteToRelative, а также в чем разница между Абсолютным вектором позиции и Относительным.
SeriousAlexej, абсолютная - это систама с точкой отсчета в (0, 0), а относительная - с точкой отсчета в определенном предмете(в вызове метода его нужно указать)
SeriousAlexej, мда.. В принципе, CREATER сказал почти правильно, нужно только уточнить, как работают эти методы. Все они являются частью CPlacement3D, а в нём самом не уточняется, к какой системе принадлежит расположение, т.к. то, что относительно с одной точки зрения, может оказаться абсолютным с другой. %] Ладно, по порядку. Пускай у тебя есть Объект1 и Объект2. Оба эти объекта находятся очень далеко от начала координат, но между ними (объектами) всего один метр. Допустим, ты хочешь отразить Объект2 относительно Объекта1 (типа как в центровой симметрии). Для начала ты, естественно, берёшь plObject2Placement=GetPlacement() у Объекта2. И получаешь большое-пребольшое значение, потому что этот объект находится вдалеке от начала координат. Теперь тебе надо сделать это расположение относительным к Объекту1. Псевдокод для этого будет таким: plObject2Placement.AbsoluteToRelative(Object1->GetPlacement()). Теперь plObject2Placement является относительным расположением, а базис его координат - расположение Объекта1. Поэтому цифровые значения этого расположения станут небольшими, тот самый метр. Теперь нужно инвертировать расположение Объекта2. Для этого все члены plObject2Placement.pl_PositionVector умножаем на -1, а ко всем членам plObject2Placement.pl_OrientationAngle добавляем 180. Получится инвертированное расположение, но в относительной системе координат, а нам нужны абсолютные, чтобы переместить туда Объект2. Поэтому мы выполняем обратное превращение: plObject2Placement.RelativeToAbsolute(Object1->GetPlacement()). И наше расположение - больше не относительно, его можно использовать в качестве аргумента для SetPlacement.
Сообщение отредактировалSLAwww - Четверг, 09.02.2012, 19:17
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
Да, один ты нарушаешь принцип инкапсуляции, входящий в состав объектно-ориентированной парадигмы. Говоря простым языком, в методах GetPlacement и SetPlacement могут производиться какие-то важные действия, о которых мы не знаем, но пропускать эти действия было бы рисковано. "И так все работает" - не оправдание, т.к. может иметь место бомба с часовым механизмом - утечка памяти.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
SLAwww, хмм, забыл про такую возможность. Жаль у нас нет исходников CEntity..
Видимо, Croteam немного порезали ООП в Entity Sources. Немножко обидно, так как попытка добавлять самые простые классы, .cpp и .h файлами напрямую(была такая необходимость) приводила к небольшому гемморою.
Тогда загадочно то, что и сами Croteam местами используют его напрямую. Видимо, действительно при GetPlacement происходят, к примеру, какие-то преобразования
Сообщение отредактировалCREATER - Пятница, 10.02.2012, 15:56
Croteam, по сути, создали свой собственный диалект языка С++, применяемый в .es-файлах и удобный именно для создания классов игровых объектов. Как и в любой сложной системе, классы в движке первого Сэма имеют весьма развитую инфраструктуру, обеспечивающую их организацию. Разработка ES-диалекта С++ позволила просто не писать из разу в раз одну и ту же организационную муть. Простые классы в .cpp и .h всё же можно добавлять, но их проблематично сделать классами игровых объектов.
Where did all the dragons go? We searched in the hills and we searched down the canyons, we even scanned the depths of the caves with our armour, swords and lanterns. Oh, if only had we seen him lurch, from his glorious skull covered perch.
CRACK went his claws and SMACK swipped the tail, a ROAR of might, one big BITE.
SLAwww, их проблематично использовать даже для объявления глобального пространства имен - гемморой тот ещё. Поэтому лучше вместо этого создать какой-нибудь класс с extern-функциями. Убедился на своей шкуре.
Приветствую кодеры, я пришел с парой вопросов надеюсь вам будет не трудно мне помочь,
как получить данные каким именно прожектилом был поврежден объект, мне это нужно чтобы создать разные эффекты смерти врагов при повреждении тем или иным прожектилом.
как сделать чтобы самонаводящиеся прожектилы летели в цель(моба) находящуюся в прицеле игрока? Хочу сделать ракетницу с самонаводкой =)
Сообщение отредактировалpetr_kustov - Пятница, 17.02.2012, 14:45
petr_kustov, ох был код у меня да уже нету ну просмотри DEMON_PROJECTILE ТЕБЕ нужно будет поменять тип ракеты например pmt_move type = PMT_GUIDED таким ообразом я сделал самонаводки у биомехов
Сообщение отредактировалxd76 - Пятница, 17.02.2012, 16:51
// if a player launched this rocket if ( IsDerivedFromClass( m_penLauncher, "Player") ) { // check whether he's enraged if ( ((CPlayer&)*m_penLauncher).m_bUnderRage ) { m_fDamageAmount*= 3; } }
Это "здоровье" ракеты, или урон наносимый ею? Если здоровье, то ракету можно легко сбить из любого оружия, даже кольта
До сих пор в топе загрузок и просмотров... Неужели я тоже оставил свой след на этом сайте? А ведь я здесь уже целых двенадцать лет... Удалил свои старые карты из профиля, на кой они мне. Маппер из меня никудышный.