📄 user2.cpp
字号:
//
//UpdateMemBankDataOnly();
//UpdateUserData(TRUE);
char send_buffer[RECEIVE_BUF_SIZE+1];
int send_index = 0, c_index = 0;;
TCHAR strBankItem[_BANK_DB];
SetByte(send_buffer, g_ServerId, send_index );
SetByte( send_buffer, (BYTE)LOGOUT_REQ, send_index );
SetShort( send_buffer, m_uid, send_index );
// UpdateMemBankDataOnly() PART...
::ZeroMemory(strBankItem, sizeof(strBankItem));
::CopyMemory(strBankItem, m_pMD->m_UB.m_UserBankItem, _BANK_DB);
c_index = send_index;
SetString( send_buffer, m_strUserID, CHAR_NAME_LENGTH, send_index );
SetDWORD( send_buffer, m_pMD->m_UB.m_dwBankDN, send_index );
SetString( send_buffer, strBankItem, sizeof(strBankItem), send_index );
//
// UpdateUserData(TRUE) PART...
DBUpdateUserData( send_buffer, send_index );
//
// 拘绵窍扁...
m_CompMng.FlushAddData();
m_CompMng.AddData( &send_buffer[c_index], (send_index-c_index) );
m_CompMng.PreCompressWork();
m_CompMng.Compress();
int comp_data_len = m_CompMng.GetCompressedDataCount();
int org_data_len = m_CompMng.GetUnCompressDataLength();
DWORD crc_value = m_CompMng.GetCrcValue();
char *packet_buffer;
packet_buffer = m_CompMng.GetExtractedBufferPtr();
SetShort( send_buffer, comp_data_len, c_index );
SetShort( send_buffer, org_data_len, c_index );
SetDWORD( send_buffer, crc_value, c_index );
SetString( send_buffer, packet_buffer, comp_data_len, c_index );
m_CompMng.FlushAddData();
// 傈价.
g_pMainDlg->Send2DBsvr( send_buffer, c_index );
}
m_pMD->m_UB.m_uid = -1;
ReInitMemoryDB();
if( g_zone[m_ZoneIndex]->m_pMap[m_curx][m_cury].m_lUser == USER_BAND + m_uid )
::InterlockedExchange(&g_zone[m_ZoneIndex]->m_pMap[m_curx][m_cury].m_lUser, 0);
SendMyInfo(TO_INSIGHT, INFO_DELETE);
m_state = STATE_LOGOUT;
}
void USER::DBUpdateUserData(char *temp_buffer, int &temp_index )
{
TCHAR szSQL[8000];
TCHAR strFace[10], strSkill[_SKILL_DB], strItem[_ITEM_DB], strPsi[_PSI_DB], strTel[_TEL_DB];
TCHAR strQuickItem[_QUICKITEM_DB];
TCHAR strHaveEvent[_EVENT_DB];
::ZeroMemory(szSQL, sizeof(szSQL));
::ZeroMemory(strFace, sizeof(strFace));
::ZeroMemory(strSkill, sizeof(strSkill));
::ZeroMemory(strItem, sizeof(strItem));
::ZeroMemory(strPsi, sizeof(strPsi));
::ZeroMemory(strTel, sizeof(strTel));
::ZeroMemory(strHaveEvent, sizeof(strHaveEvent));
::ZeroMemory(strQuickItem, sizeof(strQuickItem));
::CopyMemory(strFace, m_strFace, sizeof(m_strFace));
UserSkillToStr(strSkill);
UserItemToStr(strItem);
UserPsiToStr(strPsi);
UserTelToStr(strTel);
UserHaveEventDataToStr(strHaveEvent);
DWORD dwCurTime = ConvertCurTimeToSaveTime(); // 泅犁 矫埃 滚怜阑 悸泼
m_tPsiOneKind = m_tPsiTwoKind = m_tPsiThreeKind = 0;
m_dwPsiOneTime = m_dwPsiTwoTime = m_dwPsiThreeTime = 0;
// Psionic One
if(m_dwHasteTime != 0)
{
m_tPsiOneKind = PSIONIC_HASTE;
m_dwPsiOneTime = m_dwHasteTime;
}
if(m_dwShieldTime != 0)
{
m_tPsiOneKind = PSIONIC_SHIELD;
m_dwPsiOneTime = m_dwShieldTime;
}
if(m_dwDexUpTime != 0)
{
m_tPsiOneKind = PSIONIC_DEXUP;
m_dwPsiOneTime = m_dwDexUpTime;
}
if(m_dwMaxHPUpTime != 0)
{
m_tPsiOneKind = PSIONIC_HPUP;
m_dwPsiOneTime = m_dwMaxHPUpTime;
}
if(m_dwFastRunTime != 0)
{
m_tPsiOneKind = PSIONIC_FAST_RUN;
m_dwPsiOneTime = m_dwFastRunTime;
}
if(m_dwMindShockTime != 0)
{
m_tPsiOneKind = PSIONIC_MIND_SHOCK;
m_dwPsiOneTime = m_dwMindShockTime;
}
if(m_dwPsiShieldTime != 0)
{
m_tPsiOneKind = PSIONIC_PSI_SHIELD;
m_dwPsiOneTime = m_dwPsiShieldTime;
}
if(m_dwBigShieldTime != 0)
{
m_tPsiOneKind = 30;
m_dwPsiOneTime = m_dwBigShieldTime;
}
if(m_dwPiercingShieldTime != 0)
{
m_tPsiOneKind = PSIONIC_PIERCING_SHIELD;
m_dwPsiOneTime = m_dwPiercingShieldTime;
}
// Psionic Two
if(m_dwAdamantineTime != 0)
{
m_tPsiTwoKind = PSIONIC_ADAMANTINE;
m_dwPsiTwoTime = m_dwAdamantineTime;
}
if(m_dwMightyWeaponTime != 0)
{
m_tPsiTwoKind = PSIONIC_MIGHTYWEAPON;
m_dwPsiTwoTime = m_dwMightyWeaponTime;
}
if(m_dwBerserkerTime != 0)
{
m_tPsiTwoKind = PSIONIC_BERSERKER;
m_dwPsiTwoTime = m_dwBerserkerTime;
}
// Psionic Three
if(m_dwMindGuardTime != 0)
{
m_tPsiThreeKind = PSIONIC_MIND_GUARD;
m_dwPsiThreeTime = m_dwMindGuardTime;
}
_sntprintf(szSQL, sizeof(szSQL), TEXT("{call UPDATE_USER_DATA (\'%s\',%d,%d,%d,%d,%d,%d,%d,%d,\
?, %d,%d,%d, %d, %d,%d, %d,%d, %d, \
%d,%d,%d,%d,%d,%d, %d,%d,%d,%d, \
?,?,?,?, %d,%d,\
%d, %d, ?, %d, %d,\
?, %d,\
%d, %d, %d,\
\'%s\', \
%d,%d, %d,%d, %d,%d)}"),
m_strUserID, m_sSTR, m_sCON, m_sDEX, m_sVOL, m_sWIS, m_iSkin, m_iHair, m_sGender,
m_curz, m_curx, m_cury, m_dwBuddy, m_dwGuild, m_dwExp, m_sPA, m_sSkillPoint, m_dwXP,
m_sMaxHP, m_sHP, m_sMaxPP, m_sPP, m_sMaxSP, m_sSP, m_dwDN, m_sCityRank, m_sLevel, m_byClass,
m_tAbnormalKind, m_dwAbnormalTime,
m_bLive, m_iCityValue, m_sKillCount, dwCurTime,
m_dwSaintTime,
m_dwHiExpTime, m_dwMagicFindTime, m_dwNoChatTime,
m_strLoveName, //--yskang 0.1
m_tPsiOneKind, m_dwPsiOneTime, m_tPsiTwoKind, m_dwPsiTwoTime, m_tPsiThreeKind, m_dwPsiThreeTime);
int sql_len = strlen(szSQL);
SetShort( temp_buffer, sql_len, temp_index );
SetString( temp_buffer, szSQL, sql_len, temp_index );
//SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sizeof(strFace), 0, (TCHAR*)strFace, 0, &sFaceLen );
SetString( temp_buffer, strFace, sizeof(strFace), temp_index );
//SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sizeof(strSkill), 0, (TCHAR*)strSkill, 0, &sSkillLen );
SetString( temp_buffer, strSkill, sizeof(strSkill), temp_index );
//SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sizeof(strItem), 0, (TCHAR*)strItem, 0, &sItemLen );
SetString( temp_buffer, strItem, sizeof(strItem), temp_index );
//SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sizeof(strPsi), 0, (TCHAR*)strPsi, 0, &sPsiLen );
SetString( temp_buffer, strPsi, sizeof(strPsi), temp_index );
//SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sizeof(strHaveEvent), 0, (TCHAR*)strHaveEvent, 0, &sEventLen );
SetString( temp_buffer, strHaveEvent, sizeof(strHaveEvent), temp_index );
//SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sizeof(strQuickItem), 0, (TCHAR*)strQuickItem, 0, &sQuickLen );
SetString( temp_buffer, strQuickItem, sizeof(strQuickItem), temp_index );
//SQLBindParameter( hstmt, i++, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sizeof(strTel), 0, (TCHAR*)strTel, 0, &sTelLen );
SetString( temp_buffer, strTel, sizeof(strTel), temp_index );
}
//-----------------------------------------------------------------------------
// DB PHASER PART...
//-----------------------------------------------------------------------------
void USER::DBAccountLoginResult(TCHAR *pBuf, int s_index, int dlength )
{
int index = 0, i;
BYTE result = FAIL, error_code = 0;
int old_index = 0;
int s_result, length;
strcpy(m_strChar[0], "");
strcpy(m_strChar[1], "");
strcpy(m_strChar[2], "");
m_nCharNum = 0;
s_result = GetByte( pBuf, s_index );
if ( s_result == FALSE )
{
// Load Character Data Fail...
error_code = UNKNOWN_ERR;
goto result_send;
}
m_state = STATE_CONNECTED;
result = SUCCESS;
// LOGIN SERVER俊辑 掘篮 某腐磐 肮荐+捞抚 汗荤...
m_nCharNum = GetByte( pBuf, s_index );
for ( i = 0; i < 3; i++ )
{
GetString(m_strChar[i], pBuf, 20, s_index );
}
//
length = dlength - s_index;
if ( length <= 0 ) result = FAIL;
result_send:
index = 0;
SetByte(m_TempBuf, ACCOUNT_LOGIN_RESULT, index );
SetByte(m_TempBuf, result, index );
if ( result == FAIL )
{
SetByte(m_TempBuf, error_code, index);
Send( m_TempBuf, index );
SoftClose();
return;
}
// LOGIN SERVER俊辑 掘篮 某腐磐 肮荐+沥焊 汗荤...
SetString(m_TempBuf, (pBuf+s_index), length, index);
Send(m_TempBuf, index);
}
void USER::DBGameStartResult( char *pBuf, int s_index, int dlength )
{
/*
char szID[CHAR_NAME_LENGTH+1];
SQLSMALLINT sSTR, sCON, sDEX, sVOL, sWIS;
CBufferEx TempBuf;
CPoint pt;
BYTE result = FAIL, error_code = 0;
BYTE db_proc_result;
InitUser();
memset( szID, NULL , sizeof(szID) );
db_proc_result = GetByte( pBuf, s_index );
if ( db_proc_result == FALSE )
{
error_code = ERR_2;
TempBuf.Add(GAME_START_RESULT);
TempBuf.Add(result);
TempBuf.Add(error_code);
Send(TempBuf, TempBuf.GetLength());
return;
}
// LOADUSER DATA 贸府(SQL 贸府何俊 秦寸)...
GetString( szID, pBuf, CHAR_NAME_LENGTH, s_index ); // USER ID
sSTR = GetShort( pBuf, s_index ); //m_sSTR = sSTR; // 塞
sCON = GetShort( pBuf, s_index ); //m_sCON = sCON; // 扒碍
sDEX = GetShort( pBuf, s_index ); //m_sDEX = sDEX; // 刮酶
sVOL = GetShort( pBuf, s_index ); //m_sVOL = sVOL; // 狼瘤
sWIS = GetShort( pBuf, s_index ); //m_sWIS = sWIS; // 瘤驱
SQLSMALLINT sBasicSTR, sBasicCON, sBasicVOL, sBasicDEX, sBasicWIS;
sBasicSTR = GetByte( pBuf, s_index ); //m_sTempSTR = (BYTE)sBasicSTR;
sBasicCON = GetByte( pBuf, s_index ); //m_sTempCON = (BYTE)sBasicCON;
sBasicDEX = GetByte( pBuf, s_index ); //m_sTempDEX = (BYTE)sBasicDEX;
sBasicVOL = GetByte( pBuf, s_index ); //m_sTempVOL = (BYTE)sBasicVOL;
sBasicWIS = GetByte( pBuf, s_index ); //m_sTempWIS = (BYTE)sBasicWIS;
SQLUINTEGER iSkin, iHair, iExp, iXP, iDN;
iSkin = GetDWORD( pBuf, s_index ); //m_iSkin = iSkin; // 乔何祸
iHair = GetDWORD( pBuf, s_index ); //m_iHair = iHair; // 赣府祸
SQLSMALLINT sGender;
sGender = GetShort( pBuf, s_index ); //m_sGender = sGender; // 己喊
SQLCHAR strFace[10+1];
GetString( (char *)strFace, pBuf, 10, s_index ); //::CopyMemory(m_strFace, strFace, 10); // 赣府葛剧
SQLSMALLINT sLZ, sLX, sLY, sPA;
sLZ = GetShort( pBuf, s_index ); //m_curz = sLZ; // Zone
sLX = GetShort( pBuf, s_index ); //m_curx = sLX; // 困摹 x
sLY = GetShort( pBuf, s_index ); //m_cury = sLY; // 困摹 y
SQLUINTEGER iBuddy;
iBuddy = GetDWORD( pBuf, s_index ); //m_dwBuddy = iBuddy; // Buddy
SQLINTEGER iGuild;
iGuild = GetInt( pBuf, s_index ); //m_dwGuild = iGuild; // Guild
//SQLUINTEGER iExp;
iExp = GetDWORD( pBuf, s_index ); //m_dwExp = iExp; // Experience
//SQLSMALLINT sPA;
sPA = GetShort( pBuf, s_index ); //m_sPA = sPA; // PA Point
SQLSMALLINT sSkillPoint;
sSkillPoint = GetShort( pBuf, s_index ); //m_sSkillPoint = sSkillPoint;// Skill Point
//
//SQLUINTEGER iXP;
iXP = GetDWORD( pBuf, s_index ); //m_dwXP = iXP; // X Point
SQLSMALLINT sLevel;
sLevel = GetShort( pBuf, s_index ); //m_sLevel = sLevel; // 饭骇
SQLCHAR byClass, bLive;
byClass = GetByte( pBuf, s_index ); //m_byClass = byClass; // 努贰胶
bLive = GetByte( pBuf, s_index ); //m_bLive = bLive; // 磷菌绰瘤, 混疽绰瘤?
SQLSMALLINT sHP, sPP, sSP, sKillCount;
sHP = GetShort( pBuf, s_index ); //m_sHP = sHP; // 泅犁 HP
sPP = GetShort( pBuf, s_index ); //m_sPP = sPP; // 泅犁 PP
sSP = GetShort( pBuf, s_index ); //m_sSP = sSP; // 泅犁 SP
//SQLUINTEGER iDN;
iDN = GetDWORD( pBuf, s_index ); //m_dwDN = iDN; // 家瘤陛
SQLINTEGER iCityValue;
iCityValue = GetInt( pBuf, s_index ); //m_iCityValue = iCityValue; // 矫刮 穿利蔼
//SQLSMALLINT sKillCount;
sKillCount = GetShort( pBuf, s_index ); //m_sKillCount = sKillCount; // PK穿利 冉荐
SQLCHAR strSkill[_SKILL_DB], strItem[_ITEM_DB], strPsi[_PSI_DB], strHaveEvent[_EVENT_DB], strTel[_TEL_DB];
GetString( (char *)strSkill, pBuf, sizeof(strSkill), s_index ); //::CopyMemory(m_strSkill, strSkill, sizeof(m_strSkill)); // 胶懦
GetString( (char *)strItem, pBuf, sizeof(strItem), s_index ); //::CopyMemory(m_strItem, strItem, sizeof(m_strItem)); // 酒捞袍
GetString( (char *)strPsi, pBuf, sizeof(strPsi), s_index ); //::CopyMemory(m_strPsi, strPsi, sizeof(m_strPsi)); // 荤捞坷葱
GetString( (char *)strHaveEvent, pBuf, sizeof(strHaveEvent), s_index ); //strHaveEvent
GetString( (char *)strTel, pBuf, sizeof(strTel), s_index ); //strTel
SQLSMALLINT sChangeClass[CLASS_NUM];
GetString( (char *)sChangeClass, pBuf, sizeof(sChangeClass), s_index ); //sChangeClass
SQLCHAR strAbnormal[_ABNORMAL_DB];
GetString( (char *)strAbnormal, pBuf, sizeof(strAbnormal), s_index ); //strAbnormal
SQLCHAR strQuickItem[_QUICKITEM_DB];
GetString( (char *)strQuickItem, pBuf, sizeof(strQuickItem), s_index ); //strQuickItem
SQLCHAR tIsOP;
tIsOP = GetByte( pBuf, s_index ); //m_tIsOP = tIsOP;
SQLUINTEGER iHaste, iShield, iDexUp, iMaxHPUp;
iHaste = GetDWORD( pBuf, s_index ); //m_dwHasteTime = iHaste;
iShield = GetDWORD( pBuf, s_index ); //m_dwShieldTime = iShield;
iDexUp = GetDWORD( pBuf, s_index ); //m_dwDexUpTime = iDexUp;
iMaxHPUp = GetDWORD( pBuf, s_index ); //m_dwMaxHPUpTime = iMaxHPUp;
// LOADUSERBANK PART(SQL 贸府何俊 秦寸)...
SQLUINTEGER ubiDN;
ubiDN = GetDWORD( pBuf, s_index );
SQLCHAR ubstrItem[_BANK_DB];
GetString( (char *)ubstrItem, pBuf, sizeof(ubstrItem), s_index );
//
//-------------------------------------------------------------------------
//LOADUSER DATA PROCESS.
for ( int i = 0; i < TOTAL_PSI_NUM; i++ ) // 檬扁拳甫 怖 秦具 茄促.
{
m_UserPsi[i].sSid = -1;
m_UserPsi[i].tOnOff = FALSE;
}
// Copy User Data
strcpy(m_strUserID, szID); // User ID
m_sSTR = sSTR; // 塞
m_sCON = sCON; // 扒碍
m_sDEX = sDEX; // 刮酶
m_sVOL = sVOL; // 狼瘤
m_sWIS = sWIS; // 瘤驱
m_sTempSTR = (BYTE)sBasicSTR; // 檬扁 费蔼甫 罐酒柯促.(饭骇促款老锭 靖)
m_sTempCON = (BYTE)sBasicCON;
m_sTempDEX = (BYTE)sBasicDEX;
m_sTempVOL = (BYTE)sBasicVOL;
m_sTempWIS = (BYTE)sBasicWIS;
m_iSkin = iSkin; // 乔何祸
m_iHair = iHair; // 赣府祸
m_sGender = sGender; // 己喊
::CopyMemory(m_strFace, strFace, 10); // 赣府葛剧
m_curz = sLZ; // Zone
m_curx = sLX; // 困摹 x
m_cury = sLY; // 困摹 y
m_dwBuddy = iBuddy; // Buddy
m_dwGuild = iGuild; // Guild
m_tFortressWar = GUILD_WAR_AFFTER;
m_tGuildWar = GUILD_WAR_AFFTER;
m_tGuildHouseWar= GUILD_WAR_AFFTER;
if(m_dwGuild >= 0) // 辨靛俊 措茄 单捞磐甫 檬扁拳茄促.
{
SetGuildVariable();
}
CheckGuildWar(); // 父距 傍己傈 吝捞扼搁 葛电 蜡历俊霸 舅赴促.(瘤陛篮 傍己傈父)
m_bFieldWarApply= FALSE;
m_FieldWarGMUid = 0; // 鞘靛傈老锭 惑措规 辨付 uid
m_dwFieldWar = 0; // 鞘靛傈 矫累捞搁 惑措祈 辨靛 锅龋啊 甸绢柯促.
m_dwExp = iExp; // Experience
m_sPA = sPA; // PA Point
m_sSkillPoint = sSkillPoint; // Skill Point
m_dwXP = iXP; // X Point
m_sLevel = sLevel; // 饭骇
if ( iExp > GetNextLevel(sLevel)) iExp = GetNextLevel(sLevel); // 救傈 内靛.
m_byClass = byClass; // 努贰胶
m_sMaxHP = g_sHPConst[m_byClass] * m_sCON + g_sHPLV[m_byClass] * (m_sLevel - 1) + g_sHPAdd[m_byClass];
m_sMaxPP = g_sPPConst[m_byClass] * m_sWIS + g_sPPLV[m_byClass] * (m_sLevel - 1) + g_sPPAdd[m_byClass];
m_sMaxSP = g_sSPConst[m_byClass] * m_sCON + g_sSPLV[m_byClass] * (m_sLevel - 1) + g_sSPAdd[m_byClass];
m_bLive = bLive; // 磷菌绰瘤, 混疽绰瘤?
m_sHP = sHP; // 泅犁 HP
m_sPP = sPP; // 泅犁 PP
m_sSP = sSP; // 泅犁 SP
if ( m_sHP <= 0 || m_bLive == USER_DEAD )
{
m_bLive = USER_DEAD;
SetZoneIndex(m_curz);
IsDeadUser(); // 磷篮 蜡历搁 付阑肺...
m_bLive = USER_LIVE;
m_sHP = m_sMaxHP;
}
else
SetZoneIndex(m_curz);
if (m_sHP > m_sMaxHP) m_sHP = m_sMaxHP;
if (m_sPP > m_sMaxPP) m_sPP = m_sMaxPP;
if (m_sSP > m_sMaxSP) m_sSP = m_sMaxSP;
if (iDN < 0) iDN = 0;
m_dwDN = iDN; // 家瘤陛
m_iCityValue = iCityValue; // 矫刮 穿利蔼
m_sKillCount = sKillCount; // PK穿利 冉荐
for ( i = 0; i < 11; i++ )
{
if ( m_iCityValue < g_CityRankValue[i] ) // 穿利摹蔼捞 扁霖 汲沥蔼焊促 累篮瘤 魄窜茄促.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -