Новые сообщения Участники Правила Поиск
Модератор форума: freeknik, SLAwww, thecre, RealCrazyMan  
Помощь по SDK для Serious Sam 1.05/1.07
seriously_petr Вторник, 28.02.2012, 17:53 | Сообщение # 1291


Сообщений: 446
Награды: 4
Замечания: 0%
 
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


thecre Вторник, 28.02.2012, 18:24 | Сообщение # 1292


Сообщений: 3449
Награды: 28
Замечания: 0%
 

Quote (MasterST)
для меня как раз важны именно мелкие правки

Но ведь тебе же нужно в конце концов понимать, как их делать :)
Сообщение отредактировал CREATER - Среда, 29.02.2012, 03:38


SeriousAlexej Вторник, 28.02.2012, 18:34 | Сообщение # 1293


Serious Editor
Сообщений: 1245
Награды: 52
Замечания: 0%
 

SLAwww, несколько страниц назад, ты посоветовал книгу Уолтера Савича "Программирование на С++". Я вот хотел спросить, можно ли после ее прочтения учить Visual C++ и MFC, или лучше почитать еще что-то о консольных программах?


thecre Вторник, 28.02.2012, 18:46 | Сообщение # 1294


Сообщений: 3449
Награды: 28
Замечания: 0%
 
Quote (SeriousAlexej)
MFC

Лучше не пытайся. Не парь себе мозг и учи Qt - он кроссплатформенный, да и легче :)


SLAwww Вторник, 28.02.2012, 20:40 | Сообщение # 1295


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
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.

and so ended our search.
thecre Среда, 29.02.2012, 03:42 | Сообщение # 1296


Сообщений: 3449
Награды: 28
Замечания: 0%
 
Предыдущий пост был исправлен так как он неполиткорректным
Quote (SLAwww)
а зачем виртуальный деструктор?

Чтобы случайно не вызвать деструктор базового объекта для потомка? Страуструп вроде бы рекомендует его делать таковым всегда, если класс имеет хотя бы один виртуальный метод.


SLAwww Среда, 29.02.2012, 04:55 | Сообщение # 1297


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Почти верно, но требует разъяснений. Представь себе, что класс Б - потомок класса А. Ты динамически создаёшь объект класса Б, но ссылаешься на него через указатель на объект класса А (так можно), а затем пытаешься удалить динамическую сущность через этот указатель. Если деструктор не виртуальный, то действительно вызывается деструктор класса А. Но вот касательно рекомендаций - другие виртуальные функции в классе быть не обязаны. Просто волей случая как раз при использовании виртуальных функций часто складывается ситуация, при которой какой-то наследник необходимо удалить через указатель на предка.
Думаю, теперь Акатош будет милостив. )


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.

and so ended our search.
МегаМозг Среда, 29.02.2012, 09:03 | Сообщение # 1298


Сообщений: 444
Награды: 3
Замечания: 0%
 
Quote (MasterST)
Не проще ли взять готовый класс?

MasterST, А если мне нужна новая DLL?


Мои работы....


Увлекаешься дядей сэдом? Тогда тебе >>сюда<<!
thecre Среда, 29.02.2012, 09:21 | Сообщение # 1299


Сообщений: 3449
Награды: 28
Замечания: 0%
 
SLAwww, да-да, я читал про это. :)
Это вроде:

CFirst* first = new CFirst(some arguments);
CSecond* second = new CSecond(some arguments);
CFirst* pen = (CFirst*)second;
delete pen;

И у меня удаляется объект second с вызовом деструктора от CFirst?
PS - поправь меня, если я где-то ошибся в коде.


seriously_petr Среда, 29.02.2012, 13:46 | Сообщение # 1300


Сообщений: 446
Награды: 4
Замечания: 0%
 
SLAwww, Разрешите спросить, вы про меня не забыли? :D

SLAwww Среда, 29.02.2012, 15:27 | Сообщение # 1301


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
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.

