// 响应其他消息
void OnServerMessage(CMessage* pMsg)
{
	switch(pMsg->GetType())
	{
	case MSG_W2DB_SERVER_UNREGENTITY:
		{
			char szCdkey[128];
			pMsg->GetStr(szCdkey, sizeof(szCdkey));
			if(szCdkey)
			{
				Account* pAcc = GetGame()->GetEntityManager()->FindAccount(szCdkey);
				if(pAcc)
				{
					long lCurTime = timeGetTime();
					pAcc->SetLastLoginTime(lCurTime);
				}
			}
		}
		break;
	case MSG_W2DB_SERVER_QUEST_RECONNECTION:
		{
			// 定时刷新数据
			lConnects++;

			long msgid = pMsg->GetLong(); // MSGID
			CMessage msg(MSG_DB2W_SERVER_QUEST_RECONNECTION);
			msg.Add(msgid);
			// 保存的factions和unions数据由各自的消息处理
			msg.SendToSocket(pMsg->GetSocketID());
		}
		break;
		// 发送server信息给dbserver
	case MSG_W2DB_SERVER_SENDSERVERINFO:
		{
			// 定时刷新数据
			lConnects++;

			// 设置GameServer标识
			bool bReconnect = pMsg->GetChar()?true:false;
			DWORD dwPort = pMsg->GetLong();
			char strGameServerIP[256];
			pMsg->GetStr(strGameServerIP,256);

			CGame::tagWorldServer* pGameServer = GetGame()->GetWorldServer(strGameServerIP, dwPort);
			if (pGameServer)
			{
				pGameServer->bConnected = true;
				CMessage::MapWSIDSocket(pGameServer->dwIndex, pMsg->GetSocketID());

				GetGame()->SetWSSocket(pMsg->GetSocketID());
			}
			else
			{
				AddLogText(CStringReading::LoadString(IDS_DBS_SERVERMESSAGE, STR_DBS_SERVERMESSAGE_WSCONNECTFAIL), strGameServerIP, dwPort);
				break;
			}
			char str[256];
			sprintf(str, "%s [%d]", strGameServerIP, dwPort);
			SendMessage(g_hGameServerListBox, LB_INSERTSTRING,-1, (LPARAM)str);
			AddLogText(CStringReading::LoadString(IDS_DBS_SERVERMESSAGE, STR_DBS_SERVERMESSAGE_WSCONNECTOK), strGameServerIP, dwPort);

			// 发送数据库配置信息
			GetGame()->SendDBTableInfo(pMsg->GetSocketID());
		}
		break;
		// 收到WorldServer的返回
	case MSG_W2DB_SERVER_ANSWER_PING:
		
		break;
		// WS的脚本发送的消息,需要回应处理
	case MSG_W2DB_SERVER_PLAYER_PERSONALHOUSEGUID:
		{
			long scriptID = pMsg->GetLong();// Script ID

			// player name
			char playerName[128];
			pMsg->GetStr(playerName, 128);

			// PH GUID
			CGUID guid;

			char szPHGuid[128]; // 返回的PH GUID 变量名
			pMsg->GetStr(szPHGuid, 128);

			
			CMessage msg(MSG_W2DB_SERVER_PLAYER_PERSONALHOUSEGUID);
			msg.Add(scriptID);// Script ID
			msg.Add(playerName); // player name
			msg.Add(szPHGuid);// 返回的PH GUID 变量名
			msg.Add(guid);// // PH GUID
			msg.SendToSocket(pMsg->GetSocketID());
		}
		break;
		// 接收从WS来的SaveData消息结束标志
	case MSG_W2DB_SERVER_SAVEDATAEND:
		{
			BYTE flag = pMsg->GetByte();
			if(flag == 0)
				AddLogText("接收WS定时保存消息结束(不代表线程处理完成)!");
			else if(flag == 1)
				AddLogText("接收WS下线保存玩家数据消息结束(不代表线程处理完成)!");
		}
		break;
	case MSG_W2DB_SERVER_QUEST_PING:
		{
			CMessage msg(MSG_DB2W_SERVER_QUEST_PING);
			msg.SendToSocket(pMsg->GetSocketID());
		}
		break;
	}
}