Войти
ПрограммированиеФорум

Raven Software открыли исходники Jedi Knight II: Jedi Outcast и Jedi Academy (комментарии)

Страницы: 1 2 3 Следующая »
#0
17:15, 4 апр. 2013

Raven Software открыли исходники Jedi Knight II: Jedi Outcast и Jedi Academy (комментарии)

Это сообщение сгенерировано автоматически.

#1
17:15, 4 апр. 2013

Дабы не ждать публикации, добавлю коммент, что бы появилось на форуме :)

#2
18:59, 4 апр. 2013

Помню, потерял дар речи, когда обнаружил на руках у штурмовиков по пять пальцев на каждой руке.

#3
20:28, 4 апр. 2013
После знатной попойки для меня пять пальцев тоже были открытием...
#4
21:07, 4 апр. 2013

Опубликовал

#5
1:09, 5 апр. 2013
The best part of the code is this:

From tools/ModView/modview.cpp

if (gbStartMinimized)
{
  extern void FuckingWellSetTheDocumentNameAndDontBloodyIgnoreMeYouCunt(LPCSTR psDocName);
  FuckingWellSetTheDocumentNameAndDontBloodyIgnoreMeYouCunt("Untitled");
}

From modviewdoc.cpp

// None of this shit works, because whatever you set the current document to MS override it with a derived name,
//  and since the CWinApp class can't even ask what it's own fucking document pointer is without doing a hundred
//  lines of shit deep within MFC then I'm going to fuck the whole lot off by storing a pointer which I can then
//  use later in the CWinApp class to override the doc name. 
//
// All this fucking bollocks was because MS insist on doing their own switch-comparing so I can't pass in 'real'
//  switches, I have to use this '#' crap. Stupid fucking incompetent MS dickheads. Like how hard would it be to
//  pass command line switches to the app instead of just filenames?
//

#6
2:43, 5 апр. 2013

entryway, откуда текст?

#7
2:46, 5 апр. 2013

> From tools/ModView/modview.cpp

вообще, почитав код, удивляешься. про какие-то скрипты тут что-то вечно лечат, про орхетектуру. тут просто мешанина всего на всём и ничего, работает.

#8
8:48, 5 апр. 2013

По ссылкам какая-то лажа, перепроверте.

#9
9:23, 5 апр. 2013
/*
-------------------------
NPC_BSDroid_Pain
-------------------------
*/
void NPC_Droid_Pain( gentity_t *self, gentity_t *inflictor, gentity_t *other, const vec3_t point, int damage, int mod,int hitLoc )
{
int  anim;
float  pain_chance;
if ( self->NPC && self->NPC->ignorePain )
{
return;
}
VectorCopy( self->NPC->lastPathAngles, self->s.angles );
if ( self->client->NPC_class == CLASS_R5D2 )
{
pain_chance = NPC_GetPainChance( self, damage );
// Put it in pain
if ( mod == MOD_DEMP2 || mod == MOD_DEMP2_ALT || random() < pain_chance )  // Spin around in pain? Demp2 always does this
{
// Health is between 0-30 or was hit by a DEMP2 so pop his head
if ( self->health < 30 || mod == MOD_DEMP2 || mod == MOD_DEMP2_ALT )
{
if (!(self->spawnflags & 2))  // Doesn't have to ALWAYSDIE
{
if ((self->NPC->localState != LSTATE_SPINNING) &&
(!gi.G2API_GetSurfaceRenderStatus( &self->ghoul2[self->playerModel], "head" )))
{
gi.G2API_SetSurfaceOnOff( &self->ghoul2[self->playerModel], "head", TURN_OFF );
// G_PlayEffect( "small_chunks" , self->currentOrigin );
G_PlayEffect( "chunks/r5d2head", self->currentOrigin );
self->s.powerups |= ( 1 << PW_SHOCKED );
self->client->ps.powerups[PW_SHOCKED] = level.time + 3000;
TIMER_Set( self, "droidsmoketotal", 5000);
TIMER_Set( self, "droidspark", 100);
self->NPC->localState = LSTATE_SPINNING;
}
}
}
// Just give him normal pain for a little while
else
{
anim = self->client->ps.legsAnim;
if ( anim == BOTH_STAND2 )  // On two legs?
{
anim = BOTH_PAIN1;
}
else  // On three legs
{
anim = BOTH_PAIN2;
}
NPC_SetAnim( self, SETANIM_BOTH, anim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD );
// Spin around in pain
self->NPC->localState = LSTATE_SPINNING;
TIMER_Set( self, "roam", Q_irand(1000,2000));
}
}
}
else if (self->client->NPC_class == CLASS_MOUSE)
{
if ( mod == MOD_DEMP2 || mod == MOD_DEMP2_ALT )
{
self->NPC->localState = LSTATE_SPINNING;
self->s.powerups |= ( 1 << PW_SHOCKED );
self->client->ps.powerups[PW_SHOCKED] = level.time + 3000;
}
else
{
self->NPC->localState = LSTATE_BACKINGUP;
}
self->NPC->scriptFlags &= ~SCF_LOOK_FOR_ENEMIES;
}
else if ((self->client->NPC_class == CLASS_R2D2))
{
pain_chance = NPC_GetPainChance( self, damage );
if ( mod == MOD_DEMP2 || mod == MOD_DEMP2_ALT || random() < pain_chance )  // Spin around in pain? Demp2 always does this
{
anim = self->client->ps.legsAnim;
if ( anim == BOTH_STAND2 )  // On two legs?
{
anim = BOTH_PAIN1;
}
else  // On three legs
{
anim = BOTH_PAIN2;
}
NPC_SetAnim( self, SETANIM_BOTH, anim, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD );
// Spin around in pain
self->NPC->localState = LSTATE_SPINNING;
TIMER_Set( self, "roam", Q_irand(1000,2000));
}
}
else if ( self->client->NPC_class == CLASS_INTERROGATOR && ( mod == MOD_DEMP2 || mod == MOD_DEMP2_ALT ) && other )
{
vec3_t dir;
VectorSubtract( self->currentOrigin, other->currentOrigin, dir );
VectorNormalize( dir );
VectorMA( self->client->ps.velocity, 550, dir, self->client->ps.velocity );
self->client->ps.velocity[2] -= 127;
}
NPC_Pain( self, inflictor, other, point, damage, mod);
} 
(к сожалению табуляции полетели)
А вы говорите скрипты скрипты, долго пересобирать для AI проект, неспортивно. Странно, в кваке же всю жизнь были скрипты, тем более в 3-ей части, неужели нет...
#10
9:48, 5 апр. 2013

Изудродованный id tech движок судя по всему.
Плюс это 2002-2003 год, видимо выжимали производительность ;).

#11
11:15, 5 апр. 2013

Ну и кому они сейчас нужны, эти исходники ?

#12
11:34, 5 апр. 2013

2First
> Ну и кому они сейчас нужны, эти исходники ?
Лишний раз убедиться в истинности утверждения "В статьях все молодцы и пишут идеальный код, а в продакшене код говно."

#13
12:08, 5 апр. 2013

Почему файлы солюшенов по обеим ссылкам называются Jedi Academy ? В readme тоже самое.

#14
12:22, 5 апр. 2013

Enclave
глючит сайтик, попробуй еще...
а не - видимо пересобирали...

Страницы: 1 2 3 Следующая »
ПрограммированиеФорум

Тема в архиве.