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

📄 objectplayersaid.cpp

📁 真正的传奇源代码
💻 CPP
字号:
#include "stdafx.h"

#define _MAX_USERCOMMAND_LIST	(IDS_USERCMD_SABUKDOOR - IDS_USERCMD_NOWHISPER1 + 1)

void CryCry(UINT wMsgType, CMirMap* pMap, int nX, int nY, int nWide, char *pszSaying);

void InitUserCommandList()
{
	TCHAR	szCommand[64];
	int		nLen;

	for (int i = 0; i < _MAX_USERCOMMAND_LIST; i++)
	{
		LoadString(g_hInst, IDS_USERCMD_NOWHISPER1 + i, szCommand, sizeof(szCommand)/sizeof(TCHAR));

		nLen = lstrlen(szCommand) * sizeof(TCHAR) + 1;

		char *pszUserCommand = new char[nLen];

		if (pszUserCommand)
		{
			WideCharToMultiByte(CP_ACP, 0, szCommand, -1, pszUserCommand, nLen, NULL, NULL);
			g_xUserCommandList.AddNewNode(pszUserCommand);
		}
	}

	InsertLogMsgParam(IDS_LOAD_USERCOMMAND, &i, LOGPARAM_INT);
}

void UnInitUserCommandList()
{
	PLISTNODE pListNode = g_xUserCommandList.GetHead();

	while (pListNode)
	{
		delete [] g_xUserCommandList.GetData(pListNode);

		pListNode = g_xUserCommandList.RemoveNode(pListNode);
	}
}

BOOL CPlayerObject::ProcessForUserSaid(char *pszData)
{
	char	szDecodeMsg[256];
	char	szChatMsg[512];

	int nPos = fnDecode6BitBufA(pszData, szDecodeMsg, sizeof(szDecodeMsg));
	
	szDecodeMsg[nPos] = '\0';

	if (szDecodeMsg[0] == '@')
	{
		ProcessForAdminSaid(szDecodeMsg);

		return FALSE;
	}
	else
	{
		if (szDecodeMsg[0] == '!')
		{
			if (GetTickCount() - m_dwLastCryTime > 10 * 1000)
			{
				if (m_Ability.Level <= 7)
				{
					TCHAR	wszMsg[128];
					char	szMsg[128];

					LoadString(g_hInst, IDS_NOTENOUGHLEVEL_CRY, wszMsg, sizeof(wszMsg)/sizeof(TCHAR));
					WideCharToMultiByte(CP_ACP, 0, wszMsg, -1, szMsg, sizeof(szMsg), NULL, NULL);

					SysMsg(szMsg, 1);

					return TRUE;
				}
				else
				{
					m_dwLastCryTime = GetTickCount();

					int nLen = memlen(m_pUserInfo->m_szCharName);
				
					memmove(szChatMsg, "(!)", 3);
					memmove(&szChatMsg[3], m_pUserInfo->m_szCharName, (nLen - 1));
					memmove(&szChatMsg[nLen - 1 + 3], " : ", 3);
					memmove(&szChatMsg[nLen + 2 + 3], &szDecodeMsg[1], memlen(&szDecodeMsg[1]));

					CryCry(RM_CRY, m_pMap, m_nCurrX, m_nCurrY, 50, szChatMsg);

					return TRUE;
				}
			}
		}
		else if (szDecodeMsg[0] == '/')
		{
			char *pszCharName = &szDecodeMsg[1];

			char *pszMsg = (char *)memchr(pszCharName, 0x20, memlen(pszCharName) - 1);
			
			if (pszMsg)
			{
				*pszMsg++ = '\0'; 
				Whisper(pszCharName, pszMsg);

				return TRUE;
			}
		}
		else
		{
			int nLen = memlen(m_szName);
		
			memmove(szChatMsg, m_szName, (nLen - 1));
			memmove(&szChatMsg[nLen - 1], " : ", 3);
			memmove(&szChatMsg[nLen + 2], szDecodeMsg, memlen(szDecodeMsg));

			AddRefMsg(RM_HEAR, 0, 0x0000, 0xFFFF, 0, szChatMsg);

			return TRUE;
		}
	}

	return FALSE;
}

⌨️ 快捷键说明

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