summaryrefslogtreecommitdiff
path: root/player.py
diff options
context:
space:
mode:
Diffstat (limited to 'player.py')
-rw-r--r--player.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/player.py b/player.py
new file mode 100644
index 0000000..ed80f66
--- /dev/null
+++ b/player.py
@@ -0,0 +1,70 @@
+#!/usr/bin/python
+"""
+ Copyright 2011, Dipesh Amin <yaypunkrock@gmail.com>
+ Copyright 2011, Stefan Beller <stefanbeller@googlemail.com>
+
+ This file is part of tradey, a trading bot in the mana world
+ see www.themanaworld.org
+"""
+
+import copy
+
+class Item:
+ pass
+
+class Player:
+ def __init__(self, name):
+ self.inventory = {}
+ self.name = name
+ self.id = 0
+ self.sex = 0
+ self.map = ""
+ self.x = 0
+ self.y = 0
+
+ self.EXP = 0
+ self.MONEY = 0
+ self.WEIGHT = 0
+ self.MaxWEIGHT = 0
+
+ def find_inventory_index(self, item_id):
+ for item in self.inventory:
+ if item > 1:
+ if self.inventory[item].itemId == item_id:
+ return item
+ return -10 # Not found - bug somewhere!
+
+ def remove_item(self, index, amount):
+ if index in self.inventory:
+ self.inventory[index].amount -= amount
+ if self.inventory[index].amount == 0:
+ del self.inventory[index]
+
+ def check_inventory(self, user_tree, sale_tree):
+ # Check the inventory state.
+ test_node = copy.deepcopy(self.inventory)
+ for elem in sale_tree.root:
+ item_found = False
+ for item in test_node:
+ if int(elem.get('itemId')) == test_node[item].itemId \
+ and int(elem.get('amount')) <= test_node[item].amount:
+ test_node[item].amount -= int(elem.get('amount'))
+ if test_node[item].amount == 0:
+ del test_node[item]
+ item_found = True
+ break
+
+ if not item_found:
+ return "Server and client inventory out of sync."
+
+ total_money = 0
+ for user in user_tree.root:
+ total_money += int(user.get('money'))
+
+ if total_money != self.MONEY:
+ return "Server and client money out of sync. Market: %s Player %s" % (total_money, self.MONEY)
+
+ return 0
+
+if __name__ == '__main__':
+ print "Do not run this file directly. Run main.py"