Este mod es un homenaje a la saga de películas de alien usando como eslogan la clásica frase del marino colonial hudson "GAME OVER MAN"

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Articles

hola quería saber si alguien sabe como agregar un ataque de salto para el npc del alien para que pudiese alcanzar al jugador en sitios altos algo similar al ataque del headcrab de half-life ,teniendo haci un ataque cuerpo a cuerpo y otro saltando desde una larga distancia hacia el jugadorhola quería saber si alguien sabe como agregar un ataque de salto para el npc del alien para que pudiese alcanzar al jugador en sitios altos algo similar al ataque del headcrab de half-life teniendo haci un ataque cuerpo a cuerpo y otro saltando desde una larga distancia hacia el jugador
les agradeceria mucho su ayuda :)

hello wanted to know if anyone knows how to add a jump attack to the npc of the alien so that it could reach the player in high places something similar to the attack of the half-life headcrab, having made a melee attack and another jumping from a long distance to the playerhello wanted to know if anyone knows how to add a jump attack to the npc of the alien so that it could reach the player in high places something similar to the attack of the half-life headcrab having made a melee attack and another jumping from a long distance to the player
I would appreciate your help :)

/////////////////////////

comuniquense conmigo a través de un mensaje

communicate with me through a message

//=========================================================
// Drone xenomorph
//=========================================================

// UNDONE: Don't flinch every time you get hit


#include	"extdll.h"
#include	"util.h"
#include	"cbase.h"
#include	"monsters.h"
#include	"schedule.h"


//=========================================================
// Monster's Anim Events Go Here
//=========================================================
#define	DRONE_AE_ATTACK_RIGHT		0x01
#define	DRONE_AE_ATTACK_LEFT		0x02
#define	DRONE_AE_ATTACK_BOTH		0x03

#define DRONE_FLINCH_DELAY			2		// at most one flinch every n secs

class CDrone : public CBaseMonster
{
public:
	void Spawn( void );
	void Precache( void );
	void SetYawSpeed( void );
	int  Classify ( void );
	void HandleAnimEvent( MonsterEvent_t *pEvent );

	int IgnoreConditions ( void );

	static	TYPEDESCRIPTION m_SaveData[];

	float m_flNextFlinch;

	void PainSound( void );
        void DeathSound( void );
	void AlertSound( void );
	void IdleSound( void );
	void AttackSound( void );

	static const char *pAttackSounds[];
	static const char *pIdleSounds[];
	static const char *pAlertSounds[];
	static const char *pPainSounds[];
	static const char *pAttackHitSounds[];
	static const char *pAttackMissSounds[];
        static const char *pDeathSounds[];

	// No range attacks
	BOOL CheckRangeAttack1 ( float flDot, float flDist ) { return FALSE; }
	BOOL CheckRangeAttack2 ( float flDot, float flDist ) { return FALSE; }
	int TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType );
};

LINK_ENTITY_TO_CLASS( monster_drone, CDrone );

const char *CDrone::pAttackHitSounds[] = 
{
	"zombie/claw_strike1.wav",
	"zombie/claw_strike2.wav",
	"zombie/claw_strike3.wav",
};

const char *CDrone::pAttackMissSounds[] = 
{
	"zombie/claw_miss1.wav",
	"zombie/claw_miss2.wav",
};

const char *CDrone::pAttackSounds[] = 
{
	"alien/ATTACKSWIPE_1.wav",
	"alien/ATTACKSWIPE_2.wav",
	"alien/ATTACKSWIPE_3.wav",
	"alien/ATTACKSWIPE_4.wav",
};

const char *CDrone::pIdleSounds[] = 
{
	"alien/al_idle1.wav",
	"alien/al_idle2.wav",
	"alien/al_idle3.wav",
	"alien/al_idle4.wav",
};

const char *CDrone::pAlertSounds[] = 
{
	"alien/al_alert1.wav",
	"alien/al_alert2.wav",
	"alien/al_alert3.wav",
};

const char *CDrone::pPainSounds[] = 
{
	"alien/al_pain1.wav",
	"alien/al_pain2.wav",
};

const char *CDrone::pDeathSounds[] = 
{
	"alien/al_die1.wav",
	"alien/al_die2.wav",
    "alien/al_die3.wav",
};

//=========================================================
// Classify - indicates this monster's place in the 
// relationship table.
//=========================================================
int	CDrone :: Classify ( void )
{
	return	CLASS_ALIEN_MONSTER;
}

