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

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

?? console.cpp

?? 我對他如何控制準星、顯示敵友很好奇
?? CPP
字號:
// 
// 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 <string>
#include <vector>

#include "console.h"
#include "client.h"
#include "stringfinder.h"
#include "interpreter.h"
#include "color.h"

// global
OgcConsole gConsole;

//========================================================================================
void OgcConsole::draw(int con_x, int con_y, int con_w, int con_h)
{
	if(!active && !curHeight ) return;
	
	int nscroll = scrollEventCounter.get();
	for(int i=0;i<nscroll;i++)
	{
		// handle scrolling
		if( active ){
			if(curHeight!=con_h) 
			{ 
				curHeight += cvar.con_slidespeed; 
				if(curHeight>con_h) curHeight=con_h; 
			}
		} else {
			curHeight -= cvar.con_slidespeed; 
			if(curHeight<=0) { curHeight=0; return; }
		}
	}

	ColorEntry* color = colorList.get(17); // "con_back"
	tintArea(con_x,con_y,con_w,curHeight,color);

	int x = con_x+3;
	int y = con_y+curHeight-14;

	// advance blink:
	if(blinkTimer.expired())
	{
		blink = !blink;
		if(blink) { blinkTimer.countdown(0.2); }
		else      { blinkTimer.countdown(0.2); }
	}
	
	// draw cursor
	if(blink)
	{
		// get len of text to cursor.
		int length, height, ch_length;
		char  save;
		save = cursorpos[0]; cursorpos[0]=0;
		gEngfuncs.pfnDrawConsoleStringLen( editbuf, &length, &height );
		cursorpos[0]=save;

		// get cursor size:
		save = cursorpos[1]; cursorpos[1]=0;
		gEngfuncs.pfnDrawConsoleStringLen( cursorpos, &ch_length, &height );
		cursorpos[1]=save;
		if(!*cursorpos) ch_length=5;
        
        tintArea(x+length,y,ch_length,height-2, colorList.get(19)); // "con_text2"
	}

	color = colorList.get(20); // "con_edit"
	gEngfuncs.pfnDrawSetTextColor(color->onebased_r,color->onebased_g,color->onebased_b);
	gEngfuncs.pfnDrawConsoleString(x,y,editbuf);

	lines.reset();
	for(;;)
	{
		y-=14;
		if(y<con_y) break;
		
		string& curLine = lines.read(); 
		lines.prev();

		drawConsoleLine(curLine,x,y);
	}
}

//========================================================================================
void OgcConsole::echo(const char *fmt, ... )
{
	va_list va_alist;
	char buf[384];

	va_start (va_alist, fmt);
	_vsnprintf (buf, sizeof(buf), fmt, va_alist);
	va_end (va_alist);

	lines.add( buf );
}

//========================================================================================
void OgcConsole::say(const char* text, const char* name, int team )
{
	if(team==1) { echo("&r%s :", name); echo(" %s",text); }
	else        { echo("&b%s :", name); echo(" %s",text); }
}


//========================================================================================
void OgcConsole::setcolortag(unsigned char ch, int r, int g, int b)
{
	ch -= 'a';
	if(ch>=26) { echo("color tags must be labeled \'a\' to \'z\'"); return; }
	
	colorTags[ch].r = r;
	colorTags[ch].g = g;
	colorTags[ch].b = b;
	colorTags[ch].fill_missing();
}

//========================================================================================
void OgcConsole::drawConsoleLine( const string& str, int x, int y )
{
	const char* line = str.c_str();
	char  buf[256];
	char* bufpos;

	for(;;)
	{
		// extract string part
		bufpos=buf;
		for(;;) { *bufpos=*line; if(!*line||*line=='&')break;  ++line; ++bufpos; };
		bufpos[0]=0;bufpos[1]=0;

		// draw
		int length, height;
		gEngfuncs.pfnDrawConsoleStringLen( buf, &length, &height );
		gEngfuncs.pfnDrawSetTextColor(colorTags[curColorTag].onebased_r, 
									  colorTags[curColorTag].onebased_g, 
									  colorTags[curColorTag].onebased_b);
		gEngfuncs.pfnDrawConsoleString(x,y,buf);

		// advance
		x+=length;
		if(*line=='&')
		{
			unsigned char ch = *++line - 'a';
			if(ch<26) curColorTag=ch;
			else         break;
			if(!*++line) break;
		}
		else 
		{
			break;
		}
	}
	curColorTag=0;
}

