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

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

?? client.cpp

?? 我對他如何控制準星、顯示敵友很好奇
?? CPP
?? 第 1 頁 / 共 5 頁
字號:

	// update bestplayer
	r.bestplayer = false;
	bool foundbetter = false;
	for(int i=0;i<vPlayers.size();i++)
	{
		if     ( r.ratio < vPlayers[i].ratio ) foundbetter = true;
		else if( r.ratio > vPlayers[i].ratio ) vPlayers[i].bestplayer=false;
	}
	if(!foundbetter) r.bestplayer = true;

	
	// score handling:
	if(idx==me.ent->index)
	{
		static int lastfrags=0;
		static int lastdeaths=0;

		if(me.headshots>r.frags || r.frags==0) 
		{ 
			// reset statistics
			me.headshots = 0; 
			me.hspercent = 0;
			bGotHeadshot = false; 
			lastfrags    = r.frags;
			lastdeaths   = r.deaths;
		}
		else
		{
			if(bGotHeadshot)         { ++me.headshots; }

			double den = r.frags ? (double)r.frags : 1.0;
			me.hspercent = (double)me.headshots/den*100.0;

			if(cvar.saystats && (lastfrags!=r.frags || lastdeaths!=r.deaths ))
			{
				char tmp[128];
				switch(cvar.saystats)
				{
				case 1:	
					sprintf(tmp,"say frags:[%d] deaths:[%d] ratio:[%4.2f] headshots:[%d = %4.1f percent]",
						r.frags,r.deaths,r.ratio,me.headshots,me.hspercent);
					gEngfuncs.pfnClientCmd(tmp);
					break;
				case 2:
					char* tag = "&y";
					if( r.frags>lastfrags  ) tag = "&g";
					if( r.frags<lastfrags  ) tag = "&r";
					if( r.deaths>lastdeaths) tag = "&r";

					Con_Echo("%sfrags:[%d] deaths:[%d] ratio:[%4.2f] headshots:[%d = %4.1f percent]",
						tag,r.frags,r.deaths,r.ratio,me.headshots,me.hspercent);
					break;
				}
			}
		}
		bGotHeadshot = false;
		lastfrags    = r.frags;
		lastdeaths   = r.deaths;
	}

	return USER_MSG_CALL(ScoreInfo);
}

//========================================================================================
USER_MSG_INTERCEPT(TextMsg)
{
	updateLocalPlayer();

	BEGIN_READ(pbuf, iSize);
	int id = READ_BYTE();
	char* msg = READ_STRING();

	if( *msg )
	{
		if (!strcmp(msg, "#Bomb_Planted"))
		{
			fBombPlantedTime = ClientTime::current;
			bBombIsPlanted=true;
		}
		else if (!strcmp(msg, "#Target_Bombed"))
		{
			if (bBombIsPlanted)
			{
				iC4Timer = (int) ((ClientTime::current-fBombPlantedTime)+0.4999999);
				if(iC4Timer<0 || iC4Timer>120)  {  iC4Timer=0;  } 
				bBombIsPlanted=false;
			}
		}
		else if (!strcmp(msg, "#Bomb_Defused"))
		{
			bBombIsPlanted=false;
		}

	}

	return USER_MSG_CALL(TextMsg);
}

////==========================================================================
//static int UserMsgCDChallenge( const char *pszName, int iSize, void *pbuf)
//{
//		if(!cvar.cdauth) return 1;
//
//		Challenge challenge;
//
//		BEGIN_READ(pbuf,iSize);
//		challenge.version     = READ_SHORT();
//		challenge.data_int[0] = READ_LONG();
//		challenge.data_int[1] = READ_LONG();
//		challenge.data_int[2] = READ_LONG();
//		challenge.data_int[3] = READ_LONG();
//		challenge.data_int[4] = READ_LONG();
//	    
//		CalcReply(&challenge);
//
//		char buf[128];
//		sprintf(buf, "CDReply %x %x %x %x %x %x", challenge.version,
//			challenge.data_int[0],challenge.data_int[1],
//			challenge.data_int[2],challenge.data_int[3],
//			challenge.data_int[4]);
//		Con_Echo("CD auth %x",challenge.version);
//
//		sprintf(gHudMessage,"CD");
//		gHudTimer.countdown(1.2);
//
//		gEngfuncs.pfnClientCmd(buf);
//	return 1;
//}

//========================================================================================
void AtRoundStart(void);
USER_MSG_INTERCEPT(ResetHUD)
{
	updateLocalPlayer();

	bBombIsPlanted=false;
	if (iRounds) AtRoundStart();
	iRounds++;

	return USER_MSG_CALL(ResetHUD);
}

//========================================================================================
USER_MSG_INTERCEPT(WeaponList)
{
	updateLocalPlayer();
	playerItems.msgWeaponList(iSize,pbuf);
	return USER_MSG_CALL(WeaponList);
}

//========================================================================================
int	HookUserMsg (char *szMsgName, pfnUserMsgHook pfn)
{
	int ret = gEngfuncs.pfnHookUserMsg (szMsgName, pfn);

	#define REDIRECT_MESSAGE(name) \
		else if (!strcmp(szMsgName,#name)) \
		{ \
			name##Org = pfn; \
			return gEngfuncs.pfnHookUserMsg (szMsgName, UserMsg##name ); \
		}

	if(0){}
	REDIRECT_MESSAGE( TeamInfo    ) REDIRECT_MESSAGE( CurWeapon   )
	REDIRECT_MESSAGE( ScoreAttrib ) REDIRECT_MESSAGE( ScoreInfo   )
	REDIRECT_MESSAGE( SetFOV      ) REDIRECT_MESSAGE( TextMsg     )
	REDIRECT_MESSAGE( ResetHUD    ) REDIRECT_MESSAGE( WeaponList  )
	REDIRECT_MESSAGE( Money       ) REDIRECT_MESSAGE( Battery     )
	REDIRECT_MESSAGE( DeathMsg    ) REDIRECT_MESSAGE( Concuss     )
	REDIRECT_MESSAGE( SayText     ) 
	return ret;
}

//========================================================================================
int	( *OrigStudioDrawPlayer	)( int flags, struct entity_state_s *pplayer );
int	 NewStudioDrawPlayer ( int flags, struct entity_state_s *pplayer )
{
	int ret = OrigStudioDrawPlayer ( flags, pplayer );
	gAimbot.PostStudioDrawPlayer( flags, pplayer);
	return ret;
}



//========================================================================================
inline bool isEnemy(int ax)
{
	return (me.team != vPlayers[ax].team);
}

//========================================================================================
ColorEntry* PlayerColor(int ax)
{
	static ColorEntry colorDefault;
	if ((cvar.sglow) && ((vPlayers[ax].iInfo & 2) || (vPlayers[ax].iInfo & 4))) { return colorList.get(3); }
	if (cvar.tglow   && (ax == gAimbot.target))                  { return colorList.get(4); }
	
	if (vPlayers[ax].team == 1) { return colorList.get(1); }
	else                        { return colorList.get(2); }
}

//========================================================================================
HSPRITE ch_sniper=-1, sniper_scope=-1;
void drawCrosshair()
{
	if( me.inZoomMode ) { return; }

	int centerX = displayCenterX;
	int centerY = displayCenterY;
	ColorEntry* clr = colorList.get(0);
	int r=clr->r, g=clr->g, b=clr->b, a=clr->a;
	
	switch(cvar.cross)
	{
	case 1:
		gEngfuncs.pfnFillRGBA(centerX - 14, centerY, 9, 1,r,g,b,a);
		gEngfuncs.pfnFillRGBA(centerX +5,   centerY, 9, 1,r,g,b,a);
		gEngfuncs.pfnFillRGBA(centerX, centerY - 14, 1, 9,r,g,b,a);
		gEngfuncs.pfnFillRGBA(centerX, centerY +  5, 1, 9,r,g,b,a);
		gEngfuncs.pfnFillRGBA(centerX, centerY     , 1, 1,r,g,b,a); // center
		break;
	case 2:
		gEngfuncs.pfnFillRGBA(centerX - 14, centerY, 9,2,r,g,b,a); // left
		gEngfuncs.pfnFillRGBA(centerX +6,   centerY, 9,2,r,g,b,a); // right
		gEngfuncs.pfnFillRGBA(centerX, centerY - 14, 2,9,r,g,b,a); // top
		gEngfuncs.pfnFillRGBA(centerX, centerY +  7, 2,9,r,g,b,a); // bottom
		gEngfuncs.pfnFillRGBA(centerX, centerY     , 2,2,r,g,b,a); // center
		break;
	case 3:
		gEngfuncs.pfnFillRGBA(centerX-25,centerY,50,1,r,g,b,a);
		gEngfuncs.pfnFillRGBA(centerX,centerY-25,1,50,r,g,b,a);
		break;
	case 4:
		gEngfuncs.pfnFillRGBA(centerX-25,centerY,50,2,r,g,b,a);
		gEngfuncs.pfnFillRGBA(centerX,centerY-25,2,50,r,g,b,a);
		break;
	case 5:
		if(ch_sniper!=-1){
			gEngfuncs.pfnSPR_Set(ch_sniper,255,255,255);
			gEngfuncs.pfnSPR_DrawHoles(0,displayCenterX-128,displayCenterY-128,NULL);
		}	
		break;
	case 6:
		if(sniper_scope!=-1){
			gEngfuncs.pfnSPR_Set(sniper_scope,255,255,255);
			gEngfuncs.pfnSPR_DrawHoles(0,displayCenterX-128,displayCenterY-128,NULL);
		}	
		break;
	case 7:
		gEngfuncs.pfnFillRGBA(0,centerY,2*centerX,1,r,g,b,a);
		gEngfuncs.pfnFillRGBA(centerX,0,1,2*centerY,r,g,b,a);
		break;
	}
}


//========================================================================================
void handleContinuousZoom()
{
	if( cvar.czoom == 1000 ) // leave zoom mode
	{
		// reset zoom
		iCurrentFOV = 90;
		fCurrentFOV = 90.0;
		(*SetFOVOrg)("SetFOV", 1, &iCurrentFOV);
		
		// prevent further zooming
		cvar.czoom = 0; 
	} else 	{
		// advance/decrease zoom level
		iCurrentFOV -= cvar.czoom;
		BOUND_VALUE(iCurrentFOV,10,90);
		fCurrentFOV = iCurrentFOV;

		(*SetFOVOrg)("SetFOV", 1, &iCurrentFOV);
	}
}

//========================================================================================
char* gGetWeaponName( int weaponmodel )
{
	static char weapon[50];
	weapon[0]=0;

	model_s* mdl = IEngineStudio.GetModelByIndex( weaponmodel );
	if( !mdl ){ return weapon; }

	char* name = mdl->name;  if( !name )          { return weapon; }
	int len = strlen(name);  if( len>48 || len<10){ return weapon; }

	strcpy(weapon,name+9); len -=9;
	if(len>4)weapon[len-4]=(char)0;

	return weapon;
}


//========================================================================================
inline void gDrawBoxAtScreenXY( int x, int y, int r, int g, int b, int alpha, int radius=1)
{
	int radius2 = radius<<1;
	gEngfuncs.pfnFillRGBA(x-radius+2, y-radius, radius2-2,2,r,g,b,alpha);
	gEngfuncs.pfnFillRGBA(x-radius, y-radius, 2,radius2,r,g,b,alpha);
	gEngfuncs.pfnFillRGBA(x-radius, y+radius, radius2,2,r,g,b,alpha);
	gEngfuncs.pfnFillRGBA(x+radius, y-radius, 2,radius2+2,r,g,b,alpha);
}

//========================================================================================
void calcRadarPoint(float* origin, int& screenx, int& screeny)
{
	float dx  = origin[0] - me.pmEyePos[0];
	float dy  = origin[1] - me.pmEyePos[1];

    // rotate
	float x =  dy*me.minus_cos_yaw + dx*me.sin_yaw;
	float y =  dx*me.minus_cos_yaw - dy*me.sin_yaw;

	float& range = cvar.radar_range;
	if(fabs(x)>range || fabs(y)>range)
	{ 
		// clipping
		if(y>x)
		{
			if(y>-x) {
				x = range*x/y;
				y = range;
			}  else  {
				y = -range*y/x; 
				x = -range; 
			}
		} else {
			if(y>-x) {
				y = range*y/x; 
				x = range; 
			}  else  {
				x = -range*x/y;
				y = -range;
			}
		}
	}

	screenx = cvar.radar_x+int(x/cvar.radar_range*float(cvar.radar_size));
	screeny = cvar.radar_y+int(y/cvar.radar_range*float(cvar.radar_size));
}

//========================================================================================
void drawRadarPoint(float* origin,int r,int g,int b,bool blink=false)
{
	int screenx,screeny;
	calcRadarPoint(origin,screenx,screeny);
	if(!blink || blinkPhase){ gEngfuncs.pfnFillRGBA(screenx,screeny,3,3,r,g,b,255);}
}


//========================================================================================
void drawRadarFrame()
{
	int& centerx = cvar.radar_x;
	int& centery = cvar.radar_y;
	int& size    = cvar.radar_size;
	
	ColorEntry* clr;
	
	clr = colorList.get(12);
	tintArea(centerx-size, centery-size, 2*size+2, 2*size+2, clr);

	clr = colorList.get(11);
	gEngfuncs.pfnFillRGBA(centerx,centery-size,1,2*size,clr->r,clr->g,clr->b,clr->a);
	gEngfuncs.pfnFillRGBA(centerx-size,centery,2*size,1,clr->r,clr->g,clr->b,clr->a);
}


//========================================================================================
static OgcCommandMenu::Menu* curMenu = ogcMenu.baseMenu;
bool  menu_active = false;

//========================================================================================
bool gMenuActive(){ return menu_active; }

//========================================================================================
void drawMenu(  )
{
	if(!menu_active) return;
	if(!curMenu) { curMenu = ogcMenu.baseMenu; }

	vector<OgcCommandMenu::MenuEntry>& items = curMenu->items;

	int x=cvar.menu_x, y=cvar.menu_y, w=cvar.menu_w;
	enum{ TEXT_H = 20 };
	int title_h = TEXT_H+5;
	int frame_y = cvar.menu_y - title_h;
	int frame_h = items.size()*TEXT_H + title_h;

	// title background
	tintArea(x,frame_y,w,title_h,colorList.get(21));

	// upper background
	int h1 = curMenu->selection*TEXT_H;
	if(h1)
	{
		tintArea(x,y,w,h1,colorList.get(21));
		y+=h1;
	}
	
	// selection background
	tintArea(x,y,w,TEXT_H,colorList.get(22));
	y+=TEXT_H;

	// lower background
	int numItemsLeft = items.size() - curMenu->selection - 1;
	if(numItemsLeft>0)
	{
		tintArea(x,y,w,numItemsLeft*TEXT_H,colorList.get(21));
	}

	// draw frame
	register int c = 200;
	gEngfuncs.pfnFillRGBA(x,frame_y,w,1        ,c,c,c,c);
	gEngfuncs.pfnFillRGBA(x,frame_y,1,frame_h  ,c,c,c,c);
	gEngfuncs.pfnFillRGBA(x+w,frame_y,1,frame_h,c,c,c,c);
	gEngfuncs.pfnFillRGBA(x,frame_y+frame_h,w,1,c,c,c,c);
	gEngfuncs.pfnFillRGBA(x,cvar.menu_y,w+1,1  ,c,c,c,c);

	// title text
	gEngfuncs.pfnDrawSetTextColor (255,255,0);
	gEngfuncs.pfnDrawConsoleString(cvar.menu_x+10,frame_y+5, const_cast<char*>(curMenu->name.c_str()));
	

	// draw text
	y=cvar.menu_y+4;
	x+=4;
	for(int i=0;i<items.size();i++)
	{
		OgcCommandMenu::MenuEntry& item = items[i];

		ColorEntry* clr = colorList.get(23); // "menu_text"
		gEngfuncs.pfnDrawSetTextColor(clr->onebased_r,clr->onebased_g,clr->onebased_b);
		gEngfuncs.pfnDrawConsoleString(x,y,const_cast<char*>(item.name.c_str()));
		y+=TEXT_H;
	}
}

//========================================================================================
void menu_describe_current()
{
	if(!menu_active||!curMenu) return;
	OgcCommandMenu::MenuEntry& entry = curMenu->items[curMenu->selection];
	strcpy(gHudMessage, entry.description.c_str());
	gHudTimer.countdown(6);
}

//========================================================================================
void sendScriptSignal(const char* name)
{
	char signal[32];
	sprintf(signal,"sig%s",name);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人avav影音| 亚洲精品一线二线三线| 欧美精品在欧美一区二区少妇| 欧美日韩二区三区| 久久久影院官网| 伊人婷婷欧美激情| 国产一区二区0| 成人在线视频首页| 日韩一区二区高清| 亚洲免费观看高清完整版在线观看 | 亚洲成av人片观看| 国产高清不卡一区| 在线免费观看视频一区| 精品国产一区二区三区忘忧草| 国产精品电影一区二区| 首页欧美精品中文字幕| 成人h版在线观看| 欧美mv日韩mv亚洲| 欧美激情一区二区三区不卡| 日韩av电影天堂| 亚洲成av人片在线| 喷水一区二区三区| 欧美日韩免费观看一区二区三区 | 国产欧美一区二区三区鸳鸯浴 | 老司机精品视频一区二区三区| 色视频成人在线观看免| 国产精品久久久久久久久免费樱桃 | 成人国产精品视频| 国产日韩成人精品| 丁香亚洲综合激情啪啪综合| 久久这里只有精品6| 美女脱光内衣内裤视频久久网站| 欧美日韩1234| 午夜电影一区二区| 在线播放亚洲一区| 男女男精品网站| 日韩精品一区二区三区蜜臀| 国模套图日韩精品一区二区| 精品乱码亚洲一区二区不卡| 国产在线一区二区| 国产精品亲子乱子伦xxxx裸| 成人成人成人在线视频| 中文字幕不卡在线观看| 99视频在线精品| 亚洲精品成人在线| 在线播放日韩导航| 国产一区二区视频在线播放| 中文字幕久久午夜不卡| 日本道精品一区二区三区| 亚洲1区2区3区4区| 精品福利av导航| 国产精品69毛片高清亚洲| 国产精品第五页| 欧美日韩情趣电影| 国产一区二区三区免费观看| 欧美激情中文不卡| 欧美性猛交一区二区三区精品| 日韩成人一区二区| 国产三级欧美三级| 日本久久一区二区| 久久99精品国产| 自拍偷拍国产精品| 在线综合视频播放| 风间由美性色一区二区三区| 亚洲精品v日韩精品| 日韩欧美国产一区二区三区| 成人国产精品免费观看| 亚洲va欧美va天堂v国产综合| 精品国产乱码久久久久久闺蜜| 不卡在线观看av| 日本亚洲三级在线| 亚洲日本丝袜连裤袜办公室| 欧美精品久久久久久久多人混战 | 在线观看欧美日本| 激情五月婷婷综合网| 亚洲美女屁股眼交3| 日韩美女视频在线| 日本精品裸体写真集在线观看| 日本不卡视频在线| 亚洲日本乱码在线观看| 久久网站热最新地址| 欧美日韩国产成人在线免费| 丰满白嫩尤物一区二区| 奇米影视7777精品一区二区| 亚洲视频一区在线| 久久亚洲影视婷婷| 在线播放日韩导航| 欧美亚洲综合色| 99这里都是精品| 国产夫妻精品视频| 免费在线观看成人| 午夜不卡av在线| 亚洲最大成人网4388xx| 亚洲同性同志一二三专区| 久久久久久久综合狠狠综合| 91精品一区二区三区久久久久久| 色噜噜狠狠色综合中国| www.欧美日韩| 国产精品白丝jk白祙喷水网站| 日韩国产成人精品| 亚洲成人一二三| 亚洲一级不卡视频| 亚洲久草在线视频| 亚洲欧美另类综合偷拍| 国产精品的网站| 成人欧美一区二区三区黑人麻豆 | 亚洲另类春色国产| 国产精品成人免费在线| 日本一区二区三区电影| 中文字幕欧美区| 国产欧美一区二区精品婷婷| 国产亚洲精品aa| 国产欧美精品日韩区二区麻豆天美| 精品国产凹凸成av人导航| 日韩精品一区二区三区中文不卡| 91精品麻豆日日躁夜夜躁| 69堂国产成人免费视频| 日韩欧美高清dvd碟片| 欧美大片在线观看| 国产性色一区二区| 国产精品第一页第二页第三页| 亚洲婷婷综合久久一本伊一区 | 久久99久久久欧美国产| 韩国三级在线一区| 国产91丝袜在线观看| 国产成人自拍网| 91在线国产观看| 欧美色综合久久| 日韩美女视频在线| 国产人妖乱国产精品人妖| ...xxx性欧美| 亚洲午夜免费视频| 久久国产免费看| 成人一区在线观看| 在线观看亚洲专区| 日韩午夜激情av| 日本一区二区三区高清不卡| 亚洲九九爱视频| 日本午夜一本久久久综合| 国产成人免费视频网站高清观看视频| 成人av电影在线播放| 欧美日韩免费视频| 国产日韩欧美高清| 一区二区国产视频| 久久91精品久久久久久秒播| 国产成人在线视频网站| 欧美色欧美亚洲另类二区| 日韩精品一区二区三区在线| 国产精品素人视频| 婷婷亚洲久悠悠色悠在线播放| 经典三级在线一区| 日本高清不卡一区| 国产无遮挡一区二区三区毛片日本| 尤物在线观看一区| 精品一区二区三区视频| 色拍拍在线精品视频8848| 91精品国模一区二区三区| 国产精品嫩草影院av蜜臀| 午夜精品久久久久久久久久久| 狠狠久久亚洲欧美| 欧美日韩精品一区二区在线播放 | 亚洲永久免费av| 精品在线免费观看| 欧美亚洲动漫精品| 欧美激情自拍偷拍| 久久不见久久见免费视频1| 91麻豆精品秘密| 欧美电视剧免费观看| 亚洲欧美日韩国产综合在线 | 91尤物视频在线观看| 精品久久久网站| 亚洲在线中文字幕| caoporn国产一区二区| 欧美va日韩va| 视频一区视频二区中文| 91捆绑美女网站| 中文字幕欧美国产| 精品一区二区三区在线观看国产| 欧美日韩亚洲综合一区二区三区| 国产精品成人免费| 岛国精品一区二区| 久久久久久久久久久黄色| 免费一级片91| 欧美久久一二区| 亚洲午夜久久久久| av电影在线观看不卡| 久久久久久亚洲综合| 开心九九激情九九欧美日韩精美视频电影 | 欧美男生操女生| 亚洲欧洲制服丝袜| 99国产精品视频免费观看| 国产喂奶挤奶一区二区三区| 九九视频精品免费| 欧美精品一区二区三| 国产在线一区观看| 国产午夜精品一区二区三区四区| 久久精品国产亚洲aⅴ| 精品少妇一区二区三区| 精品中文字幕一区二区小辣椒| 精品久久久久久无|