I've been having the same problem on my server. Here's how I fixed it:
First, I looked through the code and found this in database.cpp:
Quote:
uint32 len_query = MakeAnyLenString(&query, "REPLACE INTO inventory (charid,slotid,itemid,charges,color) VALUES(%i,%i,%i,%i,%i)",
char_id, slot_id, inst->GetItem()->ItemNumber, inst->GetCharges(), inst->GetColor() );
|
inst->GetCharges() returns -1 if the item is a right clicky with infinite charges. However, the charges field in my database's inventory table was an unsigned tinyint. So you'd summon an item with infinite charges, then when it went to write it to the database, the -1 got changed into a 0, hence the Out of Charges message.
So, I removed the unsigned flag on the charges field in inventory and sharedbank and now all my right clickies work. I'm not sure if changing this impacts anything else yet... only been testing it for about a day so far, but I haven't seen any items yet with enough charges to make changing this variable a problem.