user.cpp

来自「国外网游源码....除工具源码缺少之外,其余程序都全...至于,什么游戏,因为国」· C++ 代码 · 共 214 行

CPP
214
字号
#include "stdafx.h"
#include "MasterServer.h"
#include "msgHandler.h"
#include "user.h"


CUser::CUser()
{
}

CUser::~CUser()
{
}

void CUser::Init(int nSockIndex)
{
	m_nIndex = nSockIndex;

	int i=MAX_MECHANIC_SLOT;
	while(i--)	m_cMechanic[i].index = (BYTE)i;
}

BOOL CUser::Insert(DWORD dwAddr)
{
	strcpy(m_szID, "Guest");

	if(m_nState != STATE_DISCONNECT)
	{
		IN_ADDR in_addr;
		in_addr.s_addr = dwAddr;

		if(m_nState == STATE_CLOSE)
		{
			_printf("**********************************exception************************************\n");
			_log("PC%d StateError[!STATE_DISCONNECT] CUser::Insert() > 辑滚啊悼 霖厚吝俊 努扼捞攫飘 立加[%s:%s]", m_nIndex, inet_ntoa(in_addr), GetStateLog());
			return FALSE;
		}

		_printf("**********************************exception************************************\n");
		_log("PC%d StateError[!STATE_DISCONNECT] CUser::Insert() > 捞固 劝己拳等 家南俊 努扼捞攫飘 立加[%s:%s]", m_nIndex, inet_ntoa(in_addr), GetStateLog());
		return FALSE;
	}

	m_nState = STATE_CONNECT;
	m_dwRemoteIP = dwAddr;
	m_nAccount = 0;

	m_nInvenCnt = 0;

	return TRUE;
}

void CUser::Delete()
{
#ifdef _DBG_ENGINE
	_printf("努扼捞攫飘 辆丰[%s]\n", m_szID);
#endif

	if(m_nState != STATE_CLOSE)
		m_nState = STATE_DISCONNECT;

	m_nAccount = 0;
}

BOOL CUser::SetInven(int nSlot, char *pItemStr)
{
	if(*pItemStr)
	{
		char nType;
		ITEM_INFO *pInven = m_cInven + m_nInvenCnt;

		pInven->index = (char)nSlot;

		sscanf(pItemStr, "%u %c %u", &pInven->id, &nType, &pInven->value);

		switch(nType)
		{
		case 'U':	pInven->use = USE_UNLIMITED;	break;
		case 'T':	pInven->use = USE_TIME;			break;
		case 'D':	pInven->use = USE_DUR;			break;
		case 'P':	pInven->use = USE_DISPOSABLE;	break;
		}

		++m_nInvenCnt;
		return TRUE;
	}

	return FALSE;
}

BOOL CUser::SetGarage()
{
	m_nMechanicCnt=0;
	while(m_nMechanicCnt < MAX_MECHANIC_SLOT)
	{
		if(!g_cMasterServer.m_cGarageEnum.account[m_nMechanicCnt])	break;

		++m_nMechanicCnt;
	}

	BOOL bEmpty = TRUE;
	int i=0;
	while(i < MAX_MECHANIC_SLOT)
	{
		if(m_cMechanic[i].account)
		{
			bEmpty = FALSE;
			break;
		}
		++i;
	}

	if(bEmpty && m_nMechanicCnt == 1)
	{
		m_cMechanic[0].account = g_cMasterServer.m_cGarageEnum.account[0];
		m_cMechanic[0].id = g_cMasterServer.m_cGarageEnum.id[0];
		m_cMechanic[0].fight = g_cMasterServer.m_cGarageEnum.fight[0];
		m_cMechanic[0].dur = g_cMasterServer.m_cGarageEnum.dur[0];
		m_cMechanic[0].skin = g_cMasterServer.m_cGarageEnum.skin[0];
		m_cMechanic[0].color = g_cMasterServer.m_cGarageEnum.color[0];

		m_cMechanic[0].weapon_slot[WEAPON_MAIN] = g_cMasterServer.m_cGarageEnum.main_slot[0];
		m_cMechanic[0].weapon_slot[WEAPON_SUB] = g_cMasterServer.m_cGarageEnum.sub_slot[0];
		m_cMechanic[0].weapon_slot[WEAPON_BACK1] = g_cMasterServer.m_cGarageEnum.back_slot1[0];
		m_cMechanic[0].weapon_slot[WEAPON_BACK2] = g_cMasterServer.m_cGarageEnum.back_slot2[0];
		m_cMechanic[0].weapon_slot[WEAPON_BACK3] = g_cMasterServer.m_cGarageEnum.back_slot3[0];

		return TRUE;
	}

	i=0;
	while(i < MAX_MECHANIC_SLOT)
	{
		if(m_cMechanic[i].account)
		{
			int j=0;
			while(j < m_nMechanicCnt)
			{
				if(m_cMechanic[i].account == g_cMasterServer.m_cGarageEnum.account[j])
				{
					m_cMechanic[i].id = g_cMasterServer.m_cGarageEnum.id[j];
					m_cMechanic[i].fight = g_cMasterServer.m_cGarageEnum.fight[j];
					m_cMechanic[i].dur = g_cMasterServer.m_cGarageEnum.dur[j];
					m_cMechanic[i].skin = g_cMasterServer.m_cGarageEnum.skin[j];
					m_cMechanic[i].color = g_cMasterServer.m_cGarageEnum.color[j];

					m_cMechanic[i].weapon_slot[WEAPON_MAIN] = g_cMasterServer.m_cGarageEnum.main_slot[j];
					m_cMechanic[i].weapon_slot[WEAPON_SUB] = g_cMasterServer.m_cGarageEnum.sub_slot[j];
					m_cMechanic[i].weapon_slot[WEAPON_BACK1] = g_cMasterServer.m_cGarageEnum.back_slot1[j];
					m_cMechanic[i].weapon_slot[WEAPON_BACK2] = g_cMasterServer.m_cGarageEnum.back_slot2[j];
					m_cMechanic[i].weapon_slot[WEAPON_BACK3] = g_cMasterServer.m_cGarageEnum.back_slot3[j];
				}

				++j;
			}
		}

		++i;
	}

	return (m_nMechanicCnt != 0);
}

