AccountServer handles all inventory-related queries and reads processed payment information. PlaySpan is the original payment backend used before NCSoft shut down City of Heroes.
Database Schema
(you'll see a .sql dump here soon!)
Table Structures
Columns are nullable unless denoted by Primary Key or Non Nullable.
account
| 
	
		| 			Column Name
 | 			Data Type
 | 			Attributes
 |  
		| 			auth_id
 | 			int
 | 			Primary Key
 |  
		| 			name
 | 			varchar(14)
 |  
		| 			loyalty_bits
 | 			binary(16)
 |  
		| 			last_loyalty_point_count
 | 			smallint
 |  
		| 			loyalty_points_spent
 | 			smallint
 |  
		| 			last_email_date
 | 			smalldatetime
 |  
		| 			last_num_emails_sent
 | 			smallint
 |  
		| 			free_xfer_date
 | 			smalldatetime
 |  | 
game_log
| 
	
		| 			Column Name
 | 			Data Type
 | 			Attributes
 |  
		| 			order_id
 | 			uniqueidentifier
 | 			Primary Key, Foreign Key to game_transactions.order_id
 |  
		| 			auth_id
 | 			int
 | 			Foreign Key to account.auth_id, Not Nullable
 |  
		| 			sku_id
 | 			char(8)
 | 			Foreign Key to product.sku_id, Not Nullable
 |  
		| 			transaction_date
 | 			datetime
 |  
		| 			shard_id
 | 			tinyint
 |  
		| 			ent_id
 | 			int
 |  
		| 			granted
 | 			int
 |  
		| 			claimed
 | 			int
 |  
		| 			csr_did_it
 | 			bit
 |  
		| 			parent_order_id
 | 			uniqueidentifier
 | 			Foreign Key to game_transactions.order_id, Not Nullable
 |  
		| 			saved
 | 			int
 |  | 
game_transactions
| 
	
		| 			Column Name
 | 			Data Type
 | 			Attributes
 |  
		| 			order_id
 | 			uniqueidentifier
 | 			Primary Key
 |  
		| 			auth_id
 | 			int
 | 			Foreign Key to account.auth_id, Not Nullable
 |  
		| 			sku_id
 | 			char(8)
 | 			Foreign Key to account.sku_id, Not Nullable
 |  
		| 			transaction_date
 | 			datetime
 |  
		| 			shard_id
 | 			tinyint
 |  
		| 			ent_id
 | 			int
 |  
		| 			granted
 | 			int
 |  
		| 			claimed
 | 			int
 |  
		| 			csr_did_it
 | 			bit
 |  
		| 			parent_order_id
 | 			uniqueidentifier
 | 			Foreign Key to game_transactions.order_id, Not Nullable
 |  | 
inventory
| 
	
		| 			Column Name
 | 			Data Type
 | 			Attributes
 |  
		| 			auth_id
 | 			int
 | 			Foreign Key to account.auth_id, Not Nullable
 |  
		| 			sku_id
 | 			char(8)
 | 			Foreign Key to product.sku_id, Not Nullable
 |  
		| 			granted_total
 | 			int
 |  
		| 			claimed_total
 | 			int
 |  
		| 			saved_total
 | 			int
 |  
		| 			expires
 | 			smalldatetime
 |  | 
mtx_log
| 
	
		| 			Column Name
 | 			Data Type
 | 			Attributes
 |  
		| 			order_id
 | 			int
 | 			Primary Key, Foreign Key to game_transactions.order_id
 |  
		| 			auth_id
 | 			int
 | 			Foreign Key to account.auth_id, Not Nullable
 |  
		| 			sku_id
 | 			char(8)
 | 			Foreign Key to product.sku_id, Not Nullable
 |  
		| 			transaction_date
 | 			datetime
 |  
		| 			quantity
 | 			int
 |  
		| 			points
 | 			int
 |  | 
product
| 
	
		| 			Column Name
 | 			Data Type
 | 			Attributes
 |  
		| 			sku_id
 | 			varchar(8)
 | 			Primary Key
 |  
		| 			name
 | 			varchar(128)
 |  
		| 			product_type_id
 | 			int
 | 			Foreign Key to product_type.product_type_id, Not Nullable
 |  
		| 			grant_limit
 | 			int
 |  
		| 			expiration_seconds
 | 			int
 |  | 
product_type
| 
	
		| 			Column Name
 | 			Data Type
 | 			Attributes
 |  
		| 			product_type_id
 | 			int
 | 			Primary Key
 |  
		| 			name
 | 			varchar(128)
 | 			Not Nullable
 |  | 
Stored Procedures
SP_add_game_transaction
SP_add_micro_transaction
SP_add_multi_game_transaction
SP_find_or_create_account
SP_read_unsaved_game_transactions
SP_revert_game_transaction
SP_save_game_transaction
SP_update_account
Table-Valued Parameters
TVP_game_transaction
Development Notes
[2:14 PM] Searge: nice, you can also get all sku by just changing some code, int AccountGetStoreProductCount2(AccountInventorySet* invSet, const AccountProduct* pProd, bool bActive) in AccountData.c could always return 1
[2:39 PM] Searge: @Pazaz the loyalty bits set by the client when you take all of them are set to 0xFFFFFFFF7FE00F000000000000000000 in the database