and so ended our search.
thecre Среда, 29.02.2012, 15:35 | Сообщение # 1302


Сообщений: 3449
Награды: 28
Замечания: 0%
 
SLAwww, да, они потомки. Спасибо за подробное объяснение :)

seriously_petr Среда, 29.02.2012, 17:02 | Сообщение # 1303


Сообщений: 446
Награды: 4
Замечания: 0%
 
SLAwww, сори незаметил =)

CAHEK Воскресенье, 04.03.2012, 13:53 | Сообщение # 1304


Сообщений: 794
Награды: 16
Замечания: 0%
 
как можно изменить цвет дождя и снега?

Всё очень серьёзно.
P.S. Не пишите мне на Email, пишите в Л.С.
Ea Воскресенье, 04.03.2012, 15:41 | Сообщение # 1305


Сообщений: 9
Награды: 0
Замечания: 0%
 
А как можно добавить es в dll.
Где-то мне сказали что можно токо заново если сделать через SDK, а открыть, но мне для редакции хотябы.


thecre Воскресенье, 04.03.2012, 15:54 | Сообщение # 1306


Сообщений: 3449
Награды: 28
Замечания: 0%
 
Quote (Ea)
А как можно добавить es в dll.

SDK + VC++
Quote (Ea)
но мне для редакции

В газете работаешь?


Ea Воскресенье, 04.03.2012, 16:02 | Сообщение # 1307


Сообщений: 9
Награды: 0
Замечания: 0%
 
Нет, там не работаю) А VC++ может компилировать?

seriously_petr Воскресенье, 04.03.2012, 18:06 | Сообщение # 1308


Сообщений: 446
Награды: 4
Замечания: 0%
 
У меня произошло горе - сломался жёсткий диск, на котором хранилось 70% моих файлов, и в их числе была vc++

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

EntitiesMP/Eyeman.es
Compiling...
Error spawning cl.exe

EntitiesMP.dll - 1 error(s), 0 warning(s)

хотя все настройки от старой студии сохранились


SLAwww Воскресенье, 04.03.2012, 21:23 | Сообщение # 1309


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Новая - это какая? Тебе нужна версия 6.0.

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.

and so ended our search.
art-serious Понедельник, 05.03.2012, 10:36 | Сообщение # 1310


Старый маппер
Сообщений: 652
Награды: 29
Замечания: 0%
 
Quote (CAHEK)
как можно изменить цвет дождя и снега?

Перекрасив текстуру капли и снежинки. Ну а для разнообразия придется добавлять поля с классами

Добавлено (05.03.2012, 10:36)
---------------------------------------------

Quote (Ea)
А VC++ может компилировать?


oh

Сообщение отредактировал art-serious - Понедельник, 05.03.2012, 10:30


[ zc-lab.org ] [ Операция "Новый год" - 40% ]
MaSterCliff Пятница, 16.03.2012, 09:04 | Сообщение # 1311


Сообщений: 4
Награды: 0
Замечания: 0%
 
привет я новый кодер в вашей компании
---------------------
передем к вопросу
--------
я создаю нового врага с огнем, огонь работает, но позиция не та, где регулируется позиция стрельбы.
вот что я нашел
----------------
перед
/************************************************************
* A T T A C K E N E M Y *
************************************************************/
---------------------
добавил
---------------------

void FireFlame(void) {
// flame start position

CPlacement3D plFlame;
plFlame = GetPlacement();
plFlame.pl_OrientationAngle = ANGLE3D(5.0f,5.0f,5.0f);
plFlame.pl_PositionVector= GARG_STRETCH;
plFlame.RelativeToAbsolute(GetPlacement());

FLOAT3D vNormDir;
AnglesToDirectionVector(plFlame.pl_OrientationAngle, vNormDir);
plFlame.pl_PositionVector += vNormDir*5.1f;

// 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();
};


привет всем
SeriousAlexej Пятница, 16.03.2012, 09:54 | Сообщение # 1312


Serious Editor
Сообщений: 1245
Награды: 52
Замечания: 0%
 
MaSterCliff,
Quote (MaSterCliff)
CPlacement3D plFlame;
plFlame = GetPlacement();
plFlame.pl_OrientationAngle = ANGLE3D(5.0f,5.0f,5.0f);
plFlame.pl_PositionVector= GARG_STRETCH;
plFlame.RelativeToAbsolute(GetPlacement());

Попробуй вставить вместо этого это:
Code

CPlacement3D plFlame = CPlacement3D(FLOAT3D(0,1,0),ANGLE3D(0,0,0));
plFlame.RelativeToAbsolute(GetPlacement());


И удали
Quote (MaSterCliff)
FLOAT3D vNormDir;
AnglesToDirectionVector(plFlame.pl_OrientationAngle, vNormDir);
plFlame.pl_PositionVector += vNormDir*5.1f;


MaSterCliff Пятница, 16.03.2012, 12:04 | Сообщение # 1313


Сообщений: 4
Награды: 0
Замечания: 0%
 
SeriousAlexej, а теперь у меня огонь не видимый на полу только это
Прикрепления: 2972812.jpg (21.7 Kb)
Сообщение отредактировал MaSterCliff - Пятница, 16.03.2012, 12:30


привет всем
thecre Пятница, 16.03.2012, 13:26 | Сообщение # 1314


Сообщений: 3449
Награды: 28
Замечания: 0%
 


Heming_Hitrowski Пятница, 16.03.2012, 13:28 | Сообщение # 1315


Double Jumper
Сообщений: 885
Награды: 32
Замечания: 0%
 


MaSterCliff Пятница, 16.03.2012, 15:55 | Сообщение # 1316


Сообщений: 4
Награды: 0
Замечания: 0%
 
Heming_Hitrowski, CREATER, ладно я к вам ещё вернусь я буду регатся и регатся вы же меня знаете я не угомоный и да CREATER, ты зря написал про меня на сайте от моего же лица ты сам это слово и ещё
Heming_Hitrowski, я хотел извиниться а вот хрен тебе ты меня сдал ты не задумался что я извиниться хотел а ты, короче если это сотрут у меня эта фотка будет я докажу


привет всем
Wynerros Пятница, 16.03.2012, 16:27 | Сообщение # 1317


Ground Angel
Сообщений: 3108
Награды: 9
Замечания: 20%
 


До сих пор в топе загрузок и просмотров...
Неужели я тоже оставил свой след на этом сайте? А ведь я здесь уже целых двенадцать лет...
Удалил свои старые карты из профиля, на кой они мне. Маппер из меня никудышный.


Мое железо:
CPU - Ryzen 7 2700x
MB - MSI B450M Mortar Max
RAM - 2x16 ADATA XPG GAMMIX D20 3200 mhz
GPU - Palit RTX 2060 StormX 6g
Heming_Hitrowski Пятница, 16.03.2012, 16:34 | Сообщение # 1318


Double Jumper
Сообщений: 885
Награды: 32
Замечания: 0%
 
MaSterCliff, Плачь и регайся дальше, (удалено). Может, поймешь, что тебе здесь уже никто не поможет.
Сообщение отредактировал Heming_Hitrowski - Пятница, 16.03.2012, 16:38


SLAwww Пятница, 16.03.2012, 20:13 | Сообщение # 1319


Рряа? ^..^
Сообщений: 2398
Награды: 27
Замечания: 0%
 