//========================================================================================
void OgcConsole::key(int ch)
{
	char* pos;
	switch(ch)
	{
	case -1: // backspace
		if(cursorpos==editline) return;
		pos = --cursorpos;
		while(pos[0]) { pos[0]=pos[1]; ++pos; }
		return;
		
	case -2: // uparrow
		if(hist_direction!=DIR_BACK) { history.prev(); history.prev(); hist_direction=DIR_BACK;}
		strcpy(editline, history.read().c_str());
		cursorpos = editline + strlen(editline);
		history.prev();
		return;

	case -3: // downarrow
		if(hist_direction==DIR_BACK) { history.next(); history.next(); hist_direction=DIR_FORWARD;}
		strcpy(editline, history.read().c_str());
		cursorpos = editline + strlen(editline);
		history.next();
		return;
	
	case -4: // leftarrow
		if(cursorpos!=editline) --cursorpos;
		return;

	case -5: // leftarrow
		if(cursorpos!=(editline+strlen(editline))) ++cursorpos;
		return;

	case '\n':
		if( !strcmp(editline,"===") )
		{
			if(mode==MODE_EXECUTE) { mode=MODE_CHAT;    echo("&b*** &aCONSOLE: &wCHAT MODE &b***"); }
			else                   { mode=MODE_EXECUTE; echo("&b*** &aCONSOLE: &wEXEC MODE &b***"); }
		}
		else if(mode==MODE_EXECUTE)
		{
			echo    ( "&x%s",editbuf );
			if(editline[0])
			{
				cmd.exec( editline );
				history.add(editline);
				history.reset();
			}
		} 
		else if(mode==MODE_CHAT)
		{
			char* text = editline; while(*text==' ')++text;
			char buf[256];sprintf(buf,"say \"%s\"",text);
			gEngfuncs.pfnClientCmd(buf);
		}	
		editline[0]=0;
		cursorpos = editline;
		return;
	default:
		// insert character
		if(strlen(editbuf)>(EDIT_MAX-4)) return;
		if(!cursorpos[0]) { cursorpos[0]=ch; ++cursorpos; cursorpos[0]=0; return; }

		pos = editbuf+strlen(editbuf)+1; 
		while(pos>cursorpos) { pos[0]=pos[-1]; --pos; }

		*cursorpos = ch;
		++cursorpos;
		return;
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合在线播放| 色素色在线综合| 青娱乐精品视频在线| 一区av在线播放| 亚洲三级小视频| 亚洲婷婷综合色高清在线| 欧美国产一区二区在线观看| 国产精品久久久久影视| 欧美国产在线观看| 精品国产乱码久久久久久图片| 欧美电影在哪看比较好| 7878成人国产在线观看| 欧美日本视频在线| 精品日韩成人av| 精品国偷自产国产一区| 国产亚洲短视频| 国产精品毛片无遮挡高清| 亚洲精品综合在线| 亚洲国产视频直播| 日本伊人精品一区二区三区观看方式| 男女性色大片免费观看一区二区| 激情小说亚洲一区| 国产成人午夜电影网| 国产91在线观看| 日本福利一区二区| 欧美一级久久久| 国产欧美精品一区二区三区四区 | 国产精品99久久久久久久女警| 国产一区二区三区蝌蚪| 成人sese在线| 精品国产伦一区二区三区观看方式| 日韩午夜中文字幕| 2020日本不卡一区二区视频| 国产精品久久久爽爽爽麻豆色哟哟| 中文字幕一区二| 日本强好片久久久久久aaa| 国产一区二区三区香蕉| 91麻豆精东视频| 日韩精品一区二区三区四区| 日本一区二区动态图| 亚洲成人在线免费| 久久se精品一区二区| 99国内精品久久| 日韩一区二区三| 国产午夜亚洲精品午夜鲁丝片| 亚洲人成精品久久久久| 蜜臀久久99精品久久久久久9| 国产成人午夜视频| 在线看国产一区二区| 欧美一二区视频| 国产精品福利电影一区二区三区四区| 午夜精品久久久| eeuss国产一区二区三区| 日韩一区二区三区在线视频| 国产精品萝li| 美女视频黄 久久| 一本在线高清不卡dvd| 精品美女被调教视频大全网站| 一区二区视频在线| 国产成人欧美日韩在线电影| 99精品视频一区二区| 中文字幕在线不卡一区 | 欧美日韩一级大片网址| 久久久久久久久岛国免费| 亚洲欧洲综合另类在线| 欧美aaaaa成人免费观看视频| 91一区二区三区在线观看| 精品久久久久久综合日本欧美 | 亚洲精品中文在线观看| 麻豆一区二区99久久久久| 一本大道久久a久久精二百| 26uuu久久天堂性欧美| 午夜久久久久久久久| 99免费精品视频| 精品国产青草久久久久福利| 日韩成人伦理电影在线观看| 91豆麻精品91久久久久久| 国产精品久久久久一区二区三区 | 久久免费国产精品| 日韩中文字幕一区二区三区| 91免费国产视频网站| 久久精品人人爽人人爽| 老司机精品视频导航| 欧美高清一级片在线| 亚洲国产欧美在线人成| 91黄色小视频| 一区二区三区国产精品| 波多野结衣欧美| 久久久91精品国产一区二区三区| 久久精品国产第一区二区三区| 欧美欧美欧美欧美首页| 一区二区久久久久| 欧美做爰猛烈大尺度电影无法无天| 国产精品国产自产拍高清av王其| 精品一区二区三区在线播放 | 91精品国产色综合久久久蜜香臀| 亚洲欧洲综合另类| 成人ar影院免费观看视频| 国产欧美视频一区二区| 麻豆精品在线看| 国产精品久久精品日日| 正在播放亚洲一区| 欧美v日韩v国产v| 麻豆精品一二三| 日韩一区二区三区在线视频| 日韩av不卡在线观看| 日韩西西人体444www| 狠狠色丁香婷婷综合| 亚洲国产日产av| 一区二区三区欧美| 欧美一级日韩一级| 国产a区久久久| 一区二区三区在线观看欧美| 欧美美女直播网站| 成人性生交大片免费看中文网站| 国产欧美日韩视频一区二区| 精品一区二区久久| ...xxx性欧美| 国产精品免费人成网站| 国产电影一区二区三区| 久久蜜桃av一区精品变态类天堂| 精品一区二区三区的国产在线播放| 这里只有精品免费| 国产一区二区三区国产| 国产精品三级av| 在线观看视频一区二区| 日韩激情在线观看| www精品美女久久久tv| 国产成人99久久亚洲综合精品| 国产精品传媒入口麻豆| 欧美在线综合视频| 免费成人深夜小野草| 久久精品视频免费观看| 91在线观看地址| 亚洲一二三区视频在线观看| 日韩亚洲国产中文字幕欧美| 国产传媒一区在线| 亚洲欧美国产77777| 欧美日韩在线三区| 国产高清在线精品| 一区二区免费在线| 2017欧美狠狠色| 色菇凉天天综合网| 国产真实精品久久二三区| 亚洲欧洲一区二区三区| 欧美一级欧美三级| 成人免费毛片a| 婷婷久久综合九色综合绿巨人| 精品国产网站在线观看| 欧美精品第1页| 国产成人av一区二区三区在线| 国产精品欧美一区二区三区| 欧美日韩精品三区| 丰满亚洲少妇av| 亚洲高清免费视频| 国产欧美一区二区在线| 欧美午夜一区二区三区| 国产综合色视频| 依依成人精品视频| 久久久久久久一区| 欧美日韩一级视频| caoporen国产精品视频| 欧美a一区二区| 亚洲卡通欧美制服中文| 精品国产伦一区二区三区观看方式| 91在线国产观看| 国产在线精品一区二区夜色| 亚洲第一主播视频| 中文字幕在线不卡一区| 欧美成人精品二区三区99精品| 91麻豆免费观看| 国产91富婆露脸刺激对白| 热久久国产精品| 亚洲午夜激情网站| 综合久久给合久久狠狠狠97色 | 成人精品视频一区| 亚洲成人三级小说| 亚洲视频你懂的| 国产亚洲成年网址在线观看| 91精品国产综合久久婷婷香蕉| av成人老司机| 国产成人综合网站| 老司机一区二区| 日本一不卡视频| 亚洲国产中文字幕在线视频综合| 国产精品久久久久永久免费观看| 亚洲精品一区二区三区四区高清 | 亚洲综合激情另类小说区| 欧美高清一级片在线观看| 精品国产亚洲在线| 日韩一区二区三区观看| 在线播放国产精品二区一二区四区 | voyeur盗摄精品| 国产一区二区免费看| 麻豆成人免费电影| 日本视频一区二区三区| 日精品一区二区| 午夜成人免费视频| 视频一区二区三区在线| 午夜成人在线视频|