亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vehicle_chopper.cpp

?? hl2 source code. Do not use it illegal.
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
#include "cbase.h"
#if 0

// KEEPING this file around for reference for a while. 
// The helicopter is now derived from CBaseHelicopter.


/***
*
*	Copyright (c) 1999, Valve LLC. All rights reserved.
*	
*	This product contains software technology licensed from Id 
*	Software, Inc. ("Id Technology").  Id Technology (c) 1996 Id Software, Inc. 
*	All Rights Reserved.
*
*   This source code contains proprietary and confidential information of
*   Valve LLC and its suppliers.  Access to this code is restricted to
*   persons who have executed a written SDK license with Valve.  Any access,
*   use or distribution of this code by or to any unlicensed person is illegal.
*
****/

#include "AI_Network.h"
#include "AI_Default.h"
#include "AI_Schedule.h"
#include "AI_Hull.h"
#include "AI_Node.h"
#include "AI_Task.h"
#include "entitylist.h"
#include "basecombatweapon.h"
#include "soundenvelope.h"
#include "gib.h"
#include "gamerules.h"
#include "ammodef.h"
#include "grenade_homer.h"
#include "ndebugoverlay.h"
#include "globals.h"


// -------------------------------------
// Bone controllers
// -------------------------------------
#define CHOPPER_BC_GUN_YAW			0
#define CHOPPER_BC_GUN_PITCH		1
#define CHOPPER_BC_POD_PITCH		2

// -------------------------------------
// Attachment points
// -------------------------------------
#define CHOPPER_AP_GUN_TIP			1
#define CHOPPER_AP_GUN_BASE			2
#define CHOPPER_AP_RR_POD_TIP		3 
#define CHOPPER_AP_RL_POD_TIP		4 
#define CHOPPER_AP_LR_POD_TIP		5 
#define CHOPPER_AP_LL_POD_TIP		6 
#define CHOPPER_AP_RR_POD_BASE		7 
#define CHOPPER_AP_RL_POD_BASE		8 
#define CHOPPER_AP_LR_POD_BASE		9 
#define CHOPPER_AP_LL_POD_BASE		10 


#define CHOPPER_MAX_SPEED			400.0f
#define CHOPPER_MAX_FIRING_SPEED	250.0f
#define CHOPPER_MIN_ROCKET_DIST		1000.0f
#define CHOPPER_MAX_GUN_DIST		2000.0f

class CNPC_Helicopter : public CAI_BaseNPC
{
	DECLARE_CLASS( CNPC_Helicopter, CAI_BaseNPC );
public:

	DECLARE_DATADESC();

	void Spawn( void );
	void Precache( void );
	
	void Event_Killed( const CTakeDamageInfo &info );

	int  BloodColor( void ) { return DONT_BLEED; }
	void GibMonster( void );

	void SetObjectCollisionBox( void )
	{
		SetAbsMins( GetAbsOrigin() + Vector( -300, -300, -172) );
		SetAbsMaxs( GetAbsOrigin() + Vector(300, 300, 8) );
	}

	Class_T Classify ( void ) { return CLASS_COMBINE; }

	void HuntThink( void );
	void FlyTouch( CBaseEntity *pOther );
	void CrashTouch( CBaseEntity *pOther );
	void DyingThink( void );
	void StartupUse( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
	void NullThink( void );

	void	ShowDamage( void );
	void	Flight( void );

	void	AimRocketGun(void);
	void	FireRocket(  Vector vLaunchPos, Vector vLaunchDir  );
	bool	FireGun( void );

	int		OnTakeDamage_Alive( const CTakeDamageInfo &info );
	void	TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr );

	void	GunOn( CBaseEntity *pActivator, CBaseEntity *pCaller, string_t targetEntity );
	void	GunOff( CBaseEntity *pActivator, CBaseEntity *pCaller, string_t targetEntity );
	void	MissileOn( CBaseEntity *pActivator, CBaseEntity *pCaller, string_t targetEntity );
	void	MissileOff( CBaseEntity *pActivator, CBaseEntity *pCaller, string_t targetEntity );

	void	DrawDebugGeometryOverlays(void);
	
	~CNPC_Helicopter();

	int				m_iRockets;
	float			m_flForce;
	float			m_flNextRocket;
	int				m_fHelicopterFlags;

	Vector			m_vecTarget;
	Vector			m_posTarget;

	Vector			m_vecDesired;
	Vector			m_posDesired;

	Vector			m_vecGoal;

	Vector			m_angGun;
	Vector			m_angPod;

	float			m_flLastSeen;
	float			m_flPrevSeen;

	CSoundPatch*	m_pRotorSound;

	int				m_iSpriteTexture;
	int				m_iExplode;
	int				m_iBodyGibs;
	int				m_iAmmoType;

	float			m_flGoalSpeed;		// Goal speed
	float			m_flInitialSpeed;		// Instanteous initial speed

	int				m_iDoSmokePuff;

	COutputEvent	m_AtTarget;			// Fired when pathcorner has been reached
	COutputEvent	m_LeaveTarget;		// Fired when pathcorner is left

};
LINK_ENTITY_TO_CLASS( znpc_helicopter, CNPC_Helicopter );

BEGIN_DATADESC( CNPC_Helicopter )

	DEFINE_FUNCTION( CNPC_Helicopter, HuntThink ),
	DEFINE_FUNCTION( CNPC_Helicopter, FlyTouch ),

	DEFINE_FIELD( CNPC_Helicopter, m_iRockets,			FIELD_INTEGER ),
	DEFINE_FIELD( CNPC_Helicopter, m_flForce,			FIELD_FLOAT ),
	DEFINE_FIELD( CNPC_Helicopter, m_flNextRocket,		FIELD_TIME ),
	DEFINE_FIELD( CNPC_Helicopter, m_fHelicopterFlags,	FIELD_INTEGER),
	DEFINE_FIELD( CNPC_Helicopter, m_vecTarget,			FIELD_VECTOR ),
	DEFINE_FIELD( CNPC_Helicopter, m_posTarget,			FIELD_POSITION_VECTOR ),
	DEFINE_FIELD( CNPC_Helicopter, m_vecDesired,		FIELD_VECTOR ),
	DEFINE_FIELD( CNPC_Helicopter, m_posDesired,		FIELD_POSITION_VECTOR ),
	DEFINE_FIELD( CNPC_Helicopter, m_vecGoal,			FIELD_VECTOR ),
	DEFINE_FIELD( CNPC_Helicopter, m_angGun,			FIELD_VECTOR ),
	DEFINE_FIELD( CNPC_Helicopter, m_angPod,			FIELD_VECTOR ),
	DEFINE_FIELD( CNPC_Helicopter, m_flLastSeen,		FIELD_TIME ),
	DEFINE_FIELD( CNPC_Helicopter, m_flPrevSeen,		FIELD_TIME ),
	DEFINE_SOUNDPATCH( CNPC_Helicopter, m_pRotorSound ),
//	DEFINE_FIELD( CNPC_Helicopter, m_iSpriteTexture,	FIELD_INTEGER ),
//	DEFINE_FIELD( CNPC_Helicopter, m_iExplode,			FIELD_INTEGER ),
//	DEFINE_FIELD( CNPC_Helicopter, m_iBodyGibs,			FIELD_INTEGER ),
	DEFINE_FIELD( CNPC_Helicopter, m_flGoalSpeed,		FIELD_FLOAT ),
	DEFINE_FIELD( CNPC_Helicopter, m_iDoSmokePuff,		FIELD_INTEGER ),
	DEFINE_FIELD( CNPC_Helicopter, m_iAmmoType,			FIELD_INTEGER ),

	DEFINE_KEYFIELD( CNPC_Helicopter, m_flInitialSpeed, FIELD_FLOAT, "InitialSpeed" ),

	// Inputs
	DEFINE_INPUTFUNC( CNPC_Helicopter,	FIELD_VOID,		"GunOn",		GunOn		),
	DEFINE_INPUTFUNC( CNPC_Helicopter,	FIELD_VOID,		"GunOff",		GunOff		),
	DEFINE_INPUTFUNC( CNPC_Helicopter,	FIELD_VOID,		"MissileOn",	MissileOn	),
	DEFINE_INPUTFUNC( CNPC_Helicopter,	FIELD_VOID,		"MissileOff",	MissileOff	),

	// Outputs
	DEFINE_OUTPUT(CNPC_Helicopter, m_AtTarget,			"AtPathCorner" ),
	DEFINE_OUTPUT(CNPC_Helicopter, m_LeaveTarget,		"LeavePathCorner" ),//<<TEMP>> Undone

	// Function pointers
	DEFINE_FUNCTION( CNPC_Helicopter, StartupUse ),

