В С++ особо не разбираюсь. Только синтаксис и то средне. Поэтому интересуюсь о сложности реализации поставленной задачи. Когда то мы обсуждали как сделать так чтобы в ДМ трупы игроков не исчезали. А оставались на полу. Вроде бы дошли до того что нужно сделать создание аналогичной модели.. с теми же координатами и т.д. На сколько это сложно?
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, для профессионала такого уровня как ты - конечно же :). А вообще там же куча проблем наверное - определение координат, скина. А если я хочу чтобы его еще можно было разорвать на части то тут наверное нужно еще и поле с названием модели запомнить. А если подумать что модель игрока состоит из атачментов...
SLAwww, я вот прикинул как это сделать... Сперва как бы создать МХ2 там, где лежит игрок, передать ему ModelObject игрока и синхронизировать анимки. Я подобное делать уже пытался, но у меня не выходило передать МХ2 нужную модельку (пришлось копировать нужную ентитю) Ни после инициализации класса, ни до. Может, надо было синхронизировать модели?
Ты даже не взялся за работу, но уже рассуждаешь о ее якобы запредельной сложности. Это такой намек на то, чтобы тебе дали готовый код? Достаточно скопировать параметры текущей модели в свежесозданный CModelHolder2 когда игрок умирает. С ограничением числа наспавненых таким методом моделей - чуть сложнее, но только чуть-чуть. Задавай вопросы уже когда начнешь пытаться это сделать.
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, господи, ты чего. Я не намекал не на что. А если бы и намекал, то сразу бы деньги предложил. Но как ты видишь, я ведь не делал этого. Я спросил о сложности задачи, чтобы понять стоит ли игра свеч. Ты сказал что все элементарно. А я вот задумался, не все же так элементарно как ты говоришь. И решил тебе напомнить о трудностях, которые, ты возможно не учел. Но как сейчас вижу - все таки учел. И даже более того - объяснил что нужно делать. Так что я тебе и так благодарен. Просто не надо делать из меня "попрошайку". Ок?
Как скажешь, но я не имел ввиду, что попросить кусок готового кода - это так плохо. Если тебе совсем непонятно, как выбросить в CWorld неисчезающую тушку игрока, пару строчек мне набросать не сложно, лишь бы ты понял, как они работают. Сложнее будет с числом трупов - оптимальным решением здесь будет небольшая модификация CModelHolder2 для создания на его базе односвязного списка. Можно, конечно, просто каждый раз итерировать по объектам в мире, чтобы определить число наспавненных моделей, но моя ЭВМ на лампах и перфокартах будет лагать всеми своими реле от такого излишнего расточительства. ) Еще есть любезно предоставленный кротами CDynamicContainer. Который не сериализуется, ага, так что как минимум те же итерации при загрузке игры.
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, а возможно решением с числом трупов можно сделать - как у Debris? Точно не помню как там. Но сейчас предположу. Сделать так, чтобы было 2 конструктора. В один передается время, а в другой нет. Если не передается то оно равно там -1 или чтото типа, чтобы не учитывать, а если же было передано, тогда оно будет как Debris - через определенное время уничтожаться. И, кол-во трупов будет постепенно уменьшаться, что поможет компу не погибнуть в столь жестоком моде.. Ну естественно в самом модел холдере случай для -1 прописать. Чтобы ничего не отсчитывало.
Можно и с одним конструктором это провернуть, в С++ есть такая фишка, как аргументы, передаваемые по умолчанию. Лично я бы сделал односвязный список трупов, и удалял их с конца, когда игрок их не видит (CCastRay в помощь).
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, Может я ошибаюсь, но я обнаружил одну деталь - игрок вроде всё равно сможет увидеть исчезновение трупа смотря из-за угла с видом от 3л. (луч будет прерываться стеной и игра будет считать что игрок не видит, но на самом деле он увидит)
Можете считать мои слова за бред если они не верные, просто я хочу помочь =)
Добавлено (27.03.2012, 18:22) --------------------------------------------- Да и у меня ещё возник вопросик - как сделать чтобы у трупов мобов и игроков были свои жизни, просто в оригинале трупы взрываются в куски только получая определённое значение урона.
Действительно, исчезновение модели можно заметить. ) В таком случае, рекомендую проверять CPlacement3D игрока, и если он отвернулся от модели (смотрит в противоположную сторону), находясь на достаточном расстоянии от неё, то модель гарантировано можно прятать. А чтобы у трупов было здоровье, прячь их сразу же, когда появляются, и создавай на их месте идентичные им модели.
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.
А модель врага спрятать с помощью SwitchToEditorModel();
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, Расскажи поподробнее как работает CCastRay и как им пользоваться
Просто прочитав прошлые комменты у меня появилась идея - расширить ИИ врагов добавив им функцию вести огонь из укрытия - из-за любого препятствия мешающего пройти пулям.
Добавлено (28.03.2012, 11:24) --------------------------------------------- И как указать на саму ентитю на врага:
petr_kustov, ну неужели сложно нажать Find in files и посмотреть CCastRay? Там ведь куча мест, где он используется. Что касается последнего вопроса, если эта строчка находится в коде энтити, которая оставляет за собой труп, то указывать на себя не обязательно, то есть, "игрок->" можно заменить на "this->", либо вообще убрать.
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.
E:/Mymod/Sources/EntitiesMP/EnemyBase.es(2784) : error C2664: 'Copy' : cannot convert parameter 1 from 'class CModelObject *' to 'class CModelObject &' A reference that is not to 'const' cannot be bound to a non-lvalue
penCorpse->GetModelObject()->Copy(*GetModelObject()); Забыл указатель разименовать. И не забудь инициализировать труп после создания. penCorpse->Initialize();
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.
Попробуй Initialize поставить перед копированием модели.
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.
1) Меняй флаги после инициализации, а не перед. 2) ((CModelHolder2&)(*m_penCorpse)).m_fHealth = (здоровье) ; 3) SwitchToEditorModel(); Если нужно не прятать саму модель, а только убрать физику, то penCorpse->SetCollisionFlags(ECF_IMMATERIAL);
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.
MasterST, Попробуй посмотреть как устроена сложность "Ментал".
Добавлено (30.03.2012, 12:44) --------------------------------------------- SLAwww, Почему у трупа не появляется колизия, он как призрак, а у того у которого SwitchToEditorModel(); у него остается физика, и он как невидимое препятсятвие
А откуда ты знаешь, чья это коллизия? У тебя ведь труп остаётся как раз на том месте, где находился враг или игрок.
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.