//=========================================================
// SetYawSpeed - allows each sequence to have a different
// turn rate associated with it.
//=========================================================
void CDrone :: SetYawSpeed ( void )
{
	int ys;

	ys = 220;

#if 0
	switch ( m_Activity )
	{
	case ACT_WALK:		
		ys = 250;	
		break;
	case ACT_RUN:		
		ys = 270;
	}
#endif

	pev->yaw_speed = ys;
}

int CDrone :: TakeDamage( entvars_t *pevInflictor, entvars_t *pevAttacker, float flDamage, int bitsDamageType )
{
	// Take 30% damage from bullets
	if ( bitsDamageType == DMG_BULLET )
	{
		Vector vecDir = pev->origin - (pevInflictor->absmin + pevInflictor->absmax) * 0.5;
		vecDir = vecDir.Normalize();
		float flForce = DamageForce( flDamage );
		pev->velocity = pev->velocity + vecDir * flForce;
		flDamage *= 0.3;
	}

	// HACK HACK -- until we fix this.
	if ( IsAlive() )
		PainSound();
	return CBaseMonster::TakeDamage( pevInflictor, pevAttacker, flDamage, bitsDamageType );
}

void CDrone :: PainSound( void )
{
	int pitch = 95 + RANDOM_LONG(0,9);

	if (RANDOM_LONG(0,5) < 2)
		EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pPainSounds[ RANDOM_LONG(0,ARRAYSIZE(pPainSounds)-1) ], 1.0, ATTN_NORM, 0, pitch );
}

void CDrone :: DeathSound( void )
{
	int pitch = 95 + RANDOM_LONG(0,9);

	if (RANDOM_LONG(0,5) < 2)
		EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pDeathSounds[ RANDOM_LONG(0,ARRAYSIZE(pDeathSounds)-1) ], 1.0, ATTN_NORM, 0, pitch );
}

void CDrone :: AlertSound( void )
{
	int pitch = 95 + RANDOM_LONG(0,9);

	EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pAlertSounds[ RANDOM_LONG(0,ARRAYSIZE(pAlertSounds)-1) ], 1.0, ATTN_NORM, 0, pitch );
}

