📄 user2.cpp
字号:
}
if(m_iMaxWeight < m_iCurWeight + iWeight - iBasicItemWeight)
{
SendSystemMsg( IDS_USER_OVER_WEIGHT1, SYSTEM_ERROR, TO_ME);
goto go_dressing_result;
}
// 格废阑 牢亥俊 -------------------- --------------------//
for( i = 0; i < arSame.GetSize(); i++ )
{
CheckMaxValue((short &)m_UserItem[arSameSlot[i]].sCount, (short)arSame[i]->sCount);
}
for(i = 0; i < arEmpty.GetSize(); i++)
{
m_UserItem[arEmptySlot[i]].sLevel = arEmpty[i]->sLevel;
m_UserItem[arEmptySlot[i]].sSid = arEmpty[i]->sSid;
m_UserItem[arEmptySlot[i]].sCount = arEmpty[i]->sCount;
m_UserItem[arEmptySlot[i]].sBullNum = arEmpty[i]->sBullNum;
m_UserItem[arEmptySlot[i]].sDuration = arEmpty[i]->sDuration;
m_UserItem[arEmptySlot[i]].tIQ = arEmpty[i]->tIQ;
for(j =0; j < MAGIC_NUM; j++) m_UserItem[arEmptySlot[i]].tMagic[j] = arEmpty[i]->tMagic[j];
}
// 盔籍阑 绝局绰 内靛 鞘夸窃 !!!!
if( pOrgItem->sCount == itemcount ) ReSetItemSlot( &m_UserItem[itemslot] );//ReSetItemSlot(sSlot);
else m_UserItem[itemslot].sCount = m_UserItem[itemslot].sCount - (short)itemcount;
if(UpdateUserItemDN() == FALSE)
{
for(i = 0; i < TOTAL_ITEM_NUM; i++) // 酒捞袍 沥焊 券盔
{
m_UserItem[i] = MyItem[i];
}
SendSystemMsg( IDS_USER_DRESSING_FAIL, SYSTEM_NORMAL, TO_ME);
bFlag = TRUE;
goto go_dressing_result;
}
m_iCurWeight += ( iWeight - iBasicItemWeight );
GetRecoverySpeed();
UpdateInvenSlot(&arEmptySlot, &arSameSlot);
SendSystemMsg( strResult, SYSTEM_ERROR, TO_ME);
TempBuf.Add(DRESSING);
TempBuf.Add(SUCCESS);
TempBuf.Add( (short)itemslot );
TempBuf.Add(pOrgItem->sLevel);
TempBuf.Add(pOrgItem->sSid);
TempBuf.Add(pOrgItem->sDuration);
TempBuf.Add(pOrgItem->sBullNum);
TempBuf.Add(pOrgItem->sCount);
for( i = 0; i < MAGIC_NUM; i++ ) TempBuf.Add(pOrgItem->tMagic[i]);
TempBuf.Add(pOrgItem->tIQ);
Send(TempBuf, TempBuf.GetLength());
go_dressing_result:
int dddd = 0;
if( bFlag )
{
TempBuf.Add(DRESSING);
TempBuf.Add(FAIL);
Send(TempBuf, TempBuf.GetLength());
}
// 皋葛府 秦力 -------------------- --------------------//
for(i = 0; i < arSame.GetSize(); i++)
{
if(arSame[i] != NULL) delete arSame[i];
}
arSame.RemoveAll();
arSameSlot.RemoveAll();
for(i = 0; i < arEmpty.GetSize(); i++)
{
if(arEmpty[i] != NULL) delete arEmpty[i];
}
arEmpty.RemoveAll();
arEmptySlot.RemoveAll();
for(i = 0; i < arResult.GetSize(); i++ )
{
if( arResult[i] ) delete arResult[i];
}
arResult.RemoveAll();
}
void USER::ItemDataVersionCheck()
{
/*
int i;
switch( m_tItemVer )
{
case 0x00:
{
for(i = 0; i < TOTAL_ITEM_NUM; i++)
{
m_UserItem[i].iItemSerial = GenerateItemSerial( &(m_UserItem[i]) );
}
for(i = 0; i < TOTAL_BANK_ITEM_NUM; i++)
{
m_UserBankItem[i].iItemSerial = GenerateItemSerial( &(m_UserBankItem[i]) );
}
m_tItemVer = 0x01;
UpdateMemUserAll( TRUE );
}
case 0x01:
default:
break;
}
switch( m_tAccountBankItemVer )
{
case 0X00:
{
for(i = 0; i < TOTAL_ACCOUNT_BANK_ITEM_NUM; i++)
{
m_AccountBankItem[i].iItemSerial = GenerateItemSerial( &(m_AccountBankItem[i]) );
}
m_tAccountBankItemVer = 0x01;
UpdateMemUserAll( TRUE );
}
}
*/
}
void USER::SelectOver100Skill(TCHAR *pBuf)
{
if( m_sLevel < 100 ) return; // 100乏 捞惑父 急琶 且 荐 乐促.
int emptyskillslot = -1;
/*
#define BRAWL 0
#define STAFF 1
#define EDGED 2
#define FIREARMS 3
*/
switch( m_byClass )
{
case BRAWL:
emptyskillslot = 4;
break;
case STAFF:
emptyskillslot = 9;
break;
case EDGED:
emptyskillslot = 14;
break;
case FIREARMS:
emptyskillslot = 19;
break;
default:
return;
}
if( emptyskillslot == -1 ) return; // 弊 拌凯俊辑 荤侩窍瘤 臼绊 乐绰 付瘤阜 胶懦
int skillsid = m_UserSkill[emptyskillslot].sSid;
if(skillsid < 0 || skillsid >= g_arSkillTable.GetSize()) return;
if( g_arSkillTable[skillsid]->m_sSid != -1 ) // 捞固 100乏 捞惑 胶懦阑 榜耳阑锭
{
if( emptyskillslot != skillsid ) return;
}
int index = 0;
int selectedskill = GetByte( pBuf, index );
if( selectedskill < 20 || selectedskill >= 24 ) return; // 努扼捞攫飘俊辑 逞绢坷绰 胶懦 锅龋绰 0-3捞促
/* 20 - 竿傍
21 - 例措规绢
22 - 荤捞疟 历亲
23 - 叼奇胶 诀 */
/* if(selectedskill == 20)
{
if(m_byClass != 0)
{
SendUserStatusSkill();
return;
}
} */
int backupskill = m_UserSkill[emptyskillslot].sSid;
int backupskilllevel = m_UserSkill[emptyskillslot].tLevel;
m_UserSkill[emptyskillslot].sSid = selectedskill;
if( m_sLevel > 99 || m_sLevel < 130)
{
m_UserSkill[emptyskillslot].tLevel = (BYTE)((m_sLevel % 100) + 1);
}
if( m_sLevel >= 130) //此处控制120级后,固定技能点为20
{
m_UserSkill[emptyskillslot].tLevel = (BYTE)(30);
}
if( !UpdateUserData() )
{
m_UserSkill[emptyskillslot].sSid = backupskill;
m_UserSkill[emptyskillslot].tLevel = backupskilllevel;
return;
}
SendUserStatusSkill();
}
UINT64 USER::GenerateItemSerial(ItemList* pItem)
{
if( pItem->tIQ == MAGIC_ITEM || // 概流酒捞袍捞芭唱
pItem->tIQ == RARE_ITEM || // 贰绢酒捞袍捞芭唱
pItem->sLevel >= 20 || // 饭骇 20捞惑 酒捞袍捞芭唱
pItem->tMagic[5] >= 1 || // 诀弊饭捞靛啊 1锅捞惑 等 酒捞袍捞扼搁
pItem->sSid == 756 ) // 必距
{
CTime t;
t = CTime::GetCurrentTime();
MYINT upper; // 矫埃栏肺 惑困 4官捞飘甫 父电促
MYINT under; // 矫府倔肺 窍困 3官捞飘甫 唱赣瘤 茄官捞飘绰 辑滚 老访锅龋
memcpy( &(upper.i), &t, sizeof(CTime) );
// under.i = (int)::InterlockedIncrement( &(g_dwItemSerial) );
under.i = (int)(g_dwItemSerial);
under.b[3] = g_ItemSerialIndex;
g_dwItemSerial++;
if( g_dwItemSerial >= 255*255*255 ) g_dwItemSerial = 0;
MYINT64 total;
total.b[7] = upper.b[3];
total.b[6] = upper.b[2];
total.b[5] = upper.b[1];
total.b[4] = upper.b[0];
total.b[3] = under.b[3];
total.b[2] = under.b[2];
total.b[1] = under.b[1];
total.b[0] = under.b[0];
TRACE("GenerateSerial - %I64d\n", total.i );
return total.i;
}
return 0;
}
void USER::AccountBankItemMoveReq(TCHAR *pBuf)
{
#ifdef _ACTIVE_USER
// if(m_iDisplayType == 6 && m_sLevel > 25) return; //yskang 0.5
if(m_iDisplayType == 6) return; //yskang 0.5
#endif
int index = 0;
BYTE type = GetByte(pBuf, index);
switch(type)
{
case BANK_ITEM_INPUT:
AccountBankInPut(pBuf + index);
break;
case BANK_ITEM_OUTPUT:
AccountBankOutPut(pBuf + index);
break;
case BANK_DN_INPUT:
AccountBankInPutDN(pBuf + index);
break;
}
}
void USER::AccountBankInPut(TCHAR *pBuf)
{
int i;
int tDestSlot;
int index = 0;
int iOver = 0;
short sSid = -1;
short sHaveCount = 0;
DWORD dwCost = 150;
BYTE result = SUCCESS;
CBufferEx TempBuf;
ItemList MyItem[TOTAL_ITEM_NUM], BackItem;
BYTE tSourceSlot = GetByte(pBuf, index); // 荤侩磊 酒捞袍捞 乐带 浇吩 困摹
short sCount = GetShort(pBuf, index); // 倔付父怒 焊包
// 坷肺瘤 牢亥父 啊瓷窍促.
if(tSourceSlot < EQUIP_ITEM_NUM || tSourceSlot >= EQUIP_ITEM_NUM + INVENTORY_NUM) { result = FAIL; goto go_result; }
sSid = m_UserItem[tSourceSlot].sSid;
sHaveCount = m_UserItem[tSourceSlot].sCount;
if(sHaveCount <= 0) { result = FAIL; goto go_result; } // 酒捞袍捞 绝促.
if(sSid < 0 || sSid >= g_arItemTable.GetSize()) { result = FAIL; goto go_result; } // 肋给等 sSid
if(g_arItemTable[sSid]->m_sEvent >= EVENT_RR_ITEM_BAND) // 肺凯烦喉 惑前篮 烹钦芒绊俊 持阑 荐 绝促.
{
SendSystemMsg( IDS_USER_CANT_SHARE_EVENT_ITEM, SYSTEM_ERROR, TO_ME);
result = FAIL; goto go_result;
}
if(sCount > ACCOUNT_BANK_MAX_ITEM)
{
SendSystemMsg( IDS_USER_SAME_ITEM_COUNT_MAX, SYSTEM_ERROR, TO_ME);
result = FAIL; goto go_result;
}
if(sCount <= 0 || sCount > sHaveCount) { result = FAIL; goto go_result; } // 家瘤茄 酒捞袍 荐焊促 腹阑 版快
//郴备档 眉农甫 wear沥焊肺 沁促.
//if(g_arItemTable[sSid]->m_byWear <= 5 && sCount > 1) { result = FAIL; goto go_result; }
if(g_arItemTable[sSid]->m_sDuration > 0 && sCount > 1) { result = FAIL; goto go_result; } // 般磨荐 绝绰单 肮荐啊 1焊促 努荐 绝促.
for(i = 0; i < TOTAL_ITEM_NUM; i++) // 酒捞袍 沥焊 归诀
{
MyItem[i] = m_UserItem[i];
}
ReSetItemSlot(&BackItem); // DB角菩俊 措厚茄 归诀侩 檬扁拳
// 老窜 般磨荐 乐绰瘤, 般摹搁 鞍篮 酒捞袍捞 乐绰瘤 茫酒夯促.
tDestSlot = GetSameItem(m_UserItem[tSourceSlot], ACCOUNT_BANK_SLOT);
/***************************篮青 诀公 贸府********************************************/
if(tDestSlot >= 0) // 亲惑 货肺捞 眠啊 登绰巴阑 扁霖栏肺 贸府
{
BackItem = m_AccountBankItem[tDestSlot];
if(m_AccountBankItem[tDestSlot].sCount >= ACCOUNT_BANK_MAX_ITEM)
{
SendSystemMsg( IDS_USER_SAVE_MAX_COUNT, SYSTEM_ERROR, TO_ME);
result = FAIL; goto go_result;
}
if((m_AccountBankItem[tDestSlot].sCount + sCount) > ACCOUNT_BANK_MAX_ITEM)
{ // MAX蔼阑 逞栏搁 菜盲快绊 唱赣瘤 贸府
iOver = m_AccountBankItem[tDestSlot].sCount + sCount - ACCOUNT_BANK_MAX_ITEM;
if(iOver <= 0) { result = FAIL; goto go_result; }
m_AccountBankItem[tDestSlot].sCount = ACCOUNT_BANK_MAX_ITEM;
sCount = sCount - iOver;
}
else m_AccountBankItem[tDestSlot].sCount += sCount;
}
else
{ // 眠啊
tDestSlot = GetEmptySlot(ACCOUNT_BANK_SLOT);
if(tDestSlot == -1)
{
result = FAIL; goto go_result;
}
m_AccountBankItem[tDestSlot].sLevel = m_UserItem[tSourceSlot].sLevel;
m_AccountBankItem[tDestSlot].sSid = m_UserItem[tSourceSlot].sSid;
m_AccountBankItem[tDestSlot].sDuration = m_UserItem[tSourceSlot].sDuration;
m_AccountBankItem[tDestSlot].sBullNum = m_UserItem[tSourceSlot].sBullNum;
m_AccountBankItem[tDestSlot].sCount = sCount;
for(i = 0; i < MAGIC_NUM; i++) m_AccountBankItem[tDestSlot].tMagic[i] = m_UserItem[tSourceSlot].tMagic[i];
m_AccountBankItem[tDestSlot].tIQ = m_UserItem[tSourceSlot].tIQ;
m_AccountBankItem[tDestSlot].iItemSerial = m_UserItem[tSourceSlot].iItemSerial;
}
index = 0;
index = g_arItemTable[m_UserItem[tSourceSlot].sSid]->m_byWeight * sCount;
/**************************蜡历 牢亥 贸府*********************************************/
if(sCount >= sHaveCount && iOver == 0)
{
MakeItemLog( &m_AccountBankItem[tDestSlot], ITEMLOG_ACCOUNT_BANKIN );
ReSetItemSlot(&m_UserItem[tSourceSlot]);
}
else m_UserItem[tSourceSlot].sCount -= sCount;
/**************************DB Update 贸府*********************************************/
if(UpdateUserBank() == FALSE)
{
for(i = 0; i < TOTAL_ITEM_NUM; i++)// 酒捞袍 沥焊 汗盔
{
m_UserItem[i] = MyItem[i];
}
m_AccountBankItem[tDestSlot] = BackItem;
result = FAIL;
FlushItemLog( FALSE );
goto go_result;
}
FlushItemLog( TRUE );
go_result:
TempBuf.Add(ACCOUNT_BANK_ITEM_MOVE_RESULT);
if(result == FAIL)
{
TempBuf.Add(result);
Send(TempBuf, TempBuf.GetLength());
return;
}
result = (BYTE)0x01;
TempBuf.Add(result);
TempBuf.Add((BYTE)tDestSlot); // 篮青诀公
TempBuf.Add( dwCost );
TempBuf.Add(m_AccountBankItem[tDestSlot].sLevel);
TempBuf.Add(m_AccountBankItem[tDestSlot].sSid);
TempBuf.Add(m_AccountBankItem[tDestSlot].sDuration);
TempBuf.Add(m_AccountBankItem[tDestSlot].sBullNum);
TempBuf.Add(m_AccountBankItem[tDestSlot].sCount);
for(i = 0; i < MAGIC_NUM; i++) TempBuf.Add(m_AccountBankItem[tDestSlot].tMagic[i]);
TempBuf.Add(m_AccountBankItem[tDestSlot].tIQ);
TempBuf.Add((BYTE)tSourceSlot); // 蜡历 牢亥
TempBuf.Add(m_UserItem[tSourceSlot].sLevel);
TempBuf.Add(m_UserItem[tSourceSlot].sSid);
TempBuf.Add(m_UserItem[tSourceSlot].sDuration);
TempBuf.Add(m_UserItem[tSourceSlot].sBullNum);
TempBuf.Add(m_UserItem[tSourceSlot].sCount);
for(i = 0; i < MAGIC_NUM; i++) TempBuf.Add(m_UserItem[tSourceSlot].tMagic[i]);
TempBuf.Add(m_UserItem[tSourceSlot].tIQ);
Send(TempBuf, TempBuf.GetLength());
m_iCurWeight -= index;
if(m_iCurWeight < 0) m_iCurWeight = 0;
GetRecoverySpeed(); // 雀汗加档 眉农...
}
void USER::AccountBankOutPut(TCHAR *pBuf)
{
int i, j, iWeight = 0;
int tDestSlot;
int index = 0;
int iOver = 0;
short sSid = -1;
short sHaveCount = 0;
short myslot;
BYTE result = SUCCESS;
CWordArray arChangeMy, arChangeBank;
ItemList MyItem[TOTAL_ITEM_NUM], BankItem[TOTAL_ACCOUNT_BANK_ITEM_NUM];
BYTE arSlot[TOTAL_ACCOUNT_BANK_ITEM_NUM];
short arCount[TOTAL_ACCOUNT_BANK_ITEM_NUM];
for( i = 0; i < TOTAL_ACCOUNT_BANK_ITEM_NUM; i++ ) arSlot[i] = -1;
for( i = 0; i < TOTAL_ACCOUNT_BANK_ITEM_NUM; i++ ) arCount[i] = -1;
CBufferEx TempBuf;
CStore* pStore = NULL;
short sStoreID = GetShort(pBuf, index);
if(sStoreID < 0) return;
pStore = GetStore(sStoreID);
if(pStore == NULL) return;
short sRate = pStore->m_sRate;
DWORD OutCost = 0;
DWORD dwTax = 0;
DWORD OutputDN = GetDWORD(pBuf, index);
if(OutputDN > m_dwAccountBankDN) // 呈公 农搁
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -