SLAwww, Я поставил код, он почемуто не работает даже при том, что я указал число 5 вместо операций с переменными, может я сделал опять все наоборот? // prepare and draw health info const FLOAT fHealthBarPos = fHalfUnit*0.7f; fValue = ClampDn( _penPlayer->GetHealth(), 0.0f); // never show negative health fNormValue = fValue/TOP_HEALTH; INDEX iWantedRenderFrame = 5; (iWantedRenderFrame/TOP_HEALTH)/5; strValue.PrintF( "%d", (SLONG)ceil(fValue)); PrepareColorTransitions( colMax, colTop, colMid, colMin, 0.66f, 0.33f, FALSE); fRow = pixBottomBound-fHalfUnit; fCol = pixLeftBound+fHalfUnit; colDefault = AddShaker( 5, fValue, penLast->m_iLastHealth, penLast->m_tmHealthChanged, fMoverX, fMoverY); HUD_DrawBorder( fCol+fMoverX, fRow+fMoverY, fOneUnit, fOneUnit, colBorder); HUD_DrawIcon( fCol+fMoverX, fRow+fMoverY, _toHealth, _colHUD, fNormValue, TRUE); CTextureData *ptd = (CTextureData*)_toHBar.GetData(); ptd->td_iRenderFrame=iWantedRenderFrame; HUD_DrawIcon( fCol+fMoverX+77, fRow+fMoverY-7, _toHBar, _colHUD, fNormValue, FALSE); HUD_DrawIcon( fCol+fMoverX+77, fRow+fMoverY-7, _toHTube, C_WHITE, fNormValue, FALSE);
Сообщение отредактировалpetr_kustov - Вторник, 28.02.2012, 17:54
SLAwww, несколько страниц назад, ты посоветовал книгу Уолтера Савича "Программирование на С++". Я вот хотел спросить, можно ли после ее прочтения учить Visual C++ и MFC, или лучше почитать еще что-то о консольных программах?
SeriousAlexej, "Visual C++" - это не язык, чтобы его учить, а всего лишь IDE. ) Но одно могу сказать определённо - прежде чем браться за MFC, VCL, Qt или всякие там wxWidgets, надо C++ изучить обязательно. Книга Савича - просто очень хорошее руководство по языку, которое рекомендую лично я. Если тебе будет удобнее использовать другое пособие - не вопрос, главное - не набрасываться на библиотеки визуальных компонентов без знания ООП, чтобы потом не возникало вопросов вроде "а зачем виртуальный деструктор?". petr_kustov, а ты определил iWantedRenderFrame? CREATER, >_> >_> ты отваживаешься распускать ересь про владыку Акатоша?
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.
Предыдущий пост был исправлен так как он неполиткорректным
Quote (SLAwww)
а зачем виртуальный деструктор?
Чтобы случайно не вызвать деструктор базового объекта для потомка? Страуструп вроде бы рекомендует его делать таковым всегда, если класс имеет хотя бы один виртуальный метод.
Почти верно, но требует разъяснений. Представь себе, что класс Б - потомок класса А. Ты динамически создаёшь объект класса Б, но ссылаешься на него через указатель на объект класса А (так можно), а затем пытаешься удалить динамическую сущность через этот указатель. Если деструктор не виртуальный, то действительно вызывается деструктор класса А. Но вот касательно рекомендаций - другие виртуальные функции в классе быть не обязаны. Просто волей случая как раз при использовании виртуальных функций часто складывается ситуация, при которой какой-то наследник необходимо удалить через указатель на предка. Думаю, теперь Акатош будет милостив. )
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.
petr_kustov, я тебе ответил, читай сообщение 1299. CREATER, в твоём примере объект класса CSecond (я так понял - потомок CFirst?) будет полностью удалён только при наличии виртуального деструктора. Если его нет, произойдёт утечка памяти. Если же CSecond - не потомок CFirst, то такие действия могут и вовсе привести к ошибке доступа. Да и, для примера создавать объект класса CFirst было не обязательно. )
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.
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.
привет я новый кодер в вашей компании --------------------- передем к вопросу -------- я создаю нового врага с огнем, огонь работает, но позиция не та, где регулируется позиция стрельбы. вот что я нашел ---------------- перед /************************************************************ * A T T A C K E N E M Y * ************************************************************/ --------------------- добавил ---------------------
// create flame CEntityPointer penFlame = CreateEntity(plFlame, CLASS_PROJECTILE); // init and launch flame ELaunchProjectile eLaunch; eLaunch.penLauncher = this; eLaunch.prtType = PRT_SHOOTER_FLAME; penFlame->Initialize(eLaunch); // link last flame with this one (if not NULL or deleted) if (m_penFlame!=NULL && !(m_penFlame->GetFlags()&ENF_DELETED)) { ((CProjectile&)*m_penFlame).m_penParticles = penFlame; } } void PlayFireSound(void) { // if sound entity exists if (m_penSoundLaunch!=NULL) { CSoundHolder &sh = (CSoundHolder&)*m_penSoundLaunch; m_soLaunch.Set3DParameters(FLOAT(sh.m_rFallOffRange), FLOAT(sh.m_rHotSpotRange), sh.m_fVolume, 1.0f); PlaySound(m_soLaunch, sh.m_fnSound, sh.m_iPlayType); } }; а после ----------- /************************************************************ * A T T A C K E N E M Y * ************************************************************/ Fire(EVoid) : CEnemyBase::Fire {
----------- FlameBurst() { PlayFireSound(); m_penFlame = NULL; m_tmFlameStart = _pTimer->CurrentTick(); while(_pTimer->CurrentTick( ) < m_tmFlameStart + m_fFlameBurstDuration) { // wait a bit and fire autowait(0.05f); FireFlame(); } return EReturn(); };
Heming_Hitrowski, CREATER, ладно я к вам ещё вернусь я буду регатся и регатся вы же меня знаете я не угомоный и да CREATER, ты зря написал про меня на сайте от моего же лица ты сам это слово и ещё Heming_Hitrowski, я хотел извиниться а вот хрен тебе ты меня сдал ты не задумался что я извиниться хотел а ты, короче если это сотрут у меня эта фотка будет я докажу
До сих пор в топе загрузок и просмотров... Неужели я тоже оставил свой след на этом сайте? А ведь я здесь уже целых двенадцать лет... Удалил свои старые карты из профиля, на кой они мне. Маппер из меня никудышный.
Heming_Hitrowski, CREATER, вам должно быть стыдно. Вы ведь сами не сможете решить проблему с CPlacement3D, у Хемминга в моде, насколько помню, до сих пор игрока бросает тупо вверх при выстреле из обреза, зато поругать кого-нибудь - это пожалуйста. А мне стыдно из-за того, что я нахожусь в компании таких людей, как вы. Но человеку всё-таки помогу, без разницы, кто он. Вот так я делал атаку для огнемётчика:
Пришлось создать дополнительный вид снаряда в CProjectile (PRT_FLAME_GRUNT), т.к. обычное пламя очень быстро убивает игрока. Зато враг правильно на него наводится, поворачивается во время огня и прекращает огонь, если игрок ушёл из поля досягаемости. DirectionVectorToAngles по загадочной причине неправильно пересчитывает Р-поворот, поэтому посчитал вручную, и всё в порядке.
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, но за все время я давно успел сложить о нем не самое приятное впечатление. Я бы никогда не помог человеку, назвавшему меня или моего товарища уродом.
Quote (SLAwww)
Вы ведь сами не сможете решить проблему с CPlacement3D, у Хемминга в моде, насколько помню, до сих пор игрока бросает тупо вверх при выстреле из обреза, зато поругать кого-нибудь - это пожалуйста.
Heming, я чего-то не знаю? Раз есть проблема, что ты молчал?
Сообщение отредактировалCREATER - Воскресенье, 18.03.2012, 12:14