⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatdll.cpp

📁 聊天代码! 视频
💻 CPP
📖 第 1 页 / 共 3 页
字号:
//---------------------------------------------------------------------------
//模块名称: TT ChatServer 扩展 DLL 部分
//程序设计: 天云上人

#include "ChatDLL.h"

//---------------------------------------------------------------------------
//功能描述:生成对话格式
//参数说明:Color	颜色
//			Action	动作
//			Addressor	发言人
//			Face	表情
//			Listerner	接收者
//			Body	内容
//			Pic		贴图
//			Icon	头像
//返 回 值:生成聊天室使用的脚本内容
CString MakeSay(CString Color, CString Action, CString Addressor, CString Face, CString Listener, CString Body, CString Pic, CString Icon){
	return "<script>parent.ShowSay('" + Color + "','" + Action + "','" + Addressor + "','" + Face + "','" + Listener + "','" + Body + "','" + Time(false) + "','" + Pic + "','" + Icon + "')</script>\r\n";
}
//---------------------------------------------------------------------------
//功能描述:返回当前的时间
//设计时间: 2002-11-14
//参数说明:ShowDate 是否带日期格式
//返 回 值:返回字符串日期内容
CString Time(bool ShowDate){
	CTime T;
	T = CTime::GetCurrentTime();
	if(ShowDate)
		return T.Format("%Y-%m-%d %H:%M:%S");
	else
		return T.Format("%H:%M:%S");
}
//---------------------------------------------------------------------------
//功能描述: 读入文本文件//Add:2002-12-11
//参数说明: strFileName 要读的文件名, strBody 为读入的内容
void ReadFromFile(CString strFileName, CString &strBody){
	FILE *fp;
	char str[1025];
	strBody = "";
	if((fp = fopen(strFileName, "r")) != NULL){
		while(!feof(fp)){
			fgets(str, 1024, fp);
			strBody = strBody + str;
		}
	}
	fclose(fp);
}
//---------------------------------------------------------------------------
//功能描述: 取得用户的位置
int GetID(CString &strFindName, ChatUserInfoTag UserInfo[], int nMaxUser)
{
	int nPos;
	for(nPos = 0; nPos < nMaxUser; nPos++)
		if(UserInfo[nPos].strUserName == strFindName)
			break;
	return nPos;
}
//---------------------------------------------------------------------------
//取得表格头部
CString Table(){
	return "<TABLE cellSpacing=0 cellPadding=2 width=90% border=1>";
}
//---------------------------------------------------------------------------
//取得HTML行定义一
CString TR1(){
	return "<TR bgcolor=#CCCCFF>";
}
//---------------------------------------------------------------------------
//取得HTML行定义二
CString TR2(){
	return "<TR bgcolor=#f7f7f7>";
}
//---------------------------------------------------------------------------
//功能描述:十六进制转换十进制//Add:2002-11-13
int hextoi(char inChar){
	int result;
	char charToCompare=inChar;
	if(isdigit(inChar))
		result=inChar-'0';
	else{
		charToCompare=tolower(inChar);
		if(charToCompare>='a' && charToCompare<='f')
			result=charToCompare-'a'+10;
	}
	return result;
}
//---------------------------------------------------------------------------
//功能描述:对字符串进行Decode过滤//Add:2002-11-13
CString Decode(CString Input){
	int n, len;
	char c;
	CString V;
	n = 0;
	len = Input.GetLength();
	while(n < len){
		if(Input[n]=='+')
			c = ' ';
		else if(Input[n]=='%' && n + 2 < len){
			c = (char)(hextoi(Input[n + 1]) * 16 + hextoi(Input[n + 2]));
			n += 2;
		}else
			c = Input[n];
	    if(c == '\'')
			V = V + "`";
		else if(c == '\\')
			V = V + "/";
		else if(c == '<')
			V = V + "&lt";
		else
			V = V + c;
		n++;
	}
	return V;
}
//---------------------------------------------------------------------------
//功能描述:取Cookie中的字段值
CString GetCookie(CString s, CString d){
	int f, l, j;
	d = " " + d + "=";
	l = d.GetLength();
	j = s.GetLength();
	f = s.Find(d);
	if(f > -1){
		s = s.Mid(f + l);
		f = s.Find(";");
		s = s.Mid(0, f);
	}else
		s = "";
	return s;
}
//---------------------------------------------------------------------------
//功能描述:取Get,Post中的字段值
CString GetValue(CString s, CString d)
{
	int f, l, j;
    d = "&" + d + "=";
	l = d.GetLength();
	j = s.GetLength();
	f = s.Find(d);
	if(f > -1){
		s = s.Mid(f + l);
		f = s.Find("&");
		s = s.Mid(0, f);
	}
	else
		s = "";
	return s;
}
//---------------------------------------------------------------------------
//功能描述:取普通INI的字符值//Add:2002-11-16
//参数说明:strIniFile	INI文件名
//			strApp	为INI项目的区块名
//			strKey	为INI项目名
//			strDef	为INI项目的默认值
//返 回 值:INI项目的内容
CString GetINIKeyValue(CString strIniFile, CString strApp, CString strKey, CString strDef){
	char p[MAX_PATH + 1];
	CString strDir;
	GetCurrentDirectory(MAX_PATH + 1, p);	//取调用者程序目录
	strDir.Format("%s\\%s", p, strIniFile);
	GetPrivateProfileString(strApp, strKey, strDef, p, MAX_PATH + 1, strDir);
	return p;
}
//---------------------------------------------------------------------------
//功能描述:取普通INI的数值值//Add:2002-11-16
//参数说明:strIniFile	INI文件名
//			strApp	为INI项目的区块名
//			strKey	为INI项目名
//			nDef	为INI项目的默认值
//返 回 值:INI项目的内容
int GetINIKeyValue(CString strIniFile, CString strApp, CString strKey, int nDef){
	char p[MAX_PATH + 1];
	CString strDir;
	GetCurrentDirectory(MAX_PATH + 1, p);	//取调用者程序目录
	strDir.Format("%s\\%s", p, strIniFile);
	return GetPrivateProfileInt(strApp, strKey, nDef, strDir);
}
//---------------------------------------------------------------------------
//功能说明:发HTML特效
//参数说明:nID		ID号
//			strName	名字
//			strB	特效编号
//			strC	特效内容
//			strD	发送对象
//			*nSendType	发送类型
//			nLevel	等级
//返 回 值: 返回生成好的聊天室脚本
CString Effect(unsigned long nID, CString strName, CString strB, CString strC, CString strD, int *nSendType, int nLevel){
	CString strResult, strKey, strHTML, strCmd;
	int iLevel, iCredit;
	CDBVariant NV;
	CDatabase db;
	CRecordset rs(&db);
    try{
		if(db.OpenEx( strDatabase )){
			strCmd.Format("select * from basic_tbl where uin=%lu", nID);
			rs.Open(AFX_DB_USE_DEFAULT_TYPE, strCmd);
			if(!rs.IsEOF()){
				//特效的名称
				strKey = "Effect_" + strB + "_Name";
				strHTML = GetINIKeyValue("Effect.ini", "Effect", strKey, "");
				if(strHTML != ""){
					//特效的内容
					strKey = "Effect_" + strB + "_Format";
					strHTML = GetINIKeyValue("Effect.ini", "Effect", strKey, "");	//内容
					if(strHTML == "")
						strResult = MakeSay("red", "提示", strName, "", "", "该特效未定义,无法使用。", "", "");
					else{
						//用特效的等级
						strKey = "Effect_" + strB + "_Level";
						iLevel = GetINIKeyValue("Effect.ini", "Effect", strKey, 100);	//需要的修行
						if(nLevel >= iLevel){
							//用特效的积分
							strKey = "Effect_" + strB + "_Credit";
							iCredit = GetINIKeyValue("Effect.ini", "Effect", strKey, 100);	//需要的银两
//							if(N6 >= iCredit){
								//发送的类型
								strKey = "Effect_" + strB + "_Public";
								*nSendType = GetINIKeyValue("Effect.ini", "Effect", strKey, 1);	//发送方向
								//暂时不扣积分
//								if(iCredit > 0){
//									strCmd.Format("update basic_tbl set jifen=jifen-%d where uin=%lu", iCredit, nID);
//									db.ExecuteSQL(strCmd);
//								}
								strHTML.Replace("<!--$OBJECT-->", strC);
								if(strD == "")
									strD = "大家";
								else if(strD == strName)
									strD = "自己";
								strResult = MakeSay("red", "", strName, "对", strD, strHTML, "", "");
//							}else
//								r = MakeSay("red", "提示", Name, "", "", "你的银两不够。", "", "");
						}else
							strResult = MakeSay("red", "提示", strName, "", "", "你的等级不够。", "", "");
					}
				}else
					strResult = MakeSay("red", "提示", strName, "", "", "该特效不存在。", "", "");
			}else
				strResult = MakeSay("red", "提示", strName, "", "", "你可能未正常登录。", "", "");
			rs.Close();
		}else
			strResult = MakeSay("red", "提示", strName, "", "", "连接数据库出错。", "", "");
		db.Close();
	}catch(...){
		if(rs.IsOpen())
			rs.Close();
		if(db.IsOpen())
			db.Close();
	    strResult = MakeSay("red", "错误", strName, "", "", "调用HTML特效程序时出错。", "", "");
	}
	return strResult;
}
//---------------------------------------------------------------------------
//功能描述:初始化用户信息
//参数说明:nPos	为当前用户的位置
//			UserInfo[]	为聊天室所有人员的数据
void InitUser(int nPos, ChatUserInfoTag *UserInfo)
{
	UserInfo[nPos].bHidden = false;
	UserInfo[nPos].bSendLoginMsg = false;
	UserInfo[nPos].bShowIcon = false;
	UserInfo[nPos].Socket = NULL;
	UserInfo[nPos].nID = 0;
	UserInfo[nPos].nCredit = 0;
	UserInfo[nPos].nLevel = 0;
	UserInfo[nPos].nSex = 0;
	UserInfo[nPos].nIcon = 0;
	UserInfo[nPos].nSays = 0;
	UserInfo[nPos].nLoginTime = 0;
	UserInfo[nPos].nEndTime = 0;
	UserInfo[nPos].strIP[0] = 0;
	UserInfo[nPos].strPasswd[0] = 0;
	UserInfo[nPos].strUserName[0] = 0;
	UserInfo[nPos].strState[0] = 0;
	UserInfo[nPos].strFrom[0] = 0;
	UserInfo[nPos].strRnd[0] = 0;
	UserInfo[nPos].strNick[0] = 0;

	UserInfo[nPos].bUser1 = false;
	UserInfo[nPos].nUser1 = 0;
	UserInfo[nPos].strUser1[0] = 0;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -