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

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

?? aimbot.cpp

?? 我對他如何控制準星、顯示敵友很好奇
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// 
// Online Game Cheats Client.dll hook
// Copyright (c) system   2001-2002
// Copyright (c) bunny771 2001-2002
// 
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// 
// NOTE:
// GNU license doesn't cover Engine directory.
// Content of Engine directory is copyrighted (c) 1999, 2000, by Valve LLC
// and it is licensed under Valve's proprietary license (see original HL SDK).
// 

#include <windows.h>

#include <stdlib.h>
#include <math.h>
#undef NDEBUG
#include <assert.h>
#include <memory.h>
#include <map>
#include <vector>
#include <fstream>

#include "engine/wrect.h"
#include "cl_dll.h"
#include "cdll_int.h"
#include "util_vector.h"
#include "cl_entity.h"
#include "common/com_model.h"
#include "common/event_api.h"
#include "engine/pmtrace.h" 
#include "engine/pm_defs.h"


#include "aimbot.h"
#include "cvar.h"
#include "client.h"
#include "interpreter.h"

#define BOUND_VALUE(var,min,max) if((var)>(max)){(var)=(max);};if((var)<(min)){(var)=(min);}
#define M_PI 3.14159265358979f

using namespace std;

//===================================================================================
BoneAimbot gAimbot;
#define gAimbot This define is to prevent usage of gAimbot in this file.

extern float mainViewOrigin[3],mainViewAngles[3];

//===================================================================================
void VectorAngles( const float *forward, float *angles )
{
	float	tmp, yaw, pitch;
	
	if (forward[1] == 0 && forward[0] == 0)
	{
		yaw = 0;
		if (forward[2] > 0)
			pitch = 90.0;
		else
			pitch = 270.0;
	}
	else
	{
		yaw = (float)(atan2(forward[1], forward[0]) * 180.0 / M_PI);
		
		if (yaw < 0) yaw += 360.0;

		tmp = (float)sqrt (forward[0]*forward[0] + forward[1]*forward[1]);
		
		pitch = (float)(atan2(forward[2], tmp) * 180 / M_PI);
	}
	
	angles[0] = pitch;
	angles[1] = yaw;
	angles[2] = 0;
}

//====================================================================================
bool pathFree(float* from,float* to)
{
	pmtrace_t tr;
	gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );

	gEngfuncs.pEventAPI->EV_PlayerTrace( from, to, PM_GLASS_IGNORE, me.ent->index, &tr );

	return ( tr.fraction == 1.0 ); 
}

//====================================================================================
bool IsAimingAtMe( int ax )
{
	vec3_t entViewOfs;
	vec3_t localViewOfs;

	cl_entity_s* ent_ax = vPlayers[ax].getEnt();
	cl_entity_s* ent_bx = me.ent;

	if ( ent_ax->curstate.usehull == 0 )
	{
	entViewOfs[0] = ent_ax->origin[0];
	entViewOfs[1] = ent_ax->origin[1];
	entViewOfs[2] = ent_ax->origin[2] + 17;
	}
	else
	{
	entViewOfs[0] = ent_ax->origin[0];
	entViewOfs[1] = ent_ax->origin[1];
	entViewOfs[2] = ent_ax->origin[2] + 12;
	}

	if ( ent_bx->curstate.usehull == 0 )
	{
	localViewOfs[0] = ent_bx->origin[0];
	localViewOfs[1] = ent_bx->origin[1];
	localViewOfs[2] = ent_bx->origin[2] + 17;
	}
	else
	{
	localViewOfs[0] = ent_bx->origin[0];
	localViewOfs[1] = ent_bx->origin[1];
	localViewOfs[2] = ent_bx->origin[2] + 12;
	}

	vec3_t m_vTraceVector;
	vec3_t m_vAimAngles;
	vec3_t m_vTempAngles;

	m_vTraceVector[0] = localViewOfs[0] - entViewOfs[0];
	m_vTraceVector[1] = localViewOfs[1] - entViewOfs[1];
	m_vTraceVector[2] = localViewOfs[2] - entViewOfs[2];

	VectorAngles(m_vTraceVector, m_vAimAngles);

	m_vAimAngles[0] *= -1;

	double variationPitch = m_vAimAngles[0] - ent_ax->angles[0];
	double variationYaw   = m_vAimAngles[1] - ent_ax->angles[1];

	if( variationPitch < 0     )  { variationPitch += 360.0; }
	if( variationYaw   < 0     )  { variationYaw   += 360.0; }
	
	if( variationPitch > 180.0 )  { variationPitch = 360.0 - variationPitch; }
	if( variationYaw   > 180.0 )  { variationYaw   = 360.0 - variationYaw;   }

	if( variationPitch<2 && variationYaw<3 ) { return true; }

	return false;
}

//===================================================================================
static void PredictTarget(int index,float *pred)
{
	if (cvar.pred)
	{
			cl_entity_s* ent = vPlayers[index].getEnt();
			int  historyIndex = (ent->current_position+HISTORY_MAX-cvar.predback)%HISTORY_MAX;
			
			vec3_t vFromOrigin , vToOrigin , vDeltaOrigin,vPredictedOrigin;

			vFromOrigin = ent->ph[historyIndex].origin;
			vToOrigin   = ent->ph[ent->current_position].origin;
			vDeltaOrigin = vToOrigin - vFromOrigin;

			vDeltaOrigin[0] *= cvar.predahead;
			vDeltaOrigin[1] *= cvar.predahead;
			vDeltaOrigin[2] *= cvar.predahead;

			vPredictedOrigin = ent->origin + vDeltaOrigin;
			VectorCopy(vPredictedOrigin,pred);
	}
	else 
	{
			VectorCopy(vPlayers[index].getEnt()->origin,pred);
	}
}

//===================================================================================
double OriginAimbot::GetAimingFov(int ax)
{
	double vec[3], view[3];
	double dot;	
	
	float* origin = vPlayers[ax].getEnt()->origin;
	view[0] = origin[0] - me.pmEyePos[0];
	view[1] = origin[1] - me.pmEyePos[1];
	view[2] = origin[2] - me.pmEyePos[2];

	dot = sqrt(view[0] * view[0] + view[1] * view[1] + view[2] * view[2]);
	dot = 1/dot;

	vec[0] = view[0] * dot;
	vec[1] = view[1] * dot;
	vec[2] = view[2] * dot;
	
	view[0] =  sin((me.viewAngles[1] + 90) * (M_PI / 180));
	view[1] = -cos((me.viewAngles[1] + 90) * (M_PI / 180));
	view[2] = -sin( me.viewAngles[0] * (M_PI / 180));	
	
	dot = view[0] * vec[0] + view[1] * vec[1] + view[2] * vec[2];
	
	return dot;
}

//===================================================================================
void OriginAimbot::calcFovangleAndVisibility(int ax)
{ 
	PlayerInfo& r = vPlayers[ax];
	r.fovangle = (float)((1.0-GetAimingFov(ax))*360.0); 
	
	// visibility: 
	if(0) {}
	else if(!GetAimingTeam(ax)) { r.visible = true; }
	else if(r.fovangle>10)      { r.visible = pathFree(vPlayers[ax].getEnt()->origin, me.pmEyePos); }
	else                        { r.visible = (TargetRegion(ax)!=NULL); }
}