void CUser::SetInfo(char *pInfoPack)
{
	MSGINFO *msg = (MSGINFO *)pInfoPack;

	strcpy(m_szID, msg->lsmsUserInfo.user_id);
	strcpy(m_szNick, msg->lsmsUserInfo.user_nick);
	strcpy(m_szClan, msg->lsmsUserInfo.clan_name);
	m_nGender = msg->lsmsUserInfo.gender;
	m_nPilot = msg->lsmsUserInfo.pilot;
	m_nCash = msg->lsmsUserInfo.cash;
	m_nPoint = msg->lsmsUserInfo.point;
	m_dwBestPoint = msg->lsmsUserInfo.best_point;
	m_dwBestStraight = msg->lsmsUserInfo.best_straight;
	m_dwWinStraight = msg->lsmsUserInfo.win_straight;
	m_dwWin = msg->lsmsUserInfo.win;
	m_dwLose = msg->lsmsUserInfo.lose;
	m_dwKill = msg->lsmsUserInfo.kill;
	m_dwDeath = msg->lsmsUserInfo.death;
	m_dwRank = msg->lsmsUserInfo.rank;
	m_dwQuit = msg->lsmsUserInfo.quit;
	m_dwBlack = msg->lsmsUserInfo.black;
	m_nLevel = msg->lsmsUserInfo.level;
	m_nExp = msg->lsmsUserInfo.exp;
	m_nInvenCnt = msg->lsmsUserInfo.inven_cnt;
	m_nMechanicCnt = msg->lsmsUserInfo.mechanic_cnt;
	m_dwPrivateIP = msg->lsmsUserInfo.private_ip;
	m_nAccount = msg->lsmsUserInfo.account;

	m_nState = STATE_JOINLOGIN;

	int i=MAX_MECHANIC_SLOT;
	while(i--)	m_cMechanic[i].id = 0;

#ifdef _DBG_GAMELOGIC
	_printf("CUser::SetInfo(%s)\n", m_szID);
#endif
}

void CUser::SetGarage(char *pInfoPack)
{
	MSGINFO *msg = (MSGINFO *)pInfoPack;

	m_cMechanic[msg->lsmsMechanicInfo.index].id = msg->lsmsMechanicInfo.id;
	m_cMechanic[msg->lsmsMechanicInfo.index].fight = msg->lsmsMechanicInfo.fight;
	m_cMechanic[msg->lsmsMechanicInfo.index].dur = msg->lsmsMechanicInfo.dur;
	m_cMechanic[msg->lsmsMechanicInfo.index].skin = msg->lsmsMechanicInfo.skin;
	m_cMechanic[msg->lsmsMechanicInfo.index].color = msg->lsmsMechanicInfo.color;
	m_cMechanic[msg->lsmsMechanicInfo.index].account = msg->lsmsMechanicInfo.account;
	memcpy(m_cMechanic[msg->lsmsMechanicInfo.index].weapon_slot, msg->lsmsMechanicInfo.weapon_slot, WEAPON_MAX);
}

⌨️ 快捷键说明

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