📄 user2.cpp
字号:
result = FAIL;
TempBuf.Add(result);
Send(TempBuf, TempBuf.GetLength());
return;
}
if( OutputDN > 0 ) OutCost += 150;
DWORD BackMyDN = m_dwDN; // 归诀
DWORD BackBankDN = m_dwAccountBankDN;
short slotcount = GetShort( pBuf, index );
if( slotcount < 0 || slotcount >= TOTAL_ACCOUNT_BANK_ITEM_NUM ) { result = FAIL; goto go_result; }
for( i = 0; i < slotcount; i++ )
{
arSlot[i] = GetShort( pBuf, index );
arCount[i] = GetShort( pBuf, index );
if(arSlot[i] >= TOTAL_ACCOUNT_BANK_ITEM_NUM) { result = FAIL; goto go_result; }
sSid = m_AccountBankItem[arSlot[i]].sSid;
sHaveCount = m_AccountBankItem[arSlot[i]].sCount;
if(sSid < 0 || sSid >= g_arItemTable.GetSize()) { result = FAIL; goto go_result; }
if(arCount[i] <= 0 || arCount[i] > sHaveCount) { result = FAIL; goto go_result; }
if(g_arItemTable[sSid]->m_sDuration > 0 && arCount[i] > 1) { result = FAIL; goto go_result; }
iWeight += g_arItemTable[sSid]->m_byWeight * arCount[i];
if(m_iMaxWeight < m_iCurWeight + iWeight)
{
SendSystemMsg( IDS_USER_OVER_WEIGHT1, SYSTEM_ERROR, TO_ME);
result = FAIL;
goto go_result;
}
OutCost += 150;
}
if( OutCost > m_dwDN )
{
SendSystemMsg( IDS_USER_NOT_ENOUGH_PAY_FOR_OUT, SYSTEM_ERROR, TO_ME);
result = FAIL;
goto go_result;
}
else m_dwDN -= OutCost;
for( i = 0; i < TOTAL_ITEM_NUM; i++ ) // 酒捞袍 沥焊 归诀
{
MyItem[i] = m_UserItem[i];
}
for( i = 0; i < TOTAL_ACCOUNT_BANK_ITEM_NUM; i++ )
{
BankItem[i] = m_AccountBankItem[i];
}
for( i = 0; i < slotcount; i++ )
{
tDestSlot = GetSameItem( m_AccountBankItem[arSlot[i]], INVENTORY_SLOT );
if( tDestSlot >= 0 )
{
m_UserItem[tDestSlot].sCount += arCount[i];
}
else
{
tDestSlot = GetEmptySlot( INVENTORY_SLOT );
if( tDestSlot == -1 )
{
for( j = 0; j < TOTAL_ITEM_NUM; j++)// 酒捞袍 沥焊 汗盔
{
m_UserItem[j] = MyItem[j];
}
for( j = 0; j < TOTAL_ACCOUNT_BANK_ITEM_NUM; j++ )
{
m_AccountBankItem[j] = BankItem[j];
}
m_dwDN = BackMyDN;
m_dwAccountBankDN = BackBankDN;
result = FAIL; goto go_result;
}
m_UserItem[tDestSlot].sLevel = m_AccountBankItem[arSlot[i]].sLevel;
m_UserItem[tDestSlot].sSid = m_AccountBankItem[arSlot[i]].sSid;
m_UserItem[tDestSlot].sDuration = m_AccountBankItem[arSlot[i]].sDuration;
m_UserItem[tDestSlot].sBullNum = m_AccountBankItem[arSlot[i]].sBullNum;
m_UserItem[tDestSlot].sCount = arCount[i];
for(j = 0; j < MAGIC_NUM; j++) m_UserItem[tDestSlot].tMagic[j] = m_AccountBankItem[arSlot[i]].tMagic[j];
m_UserItem[tDestSlot].tIQ = m_AccountBankItem[arSlot[i]].tIQ;
m_UserItem[tDestSlot].iItemSerial = m_AccountBankItem[arSlot[i]].iItemSerial;
MakeItemLog( &m_UserItem[tDestSlot], ITEMLOG_ACCOUNT_BANKOUT );
}
arChangeMy.Add( tDestSlot );
if( arCount[i] >= m_AccountBankItem[arSlot[i]].sCount ) ReSetItemSlot( &m_AccountBankItem[arSlot[i]] );
else m_AccountBankItem[arSlot[i]].sCount -= arCount[i];
arChangeBank.Add( arSlot[i] );
}
if(!CheckMaxValueReturn(m_dwDN, OutputDN))
{ // 窜, MAX蔼捞搁 瞒咀篮...
CheckMaxValue(m_dwDN, OutputDN);
if(m_dwDN < OutputDN) OutputDN = 0;
else OutputDN = m_dwDN - OutputDN;
}
else m_dwDN += OutputDN;
// 篮青俊辑 猾促.
if(OutputDN >= m_dwAccountBankDN) m_dwAccountBankDN = 0;
else m_dwAccountBankDN -= OutputDN;
if( OutputDN > 0 )
MakeMoneyLog( OutputDN, ITEMLOG_ACCOUNT_BANKOUT_MONEY, NULL, m_dwAccountBankDN );
// 器飘府胶俊 技陛阑 穿利矫难 霖促.
dwTax = (DWORD)( OutCost * ((double)sRate/100) );
UpdateFortressTax(sStoreID, dwTax); // 器飘府胶 技陛捞搁 历厘...
/**************************DB Update 贸府*********************************************/
if(UpdateUserBank() == FALSE)
{
for( i = 0; i < TOTAL_ITEM_NUM; i++)// 酒捞袍 沥焊 汗盔
{
m_UserItem[i] = MyItem[i];
}
for( i = 0; i < TOTAL_ACCOUNT_BANK_ITEM_NUM; i++ )
{
m_AccountBankItem[i] = BankItem[i];
}
m_dwDN = BackMyDN;
m_dwAccountBankDN = BackBankDN;
result = FAIL;
goto go_result;
}
FlushItemLog( TRUE );
go_result:
TempBuf.Add(ACCOUNT_BANK_ITEM_MOVE_RESULT);
if(result == FAIL)
{
TempBuf.Add(result);
Send(TempBuf, TempBuf.GetLength());
FlushItemLog( FALSE );
return;
}
result = (BYTE)0x02;
TempBuf.Add(result);
TempBuf.Add( m_dwDN );
/* TempBuf.Add( m_dwAccountBankDN );
TempBuf.Add( (short)(arChangeBank.GetSize()) );
for( i = 0; i < arChangeBank.GetSize(); i++ )
{
bankslot = arChangeBank[i];
TempBuf.Add( (BYTE)bankslot );
TempBuf.Add(m_AccountBankItem[bankslot].sLevel);
TempBuf.Add(m_xxxxxxxxeiAccountBankItem[bankslot].sSid);
TempBuf.Add(m_AccountBankItem[bankslot].sDuration);
TempBuf.Add(m_AccountBankItem[bankslot].sBullNum);
TempBuf.Add(m_AccountBankItem[bankslot].sCount);
for( j = 0; j < MAGIC_NUM; j++) TempBuf.Add(m_AccountBankItem[bankslot].tMagic[j]);
TempBuf.Add(m_AccountBankItem[bankslot].tIQ);
}
*/
TempBuf.Add( (short)(arChangeMy.GetSize()) );
for( i = 0; i < arChangeMy.GetSize(); i++ )
{
myslot = arChangeMy[i];
TempBuf.Add( (BYTE)myslot );
TempBuf.Add( m_UserItem[myslot].sLevel );
TempBuf.Add( m_UserItem[myslot].sSid);
TempBuf.Add( m_UserItem[myslot].sDuration);
TempBuf.Add( m_UserItem[myslot].sBullNum);
TempBuf.Add( m_UserItem[myslot].sCount);
for( j = 0; j < MAGIC_NUM; j++ ) TempBuf.Add( m_UserItem[myslot].tMagic[j] );
TempBuf.Add( m_UserItem[myslot].tIQ );
}
Send(TempBuf, TempBuf.GetLength());
m_iCurWeight += iWeight;
GetRecoverySpeed(); // 雀汗加档 眉农...
}
void USER::AccountBankInPutDN(TCHAR *pBuf)
{
CBufferEx TempBuf;
BYTE result;
int index = 0;
DWORD BackBankDN = 0, BackMyDN = 0;
DWORD InputDN = GetDWORD(pBuf, index);
TempBuf.Add(ACCOUNT_BANK_ITEM_MOVE_RESULT);
if(InputDN == 0 || InputDN > m_dwDN)
{
result = FAIL;
TempBuf.Add(result);
Send(TempBuf, TempBuf.GetLength());
return;
}
BackMyDN = m_dwDN;
BackBankDN = m_dwAccountBankDN;
// 篮青俊 涝陛
if(!CheckMaxValueReturn(m_dwAccountBankDN, InputDN))
{ // 窜, MAX蔼捞搁 瞒咀篮...
CheckMaxValue(m_dwAccountBankDN, InputDN);
if(m_dwAccountBankDN < InputDN) InputDN = 0;
else InputDN = m_dwAccountBankDN - InputDN;
}
else m_dwAccountBankDN += InputDN;
// 啊瘤绊 乐绰 家瘤陛俊辑 猾促.
if(m_dwDN <= InputDN) m_dwDN = 0;
else m_dwDN -= InputDN;
MakeMoneyLog( InputDN, ITEMLOG_ACCOUNT_BANKIN_MONEY, NULL, m_dwAccountBankDN );
if(UpdateUserBank() == FALSE) // DB UpDate
{
m_dwDN = BackMyDN;
m_dwBankDN = BackBankDN;
result = FAIL;
TempBuf.Add(result);
Send(TempBuf, TempBuf.GetLength());
FlushItemLog( FALSE );
return;
}
result = (BYTE)0x03; // 3 : DN 涝陛
TempBuf.Add(result);
TempBuf.Add(m_dwAccountBankDN); // 篮青郴 涝陛茄 醚陛咀
TempBuf.Add(m_dwDN); // 家瘤茄 醚陛咀
Send(TempBuf, TempBuf.GetLength());
FlushItemLog( TRUE );
}
void USER::AccountBankOpenReq(int nStoreID)
{
CStore* pStore = NULL;
pStore = GetStore(nStoreID);
if(pStore == NULL) return;
DWORD dwCost = 150;
int i, j;
CBufferEx TempBuf;
CByteArray arItemSlotList;
// m_dwAccountBankDN = 0;
// if(!LoadMemAccountBank())
// {
// if(!LoadAccountBank()) return; // 蜡历啊 焊包茄 篮青 酒捞袍阑 贸澜 立加且锭 啊瘤绊 柯促.
// }
for(i = 0; i < TOTAL_ACCOUNT_BANK_ITEM_NUM; i++)
{ // 泅犁 焊包等 酒捞袍父 焊咯林扁困秦 沥纺茄促.
if(m_AccountBankItem[i].sSid >= 0)
{
arItemSlotList.Add(i);
}
}
TempBuf.Add(ACCOUNT_BANK_OPEN);
TempBuf.Add((short)nStoreID);
TempBuf.Add((DWORD)m_dwAccountBankDN);
TempBuf.Add((BYTE)arItemSlotList.GetSize());
for(i = 0; i < arItemSlotList.GetSize(); i++)
{
BYTE tempSlot = 0;
tempSlot = arItemSlotList[i];
TempBuf.Add(tempSlot);
TempBuf.Add((short)m_AccountBankItem[tempSlot].sLevel);
TempBuf.Add((short)m_AccountBankItem[tempSlot].sSid);
TempBuf.Add((short)m_AccountBankItem[tempSlot].sDuration);
TempBuf.Add((short)m_AccountBankItem[tempSlot].sBullNum);
TempBuf.Add((short)m_AccountBankItem[tempSlot].sCount);
for(j = 0; j < MAGIC_NUM; j++) TempBuf.Add((BYTE)m_AccountBankItem[tempSlot].tMagic[j]);
TempBuf.Add((BYTE)m_AccountBankItem[tempSlot].tIQ);
TempBuf.Add( dwCost );
}
Send(TempBuf, TempBuf.GetLength());
}
////////////////////////////////////////////////////////////////////////////////
// 荤捞坷葱 矫傈矫 竿傍俊 狼茄 刘啊啦阑 备茄促.
//
int USER::GetPsyAssault()
{
int iLevel = 0;
int iSkillSid = 0;
int iAttackUp = 0;
int tClass = 0;
BYTE tWeaponClass = 0;
IsCanUseWeaponSkill(tWeaponClass);
tClass = tWeaponClass * SKILL_NUM;
for(int i = tClass; i < tClass + SKILL_NUM; i++)
{
iSkillSid = m_UserSkill[i].sSid;
if(iSkillSid == SKILL_ASSAULT) // 竿傍 // 20 index
{
// 鉴荐 胶懦 饭骇
iLevel = m_UserSkill[i].tLevel;
if(iLevel < 0) iLevel = 0;
// 酒捞袍俊 狼茄 胶懦 函悼 饭骇
if(iLevel >= 1) iLevel += m_DynamicUserData[g_DynamicSkillInfo[iSkillSid]]+ m_DynamicUserData[MAGIC_ALL_SKILL_UP];
if(iLevel >= SKILL_LEVEL) iLevel = SKILL_LEVEL - 1;
if(iSkillSid >= g_arSkillTable.GetSize()) return 0;
iAttackUp = g_arSkillTable[iSkillSid]->m_arInc.GetAt(iLevel);
}
}
return iAttackUp;
}
////////////////////////////////////////////////////////////////////////////////
// 荤捞坷葱 矫傈矫 例措规绢 胶懦俊 狼茄 刘啊啦阑 备茄促.
//
int USER::GetPsyAbsoluteDefense()
{
int iLevel = 0;
int iSkillSid = 0;
int iAttackUp = 0;
int tClass = 0;
BYTE tWeaponClass = 0;
IsCanUseWeaponSkill(tWeaponClass);
tClass = tWeaponClass * SKILL_NUM;
for(int i = tClass; i < tClass + SKILL_NUM; i++)
{
iSkillSid = m_UserSkill[i].sSid;
if(iSkillSid == SKILL_ABSOLUTE_DEFENSE) // 例措规绢 21 index
{
// 鉴荐 胶懦 饭骇
iLevel = m_UserSkill[i].tLevel;
if(iLevel < 0) iLevel = 0;
// 酒捞袍俊 狼茄 胶懦 函悼 饭骇
if(iLevel >= 1) iLevel += m_DynamicUserData[g_DynamicSkillInfo[iSkillSid]]+ m_DynamicUserData[MAGIC_ALL_SKILL_UP];
if(iLevel >= SKILL_LEVEL) iLevel = SKILL_LEVEL - 1;
if(iSkillSid >= g_arSkillTable.GetSize()) return 0;
iAttackUp = g_arSkillTable[iSkillSid]->m_arInc.GetAt(iLevel);
}
}
return iAttackUp;
}
////////////////////////////////////////////////////////////////////////////////
// 荤捞坷葱 矫傈矫 荤捞坷葱 历亲 胶懦俊 狼茄 刘啊啦阑 备茄促.
//
int USER::GetPsyPsyResist()
{
int iLevel = 0;
int iSkillSid = 0;
int iAttackUp = 0;
int tClass = 0;
BYTE tWeaponClass = 0;
IsCanUseWeaponSkill(tWeaponClass);
tClass = tWeaponClass * SKILL_NUM;
for(int i = tClass; i < tClass + SKILL_NUM; i++)
{
iSkillSid = m_UserSkill[i].sSid;
if(iSkillSid == SKILL_PSYCHIC_RESIST) // 荤捞坷葱 历亲 // 22 index
{
// 鉴荐 胶懦 饭骇
iLevel = m_UserSkill[i].tLevel;
if(iLevel < 0) iLevel = 0;
// 酒捞袍俊 狼茄 胶懦 函悼 饭骇
if(iLevel >= 1) iLevel += m_DynamicUserData[g_DynamicSkillInfo[iSkillSid]]+ m_DynamicUserData[MAGIC_ALL_SKILL_UP];
if(iLevel >= SKILL_LEVEL) iLevel = SKILL_LEVEL - 1;
if(iSkillSid >= g_arSkillTable.GetSize()) return 0;
iAttackUp = g_arSkillTable[iSkillSid]->m_arInc.GetAt(iLevel);
}
}
return iAttackUp;
}
void USER::ResetOver100LevelSkill(int sLevel)
{
int emptyskillslot = -1;
int skillsid = 0;
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;
skillsid = m_UserSkill[emptyskillslot].sSid;
if( sLevel <= 99 ) // 父距 99乏栏肺 悸泼窍扼绊 甸绢坷搁
{
m_UserSkill[emptyskillslot].sSid = emptyskillslot; // 扁粮 100乏 胶懦 沥焊甫 瘤款促
m_UserSkill[emptyskillslot].tLevel = 0;
return;
}
else
{
if( skillsid < 0 || skillsid >= g_arSkillTable.GetSize() ) return;
if( g_arSkillTable[skillsid]->m_sSid == -1 ) return;
//此处为限制百级技的条件
if(sLevel >99 && sLevel < 120)
{
m_UserSkill[emptyskillslot].tLevel = (BYTE)((sLevel % 100) + 1);
}
//如果等级大于或是等于120那么都把它的技能点数固定在20上
if(sLevel >= 120)
{
m_UserSkill[emptyskillslot].tLevel = (BYTE)(20);
}
}
}
BOOL USER::CheckMoneyMinMax(int min, int max)
{
if( min < -1 || max < -1 ) return FALSE;
if( min == -1 && max == -1 ) return FALSE;
DW
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -