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

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

?? language.cpp

?? DragonRaja Client source version 1.4+ this source allow players join in (Hades Warfield or Monsters
?? CPP
字號:
#include "stdafx.h"
#include <stdio.h>

#include "Language.h"
#include "hong_sub.h"
/*////////////////////////////////////////////////////////////////////////////////////////////
// 備己 : CLan.cpp,CLan.h 拳老.                                                             //
// 格利 : txt拳老肺 何磐 膠飄傅闌 佬絹輯 皋葛府俊 歷厘. 寇何俊 力傍竅綽 OutputMessage竊薦甫 //
//        烹秦輯 秦寸 膠飄傅闌 力傍.                                                        //
// 備泅 : txt拳老闌 擴檔快俊 嘎霸 秦寸 攫絹狼 txt甫 茫酒輯 肺爹. txt拳老闌 茄鍋 盒籍竅咯    //
//        鞘夸茄 皋葛府甫 拌魂, new甫 茄鍋父 齲免竅咯 牢鄲膠儈 拋撈喉苞 膠飄傅闌 竊膊 歷厘. //
// 漂隆 : 抗傈俊綽 膠飄傅喊肺 new甫 齲免竅絆 牢鄲膠狼 積己俊檔 new甫 葷儈竅咯 皋葛府狼 竄祈 //
//        拳 棺 memory leak闌 蠟慣竅看欄哥, 3竄 器牢磐狼 葷儈欄肺, 蠟瘤焊薦狼 絹妨框 慣積.  //
//        泅力綽 new甫 茄鍋父 齲免竊欄肺輯 memory leak狼 規瘤 棺 皋葛府 竄祈拳甫 規瘤茄促.  //
//        All code is made by zoung. zoung@esofnet.com ICQ : 66924157  Written at 2002/4/12 //
*/////////////////////////////////////////////////////////////////////////////////////////////

LanguagePack* lan = NULL;

char    LanguageInt[6][3]={ "en", "kr", "ch", "en", "jp","th"};
char	header[10][20]={ "[melee]","[magic]","[skill]","[notice]","[item]","[etc]","[justmsg]","[sprintf]","[yesorno]","[temp]"};	

int		CLanguage::CheckArea()			//絹恫 攫絹甫 靜綽瘤 眉農竅綽 竊薦
{
	AreaCode=1;	// KR
	
#ifdef JAPAN_LOCALIZING_
	AreaCode=4;	// JP
#endif

#if defined TAIWAN_LOCALIZING_  || defined CHINA_LOCALIZING_ || defined HONGKONG_LOCALIZING_
	AreaCode=2;	// TH
#endif

#ifdef USA_LOCALIZING_
	AreaCode=0;	// EN
	/*#ifndef MALAYSIA_LOCALIZING_ // 031013 kyo
		#ifndef THAI_LOCALIZING_	// BBD 040114

			const short WinAreaCode=GetUserDefaultLangID();
			switch(WinAreaCode)
			{
			case 0x0404:// Chinese (Taiwan Region) 
			case 0x0804:// Chinese (PRC) 
			case 0x0c04:// Chinese (Hong Kong SAR, PRC) 
			case 0x1004:// Chinese (Singapore) 
			case 0x0411:// Japanese 
				{
					::ExitApplication(EA_LANGUAGE_ERROR);
					return 0;
				}break;
			}

		#endif	// BBD 040114
	#endif*/	// 031013 kyo
#endif

	return(1);
}

int CLanguage::LoadingByAreaCode()	//AreaCode俊 狼秦輯 秦寸竅綽 拳老闌 佬絹 甸牢促.
{
	char path[MAX_FILE_LENGTH];
	wsprintf(LoadedFileName,"%s_lan.txt",LanguageInt[AreaCode]);
	wsprintf(path, "./data/%s", LoadedFileName );	
	wsprintf(this->LoadedFileName,"%s",path);

	FILE * fp=Fopen(path,"rt");
	if(fp==NULL)	{	MessageBox(NULL,"Can't Find Language Text","Language Error",NULL);	return -1;}
	fclose(fp);
	return(1);
}

char*	CLanguage::OutputMessage(int NumOfSentence)	//秦寸竅綽 皋矯瘤甫 Sentence俊促 持絆 絕欄擱 Sentence俊綽 酒公藹檔 絕促.
{
	int kind=0,number=0;
	kind=NumOfSentence/100000;
	number=NumOfSentence%100000;
	return this->OutputMessage(kind,number);
}
char*	CLanguage::OutputMessage(int Kind,int Num)	//秦寸竅綽 皋矯瘤甫 Sentence俊促 持絆 絕欄擱 Sentence俊綽 酒公藹檔 絕促.
{
	if (Kind == 1 && Num == 25)
	{
		int k = 0;
	}

	if( Kind < 0 || Kind >=MAX_KIND )
		return this->szNullString;

	if( Num  <=0 || Num  > this->m_dwMaxLineNumberOfKind[Kind])
		return this->szNullString;

	DWORD MaxNumber = 0;
	if( Kind == 0 )
		MaxNumber = 0;
	else
	{
		for( int i=0;i<Kind;i++)
			MaxNumber += this->m_dwMaxLineNumberOfKind[i];
	}
	DWORD Number = MaxNumber*4 + Num*4;	
	DWORD ReturnAddress = 0;
	memcpy(&ReturnAddress,(this->IndexAddress + Number),4);
	if( ReturnAddress!=NULL)//020501 lsw
	{
		return (char*)ReturnAddress;
	}
	else
	{
		return this->szNullString;
	}
	
	return this->szNullString;
}


CLanguage::CLanguage()
{
	memset(this,0,sizeof( *this ) );
	this->Init();
}

CLanguage::~CLanguage()
{
	SAFE_DELETE(this->IndexAddress);
}

int CLanguage::Init()
{	
	if( this->CheckArea()	< 0 )			return -1;
	if( this->LoadingByAreaCode() < 0 )		return -2;	
	if( this->Preloading()	< 0 )			return -3;
	if( this->Loading()		< 0	)			return -4;
	return 1;
}

int	CLanguage::Preloading()
{
	FILE* fp=NULL;
	fp = Fopen(this->LoadedFileName,"rt");
	if( fp == NULL)
		return -1;

	DWORD Header=0,Number=0;
	
	while(!feof(fp))		//拳老狼 場撈 唱棵錠 鱉瘤 拌加 館汗
	{
		int i=0;
		char Original_Sentence[MAX_ONE_LINE_CHAR_NUM]={0,},Temp_Sentence[MAX_ONE_LINE_CHAR_NUM]={0,},Sentence[MAX_ONE_LINE_CHAR_NUM]={0,};
		if( GetOneLine(Original_Sentence,fp) <0)
			continue;		
		//咯扁鱉瘤 吭促綽 巴籃 ;撈 絕綽 扼牢撈扼綽 舵
		strcpy(Temp_Sentence,Original_Sentence);	//老竄 盔夯闌 歸訣秦 敵促

		//老竄 秦歹甫 犬牢茄促.		//秦歹撈擱 付撈呈膠. 慶歹啊 酒聰擱 敲礬膠
		if( CheckHeader(Header,Temp_Sentence) < 0 )
			continue;		

		//鍋齲甫 犬牢茄促.//鍋齲啊 何利例竅芭唱 絕欄擱 付撈呈膠
		if( CheckNumber(Number,Temp_Sentence) < 0 )
			continue;		

		//郴儈拱闌 犬牢茄促.//郴儈拱狼 郴儈撈 絕啊唱 "啊 2俺啊 酒聰擱 付撈呈膠
		if( CheckSentence(Sentence,Temp_Sentence) < 0 )
			continue;		

		this->m_dwMaxLineNumberOfKind[Header] = 
			this->m_dwMaxLineNumberOfKind[Header] > Number ? this->m_dwMaxLineNumberOfKind[Header] : Number;
		this->m_dwTotalLineOfKind[Header]++;
		this->m_dwSumOfTotalLine++;
		this->m_dwTotalLength = this->m_dwTotalLength + strlen(Sentence) + 1;
	}
	for( int i=0;i<MAX_KIND;i++)
		this->m_dwSumOfMaxLineNumber += this->m_dwMaxLineNumberOfKind[i];

	fclose(fp);
	return 1;
}

// 020620 YGI
void ConvertSpecialWord(char *txt,const char *delTarget,const char AfterConvert)
{
	char *pdest = txt;
	while( pdest = strstr(pdest,delTarget) )
	{
		*pdest = ' '; pdest++;
		*pdest = AfterConvert;
	} 
}


int	CLanguage::Loading()
{
	FILE* fp=NULL;
	fp = Fopen(this->LoadedFileName,"rt");
	if( fp == NULL)
		return -1;

	DWORD Header=0,Number=0;
	DWORD DataPos=0;

	this->IndexAddress = new char [this->m_dwSumOfMaxLineNumber*4 + this->m_dwTotalLength + 4];
	if( IndexAddress == NULL)
		return -1;
	this->DataAddress = this->IndexAddress + this->m_dwSumOfMaxLineNumber*4 + 4;
	memset(this->IndexAddress , 0 ,this->m_dwSumOfMaxLineNumber*4 + this->m_dwTotalLength + 4);
	
	while(!feof(fp))		//拳老狼 場撈 唱棵錠 鱉瘤 拌加 館汗
	{
		int i=0;
		char Original_Sentence[MAX_ONE_LINE_CHAR_NUM]={0,},Temp_Sentence[MAX_ONE_LINE_CHAR_NUM]={0,},Sentence[MAX_ONE_LINE_CHAR_NUM]={0,};
		if( GetOneLine(Original_Sentence,fp) <0)
			continue;		
		//咯扁鱉瘤 吭促綽 巴籃 ;撈 絕綽 扼牢撈扼綽 舵
		strcpy(Temp_Sentence,Original_Sentence);	//老竄 盔夯闌 歸訣秦 敵促

		//老竄 秦歹甫 犬牢茄促.		//秦歹撈擱 付撈呈膠. 慶歹啊 酒聰擱 敲礬膠
		if( CheckHeader(Header,Temp_Sentence) < 0 )
			continue;

		//鍋齲甫 犬牢茄促.//鍋齲啊 何利例竅芭唱 絕欄擱 付撈呈膠
		if( CheckNumber(Number,Temp_Sentence) < 0 )
			continue;		

		//郴儈拱闌 犬牢茄促.//郴儈拱狼 郴儈撈 絕啊唱 "啊 2俺啊 酒聰擱 付撈呈膠
		if( CheckSentence(Sentence,Temp_Sentence) < 0 )
			continue;

		//咯扁鱉瘤 吭促綽 巴籃 力措肺 等 皋矯瘤扼綽 巴. 蝶扼輯 錠妨 冠綽促.^^
//		ConvertSpecialWord(Sentence,"%%s",'%s');
//		ConvertSpecialWord(Sentence,"%%s",'%d');
//		ConvertSpecialWord(Sentence,"%%s",'%u');

		ConvertSpecialWord(Sentence,"\\n",'\n');
		ConvertSpecialWord(Sentence,"\\r",'\r');
		ConvertSpecialWord(Sentence,"\\t",'\t');
		DWORD Sentence_Length = strlen(Sentence);
		DWORD BaseAddress = 0;
		
		if( Header > 0 )
			for( int i=0;i<Header;i++)
				BaseAddress += this->m_dwMaxLineNumberOfKind[i];
		else
			BaseAddress = 0;

		strcpy(this->DataAddress + DataPos , Sentence);

		DWORD TempDataAddress = (DWORD)((this->DataAddress + DataPos));
		memcpy(this->IndexAddress + Number*4 + BaseAddress*4 ,&TempDataAddress,4);

		DataPos+=Sentence_Length+1;
	}
	fclose(fp);
	return 0;
}

int CLanguage::GetOneLine(void * data,FILE* fp)
{
	int i=0,ret=1;
	bool loop=true;
	while(loop)
	{
		if( feof(fp) )
			break;
		char chardata = fgetc(fp);
		((char*)(data))[i++] = chardata;
		switch(chardata)
		{
		case 10:		//青撈 官差擱
			loop=false;
			break;
		case 59:		//;撈 唱坷擱
			ret=-1;
			break;
		default:
			break;
		}
	}
	return ret;
}


int	CLanguage::CheckHeader(DWORD &Header,char* data)				//輛幅牢啊甫 魄竄	.割鍋擄 鍋齲牢瘤 館券
{
	for(int i=0;i<MAX_KIND;i++)
	{
		if( strlen(header[i]) > strlen(data) )
			continue;
		if( memicmp(header[i],data,strlen(header[i])) )			//父距 老摹竅綽 header啊 樂欄擱
			continue;
		Header = i;
		return -1;		//慶歹甫 茫欄擱 -甫 館券
	}
	return 1;
}
int	CLanguage::CheckNumber(DWORD &Number,char* data)				//鍋齲啊 割鍋牢瘤 犬牢茄促.鍋齲 館券
{
	char *semi = NULL;
	semi = strchr(data,':');
	if( semi == NULL)		//:啊 絕欄擱
		return -1;
	char temp[MAX_ONE_LINE_CHAR_NUM]={0,};
	memcpy(temp,data,( (DWORD)(semi-data) ) );
	Number = atoi(temp);
	return 1;
}
int	CLanguage::CheckSentence(void * sentence,char* data)			//鞏厘撈 倔付唱 變啊甫 犬牢茄促.鞏厘狼 辨撈 館券
{
	DWORD length = strlen(data);
	char *start = NULL,*end=NULL;
	start = strchr(data,'"');
	if( start == NULL)		//"啊 絕欄擱
		return -1;

	//彌家茄 場俊輯 2鍋擄 撈絹具 茄促.
	if( start-data+1 >= length )
		return -2;

	end = strchr(start+1,'"');
	if( end == NULL)
		return -3;

	//彌家茄 場俊輯 霉鍋擄 撈絹具 茄促
	if( end-data >= length )
		return -4;

	if( start+1 > end -1 )
		return -5;

	//咯扁鱉瘤 吭促綽 巴籃 "欄肺 焊齲登綽 鞏厘撈 樂促綽 撈具扁啊 等促. 矯累籃 start, 場籃 end撈促
	memset(sentence,0,end-start+2);
	memcpy(sentence,start+1,end-start-1);
	return 1;
}

void	CLanguage::DisplayAllData()
{
	int count=0;
	for( int i=0;i<MAX_KIND;i++)
	{
		for( int j=0;j<this->m_dwMaxLineNumberOfKind[i]+1;j++)
		{
			char* data = (char*)this->OutputMessage(i,j);
			if( data[0] != 0 )	printf("[%2d:%6d] %s\n",i,j,data );
		//	if( count++%100 == 0 )
		//		getchar();
		}
	}
	printf("\nTotal Summary\n");
	for( i=0;i<MAX_KIND;i++)
	{		
		printf("Line 1 : Max Line Number : %d , Total Line Number : %d\n",this->m_dwMaxLineNumberOfKind[i],this->m_dwTotalLineOfKind[i]);				
	}
	printf("\nSum of Max Line Number : %d Sum of Total Line : %d , Total Length : %d" , this->m_dwSumOfMaxLineNumber,
		this->m_dwSumOfTotalLine,
		this->m_dwTotalLength); 

}

// 020428 YGI acer
extern int CheckSumError;
int LoadLanguageText()
{
	lan = new LanguagePack;
	if(lan==NULL)	return 0;
	else			return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线中文字幕| 国产成人精品一区二| 久久国产精品99久久久久久老狼 | 亚洲欧美精品午睡沙发| 奇米影视7777精品一区二区| av在线免费不卡| 日韩一二三区不卡| 亚洲天堂久久久久久久| 国产一区二区精品在线观看| 欧美视频日韩视频| 综合自拍亚洲综合图不卡区| 国内久久精品视频| 日韩欧美国产成人一区二区| 亚洲精品综合在线| 99久久综合国产精品| 久久久综合九色合综国产精品| 午夜伊人狠狠久久| 欧美日韩你懂得| 亚洲综合久久久久| 欧洲一区二区三区在线| 亚洲国产成人私人影院tom| 久久9热精品视频| 欧美一区二区三区免费在线看| 亚洲美女一区二区三区| 成人av在线电影| 日本一区二区免费在线 | 亚洲色图都市小说| 成人av在线播放网站| 欧美国产一区视频在线观看| 国产成人免费视频一区| xfplay精品久久| 青青草原综合久久大伊人精品 | 日韩欧美中文字幕公布| 舔着乳尖日韩一区| 欧美日韩国产首页在线观看| 天天综合色天天综合色h| 日本精品视频一区二区| 亚洲精品中文字幕乱码三区| 色素色在线综合| 一区二区三国产精华液| 欧美日韩精品免费观看视频| 蜜桃视频一区二区三区在线观看| 欧美高清视频一二三区 | 久久久久久久久久电影| 国产黄色成人av| 国产精品久久看| 色婷婷久久99综合精品jk白丝 | 韩国av一区二区三区四区| 精品乱人伦一区二区三区| 国产中文一区二区三区| 亚洲国产精品ⅴa在线观看| av一本久道久久综合久久鬼色| 亚洲视频 欧洲视频| 欧美三级日韩在线| 男男成人高潮片免费网站| 精品国产露脸精彩对白 | 国产精品一区二区久久精品爱涩| 久久久久久久久久久99999| 成人av免费在线播放| 亚洲精品一二三| 欧美一区二区三区小说| 国产成人av福利| 亚洲精品视频观看| 精品久久人人做人人爽| 99视频精品在线| 日韩在线观看一区二区| 国产清纯在线一区二区www| 色呦呦日韩精品| 精品一区二区三区免费| 国产精品久久久久久久裸模| 欧美日韩视频不卡| 成人激情图片网| 毛片一区二区三区| 亚洲同性同志一二三专区| 欧美一级淫片007| 99久久婷婷国产| 蜜臀av性久久久久av蜜臀妖精| 国产精品日产欧美久久久久| 欧美日韩精品电影| 不卡电影一区二区三区| 久久国产精品99久久久久久老狼| 一区二区三区在线看| 久久噜噜亚洲综合| 91精品国产综合久久香蕉麻豆| 粉嫩av一区二区三区在线播放| 午夜成人免费视频| 奇米影视7777精品一区二区| 亚洲欧美在线另类| 精品99久久久久久| 91精品国产一区二区三区| 成人精品国产一区二区4080| 久久精品国产久精国产| 亚洲自拍偷拍图区| 亚洲美女在线国产| 国产精品免费久久久久| 精品国产免费人成在线观看| 777午夜精品视频在线播放| 96av麻豆蜜桃一区二区| 国产成都精品91一区二区三| 精品一区二区三区香蕉蜜桃| 午夜免费欧美电影| 亚洲国产一区二区a毛片| 国产精品免费aⅴ片在线观看| 精品国产麻豆免费人成网站| 日韩一区二区三区四区| 欧美日韩另类一区| 欧美巨大另类极品videosbest| 99精品国产99久久久久久白柏| 成人av综合在线| 懂色av中文一区二区三区| 极品尤物av久久免费看| 美女在线观看视频一区二区| 日韩国产精品久久久久久亚洲| 亚洲午夜av在线| 日日夜夜精品视频天天综合网| 亚洲午夜久久久久久久久电影网 | 天天综合天天综合色| 亚洲一区二区三区四区在线| 亚洲摸摸操操av| 亚洲猫色日本管| 亚洲一区影音先锋| 午夜久久久久久久久| 亚洲va国产va欧美va观看| 亚洲不卡一区二区三区| 视频在线在亚洲| 男女激情视频一区| 韩国理伦片一区二区三区在线播放| 蓝色福利精品导航| 国产一区二区在线观看免费| 国产精品一区在线| 成人黄色777网| 欧美吞精做爰啪啪高潮| 欧美精品久久99久久在免费线| 欧美一区三区二区| 欧美xxxxx牲另类人与| 久久久不卡网国产精品二区 | 26uuu亚洲婷婷狠狠天堂| 国产日韩精品一区二区三区| 国产精品视频免费| 亚洲欧美偷拍三级| 日日夜夜精品视频免费| 国产一区视频网站| 色88888久久久久久影院按摩| 欧美喷水一区二区| 国产欧美精品区一区二区三区 | 日韩电影免费在线看| 国产精品一区一区三区| 在线观看免费一区| 精品福利av导航| 亚洲免费色视频| 欧美aⅴ一区二区三区视频| 粉嫩蜜臀av国产精品网站| 欧美日韩免费高清一区色橹橹 | 国产精品久久久久久久久搜平片 | 黄网站免费久久| 91精品福利在线| 久久嫩草精品久久久精品一| 中文字幕一区二区日韩精品绯色| 天堂av在线一区| 懂色av中文字幕一区二区三区| 欧美区在线观看| 国产精品久久久久久久岛一牛影视 | 国产精品高清亚洲| 菠萝蜜视频在线观看一区| 欧美精品乱人伦久久久久久| 久久久精品日韩欧美| 偷拍一区二区三区| av网站一区二区三区| 日韩精品中文字幕在线不卡尤物| 亚洲色图欧洲色图婷婷| 国产精品一区二区黑丝| 91精品国产色综合久久| 亚洲人成网站影音先锋播放| 久久91精品久久久久久秒播| 欧美在线观看视频一区二区 | 欧美精品一区男女天堂| 亚洲成人av电影在线| 99久久伊人久久99| 国产日本亚洲高清| 国产乱子轮精品视频| 欧美日韩第一区日日骚| 亚洲一区二区三区在线| 99re免费视频精品全部| 国产日韩v精品一区二区| 黄网站免费久久| 日韩免费观看2025年上映的电影| 亚洲国产日日夜夜| 在线一区二区视频| 亚洲免费观看高清| 色婷婷激情综合| 最新欧美精品一区二区三区| 国产传媒日韩欧美成人| 精品人伦一区二区色婷婷| 日本亚洲最大的色成网站www| 欧美日韩极品在线观看一区| 亚洲一二三级电影| 欧美日韩一区小说| 性做久久久久久久免费看| 在线观看国产精品网站| 亚洲精品国产无套在线观 |