Пример #1
0
// 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();
}
Пример #2
0
// 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];
}
Пример #3
0
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;
}