END_DATADESC()

//------------------------------------------------------------------------------
// Purpose : Inputs
// Input   :
// Output  :
//------------------------------------------------------------------------------
void CNPC_Helicopter::GunOn( CBaseEntity *pActivator, CBaseEntity *pCaller, string_t targetEntity )
{
	m_fHelicopterFlags |= BITS_HELICOPTER_GUN_ON;
}

void CNPC_Helicopter::GunOff( CBaseEntity *pActivator, CBaseEntity *pCaller, string_t targetEntity )
{
	m_fHelicopterFlags &= ~BITS_HELICOPTER_GUN_ON;
}

void CNPC_Helicopter::MissileOn( CBaseEntity *pActivator, CBaseEntity *pCaller, string_t targetEntity )
{
	m_fHelicopterFlags |= BITS_HELICOPTER_MISSILE_ON;
}

void CNPC_Helicopter::MissileOff( CBaseEntity *pActivator, CBaseEntity *pCaller, string_t targetEntity )
{
	m_fHelicopterFlags &= ~BITS_HELICOPTER_MISSILE_ON;
}

//------------------------------------------------------------------------------
// Purpose :
// Input   :
// Output  :
//------------------------------------------------------------------------------
void CNPC_Helicopter::Spawn( void )
{
	Precache( );
	// motor
	SetMoveType( MOVETYPE_FLY );
	SetSolid( SOLID_BBOX );

	m_iAmmoType = g_pGameRules->GetAmmoDef()->Index("MediumRound"); 
	
	SetModel( "models/attack_helicopter.mdl" );

	UTIL_SetSize( this, Vector( -32, -32, -64 ), Vector( 32, 32, 0 ) );
	Relink();

	
	m_iHealth = 100;

	m_flFieldOfView = -0.707; // 270 degrees

	m_nSequence = 0;
	ResetSequenceInfo( );
	m_flCycle = 0;

	InitBoneControllers();

	if (m_spawnflags & SF_WAITFORTRIGGER)
	{
		SetUse( StartupUse );
	}
	else
	{
		SetThink( HuntThink );
		SetTouch( FlyTouch );
		SetNextThink( gpGlobals->curtime + 1.0 );
	}

	m_iRockets			= 10;
	m_fHelicopterFlags	= BITS_HELICOPTER_MISSILE_ON | BITS_HELICOPTER_GUN_ON;

	// Get the rotor sound started up.
	CSoundEnvelopeController &controller = CSoundEnvelopeController::GetController();

	m_takedamage = DAMAGE_AIM;

	m_pRotorSound	= controller.SoundCreate( edict(), CHAN_STATIC, "vehicles/chopper_rotor2.wav", 0.2 );
}


void CNPC_Helicopter::Precache( void )
{
	engine->PrecacheModel("models/attack_helicopter.mdl");
	engine->PrecacheModel("models/combine_soldier.mdl");

	engine->PrecacheSound("vehicles/chopper_rotor1.wav");
	engine->PrecacheSound("vehicles/chopper_rotor2.wav");
	engine->PrecacheSound("vehicles/chopper_rotor3.wav");
	engine->PrecacheSound("vehicles/chopper_whine1.wav");

	engine->PrecacheSound("weapons/mortarhit.wav");

	m_iSpriteTexture = engine->PrecacheModel( "sprites/white.vmt" );

	engine->PrecacheSound("weapons/ar2/ar2_fire2.wav");//<<TEMP>>temp sound

	engine->PrecacheModel("sprites/lgtning.vmt");

	// Missile
	engine->PrecacheSound("weapons/stinger_fire1.wav");
	engine->PrecacheModel("models/weapons/w_missile.mdl");

#if 0 // These don't port yet
	m_iExplode	= engine->PrecacheModel( "sprites/fexplo.vmt" );
	m_iBodyGibs = engine->PrecacheModel( "models/metalplategibs_green.mdl" );
	UTIL_PrecacheOther( "hvr_rocket" );
#endif
}


//-----------------------------------------------------------------------------
// Purpose: Override base class to add display of fly direction
// Input  :
// Output : 
//-----------------------------------------------------------------------------
void CNPC_Helicopter::DrawDebugGeometryOverlays(void) 
{
	if (m_pfnThink!= NULL)
	{
		// ------------------------------
		// Draw route if requested
		// ------------------------------
		if (m_debugOverlays & OVERLAY_NPC_ROUTE_BIT)
		{
			NDebugOverlay::Line(GetAbsOrigin(), m_posDesired, 0,0,255, true, 0);
		}
	}
	BaseClass::DrawDebugGeometryOverlays();
}

//------------------------------------------------------------------------------
// Purpose :
// Input   :
// Output  :
//------------------------------------------------------------------------------
void CNPC_Helicopter::NullThink( void )
{
	StudioFrameAdvance( );
	SetNextThink( gpGlobals->curtime + 0.5 );
}


void CNPC_Helicopter::StartupUse( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value )
{
	m_flGoalSpeed = m_flInitialSpeed;

	SetThink( HuntThink );
	SetTouch( FlyTouch );
	SetNextThink( gpGlobals->curtime + 0.1f );
	SetUse( NULL );
}


void CNPC_Helicopter::Event_Killed( const CTakeDamageInfo &info )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品综合| 精品视频资源站| 日韩精品一区二区三区四区 | 欧美日韩免费高清一区色橹橹 | 久久er99精品| 久久综合99re88久久爱| 国产成人无遮挡在线视频| 国产亚洲美州欧州综合国| 成人h动漫精品一区二区| 亚洲你懂的在线视频| 6080日韩午夜伦伦午夜伦| 麻豆久久久久久久| 国产精品美女视频| 欧美三电影在线| 韩国v欧美v日本v亚洲v| 中文字幕欧美一| 欧美理论片在线| 国产精品538一区二区在线| 亚洲欧洲日产国码二区| 欧美精品在线一区二区| 国产精品一区二区在线播放| 亚洲手机成人高清视频| 欧美一区二区三区四区久久| 国产盗摄视频一区二区三区| 亚洲自拍偷拍网站| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 亚洲精品乱码久久久久| 欧美一二三区在线| 欧美成人伊人久久综合网| 国产精品一区一区三区| 亚洲男同1069视频| 精品乱人伦小说| 91精品办公室少妇高潮对白| 美女国产一区二区三区| 亚洲免费观看在线视频| 精品欧美一区二区三区精品久久| 91亚洲国产成人精品一区二区三 | 91麻豆免费视频| 美腿丝袜亚洲色图| 一区二区高清视频在线观看| 26uuu色噜噜精品一区二区| 欧美影院精品一区| 成人sese在线| 久久草av在线| 亚洲国产精品久久久男人的天堂| 国产欧美一区二区精品婷婷| 欧美久久高跟鞋激| 日本道在线观看一区二区| 国产乱码精品一区二区三区五月婷 | 欧美激情在线一区二区| 高清不卡在线观看av| 精品国产免费一区二区三区香蕉 | 一卡二卡三卡日韩欧美| 91麻豆国产福利精品| 国产亚洲自拍一区| 国产福利91精品一区| 精品国产污网站| 国产不卡视频一区| 成人免费小视频| 欧美色偷偷大香| 美国十次综合导航| 久久精品亚洲乱码伦伦中文| 波多野结衣中文字幕一区| 亚洲综合一区二区三区| 欧美精品国产精品| 成人少妇影院yyyy| 亚洲国产精品一区二区www在线 | 欧美日韩一区二区欧美激情| 亚洲成av人影院| 欧美精品一区二区久久婷婷| 在线免费不卡视频| 午夜精品久久久久久久99樱桃| 久久天天做天天爱综合色| 成人激情校园春色| 国产精品久久久久久久第一福利 | 一区二区三区资源| 国产一区二区三区久久悠悠色av| 欧美日韩一区在线| 在线亚洲高清视频| 国产剧情av麻豆香蕉精品| 国内精品伊人久久久久影院对白| 美女被吸乳得到大胸91| 麻豆国产一区二区| 国产在线精品一区二区三区不卡| 国产制服丝袜一区| 国产91精品免费| 99久久夜色精品国产网站| a亚洲天堂av| 日本久久电影网| 欧美老肥妇做.爰bbww| 7777精品伊人久久久大香线蕉完整版| 欧美日本一道本| 日韩免费看的电影| 国产日产亚洲精品系列| 17c精品麻豆一区二区免费| 亚洲精选视频免费看| 亚洲福利视频导航| 免费成人美女在线观看.| 国产老妇另类xxxxx| eeuss鲁片一区二区三区在线看| 97aⅴ精品视频一二三区| 欧美日韩一区二区三区四区| 日韩精品一区在线| 中文字幕在线观看一区二区| 亚洲一区视频在线观看视频| 免费在线观看精品| 成人福利视频在线| 欧美日本精品一区二区三区| 精品蜜桃在线看| 亚洲视频资源在线| 免费看欧美女人艹b| 丁香五精品蜜臀久久久久99网站| 在线观看国产日韩| 亚洲精品一区二区三区四区高清| 国产精品久久福利| 日本不卡123| 91视频精品在这里| 91精品国产91热久久久做人人| 国产无一区二区| 丝袜亚洲另类丝袜在线| 丰满白嫩尤物一区二区| 欧美日本一区二区| 国产精品久久久久毛片软件| 秋霞电影一区二区| 色婷婷一区二区| 久久综合国产精品| 天天综合日日夜夜精品| 成人黄色免费短视频| 91精品国产一区二区三区香蕉| 亚洲婷婷综合色高清在线| 经典一区二区三区| 欧美日韩在线播放| 日韩伦理av电影| 国产精品一区免费在线观看| 欧美精选一区二区| 亚洲欧洲综合另类| 国产乱色国产精品免费视频| 制服丝袜中文字幕一区| 亚洲精品国产一区二区三区四区在线| 国产一区二区三区香蕉 | 99久久久久久| 久久久亚洲高清| 欧美aaa在线| 欧美精品在线视频| 一区二区欧美精品| 99re视频精品| 国产精品热久久久久夜色精品三区 | 亚洲女人的天堂| 东方欧美亚洲色图在线| 久久欧美中文字幕| 男女男精品视频| 欧美久久一二区| 亚洲成av人在线观看| 在线观看日韩精品| 亚洲乱码中文字幕| 91丝袜美腿高跟国产极品老师| 欧美国产禁国产网站cc| 国产高清精品久久久久| 欧美精品一区二区三区四区| 美女一区二区视频| 日韩欧美中文字幕公布| 日韩黄色在线观看| 在线成人av影院| 偷拍日韩校园综合在线| 欧美日产在线观看| 婷婷久久综合九色国产成人| 欧美日韩精品电影| 石原莉奈在线亚洲二区| 911精品国产一区二区在线| 午夜电影一区二区三区| 3d动漫精品啪啪1区2区免费| 日韩国产欧美在线播放| 日韩欧美一级片| 国产尤物一区二区在线| 久久久久久久综合| 风间由美一区二区av101| 中文字幕国产一区二区| 不卡视频免费播放| 亚洲男同1069视频| 欧美日韩中文另类| 蜜桃av噜噜一区| 久久久久久久一区| a在线欧美一区| 亚洲综合视频网| 日韩欧美一区二区免费| 国产一区二区电影| 国产精品传媒在线| 在线免费观看一区| 久久精品国产免费看久久精品| 26uuu亚洲| 91日韩精品一区| 天天综合天天综合色| 久久久精品日韩欧美| aa级大片欧美| 天天色综合天天| 久久久久国产精品麻豆| 99国产麻豆精品| 日本伊人色综合网| 中文字幕乱码久久午夜不卡| 欧美性色aⅴ视频一区日韩精品|