//===================================================================================
void OriginAimbot::findTarget()
{
	// target locking
	if( cvar.lock && target!=-1 && vPlayers[target].getPVS() && GetPlayerVisX(target) )
	{
		return;
	}

	// scan for a new target
	target=-1;
	for (int ax=0;ax<vPlayers.size();ax++)
	if  ( 
		  vPlayers[ax].getPVS() 
		  && GetPlayerVisX(ax)     
		  && GetAimingTeam(ax)    
		  && vPlayers[ax].fovangle<cvar.fov 
		 )
	{
		if( target == -1 )                                       { target = ax; continue; }

		switch(cvar.mode)
		{
		default:
		case 0: // distance based 
			if( vPlayers[ax].visible  && !vPlayers[target].visible )  { target = ax; break; }
			if( vPlayers[ax].distance <  vPlayers[target].distance )  { target = ax; break; }
			break;
		case 1: // fov based
			if( vPlayers[ax].visible  && !vPlayers[target].visible )  { target = ax; break; }
			if( GetAimingFov(ax) >   GetAimingFov(target)  )          { target = ax; break; }
			break;
		case 2: // points based
			if( vPlayers[ax].points   >  vPlayers[target].points   )  { target = ax; break; }
			break;
		}
	} 
}

//==============================================================================
void OriginAimbot::draw()
{
	for (int ax=0;ax<vPlayers.size();ax++) 
		if (vPlayers[ax].getPVS() ) draw_player_vecs(ax);
}

//==============================================================================
void OriginAimbot::draw_player_vecs(int ax)
{
    // draw history:
	if(cvar.avdraw==2)
	{
		cl_entity_s* ent = vPlayers[ax].getEnt();
		int  historyIndex = ent->current_position;
		for(int i=0;i<HISTORY_MAX;i++)
		{
			gDrawFilledBoxAtLocation(ent->ph[historyIndex].origin,0xFFFFFFFF,1);

			// step back
			--historyIndex; if(historyIndex<0) historyIndex=(HISTORY_MAX-1);
			}
	}

	vec3_t aim_location, target_origin;
	vec3_t up, right, forward, playerAngles;

	vector<aimvec>::iterator pos, end;
	if (vPlayers[ax].getEnt()->curstate.usehull == 0)
	{
			pos = AimVecsS.begin();
			end = AimVecsS.end();
	} else {
			pos = AimVecsD.begin();
			end = AimVecsD.end();
	}


	// get predicted origin
	PredictTarget(ax,target_origin);

	// calculate aiming vectors
	playerAngles[0]=0;
	playerAngles[1]=vPlayers[ax].getEnt()->angles[1];
	playerAngles[2]=0;
	gEngfuncs.pfnAngleVectors (playerAngles, forward, right, up);
	forward[2] = -forward[2];

	register DWORD color = 0xFF1111FF;
	for (;pos!=end;++pos) 
	{
		VectorCopy(target_origin,aim_location);

		aim_location = aim_location + forward * pos->f;
		aim_location = aim_location + up * pos->h;
		aim_location = aim_location + right * pos->r;
		
		gDrawFilledBoxAtLocation(aim_location,color,1);
		color = 0xFFFFFFFF;
	}
}


//====================================================================================
aimvec* OriginAimbot::TargetRegion(int ax)
{
	vec3_t vecEnd, up, right, forward, EntViewOrg,PredOrg, playerAngles;
	PredictTarget(ax,PredOrg);
	
	vector<aimvec>::iterator si, end;
	if (vPlayers[ax].getEnt()->curstate.usehull == 0)
	{
		// loop AimVecsS
		si = AimVecsS.begin(); end = AimVecsS.end();
	} else {
		// loop AimVecsD
		si = AimVecsD.begin(); end = AimVecsD.end();
	}

    // calculate angle vectors
	playerAngles[0]=0;
	playerAngles[1]=vPlayers[ax].getEnt()->angles[1];
	playerAngles[2]=0;
    gEngfuncs.pfnAngleVectors (playerAngles, forward, right, up);
	forward[2] = -forward[2];

	// trace to aim vectors
	for (;si!=end;++si)
	{
		VectorCopy(PredOrg,EntViewOrg);

		EntViewOrg = EntViewOrg + forward * si->f;
		EntViewOrg = EntViewOrg + up * si->h;
        EntViewOrg = EntViewOrg + right * si->r;
		
		if(pathFree(me.pmEyePos,EntViewOrg)) return &(*si);
	}
	return NULL;
}

//==============================================================================
void OriginAimbot::CalcTargetSpot(float *out)
{
	vec3_t vecEnd, up, right, forward, EntViewOrg, playerAngles;
	cl_entity_s* ent = vPlayers[target].getEnt();
	
	// get predicted origin
	PredictTarget(target,out);

	// calculate angle vectors
	playerAngles[0]=0;
	playerAngles[1]=ent->angles[1];
	playerAngles[2]=0;
	gEngfuncs.pfnAngleVectors (playerAngles, forward, right, up);
	
	aimvec* si = TargetRegion(target);

	// calculate h, r, f
	float h=0,r=0,f=0;
	if (si)
	{
		f = si->f;
		h = si->h;
		r = si->r;
	}
	else 
	{
		if (ent->curstate.usehull==0 && AimVecsS.size()>0)
		{
			f = AimVecsS[0].f;
			h = AimVecsS[0].h;
			r = AimVecsS[0].r;
		}
		else
		{
			f = AimVecsD[0].f;
			h = AimVecsD[0].h;
			r = AimVecsD[0].r;
		}
	}
	if( cvar.randmax )
	{
		randomizer.next();
		h += randomizer.h;
		f += randomizer.f;
		r += randomizer.r;
	}

	// add aim vecs. (out=predicted origin)
	out[0] = out[0] + forward[0]*f + up[0]*h + right[0]*r;
	out[1] = out[1] + forward[1]*f + up[1]*h + right[1]*r;
	out[2] = out[2] + forward[2]*f + up[2]*h + right[2]*r;
}

//==============================================================================
void OriginAimbot::CalcVec_MeToTarget(float *view)
{
	float EntViewOrg[3];
	
	CalcTargetSpot(EntViewOrg);
	VectorCopy(EntViewOrg,aim_spot);

	view[0] = EntViewOrg[0] - me.pmEyePos[0];
	view[1] = EntViewOrg[1] - me.pmEyePos[1];
	view[2] = EntViewOrg[2] - me.pmEyePos[2];
}


//==============================================================================
void OriginAimbot::CalcViewAngles()
{
	float vec_to_target[3];
	CalcVec_MeToTarget( vec_to_target);

	VectorAngles(vec_to_target,aim_viewangles);
	aim_viewangles[0] *= -1;

	// aim_viewangles = 0..360 
	if (aim_viewangles[0]>180) aim_viewangles[0]-=360;
	if (aim_viewangles[1]>180) aim_viewangles[1]-=360;
	// aim_viewangles = -180..180 

	if(cvar.smooth!=0.0)
	{
		float diff[3];
		diff[0] = aim_viewangles[0]-me.viewAngles[0];
		diff[1] = aim_viewangles[1]-me.viewAngles[1];
		
		if (diff[0]>180)  diff[0]-=360;
		if (diff[1]>180)  diff[1]-=360;
		if (diff[0]<-180) diff[0]+=360;
		if (diff[1]<-180) diff[1]+=360;

		if     ( diff[0] >  cvar.smooth ) { aim_viewangles[0] = me.viewAngles[0]+cvar.smooth; }
		else if( diff[0] < -cvar.smooth ) { aim_viewangles[0] = me.viewAngles[0]-cvar.smooth; }
		if     ( diff[1] >  cvar.smooth ) { aim_viewangles[1] = me.viewAngles[1]+cvar.smooth; }
		else if( diff[1] < -cvar.smooth ) { aim_viewangles[1] = me.viewAngles[1]-cvar.smooth; }

		if (aim_viewangles[0]>180)  aim_viewangles[0]-=360;
		if (aim_viewangles[1]>180)  aim_viewangles[1]-=360;
		if (aim_viewangles[0]<-180) aim_viewangles[0]+=360;
		if (aim_viewangles[1]<-180) aim_viewangles[1]+=360;
	}
}


