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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aimbot.cpp

?? CS作弊器源代碼,用易語言編寫...簡單適用,適合新人!~~~~
?? 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*/ )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区免费视频| 亚洲婷婷综合色高清在线| 日本一区免费视频| 夜夜精品浪潮av一区二区三区| 免费观看在线色综合| 色婷婷精品久久二区二区蜜臀av| 欧美一二三区在线观看| 亚洲乱码国产乱码精品精小说 | 日韩毛片一二三区| 麻豆精品视频在线| 欧美日韩国产大片| 国产精品视频你懂的| 美脚の诱脚舐め脚责91 | 国产午夜精品美女毛片视频| 亚洲成人激情自拍| 色猫猫国产区一区二在线视频| 精品国产乱码久久久久久老虎| 日韩精品一二区| 91福利视频久久久久| 中文字幕一区在线观看视频| 国产在线精品国自产拍免费| 日韩一二三区不卡| 午夜精品一区二区三区电影天堂 | 欧美电影免费观看完整版| 亚洲美腿欧美偷拍| 成人午夜又粗又硬又大| 2023国产精品视频| 寂寞少妇一区二区三区| 欧美α欧美αv大片| 蜜臀精品一区二区三区在线观看 | 亚洲色大成网站www久久九九| 国产成人日日夜夜| 欧美国产精品专区| 懂色av一区二区在线播放| 精品国产免费久久| 狠狠色综合日日| 337p粉嫩大胆色噜噜噜噜亚洲| 视频一区二区中文字幕| 欧美一二三区精品| 久久精品国产久精国产爱| 日韩视频不卡中文| 韩国一区二区在线观看| 国产婷婷色一区二区三区四区| 国产精品99久久久久久久女警| 久久久www成人免费毛片麻豆| 国产精品一品视频| 日韩美女视频19| 欧美午夜精品一区二区蜜桃 | 日韩欧美国产电影| 国产一区二区三区日韩| 国产精品日韩成人| 色8久久精品久久久久久蜜| 午夜欧美视频在线观看| 精品99久久久久久| 成人午夜免费视频| 一区二区视频免费在线观看| 欧美日本不卡视频| 国产精华液一区二区三区| 国产精品久久久久国产精品日日| 91免费看片在线观看| 日日夜夜精品视频免费| 久久嫩草精品久久久精品 | 黄色日韩三级电影| 亚洲色图制服诱惑| 日韩一区二区三区视频在线| 国产成人午夜99999| 亚洲一区二区五区| 久久精品一区四区| 欧美主播一区二区三区美女| 麻豆成人在线观看| 亚洲欧洲一区二区在线播放| 欧美日韩成人综合| 成人性生交大片免费看中文网站| 亚洲精品国产精华液| 777久久久精品| 国产精品小仙女| 午夜精品免费在线观看| 日本一区免费视频| 欧美一区二区三区视频在线| 国产高清精品久久久久| 午夜婷婷国产麻豆精品| 国产午夜一区二区三区| 91麻豆精品国产91久久久更新时间| 国产电影一区二区三区| 午夜亚洲福利老司机| 亚洲欧洲www| 久久久九九九九| 欧美精品777| 色噜噜狠狠一区二区三区果冻| 青娱乐精品视频在线| 成人欧美一区二区三区白人| 日韩欧美的一区二区| 欧美日韩综合不卡| 成人美女视频在线观看| 麻豆91免费观看| 亚洲大尺度视频在线观看| 国产精品久久久久毛片软件| 精品久久久久久久久久久久包黑料| 99精品视频中文字幕| 国产乱码一区二区三区| 奇米一区二区三区av| 亚洲va韩国va欧美va精品 | 在线影视一区二区三区| 国产福利一区在线观看| 三级在线观看一区二区| 亚洲福利一区二区| 亚洲男人电影天堂| 中文字幕日本不卡| 国产亚洲视频系列| 精品国产1区2区3区| 欧美电影免费观看高清完整版| 欧美日韩综合不卡| 欧美日韩午夜精品| 欧美日韩一区二区三区在线看 | 久久一区二区三区国产精品| 日韩欧美一区二区免费| 欧美男同性恋视频网站| 91福利在线看| 欧美影院一区二区三区| 91老司机福利 在线| 色94色欧美sute亚洲线路一ni| 91成人在线观看喷潮| 欧美亚洲综合网| 欧美三级午夜理伦三级中视频| 色老汉一区二区三区| 欧美在线免费观看亚洲| 欧美日韩不卡视频| 91精品国产品国语在线不卡| 欧美日本在线播放| 91麻豆精品国产91久久久久久久久 | 欧美亚洲综合网| 欧美精品在线观看播放| 日韩一级片网站| www日韩大片| 国产精品乱人伦一区二区| 亚洲精品自拍动漫在线| 亚洲一区二区三区三| 香蕉成人伊视频在线观看| 天堂蜜桃一区二区三区| 久久99精品国产91久久来源| 丰满亚洲少妇av| 在线观看精品一区| 欧美一区二视频| 久久久久久电影| 亚洲精品乱码久久久久久| 亚州成人在线电影| 韩国av一区二区三区| 99久久精品久久久久久清纯| 精品视频一区二区不卡| 精品欧美一区二区三区精品久久| 国产午夜精品一区二区三区嫩草 | 中文字幕乱码一区二区免费| 亚洲天堂免费在线观看视频| 视频一区视频二区中文字幕| 国产九色sp调教91| 欧美在线三级电影| 国产午夜精品久久久久久免费视| 亚洲欧美日韩小说| 日产欧产美韩系列久久99| 成人免费视频视频| 欧美探花视频资源| 国产色产综合产在线视频| 亚洲午夜一区二区| 国产剧情av麻豆香蕉精品| 欧美日韩国产综合视频在线观看| 久久天堂av综合合色蜜桃网| 一区二区三区在线不卡| 精品一区二区三区在线播放视频 | 亚洲成a人片在线观看中文| 经典三级一区二区| 欧美熟乱第一页| 国产亚洲制服色| 男人的天堂久久精品| 91年精品国产| 91九色最新地址| 爽爽淫人综合网网站| 国产河南妇女毛片精品久久久 | 男人操女人的视频在线观看欧美| 91视频你懂的| 精品国产sm最大网站免费看| 亚洲一区二区三区中文字幕在线| 韩国成人福利片在线播放| 欧美日韩久久久久久| 国产精品国产自产拍在线| 国产最新精品精品你懂的| 欧美精品久久一区二区三区| 亚洲欧洲日产国码二区| 顶级嫩模精品视频在线看| 欧美大片免费久久精品三p| 一区二区三区四区中文字幕| 国产精品自拍在线| 日韩色在线观看| 热久久一区二区| 91精品国产综合久久国产大片| 亚洲一区精品在线| 日本丶国产丶欧美色综合| 亚洲欧美日韩久久精品| 91一区在线观看| 国产精品久久久久久久久果冻传媒| 国产二区国产一区在线观看|