void CDrone :: IdleSound( void )
{
	int pitch = 95 + RANDOM_LONG(0,9);

	// Play a random idle sound
	EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pIdleSounds[ RANDOM_LONG(0,ARRAYSIZE(pIdleSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
}

void CDrone :: AttackSound( void )
{
	// Play a random attack sound
	EMIT_SOUND_DYN ( ENT(pev), CHAN_VOICE, pAttackSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
}


//=========================================================
// HandleAnimEvent - catches the monster-specific messages
// that occur when tagged animation frames are played.
//=========================================================
void CDrone :: HandleAnimEvent( MonsterEvent_t *pEvent )
{
	switch( pEvent->event )
	{
		case DRONE_AE_ATTACK_RIGHT:
		{
			// do stuff for this event.
	//		ALERT( at_console, "Slash right!\n" );
			CBaseEntity *pHurt = CheckTraceHullAttack( 70, gSkillData.zombieDmgOneSlash, DMG_SLASH );
			if ( pHurt )
			{
				if ( pHurt->pev->flags & (FL_MONSTER|FL_CLIENT) )
				{
					pHurt->pev->punchangle.z = -18;
					pHurt->pev->punchangle.x = 5;
					pHurt->pev->velocity = pHurt->pev->velocity - gpGlobals->v_right * 100;
				}
				// Play a random attack hit sound
				EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackHitSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackHitSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
			}
			else // Play a random attack miss sound
				EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackMissSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackMissSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );

			if (RANDOM_LONG(0,1))
				AttackSound();
		}
		break;

		case DRONE_AE_ATTACK_LEFT:
		{
			// do stuff for this event.
	//		ALERT( at_console, "Slash left!\n" );
			CBaseEntity *pHurt = CheckTraceHullAttack( 70, gSkillData.zombieDmgOneSlash, DMG_SLASH );
			if ( pHurt )
			{
				if ( pHurt->pev->flags & (FL_MONSTER|FL_CLIENT) )
				{
					pHurt->pev->punchangle.z = 18;
					pHurt->pev->punchangle.x = 5;
					pHurt->pev->velocity = pHurt->pev->velocity + gpGlobals->v_right * 100;
				}
				EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackHitSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackHitSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
			}
			else
				EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackMissSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackMissSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );

			if (RANDOM_LONG(0,1))
				AttackSound();
		}
		break;

		case DRONE_AE_ATTACK_BOTH:
		{
			// do stuff for this event.
			CBaseEntity *pHurt = CheckTraceHullAttack( 70, gSkillData.zombieDmgBothSlash, DMG_SLASH );
			if ( pHurt )
			{
				if ( pHurt->pev->flags & (FL_MONSTER|FL_CLIENT) )
				{
					pHurt->pev->punchangle.x = 5;
					pHurt->pev->velocity = pHurt->pev->velocity + gpGlobals->v_forward * -100;
				}
				EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackHitSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackHitSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );
			}
			else
				EMIT_SOUND_DYN ( ENT(pev), CHAN_WEAPON, pAttackMissSounds[ RANDOM_LONG(0,ARRAYSIZE(pAttackMissSounds)-1) ], 1.0, ATTN_NORM, 0, 100 + RANDOM_LONG(-5,5) );

			if (RANDOM_LONG(0,1))
				AttackSound();
		}
		break;

		default:
			CBaseMonster::HandleAnimEvent( pEvent );
			break;
	}
}

//=========================================================
// Spawn
//=========================================================
void CDrone :: Spawn()
{
	Precache( );

	SET_MODEL(ENT(pev), "models/drone.mdl");
	UTIL_SetSize( pev, VEC_HUMAN_HULL_MIN, VEC_HUMAN_HULL_MAX );

	pev->solid			= SOLID_SLIDEBOX;
	pev->movetype		= MOVETYPE_STEP;
	m_bloodColor		= BLOOD_COLOR_YELLOW;
	pev->health			= gSkillData.zombieHealth;
	pev->view_ofs		= VEC_VIEW;// position of the eyes relative to monster's origin.
	m_flFieldOfView		= VIEW_FIELD_FULL;// indicates the width of this monster's forward view cone ( as a dotproduct result )
	m_MonsterState		= MONSTERSTATE_NONE;
	m_afCapability		= bits_CAP_HEAR | bits_CAP_AUTO_DOORS | bits_CAP_OPEN_DOORS | bits_CAP_TURN_HEAD;

	MonsterInit();
}

//=========================================================
// Precache - precaches all resources this monster needs
//=========================================================
void CDrone :: Precache()
{
	int i;

	PRECACHE_MODEL("models/drone.mdl");


	for ( i = 0; i < ARRAYSIZE( pAttackHitSounds ); i++ )
		PRECACHE_SOUND((char *)pAttackHitSounds[i]);

	for ( i = 0; i < ARRAYSIZE( pAttackMissSounds ); i++ )
		PRECACHE_SOUND((char *)pAttackMissSounds[i]);

	for ( i = 0; i < ARRAYSIZE( pAttackSounds ); i++ )
		PRECACHE_SOUND((char *)pAttackSounds[i]);

	for ( i = 0; i < ARRAYSIZE( pIdleSounds ); i++ )
		PRECACHE_SOUND((char *)pIdleSounds[i]);

	for ( i = 0; i < ARRAYSIZE( pAlertSounds ); i++ )
		PRECACHE_SOUND((char *)pAlertSounds[i]);

	for ( i = 0; i < ARRAYSIZE( pPainSounds ); i++ )
		PRECACHE_SOUND((char *)pPainSounds[i]);

	for ( i = 0; i < ARRAYSIZE( pDeathSounds ); i++ )
		PRECACHE_SOUND((char *)pDeathSounds[i]);
}	



//=========================================================
// AI Schedules Specific to this monster
//=========================================================



int CDrone::IgnoreConditions ( void )
{
	int iIgnore = CBaseMonster::IgnoreConditions();

	if ((m_Activity == ACT_MELEE_ATTACK1) || (m_Activity == ACT_MELEE_ATTACK1))
	{
#if 0
		if (pev->health < 20)
			iIgnore |= (bits_COND_LIGHT_DAMAGE|bits_COND_HEAVY_DAMAGE);
		else
#endif			
		if (m_flNextFlinch >= gpGlobals->time)
			iIgnore |= (bits_COND_LIGHT_DAMAGE|bits_COND_HEAVY_DAMAGE);
	}

	if ((m_Activity == ACT_SMALL_FLINCH) || (m_Activity == ACT_BIG_FLINCH))
	{
		if (m_flNextFlinch < gpGlobals->time)
			m_flNextFlinch = gpGlobals->time + DRONE_FLINCH_DELAY;
	}
	return iIgnore;
	
}

//=========================================================
// DEAD BARNEY PROP
//
// Designer selects a pose in worldcraft, 0 through num_poses-1
// this value is added to what is selected as the 'first dead pose'
// among the monster's normal animations. All dead poses must
// appear sequentially in the model file. Be sure and set
// the m_iFirstPose properly!
//
//=========================================================
class CDeadDrone : public CBaseMonster
{
public:
	void Spawn( void );
	int	Classify ( void ) { return	CLASS_ALIEN_MONSTER; }

	void KeyValue( KeyValueData *pkvd );

	int	m_iPose;// which sequence to display	-- temporary, don't need to save
	static char *m_szPoses[5];
};

char *CDeadDrone::m_szPoses[] = { "back", "side", "stomach", "testtube1", "testtube2", };

void CDeadDrone::KeyValue( KeyValueData *pkvd )
{
	if (FStrEq(pkvd->szKeyName, "pose"))
	{
		m_iPose = atoi(pkvd->szValue);
		pkvd->fHandled = TRUE;
	}
	else 
		CBaseMonster::KeyValue( pkvd );
}

LINK_ENTITY_TO_CLASS( monster_drone_dead, CDeadDrone );

//=========================================================
// ********** DeadBarney SPAWN **********
//=========================================================
void CDeadDrone :: Spawn( )
{
	PRECACHE_MODEL("models/drone.mdl");
	SET_MODEL(ENT(pev), "models/drone.mdl");

	pev->effects		= 0;
	pev->yaw_speed		= 8;
	pev->sequence		= 0;
	m_bloodColor		= BLOOD_COLOR_YELLOW;

	pev->sequence = LookupSequence( m_szPoses[m_iPose] );
	if (pev->sequence == -1)
	{
		ALERT ( at_console, "Dead drone with bad pose\n" );
	}
	// Corpses have less health
	pev->health			= 8;

	MonsterInitDead();
}



información sobre el desarrollo del mod

información sobre el desarrollo del mod

News 7 comments

Para las personas que estén interesadas en este proyecto es bienvenida. For people who are interested in this project is welcome

Add file RSS Files
Demo - ALIENS Game Over Man!

Demo - ALIENS Game Over Man!

Demo 1 comment

= AVPworld = Because I was very busy during the last years with high school and other personal projects I could not continue with the Aliens-Game-Over-Man...

SDK base - Aliens Game over man

SDK base - Aliens Game over man

Script

= AVPworld = This is the sdk of the Dlls and the client of the mod if you are interested and if you also want to share it.

aliensnpcmodels1

aliensnpcmodels1

Model Pack 5 comments

models and sounds from aliens game over man modelos y sonidos de aliens game over man

Post comment Comments  (0 - 10 of 124)
SweetRamona
SweetRamona - - 5,114 comments

Is this still alive?

Reply Good karma Bad karma0 votes
joseproXD
joseproXD - - 12 comments

cuando estará listo el mod estoy muy emocionado de pronto aparecen nuevos xenomorfo

Reply Good karma Bad karma0 votes
szdd9
szdd9 - - 62 comments

HI AVPworld!

Good work!

Could you share the source code of "egg"? I am very appreciate it.

Reply Good karma Bad karma+2 votes
Guest
Guest - - 690,368 comments

are you going to continue the mod??? please don't cancel it!!! is awesome as far i see!!!

Reply Good karma Bad karma+1 vote
KOYK_GR
KOYK_GR - - 593 comments

Hi not sure what this mod is about, but if you are going to "remake" aliens can you also make it coop?

Reply Good karma Bad karma+1 vote
Guest
Guest - - 690,368 comments

are you going to upload the rest of the models or is just a sample of what we will see in the mod????

Reply Good karma Bad karma0 votes
AVPworld Creator
AVPworld - - 59 comments

if it is a small sample

Reply Good karma+1 vote
Guest
Guest - - 690,368 comments

falto el modelo del cientifico femenino pero estan buenos sige asi

Reply Good karma Bad karma0 votes
AVPworld Creator
AVPworld - - 59 comments

esos son un 20% de los modelos del juego
gracias :)

Reply Good karma+1 vote
DoktorWhiplash
DoktorWhiplash - - 246 comments

Looks cool actually I love the Alien and Aliens movies.Please put in Jones playable character

Reply Good karma Bad karma+2 votes
AVPworld Creator
AVPworld - - 59 comments

yes :)

Reply Good karma+2 votes
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account:

X
Tags

FPS