本文整理汇总了C++中CItemContainer类的典型用法代码示例。如果您正苦于以下问题:C++ CItemContainer类的具体用法?C++ CItemContainer怎么用?C++ CItemContainer使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CItemContainer类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ADDTOCALLSTACK
bool CChar::ItemEquipWeapon( bool fForce )
{
ADDTOCALLSTACK("CChar::ItemEquipWeapon");
// Find my best weapon and equip it
if ( !fForce && m_uidWeapon.IsValidUID() ) // we already have a weapon equipped
return true;
CCharBase *pCharDef = Char_GetDef();
CItemContainer *pPack = GetPack();
if ( !pPack || !pCharDef || !pCharDef->Can(CAN_C_USEHANDS) )
return false;
// Loop through all my weapons and come up with a score for it's usefulness
CItem *pBestWeapon = NULL;
int iWeaponScoreMax = NPC_GetWeaponUseScore(NULL); // wrestling
for ( CItem *pItem = pPack->GetContentHead(); pItem != NULL; pItem = pItem->GetNext() )
{
int iWeaponScore = NPC_GetWeaponUseScore(pItem);
if ( iWeaponScore > iWeaponScoreMax )
{
iWeaponScoreMax = iWeaponScore;
pBestWeapon = pItem;
}
}
if ( pBestWeapon )
return ItemEquip(pBestWeapon);
return true;
}
示例2: ADDTOCALLSTACK
// We are creating a char from the current char and the corpse.
// Move the items from the corpse back onto us.
bool CChar::RaiseCorpse( CItemCorpse * pCorpse )
{
ADDTOCALLSTACK("CChar::RaiseCorpse");
if ( !pCorpse )
return false;
if ( pCorpse->GetCount() > 0 )
{
CItemContainer *pPack = GetPackSafe();
CItem *pItemNext = NULL;
for ( CItem *pItem = pCorpse->GetContentHead(); pItem != NULL; pItem = pItemNext )
{
pItemNext = pItem->GetNext();
if ( pItem->IsType(IT_HAIR) || pItem->IsType(IT_BEARD) ) // hair on corpse was copied!
continue;
if ( pItem->GetContainedLayer() )
ItemEquip(pItem);
else if ( pPack )
pPack->ContentAdd(pItem);
}
pCorpse->ContentsDump( GetTopPoint()); // drop left items on ground
}
UpdateAnimate((pCorpse->m_itCorpse.m_facing_dir & 0x80) ? ANIM_DIE_FORWARD : ANIM_DIE_BACK, true, true);
pCorpse->Delete();
return true;
}
示例3: ADDTOCALLSTACK
CItem * CContainer::ContentFind( RESOURCE_ID_BASE rid, DWORD dwArg, int iDecendLevels ) const
{
ADDTOCALLSTACK("CContainer::ContentFind");
// send all the items in the container.
if ( rid.GetResIndex() == 0 )
return( NULL );
CItem* pItem=GetContentHead();
for ( ; pItem!=NULL; pItem=pItem->GetNext())
{
if ( pItem->IsResourceMatch( rid, dwArg ))
break;
if ( iDecendLevels <= 0 )
continue;
CItemContainer * pCont = dynamic_cast <CItemContainer*>(pItem);
if ( pCont != NULL )
{
if ( ! pCont->IsSearchable())
continue;
CItem * pItemInCont = pCont->ContentFind( rid, dwArg, iDecendLevels-1 );
if ( pItemInCont )
return( pItemInCont );
}
}
return( pItem );
}
示例4: ADDTOCALLSTACK
void CItemSpawn::GenerateItem(CResourceDef *pDef)
{
ADDTOCALLSTACK("CitemSpawn:GenerateItem");
RESOURCE_ID_BASE rid = pDef->GetResourceID();
ITEMID_TYPE id = static_cast<ITEMID_TYPE>(rid.GetResIndex());
CItemContainer *pCont = dynamic_cast<CItemContainer *>(GetParent());
BYTE iCount = pCont ? static_cast<unsigned char>(pCont->ContentCount(rid)) : GetCount();
if ( iCount >= GetAmount() )
return;
CItem *pItem = CreateTemplate(id);
if ( pItem == NULL )
return;
WORD iAmountPile = static_cast<WORD>(minimum(USHRT_MAX,m_itSpawnItem.m_pile));
if ( iAmountPile > 1 )
{
CItemBase *pItemDef = pItem->Item_GetDef();
ASSERT(pItemDef);
if ( pItemDef->IsStackableType() )
pItem->SetAmount(Calc_GetRandVal(iAmountPile) + 1);
}
pItem->SetAttr(m_Attr & (ATTR_OWNED | ATTR_MOVE_ALWAYS));
pItem->SetDecayTime(g_Cfg.m_iDecay_Item); // it will decay eventually to be replaced later
pItem->MoveNearObj(this, m_itSpawnItem.m_DistMax);
AddObj(pItem->GetUID());
}
示例5: PROFILE_FUNC
void CLinkshell::RemoveMemberByName(int8* MemberName)
{
PROFILE_FUNC();
for (uint32 i = 0; i < members.size(); ++i)
{
if (strcmp(MemberName, members.at(i)->GetName()) == 0)
{
CCharEntity* PMember = (CCharEntity*)members.at(i);
CItemLinkshell* PItemLinkshell = (CItemLinkshell*)PMember->getStorage(LOC_INVENTORY)->GetItem(PMember->equip[SLOT_LINK]);
if (PItemLinkshell != NULL && PItemLinkshell->isType(ITEM_LINKSHELL))
{
linkshell::DelOnlineMember(PMember, PItemLinkshell);
PItemLinkshell->setSubType(ITEM_UNLOCKED);
PMember->equip[SLOT_LINK] = 0;
PMember->nameflags.flags &= ~FLAG_LINKSHELL;
PMember->pushPacket(new CInventoryAssignPacket(PItemLinkshell, INV_NORMAL));
PMember->pushPacket(new CLinkshellEquipPacket(PMember));
}
CItemContainer* Inventory = PMember->getStorage(LOC_INVENTORY);
for (uint8 SlotID = 0; SlotID < Inventory->GetSize(); ++SlotID)
{
CItemLinkshell* PItemLinkshell = (CItemLinkshell*)Inventory->GetItem(SlotID);
if (PItemLinkshell != NULL && PItemLinkshell->isType(ITEM_LINKSHELL) && PItemLinkshell->GetLSID() == m_id)
{
const int8* Query = "UPDATE char_inventory SET itemid = (itemid+2) WHERE charid = %u AND location = %u AND slot = %u LIMIT 1";
Sql_Query(SqlHandle, Query, PMember->id, LOC_INVENTORY, SlotID);
PItemLinkshell->SetLSID(0);
PItemLinkshell->setID(PItemLinkshell->getID() + 2);
PMember->pushPacket(new CInventoryItemPacket(PItemLinkshell, LOC_INVENTORY, SlotID));
}
}
charutils::SaveCharStats(PMember);
charutils::SaveCharEquip(PMember);
if (PMember->status == STATUS_NORMAL) PMember->status = STATUS_UPDATE;
PMember->pushPacket(new CInventoryFinishPacket());
PMember->pushPacket(new CCharUpdatePacket(PMember));
PMember->pushPacket(new CMessageSystemPacket(0,0,109));
return;
}
}
}
示例6: if
bool CItemContainer::IsItemInTrade()
{
// recursively get the item that is at "top" level.
CItemContainer * pObj = (dynamic_cast <CItemContainer*>(this));
//const CObjBase* pObj = pItem->GetContainer();
if ( !pObj )
return false;
else if (pObj->IsType( IT_EQ_TRADE_WINDOW ))
return true;
CItemContainer * pObj2 = (dynamic_cast <CItemContainer*>(this->GetContainer()));
return pObj2->IsItemInTrade();
}
示例7: ADDTOCALLSTACK
void CChar::NPC_PetClearOwners(bool bResendTooltip)
{
ADDTOCALLSTACK("CChar::NPC_PetClearOwners");
CChar *pOwner = NPC_PetGetOwner();
Memory_ClearTypes(MEMORY_IPET|MEMORY_FRIEND);
if ( m_pNPC )
m_pNPC->m_bonded = 0; // pets without owner cannot be bonded
if ( NPC_IsVendor() )
{
StatFlag_Clear(STATF_INVUL);
if ( pOwner ) // give back to NPC owner all the stuff we are trying to sell
{
CItemContainer *pBankVendor = GetContainerCreate(LAYER_BANKBOX);
CItemContainer *pBankOwner = pOwner->GetContainerCreate(LAYER_BANKBOX);
pOwner->AddGoldToPack(pBankVendor->m_itEqBankBox.m_Check_Amount, pBankOwner);
pBankVendor->m_itEqBankBox.m_Check_Amount = 0;
for ( size_t i = 0; i < COUNTOF(sm_VendorLayers); i++ )
{
CItemContainer *pCont = GetContainerCreate(sm_VendorLayers[i]);
if ( !pCont )
continue;
CItem *pItemNext = NULL;
for ( CItem *pItem = pCont->GetContentHead(); pItem != NULL; pItem = pItemNext )
{
pItemNext = pItem->GetNext();
pBankOwner->ContentAdd(pItem);
}
}
}
}
if ( IsStatFlag(STATF_Ridden) )
{
CChar *pCharRider = Horse_GetMountChar();
if ( pCharRider )
pCharRider->Horse_UnMount();
}
if ( pOwner )
{
if ( IsSetOF(OF_PetSlots) )
pOwner->FollowersUpdate(this, static_cast<short>(-maximum(1, GetDefNum("FOLLOWERSLOTS", true))));
if ( bResendTooltip )
ResendTooltip();
}
}
示例8: ADDTOCALLSTACK
void CItemSpawn::GenerateItem(CResourceDef * pDef)
{
ADDTOCALLSTACK("CitemSpawn:GenerateItem");
RESOURCE_ID_BASE rid = pDef->GetResourceID();
ITEMID_TYPE id = static_cast<ITEMID_TYPE>(rid.GetResIndex());
int iDistMax = m_itSpawnItem.m_DistMax;
int iAmountPile = m_itSpawnItem.m_pile;
int iCount = 0;
CItemContainer * pCont = dynamic_cast <CItemContainer *>( GetParent());
if ( pCont != NULL )
iCount = pCont->ContentCount( rid );
else
iCount = GetCount();
if ( iCount >= GetAmount())
return;
CItem * pItem = CreateTemplate( id );
if ( pItem == NULL )
return;
pItem->SetAttr( m_Attr & ( ATTR_OWNED | ATTR_MOVE_ALWAYS ));
if ( iAmountPile > 1 )
{
CItemBase * pItemDef = pItem->Item_GetDef();
ASSERT(pItemDef);
if ( pItemDef->IsStackableType())
{
if ( iAmountPile == 0 || iAmountPile > GetAmount())
iAmountPile = GetAmount();
pItem->SetAmount( Calc_GetRandVal(iAmountPile) + 1 );
}
}
pItem->SetDecayTime( g_Cfg.m_iDecay_Item ); // It will decay eventually to be replaced later.
pItem->MoveNearObj( this, iDistMax );
AddObj(pItem->GetUID());
pItem->m_uidSpawnItem = GetUID();
}
示例9: UpdateGuildsStock
void UpdateGuildsStock()
{
for (std::vector<CItemContainer*>::iterator iter = g_PGuildList.begin(); iter != g_PGuildList.end(); iter++)
{
CItemContainer* PGuild = *iter;
for(uint8 slotid = 1; slotid <= PGuild->GetSize(); ++slotid)
{
CItemShop* PItem = (CItemShop*)PGuild->GetItem(slotid);
PItem->setBasePrice(PItem->getMinPrice() + ((float)(PItem->getStackSize() - PItem->getQuantity()) / PItem->getStackSize()) * (PItem->getMaxPrice() - PItem->getMinPrice()));
if (PItem->IsDailyIncrease())
{
PItem->setQuantity(PItem->getQuantity() + PItem->getDailyIncrease());
}
}
}
ShowDebug(CL_CYAN"UpdateGuildsStock is finished\n" CL_RESET);
}
示例10: UpdateGuildsStock
void UpdateGuildsStock()
{
for (std::vector<CItemContainer*>::iterator iter = g_PGuildList.begin(); iter != g_PGuildList.end(); iter++)
{
CItemContainer* PGuild = *iter;
for(uint8 slotid = 1; slotid <= PGuild->GetSize(); ++slotid)
{
CItemShop* PItem = (CItemShop*)PGuild->GetItem(slotid);
// TODO: сначала, анализируя текущее количество предметов, обновляем их стоимость
if (PItem->IsDailyIncrease())
{
PItem->setQuantity(PItem->getQuantity() + PItem->getDailyIncrease());
}
//TODO: set price based on previous day stock
PItem->setBasePrice(PItem->getMinPrice());
}
}
ShowDebug(CL_CYAN"UpdateGuildsStock is finished\n" CL_RESET);
}
示例11: GetParent
void CItem::Spawn_GenerateItem( CResourceDef * pDef )
{
// Count how many items are here already.
// This could be in a container.
RESOURCE_ID_BASE rid = pDef->GetResourceID();
ITEMID_TYPE id = (ITEMID_TYPE) rid.GetResIndex();
int iDistMax = m_itSpawnItem.m_DistMax;
int iAmountPile = m_itSpawnItem.m_pile;
int iCount = 0;
CItemContainer * pCont = dynamic_cast <CItemContainer *>( GetParent());
if ( pCont != NULL )
{
iCount = pCont->ContentCount( rid );
}
else
{
// If is equipped this will produce the item where you are standing.
CPointMap pt = GetTopLevelObj()->GetTopPoint();
CWorldSearch AreaItems( pt, iDistMax );
while (true)
{
CItem * pItem = AreaItems.GetItem();
if ( pItem == NULL )
break;
if ( pItem->IsType(IT_SPAWN_ITEM))
continue;
if ( pItem->IsAttr( ATTR_INVIS ))
continue;
if ( pItem->GetID() != id )
continue;
// if ( pItem->m_uidLink != GetUID()) continue;
iCount += pItem->GetAmount();
}
}
if ( iCount >= GetAmount())
return;
CItem * pItem = CreateTemplate( id );
if ( pItem == NULL )
return;
pItem->SetAttr( m_Attr & ( ATTR_OWNED | ATTR_MOVE_ALWAYS ));
if ( iAmountPile > 1 )
{
CItemBase * pItemDef = pItem->Item_GetDef();
ASSERT(pItemDef);
if ( pItemDef->IsStackableType())
{
if ( iAmountPile == 0 || iAmountPile > GetAmount())
iAmountPile = GetAmount();
pItem->SetAmount( Calc_GetRandVal(iAmountPile) + 1 );
}
}
// pItem->m_uidLink = GetUID(); // This might be dangerous ?
pItem->SetDecayTime( g_Cfg.m_iDecay_Item ); // It will decay eventually to be replaced later.
pItem->MoveNearObj( this, iDistMax );
}
示例12: ADDTOCALLSTACK
bool CClient::Cmd_SecureTrade( CChar *pChar, CItem *pItem )
{
ADDTOCALLSTACK("CClient::Cmd_SecureTrade");
// Begin secure trading with a char. (Make the initial offer)
if ( !pChar || pChar == m_pChar )
return false;
// Make sure both clients can see each other, because trade window is an container
// and containers can be opened only after the object is already loaded on screen
if ( !m_pChar->CanSee(pChar) || !pChar->CanSee(m_pChar) )
return false;
if ( pItem && (IsTrigUsed(TRIGGER_DROPON_CHAR) || IsTrigUsed(TRIGGER_ITEMDROPON_CHAR)) )
{
CScriptTriggerArgs Args(pChar);
if ( pItem->OnTrigger(ITRIG_DROPON_CHAR, m_pChar, &Args) == TRIGRET_RET_TRUE )
return false;
}
if ( pChar->m_pNPC ) // NPC's can't use trade windows
return pItem ? pChar->NPC_OnItemGive(m_pChar, pItem) : false;
if ( !pChar->m_pClient ) // and also offline players
return false;
if ( pChar->GetDefNum("REFUSETRADES") )
{
SysMessagef(g_Cfg.GetDefaultMsg(DEFMSG_MSG_TRADE_REFUSE), pChar->GetName());
return false;
}
// Check if the trade window is already open
for ( CItem *pItemCont = m_pChar->GetContentHead(); pItemCont != NULL; pItemCont = pItemCont->GetNext() )
{
if ( !pItemCont->IsType(IT_EQ_TRADE_WINDOW) )
continue;
CItem *pItemPartner = pItemCont->m_uidLink.ItemFind();
if ( !pItemPartner )
continue;
CChar *pCharPartner = dynamic_cast<CChar *>(pItemPartner->GetParent());
if ( pCharPartner != pChar )
continue;
if ( pItem )
{
if ( IsTrigUsed(TRIGGER_DROPON_TRADE) )
{
CScriptTriggerArgs Args1(pChar);
if ( pItem->OnTrigger(ITRIG_DROPON_TRADE, this, &Args1) == TRIGRET_RET_TRUE )
return false;
}
CItemContainer *pCont = dynamic_cast<CItemContainer *>(pItemCont);
if ( pCont )
pCont->ContentAdd(pItem);
}
return true;
}
// Open new trade window
if ( IsTrigUsed(TRIGGER_TRADECREATE) )
{
CScriptTriggerArgs Args(pItem);
if ( (m_pChar->OnTrigger(CTRIG_TradeCreate, pChar, &Args) == TRIGRET_RET_TRUE) || (pChar->OnTrigger(CTRIG_TradeCreate, m_pChar, &Args) == TRIGRET_RET_TRUE) )
return false;
}
if ( IsTrigUsed(TRIGGER_DROPON_TRADE) && pItem )
{
CScriptTriggerArgs Args1(pChar);
if ( pItem->OnTrigger(ITRIG_DROPON_TRADE, this, &Args1) == TRIGRET_RET_TRUE )
return false;
}
CItem *pItem1 = CItem::CreateBase(ITEMID_Bulletin1);
if ( !pItem1 )
return false;
CItemContainer *pCont1 = static_cast<CItemContainer *>(pItem1);
if ( !pCont1 )
{
DEBUG_ERR(("Item 0%x must be a container type to enable player trading.\n", ITEMID_Bulletin1));
pItem1->Delete();
return false;
}
CItemContainer *pCont2 = static_cast<CItemContainer *>(CItem::CreateBase(ITEMID_Bulletin1));
ASSERT(pCont2);
pCont1->SetName("Trade Window");
pCont1->SetType(IT_EQ_TRADE_WINDOW);
pCont1->m_itEqTradeWindow.m_iWaitTime = 0;
pCont1->m_itEqTradeWindow.m_bCheck = 0;
pCont1->m_uidLink = pCont2->GetUID();
m_pChar->LayerAdd(pCont1, LAYER_SPECIAL);
pCont2->SetName("Trade Window");
pCont2->SetType(IT_EQ_TRADE_WINDOW);
pCont2->m_itEqTradeWindow.m_iWaitTime = 0;
pCont2->m_itEqTradeWindow.m_bCheck = 0;
//.........这里部分代码省略.........
示例13: ADDTOCALLSTACK
//.........这里部分代码省略.........
bCheckCrime = true;
break;
case PC_STAY:
case PC_STOP:
Skill_Start(NPCACT_STAY);
break;
case PC_TRANSFER:
if ( IsStatFlag(STATF_Conjured) )
{
pSrc->SysMessage(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_TRANSFER_SUMMONED));
return true;
}
pTargPrompt = g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_TARG_TRANSFER);
break;
case PC_RELEASE:
SoundChar(CRESND_RAND2);
if ( IsStatFlag(STATF_Conjured) || (m_pNPC->m_bonded && IsStatFlag(STATF_DEAD)) )
{
Delete();
return true;
}
Skill_Start(SKILL_NONE);
NPC_PetClearOwners();
ResendTooltip();
break;
case PC_DROP:
{
// Drop backpack items on ground
// NOTE: This is also called on pet release
CItemContainer *pPack = GetPack();
if ( pPack )
{
pPack->ContentsDump(GetTopPoint(), ATTR_OWNED);
break;
}
if ( NPC_CanSpeak() )
Speak(g_Cfg.GetDefaultMsg(DEFMSG_NPC_PET_CARRYNOTHING));
return true;
}
case PC_DROP_ALL:
DropAll(NULL, ATTR_OWNED);
break;
case PC_SPEAK:
NPC_OnPetCommand(true, pSrc);
return true;
case PC_EQUIP:
ItemEquipWeapon(false);
ItemEquipArmor(false);
break;
case PC_STATUS:
{
if ( !NPC_CanSpeak() )
break;
unsigned int iWage = pCharDef->GetHireDayWage();
CItemContainer *pBank = GetBank();
TCHAR *pszMsg = Str_GetTemp();
if ( NPC_IsVendor() )
示例14: ADDTOCALLSTACK
bool CChar::NPC_Vendor_Restock(bool bForce, bool bFillStock)
{
ADDTOCALLSTACK("CChar::NPC_Vendor_Restock");
// Restock this NPC char.
// Then Set the next restock time for this .
if ( m_pNPC == NULL )
return false;
// Make sure that we're a vendor and not a pet
if ( IsStatFlag(STATF_Pet) || !NPC_IsVendor() )
return false;
bool bRestockNow = true;
if ( !bForce && m_pNPC->m_timeRestock.IsTimeValid() )
{
// Restock occurs every 10 minutes of inactivity (unless
// region tag specifies different time)
CRegionWorld *region = GetRegion();
int64 restockIn = 10 * 60 * TICK_PER_SEC;
if( region != NULL )
{
CVarDefCont *vardef = region->m_TagDefs.GetKey("RestockVendors");
if( vardef != NULL )
restockIn = vardef->GetValNum();
if ( region->m_TagDefs.GetKey("NoRestock") != NULL )
bRestockNow = false;
}
if ( m_TagDefs.GetKey("NoRestock") != NULL )
bRestockNow = false;
if (bRestockNow)
bRestockNow = ( CServerTime::GetCurrentTime().GetTimeDiff(m_pNPC->m_timeRestock) > restockIn );
}
// At restock the containers are actually emptied
if ( bRestockNow )
{
m_pNPC->m_timeRestock.Init();
for ( size_t i = 0; i < CountOf(sm_VendorLayers); ++i )
{
CItemContainer *pCont = GetBank(sm_VendorLayers[i]);
if ( !pCont )
return false;
pCont->Empty();
}
}
if ( bFillStock )
{
// An invalid restock time means that the containers are
// waiting to be filled
if ( !m_pNPC->m_timeRestock.IsTimeValid() )
{
if ( IsTrigUsed(TRIGGER_NPCRESTOCK) )
{
CCharBase *pCharDef = Char_GetDef();
ReadScriptTrig(pCharDef, CTRIG_NPCRestock, true);
}
// we need restock vendor money as well
GetBank()->Restock();
}
// remember that the stock was filled (or considered up-to-date)
m_pNPC->m_timeRestock.SetCurrentTime();
}
return true;
}
示例15: InitConvItemDialog
BOOL CDbManager::ConvItemStart( void )
{
int nCount = 0;
int nStarted = 0;
DWORD dwMaxConv = 0;
char* szSQL = new char[40960];
char lpString[300];
char lpString1[300];
CQuery* pQueryChar = new CQuery;
CQuery* pQuerySave = new CQuery;
if( ConvItemConnectDB( pQueryChar, pQuerySave ) == FALSE )
return FALSE;
InitConvItemDialog();
AfxMessageBox( "ConvItemStart", MB_OK );
//////////////////////////////////////// Inventory Start ////////////////////////////////////////
if( ( dwMaxConv = GetMaxInventory( szSQL, pQueryChar, pQuerySave ) ) == 0 )
return FALSE;
sprintf( lpString, "%d / %d", 0, dwMaxConv );
UpdateConvItemDialog( "Inventory, Bank", lpString, "0 %%", 0 );
if( CreateInvenBankView( szSQL, pQueryChar, pQuerySave ) == FALSE )
return FALSE;
// Inven, Bank Item 가지고 오기
if( GetInventoryBankView( szSQL, pQueryChar, pQuerySave ) == FALSE )
return FALSE;
while( pQueryChar->Fetch() )
{
++nStarted;
sprintf( lpString, "%d / %d", nStarted, dwMaxConv );
sprintf( lpString1, "%d %", int( float( (float)nStarted / (float)dwMaxConv ) * 100.0f ) );
UpdateConvItemDialog( "Inventory, Bank", lpString, lpString1, (int( float( (float)nStarted / (float)dwMaxConv ) * 100.0f )) );
CMover* pMover = new CMover;
//GetUserInventoryBank( pMover, pQueryChar );
// mirchang_100416 VERIFYSTRING use return value
if( GetUserInventoryBank( pMover, pQueryChar ) == FALSE )
{
safe_delete( pMover );
return FALSE;
}
// mirchang_100416
if( InventoryBankConv( szSQL, pMover, pQueryChar, pQuerySave ) ) // SaveItem
{
if( SaveUserInventoryBank( szSQL, pMover, pQueryChar, pQuerySave ) == FALSE )
{
safe_delete( pMover );
return FALSE;
}
}
safe_delete( pMover );
}
if( DeleteInvenBankView( szSQL, pQueryChar, pQuerySave ) == FALSE )
return FALSE;
//////////////////////////////////////// GuildBank Start ////////////////////////////////////////
nStarted = 0;
if( ( dwMaxConv = GetMaxGuildBank( szSQL, pQueryChar, pQuerySave ) ) == 0 )
return FALSE;
sprintf( lpString, "%d / %d", 0, dwMaxConv );
UpdateConvItemDialog( "GuildBank", lpString, "0 %%", 0 );
if( CreateGuildBankView( szSQL, pQueryChar, pQuerySave ) == FALSE )
return FALSE;
// Inven, Bank Item 가지고 오기
if( GetGuildBankView( szSQL, pQueryChar, pQuerySave ) == FALSE )
return FALSE;
while( pQueryChar->Fetch() )
{
++nStarted;
sprintf( lpString, "%d / %d", nStarted, dwMaxConv );
sprintf( lpString1, "%d %", int( float( (float)nStarted / (float)dwMaxConv ) * 100.0f ) );
UpdateConvItemDialog( "GuildBank", lpString, lpString1, (int( float( (float)nStarted / (float)dwMaxConv ) * 100.0f )) );
CItemContainer<CItemElem> GuildBank; // 길드 창고
int nGuildId = 0;
GuildBank.SetItemContainer( ITYPE_ITEM, MAX_GUILDBANK );
nGuildId = pQueryChar->GetInt( "m_idGuild" );
GetGuildBank( &GuildBank, pQueryChar );
if( GuildBankConv( szSQL, nGuildId, &GuildBank, pQueryChar, pQuerySave ) )
{
if( SaveConvGuildBank( szSQL, nGuildId, &GuildBank, pQueryChar, pQuerySave ) == FALSE )
return FALSE;
}
}
if( DeleteGuildBankView( szSQL, pQueryChar, pQuerySave ) == FALSE )
return FALSE;
SAFE_DELETE( pQueryChar ); SAFE_DELETE( pQuerySave );
return TRUE;
}