//===================================================================================
//===================================================================================
//===================================================================================
//===================================================================================
//===================================================================================
//===================================================================================
class DrawPoints
{
public:
	void aggregate(float* _origin, DWORD _color=0xFFFFFFFF, int _size=1);
	void draw_all ();

protected:
	// scheduled draw points
	struct ScheduledDrawPoint
	{
		ScheduledDrawPoint() : active(false) {}
		vec3_t origin;
		DWORD  color_compiled;
		int    size;
		bool   active;
	};
	enum { MAX_DRAW_POINTS=64 };
	std::vector<ScheduledDrawPoint> vecDrawPoints;//(64);
	int DrawPointsNextIndex;

public:
	DrawPoints() : DrawPointsNextIndex(0), vecDrawPoints(MAX_DRAW_POINTS) {}
};

//===================================================================================
void DrawPoints::aggregate(float* _origin, DWORD _color /*=0xFFFFFFFF*/, int _size /*=1*/ )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线一区二区视频| 欧美一区二区三区小说| 日韩有码一区二区三区| 91女厕偷拍女厕偷拍高清| 亚洲va欧美va人人爽午夜| 久久久不卡影院| 在线播放欧美女士性生活| 成人av在线一区二区三区| 日本成人在线电影网| 亚洲男人的天堂在线aⅴ视频| 日韩一级大片在线| 在线亚洲人成电影网站色www| 国产乱子伦视频一区二区三区| 性做久久久久久免费观看| 国产精品动漫网站| 久久亚洲一区二区三区四区| 欧美日韩精品高清| 在线免费观看不卡av| 成人综合在线视频| 国产综合久久久久久鬼色 | 一区二区三区四区激情| 久久久精品综合| 26uuu色噜噜精品一区二区| 51精品视频一区二区三区| 在线亚洲免费视频| 色偷偷一区二区三区| 色欧美乱欧美15图片| 精品国产乱码久久久久久闺蜜| 在线观看视频一区二区| 国产 欧美在线| 国产一区不卡视频| 久久99精品久久久久久国产越南| 水蜜桃久久夜色精品一区的特点| 亚洲精品免费在线播放| 自拍偷拍亚洲激情| 亚洲欧美视频一区| 一区二区高清免费观看影视大全| 亚洲女爱视频在线| 亚洲精品第一国产综合野| 亚洲欧美日韩在线播放| 亚洲免费在线观看| 一区二区三区.www| 亚洲高清在线精品| 亚洲成av人影院在线观看网| 天天av天天翘天天综合网| 亚洲成a人在线观看| 日本亚洲天堂网| 麻豆视频一区二区| 国产一区久久久| 国产成人自拍网| 99在线热播精品免费| 91天堂素人约啪| 国产视频一区二区在线| 欧美成人伊人久久综合网| 久久蜜桃香蕉精品一区二区三区| 久久免费电影网| 国产精品嫩草影院av蜜臀| 亚洲天堂中文字幕| 亚洲午夜影视影院在线观看| 日韩精品一区第一页| 91社区在线播放| 欧美丝袜丝交足nylons| 7777精品伊人久久久大香线蕉经典版下载 | 波多野结衣一区二区三区| 一本久久精品一区二区| 69成人精品免费视频| 久久综合九色综合97_久久久| 国产精品网友自拍| 亚洲图片自拍偷拍| 美女视频第一区二区三区免费观看网站 | 欧美日韩国产综合一区二区| 欧美不卡视频一区| 国产精品全国免费观看高清| 亚洲黄色免费电影| 久久精品国内一区二区三区 | 欧美日韩视频在线观看一区二区三区 | 本田岬高潮一区二区三区| 欧美图区在线视频| 久久久99久久| 亚洲成人精品在线观看| 国产福利一区在线| 欧美午夜电影网| 国产日韩精品一区二区浪潮av | 一区二区在线观看不卡| 久久精品国产亚洲一区二区三区| 成人18视频在线播放| 欧美美女喷水视频| 国产精品丝袜久久久久久app| 无吗不卡中文字幕| 成人精品免费看| 91精品国产综合久久福利软件| 日本一区二区成人| 日本亚洲电影天堂| 一本一道久久a久久精品| 日韩精品中文字幕一区| 亚洲欧美色一区| 国产精品1区二区.| 日韩一级大片在线| 亚洲福中文字幕伊人影院| 国产高清亚洲一区| 日韩午夜电影在线观看| 一区二区三区中文字幕电影| 成人自拍视频在线| www国产精品av| 亚洲成av人片一区二区三区| 91麻豆.com| 国产精品麻豆视频| 国产精品一区二区果冻传媒| 日韩午夜电影在线观看| 天天操天天色综合| 色老汉av一区二区三区| 亚洲欧洲日产国码二区| 风间由美一区二区av101| 精品欧美黑人一区二区三区| 三级一区在线视频先锋 | 国产人妖乱国产精品人妖| 欧美videossexotv100| 国产精品久久久久永久免费观看| 亚洲二区在线观看| 99久久精品国产导航| 日韩精品专区在线影院观看| 亚洲最新在线观看| 99久久精品国产一区二区三区| 精品免费视频一区二区| 日韩一区欧美二区| 在线观看不卡一区| 国产精品日产欧美久久久久| 极品少妇一区二区| 制服丝袜亚洲色图| 亚洲午夜av在线| 色一区在线观看| 国产精品九色蝌蚪自拍| 国产成人免费视频精品含羞草妖精 | av电影在线观看一区| 日产国产欧美视频一区精品| 一本大道综合伊人精品热热| 久久精品人人做| 精品一区二区三区香蕉蜜桃| 日韩一区二区三区免费看 | 欧美日韩成人激情| 中文字幕一区二区在线播放| 国产成人亚洲综合a∨猫咪| 精品免费日韩av| 麻豆成人免费电影| 777色狠狠一区二区三区| 视频一区二区不卡| 91精彩视频在线观看| 亚洲国产精品影院| 欧美日韩一区二区三区在线| 亚洲午夜久久久久久久久电影院 | 国产风韵犹存在线视精品| 欧美大片在线观看| 久久国产福利国产秒拍| 欧美成人艳星乳罩| 国产盗摄女厕一区二区三区| 国产日产欧产精品推荐色| 国产一区二区三区美女| 久久免费精品国产久精品久久久久| 美国十次了思思久久精品导航| 91精品国产色综合久久ai换脸| 日韩vs国产vs欧美| 欧美成人一区二区三区在线观看 | 成人性生交大片免费看中文| 久久久久成人黄色影片| 成人av免费在线| 国产精品美女久久久久久久久久久 | 亚洲精品中文字幕乱码三区| 色综合婷婷久久| 婷婷成人综合网| 日韩欧美aaaaaa| 亚洲国产cao| 久久久五月婷婷| 成人天堂资源www在线| 亚洲三级免费电影| 欧美日韩成人综合| 奇米色777欧美一区二区| 欧美国产日本韩| 在线观看免费视频综合| 日本欧美加勒比视频| 日韩一区二区三区视频| 久久国产成人午夜av影院| 亚洲同性gay激情无套| 欧美aaa在线| 国产人伦精品一区二区| 成人aa视频在线观看| 亚洲免费色视频| 欧洲一区二区三区免费视频| 国产一区高清在线| 亚洲欧美一区二区久久| 日韩一二在线观看| 成人福利电影精品一区二区在线观看| 欧美韩国日本不卡| 91精品国产91热久久久做人人| 国产精品中文欧美| 亚洲精选一二三| 日韩欧美123| 色婷婷久久久亚洲一区二区三区| 狠狠色丁香久久婷婷综合_中| 亚洲欧美一区二区视频| 欧美一级理论片|