diff options
Diffstat (limited to 'main.py')
-rwxr-xr-x | main.py | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -801,6 +801,31 @@ def main(): logging.info("Name: %s, Id: %s, Index: %s, Amount: %s.", \ ItemDB.getItem(player_node.inventory[item].itemId).name, \ player_node.inventory[item].itemId, item, player_node.inventory[item].amount) + + # Check the inventory state and the amount of money match the information saved. + amount = -1 + test_node = player_node.inventory + for item in test_node: + amount = test_node[item].amount + for elem in sale_tree.root: + if int(elem.get('itemId')) == test_node[item].itemId \ + and int(elem.get('amount')) >= amount: + amount -= int(elem.get('amount')) + + if amount == 0: + del test_node[item] + + if amount < 0: + logging.info("Server and client inventory out of sync.") + exit(0) + + total_money = 0 + for user in user_tree: + total_money += int(user.get('money')) + + if total_money > player_node.MONEY: + logging.info("Server and client money out of sync.") + exit(0) elif packet.is_type(SMSG_TRADE_REQUEST): name = packet.read_string(24) |