Heming_Hitrowski, CREATER, вам должно быть стыдно. Вы ведь сами не сможете решить проблему с CPlacement3D, у Хемминга в моде, насколько помню, до сих пор игрока бросает тупо вверх при выстреле из обреза, зато поругать кого-нибудь - это пожалуйста. А мне стыдно из-за того, что я нахожусь в компании таких людей, как вы. Но человеку всё-таки помогу, без разницы, кто он. Вот так я делал атаку для огнемётчика:
Code
  FirebugAttack(EVoid) {
     StandingAnimFight();
  StartModelAnim(GRUNT_ANIM_FIRE, 0);
  PlaySound(m_soFire2, SOUND_FIREBUG_START, SOF_3D);
  m_iFlameTime=0;
  PlaySound(m_soFire1, SOUND_FIREBUG, SOF_3D|SOF_LOOP);
     while(m_iFlameTime<20) {
   CPlacement3D plFlameSource=GetPlacement();
   CPlacement3D plEnemy=CPlacement3D(FLOAT3D(0,0,0),ANGLE3D(0,0,0));
   if(m_penEnemy!=NULL) {
    plEnemy=m_penEnemy->GetPlacement();
    FLOAT fDist=(plFlameSource.pl_PositionVector-plEnemy.pl_PositionVector).Length();
    plEnemy.AbsoluteToRelative(plFlameSource);
    DirectionVectorToAngles(FLOAT3D(plEnemy.pl_PositionVector(1),0.0f,plEnemy.pl_PositionVector(3)),plEnemy.pl_OrientationAngle);
    plEnemy.pl_OrientationAngle(2)=90.0f-ACos((plEnemy.pl_PositionVector(2)-1.0f)/fDist);
    if(plEnemy.pl_OrientationAngle(2)>70.0f||
    plEnemy.pl_OrientationAngle(2)<-70.0f||
    plEnemy.pl_OrientationAngle(1)>70.0f||
    plEnemy.pl_OrientationAngle(1)<-70.0f) {
     m_soFire1.Stop();
     PlaySound(m_soFire2, SOUND_FIREBUG_STOP, SOF_3D);  
     return EReturn();
    }
   }
   CPlacement3D plFlamePlacement=CPlacement3D(FIREPOS_FIREBUG,plEnemy.pl_OrientationAngle);
   plFlamePlacement.RelativeToAbsolute(plFlameSource);
   plFlameSource=plFlamePlacement;
   CEntityPointer penFlame = CreateEntity(plFlameSource, CLASS_PROJECTILE);
         ELaunchProjectile eLaunch;
   eLaunch.penLauncher = this;
   eLaunch.prtType = PRT_FLAME_GRUNT;
   penFlame->Initialize(eLaunch);
   if (m_penFlame!=NULL && !(m_penFlame->GetFlags()&ENF_DELETED)) {
    ((CProjectile&)*m_penFlame).m_penParticles = penFlame;
   }
   ((CProjectile&)*penFlame).m_penParticles = this;
   m_penFlame = penFlame;
   autowait(0.1f);
   m_iFlameTime++;
  }
  m_soFire1.Stop();
  PlaySound(m_soFire2, SOUND_FIREBUG_STOP, SOF_3D);
autowait(FRnd()*0.333f);
     return EEnd();
   };

Пришлось создать дополнительный вид снаряда в 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.

and so ended our search.
thecre Суббота, 17.03.2012, 04:04 | Сообщение # 1320


Сообщений: 3449
Награды: 28
Замечания: 0%
 
Quote (SLAwww)
зато поругать кого-нибудь - это пожалуйста

Извини, SLAwww, но за все время я давно успел сложить о нем не самое приятное впечатление. Я бы никогда не помог человеку, назвавшему меня или моего товарища уродом.
Quote (SLAwww)
Вы ведь сами не сможете решить проблему с CPlacement3D, у Хемминга в моде, насколько помню, до сих пор игрока бросает тупо вверх при выстреле из обреза, зато поругать кого-нибудь - это пожалуйста.

Heming, я чего-то не знаю? Раз есть проблема, что ты молчал?
Сообщение отредактировал CREATER - Воскресенье, 18.03.2012, 12:14


Поиск:

Статистика