📄 user2.cpp
字号:
#include "stdafx.h"
#include "Server.h"
#include "USER.h"
#include "COM.h"
#include "CircularBuffer.h"
#include "BufferEx.h"
#include "Item.h"
#include "Hyper.h"
#include "Mcommon.h"
#include "Search.h"
#include "ServerDlg.h"
#include "Mcommon.h"
#include "UserManager.h"
#include "UNI_CHAR.h"
#include "RoyalRumble.h"
#include "EventZone.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#include "Extern.h" // 寇何函荐 急攫
extern CUserManager *g_pUQM;
extern CSearch *g_pUserList;
extern CServerDlg *g_pMainDlg;
//extern CRITICAL_SECTION m_CS_ReceiveData[];
extern CRITICAL_SECTION m_CS_FileWrite;
extern CRITICAL_SECTION m_CS_EventItemLogFileWrite;
extern CPtrList RecvPtrList[];
extern long nRecvDataLength[];
// IKING 2002.1.
extern CRITICAL_SECTION m_CS_LoginData;
extern CPtrList RecvLoginData;
extern long nLoginDataCount;
extern CRITICAL_SECTION m_CS_LogoutData;
extern CPtrList RecvLogoutData;
extern long nLogoutDataCount;
extern CPtrList RecvSqlData;
extern CRITICAL_SECTION m_CS_SqlData;
extern long nSqlDataCount;
extern int g_ChatEnable[];
extern CHATDATAPACKET *g_WaitRecvDataChat[DATA_BUF_SIZE_FOR_THREAD+1][AUTOMATA_THREAD+1];
extern int g_nChatDataHead[];
extern int g_nChatDataTail[];
extern BYTE g_ServerId;
extern CRoyalRumble g_RR;
extern short g_sHPConst[CLASS_NUM];
extern short g_sPPConst[CLASS_NUM];
extern short g_sSPConst[CLASS_NUM];
extern short g_sHPLV[CLASS_NUM];
extern short g_sPPLV[CLASS_NUM];
extern short g_sSPLV[CLASS_NUM];
extern short g_sHPAdd[CLASS_NUM];
extern short g_sPPAdd[CLASS_NUM];
extern short g_sSPAdd[CLASS_NUM];
extern TCHAR g_arServerIPAddr[16];
extern CString g_strARKRRWinner;
// Quest Event Class
extern CEventZone g_QuestEventZone;
extern long g_PotionViewOnOff;
const char* g_pszReservedID[] =
{
"捞墨风胶",
"Icarus",
"荤唱靛",
"Sanad",
"G.O.D",
"凝",
"Queen",
"俊凋",
"Edin",
"磊厚俊福",
"Zabier",
"郡颇靛肺",
"Elpadro",
"厩付",
"傀胶",
"Wes",
"Guilty",
"G-77",
"啊匙瘤酒",
"Ganezia",
"荐吝档矫",
"葛畴",
"Mono",
"抛老矾",
"Teiler",
"浚俩捞磐",
"Angeleter",
"酒令饭海胶飘",
"Azrebest",
"坷配付沛",
"Automaton",
"海弗窍福飘",
"鸥福箕 ",
"Tarsha",
"蹿磐颇伎",
"鞘赋器",
"Pilippo",
"匡橇胶萍靛",
"候季",
"Vigsen",
"款康磊",
"困令霸捞飘",
"krg",
"krgsoft",
"wizgate",
"困令霸捞飘流盔",
"krg流盔",
"困令霸捞飘荤厘",
"krg荤厘",
"krgsoft荤厘",
"靛肺捞踞",
"靛肺捞踞款康磊",
"droiyan",
"伎府坷",
"俩促",
"领府坷",
"箕肺农",
"力农",
"扼捞呈",
"农饭滚",
"叼酒靛赴",
"叼唱",
"钱府",
"技捞唱",
"付福炮",
"墨捞福",
"鸥捞肺胶",
"抿福唱",
"器捞",
"庆荤唱",
"档快固",
"风捞每",
"促府绢胶",
"橇风匙",
"力福唱",
"其福档",
"孤每",
"鸥捞欺胶",
"纳捞舅瘤荤厘",
"Wizgate荤厘",
"纳捞舅瘤",
"Wizgatesajang",
"KRGsajang",
"纳捞舅瘤家橇飘荤厘",
"纳捞舅瘤家橇飘",
"款康柳",
"府欺虐靛",
"帮虐靛",
"酒郴舅荤快福胶",
"器肺弊",
"府摹墨",
"厚酒-X",
"喉矾靛快靛",
"努遏矫磐",
"攫酒绊",
"葛胶虐",
"付福-A1",
"弊赴 况目",
"候遣",
"举磐",
"帮",
"弊伐绢",
"飘快胶荤快福胶",
"府欺陵聪绢",
"D2",
"努遏矫磐快靛",
"矫弊付-01",
"迄墨海府",
"磊捞攫飘 候遣",
"概弊呈胶",
"举矾",
"飘发目",
"墨老肺",
"惯虐绢",
"葛俩赴",
"春弊",
"努遏磐",
"概胶",
"矫弊付-02",
"举府绢胶",
"沥农胶",
"奶风令",
"墨海胶",
"官海捞",
"G-埔历2F",
"惯虐绢唱捞飘",
"局荤唱",
"技固磐",
"墨捞畴绢胶",
"G-埔历",
"滚胶磐",
"举府磐",
"付肺胶",
"G-埔历V",
"Q-Q98",
"皋呕贾廉-N",
"皋呕贾廉-G",
"皋呕贾廉-S",
"皋呕贾廉-B",
"鸥捞墨",
"磊羔府救",
"郡福矫坷",
"概胶磐",
"付福-F",
"唱农矫酒",
"磊羔府绢胶",
"举矾唱",
"磊捞羔 候遣",
"技萍赣",
"厚酒-X2",
"G赣脚令",
"亩风欺令",
"颇捞繁",
"磊羔风",
"啊捞呈",
"酒饿府墨",
"惯虐绢况府绢",
"飘墨扼",
"哎坊",
"G-埔历2S",
"赣墨捞呈",
"技固捞鄂",
"漠风牢",
"埔历 Mk-II",
"快饭唱",
"秦厚贾廉-N",
"秦厚贾廉-G",
"秦厚贾廉-S",
"秦厚贾廉-B",
"茄胶",
"领府酒",
"力农",
"箕肺农",
"伎府坷",
"俩促",
"版厚捍",
"璃郊",
"扼捞呈",
"力府墨",
"风快",
"漠府柯",
"力欺郊",
"俺技尝",
"俺技扁",
"俺货尝",
"俺货扁",
"俺俊祸尝",
"俺局祸尝",
"俺俊祸扁",
"俺局祸扁",
"货局尝",
"货俊尝",
"技尝",
"唱慧仇",
"唱慧货尝",
"唱慧技扁",
"俺鞍篮",
"矫迫",
"矫迫仇",
"揪何凡",
"揪何饿",
"揪尝",
"久货",
"久祸尝",
"久祸扁",
"久林备府",
"久罗备府",
"绞溅捞",
"绞井捞",
"固模仇",
"畴坷咳",
"仇",
"斥",
"搐",
"量",
"两",
"量鞍篮",
"两鞍篮",
"率狐府",
"练官府",
"率官府",
"焊瘤",
"磊瘤",
"矫惯",
"瘤饿",
"瘤饿窍匙",
"瘤饿窍郴",
"捍脚",
"葫脚",
"端货尝",
"俺磊交",
"俺磊侥",
"端拱",
"揪迫",
"矫弧",
"揪惯",
"炼鳖",
"静国",
"律促",
"久锭尝",
"芭矫扁",
"端",
"律ざ",
"律じ",
"律ず",
"炼じ",
"炼ず",
"久迫",
"久惯",
"堪捍",
"砍冈绢扼",
"俺溅捞",
"揪官",
"泪瘤",
"隶",
"腊癌",
"蜡滴",
"腊滨",
"俺磊侥",
"久泼捞",
"久劈捞",
"律啊",
"醋扁固",
"聪扁固",
"揪捞捞迫",
"揪捞迫",
"揪捞惯",
"俺井捞",
"鹅惯",
"俺滘",
"俺涧",
"固模",
"固凭",
"静喉",
"静惯",
"揪贺",
"聪固",
"静何凡",
"矫贺",
"酒啊府",
"龋肺",
"局固",
"局厚",
"狐备府",
"狐鉴捞",
"俺溅",
"俺井",
"霸溅",
"霸井",
"霸滘",
"霸涧",
"鹅惯",
};
//
void USER::AccountLoginReqWithDbServer(TCHAR *pBuf)
{
char id[MAX_ID+1];
int index = 0;
BYTE result = FAIL, error_code = 0;
int nIDLength = GetVarString(sizeof(id), id, pBuf, index);
if(nIDLength == 0 || nIDLength > ACCOUNT_LENGTH)
{
error_code = 1;
index = 0;
SetByte(m_TempBuf, ACCOUNT_LOGIN_RESULT, index );
SetByte(m_TempBuf, result, index );
SetByte(m_TempBuf, error_code, index);
Send( m_TempBuf, index );
SoftClose();
return;
}
if ( IsDoubleAccount(id) )
{
error_code = ERR_2;
index = 0;
SetByte(m_TempBuf, ACCOUNT_LOGIN_RESULT, index );
SetByte(m_TempBuf, result, index );
SetByte(m_TempBuf, error_code, index);
Send( m_TempBuf, index );
SoftClose();
return;
}
strcpy( m_strAccount, id );
char TempBuf[1024];
index = 0;
SetByte(TempBuf, g_ServerId, index );
SetByte(TempBuf, ACCOUNT_LOGIN_REQ, index );
SetShort(TempBuf, m_uid, index );
SetString(TempBuf, id, ACCOUNT_LENGTH, index);
g_pMainDlg->Send2DBsvr( TempBuf, index );
}
void USER::GameStartWithDbServer(TCHAR *pBuf)
{
int index = 0;
BYTE result = FAIL;
TCHAR szID[CHAR_NAME_LENGTH+1];
int nIDLength = GetVarString(sizeof(szID), szID, pBuf, index);
if ( nIDLength == 0 || nIDLength > CHAR_NAME_LENGTH )
{
CBufferEx TempBuf;
ReInitMemoryDB();
TempBuf.Add(GAME_START_RESULT);
TempBuf.Add(result);
TempBuf.Add(ERR_1);
Send(TempBuf, TempBuf.GetLength());
SoftClose();
return;
}
memcpy( m_strUserID, szID, CHAR_NAME_LENGTH );
char TempBuf[1024];
index = 0;
SetByte(TempBuf, g_ServerId, index );
SetByte(TempBuf, GAME_START_REQ, index );
SetShort(TempBuf, m_uid, index );
SetString(TempBuf, szID, CHAR_NAME_LENGTH, index);
g_pMainDlg->Send2DBsvr( TempBuf, index );
}
void USER::LogOutWithDbServer()
{
if(m_bLogOut == TRUE) return;
if(m_state != STATE_GAMESTARTED) return; // 捞寇 STATE_CONNECTED殿 老锭绰 秦寸 檬扁拳啊 皋葛府俊绝栏骨肺 力寇秦具茄促.
m_bLogOut = TRUE;
USER *pUser = NULL;
// 老馆 鞘靛傈 吝捞扼搁..
if(m_tGuildWar == GUILD_WARRING && m_dwFieldWar > 0)
{
if(m_bGuildMaster)
{
CString strMsg = _T("");
strMsg.Format( IDS_USER_GUILD_DEFEAT, m_strGuildName);
SendGuildWarFieldEnd((LPTSTR)(LPCTSTR)strMsg);// 亲汗
}
}
if(m_tGuildHouseWar == GUILD_WARRING) CheckGuildUserListInGuildHouseWar(); // 促弗 蜡历甸篮 够窍唱 眉农..
if(m_bNowBuddy == TRUE) // 滚叼吝捞搁 烹焊茄促.
{
for(int i = 0; i < MAX_BUDDY_USER_NUM; i++)
{
if(m_MyBuddy[i].uid == m_uid + USER_BAND) SendBuddyUserLeave(i);
}
}
// 芭贰吝捞搁 芭贰秒家 贸府
if(m_bNowTrading == TRUE)
{
BYTE result = 0x00;
USER *pTradeUser = NULL;
if(m_iTradeUid != -1) pTradeUser = GetUser(m_iTradeUid - USER_BAND);
if(pTradeUser != NULL) pTradeUser->SendExchangeFail(result, (BYTE)0x05);
}
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -