// Inventory Updated void UInventory::UpdateInfo() { // Event in HUD that Inventory Updated if (ThePlayer && ThePlayer->TheHUD) ThePlayer->TheHUD->BP_InventoryUpdated(); if (Items.Num()<1)return; TotalWeight = 0; // Calculate weight of each item * itemcound for (int i = 0; i < Items.Num(); i++) { if (Items[i].Weight>0 && Items[i].ItemCount>0) TotalWeight += (Items[i].Weight*Items[i].ItemCount); } SaveInventory(); }
// Add subclass of item to inventory FItemData* UInventory::AddItem(TSubclassOf<AItem> newItem) { if (newItem == NULL) return NULL; // Check if same item in inventory if (Items.Num()>0) { // If new Item is weapon and same type as current weapon if (newItem->GetDefaultObject<AWeapon>() && ThePlayer && ThePlayer->TheWeapon && ThePlayer->TheWeapon->GetClass() == newItem->GetDefaultObject<AWeapon>()->GetClass()) { // Add Ammo to the current weapon equiped ThePlayer->TheWeapon->AddAmmo(newItem->GetDefaultObject<AWeapon>()); // Find the weapon data and return it. for (int32 i = 0; i < Items.Num(); i++) { if (Items.IsValidIndex(i) && Items[i].Archetype.GetDefaultObject()->GetClass() == ThePlayer->TheWeapon->GetClass()) return &Items[i]; } return NULL; } // Check current item list if same item exists for (int32 i = 0; i < Items.Num(); i++) { // If same object archetype if (Items[i].Archetype->GetDefaultObject()->GetClass() == newItem->GetDefaultObject()->GetClass()) { if (newItem->GetDefaultObject<AItem>())newItem->GetDefaultObject<AItem>()->BP_ItemUpdated(); // IF Weapon add ammo, else add count if (Cast<AWeapon>(newItem->GetDefaultObject<AItem>())) { Items[i].MainFireStats.AddAmmo(newItem->GetDefaultObject<AWeapon>()->MainFire.CurrentAmmo, newItem->GetDefaultObject<AWeapon>()->MainFire.ClipNumber); } else Items[i].ItemCount++; // Save and Update Item Data SaveInventory(); UpdateInfo(); return &Items[i]; } } } // New Item AItem* newItemBase = newItem->GetDefaultObject<AItem>(); FItemData newData = FItemData(newItem, newItemBase->ItemName, newItemBase->ItemIcon, newItemBase->Weight, newItemBase->ItemCount); // Add New item to item list and update inventory Items.Add(newData); UpdateInfo(); return &Items[Items.Num()-1]; }
BOOL CDbManager::SaveUserInventoryBank( char* pszSQL, CMover* pMover, CQuery* pQueryChar, CQuery* pQuerySave ) { ItemContainerStruct icsInventory, icsBank; SaveInventory( pMover, &icsInventory ); SaveBank( pMover, &pMover->m_Bank[0], &icsBank ); sprintf( pszSQL, "UPDATE INVENTORY_TBL" " SET m_Inventory = '%s', m_apIndex = '%s', m_dwObjIndex = '%s'" " where m_idPlayer = '%07d' and serverindex = '%02d'", icsInventory.szItem, icsInventory.szIndex, icsInventory.szObjIndex , pMover->m_idPlayer, g_appInfo.dwSys ); if( prj.IsConvMode( SAVE_TEXT ) ) { FILEOUT2( "..\\ConvertQuery.txt", pszSQL ); } else { if( FALSE == pQuerySave->Exec( pszSQL ) ) { SAFE_DELETE( pQueryChar ); SAFE_DELETE( pQuerySave ); AfxMessageBox( "UPDATE", MB_OK ); return FALSE; } } sprintf( pszSQL, "UPDATE INVENTORY_EXT_TBL" " SET m_extInventory = '%s', m_InventoryPiercing = '%s'" " where m_idPlayer = '%07d' and serverindex = '%02d'", icsInventory.szExt, icsInventory.szPiercing, pMover->m_idPlayer, g_appInfo.dwSys ); if( prj.IsConvMode( SAVE_TEXT ) ) { FILEOUT2( "..\\ConvertQuery.txt", pszSQL ); } else { if( FALSE == pQuerySave->Exec( pszSQL ) ) { SAFE_DELETE( pQueryChar ); SAFE_DELETE( pQuerySave ); AfxMessageBox( "UPDATE INVENTORY_EXT_TBL", MB_OK ); return FALSE; } } sprintf( pszSQL, "UPDATE BANK_TBL" " SET m_Bank = '%s', m_apIndex_Bank = '%s', m_dwObjIndex_Bank = '%s'" " where m_idPlayer = '%07d' and serverindex = '%02d'", icsBank.szItem, icsBank.szIndex, icsBank.szObjIndex, pMover->m_idPlayer, g_appInfo.dwSys ); if( prj.IsConvMode( SAVE_TEXT ) ) { FILEOUT2( "..\\ConvertQuery.txt", pszSQL ); } else { if( FALSE == pQuerySave->Exec( pszSQL ) ) { SAFE_DELETE( pQueryChar ); SAFE_DELETE( pQuerySave ); AfxMessageBox( "UPDATE BANK_TBL", MB_OK ); return FALSE; } } sprintf( pszSQL, "UPDATE BANK_EXT_TBL" " SET m_extBank = '%s', m_BankPiercing = '%s'" " where m_idPlayer = '%07d' and serverindex = '%02d'", icsBank.szExt, icsBank.szPiercing, pMover->m_idPlayer, g_appInfo.dwSys ); if( prj.IsConvMode( SAVE_TEXT ) ) { FILEOUT2( "..\\ConvertQuery.txt", pszSQL ); } else { if( FALSE == pQuerySave->Exec( pszSQL ) ) { SAFE_DELETE( pQueryChar ); SAFE_DELETE( pQuerySave ); AfxMessageBox( "UPDATE BANK_EXT_TBL", MB_OK ); return FALSE; } } return TRUE; }