Added containers to items. Still need to add put command
Showing
10 changed files
with
99 additions
and
21 deletions
... | @@ -5,13 +5,13 @@ def drop(id, tokens, players, mud): | ... | @@ -5,13 +5,13 @@ def drop(id, tokens, players, mud): |
5 | return True | 5 | return True |
6 | room_data = utils.load_object_from_file('rooms/' + room_name + '.json') | 6 | room_data = utils.load_object_from_file('rooms/' + room_name + '.json') |
7 | if tokens[0] in players[id]['inventory']: | 7 | if tokens[0] in players[id]['inventory']: |
8 | players[id]['inventory'][tokens[0]] -= 1 | ||
9 | if players[id]['inventory'][tokens[0]] <= 0: | ||
10 | del players[id]['inventory'][tokens[0]] | ||
11 | if tokens[0] in room_data['inventory']: | 8 | if tokens[0] in room_data['inventory']: |
12 | room_data['inventory'][tokens[0]] += 1 | 9 | room_data['inventory'][tokens[0]].append(players[id]['inventory'][tokens[0]].pop()) |
13 | else: | 10 | else: |
14 | room_data['inventory'][tokens[0]] = 1 | 11 | room_data['inventory'][tokens[0]] = [players[id]['inventory'][tokens[0]].pop()] |
12 | if len(players[id]['inventory'][tokens[0]]) <= 0: | ||
13 | del players[id]['inventory'][tokens[0]] | ||
14 | |||
15 | utils.save_object_to_file(room_data, 'rooms/' + room_name + '.json') | 15 | utils.save_object_to_file(room_data, 'rooms/' + room_name + '.json') |
16 | for pid, pl in players.items(): | 16 | for pid, pl in players.items(): |
17 | # if they're in the same room as the player | 17 | # if they're in the same room as the player | ... | ... |
1 | def get(id, tokens, players, mud): | 1 | def get(id, params, tokens, players, mud): |
2 | room_name = players[id]["room"] | 2 | room_name = players[id]["room"] |
3 | if len(tokens) == 0: | 3 | if len(tokens) == 0: |
4 | mud.send_message(id, 'What do you want to get?') | 4 | mud.send_message(id, 'What do you want to get?') |
5 | return True | 5 | return True |
6 | |||
6 | room_data = utils.load_object_from_file('rooms/' + room_name + '.json') | 7 | room_data = utils.load_object_from_file('rooms/' + room_name + '.json') |
8 | |||
9 | container = None | ||
10 | if any(x in params for x in ['from', 'out of']): | ||
11 | if 'out of' in params: | ||
12 | container = params.split('out of')[1].strip() | ||
13 | else: | ||
14 | container = params.split('from')[1].strip() | ||
15 | if room_data["inventory"].get(container) is None and players[id]["inventory"].get(container) is None: | ||
16 | mud.send_message(id, 'You do not see the container {} here.'.format(container)) | ||
17 | return True | ||
18 | |||
19 | if container: | ||
20 | found = False | ||
21 | if container in players[id]["inventory"]: | ||
22 | if tokens[0] in players[id]['inventory'][container][0]['inventory']: | ||
23 | found = True | ||
24 | if tokens[0] in players[id]['inventory']: | ||
25 | print(players[id]['inventory'][container][0]['inventory'][tokens[0]]) | ||
26 | players[id]['inventory'][tokens[0]].append(players[id]['inventory'][container][0]['inventory'][tokens[0]].pop()) | ||
27 | else: | ||
28 | players[id]['inventory'][tokens[0]] = [players[id]['inventory'][container][0]['inventory'][tokens[0]].pop()] | ||
29 | if len(players[id]['inventory'][container][0]['inventory'][tokens[0]]) <= 0: | ||
30 | del players[id]['inventory'][container][0]['inventory'][tokens[0]] | ||
31 | elif container in room_data["inventory"]: | ||
32 | if tokens[0] in room_data['inventory'][container][0]['inventory']: | ||
33 | found = True | ||
34 | if tokens[0] in players[id]['inventory']: | ||
35 | players[id]['inventory'][tokens[0]].append(room_data['inventory'][container][0]['inventory'][tokens[0]].pop()) | ||
36 | else: | ||
37 | players[id]['inventory'][tokens[0]] = [room_data['inventory'][container][0]['inventory'][tokens[0]].pop()] | ||
38 | if len(room_data['inventory'][container][0]['inventory'][tokens[0]]) <= 0: | ||
39 | del room_data['inventory'][container][0]['inventory'][tokens[0]] | ||
40 | if not found: | ||
41 | mud.send_message(id, 'You do not see a {} in the container {}.'.format(tokens[0], container)) | ||
42 | else: | ||
43 | for pid, pl in players.items(): | ||
44 | # if they're in the same room as the player | ||
45 | if players[pid]["room"] == players[id]["room"]: | ||
46 | # send them a message telling them what the player said | ||
47 | mud.send_message(pid, "{} picked up a {} from a {}.".format(players[id]["name"], tokens[0], container)) | ||
48 | utils.save_object_to_file(players[id], "players/{}.json".format(players[id]["name"])) | ||
49 | utils.save_object_to_file(room_data, 'rooms/' + room_name + '.json') | ||
50 | return True | ||
51 | else: | ||
7 | if tokens[0] in room_data.get('inventory'): | 52 | if tokens[0] in room_data.get('inventory'): |
8 | if tokens[0] in players[id]['inventory']: | 53 | if tokens[0] in players[id]['inventory']: |
9 | players[id]['inventory'][tokens[0]] += 1 | 54 | players[id]['inventory'][tokens[0]].append(room_data['inventory'][tokens[0]].pop()) |
10 | else: | 55 | else: |
11 | players[id]['inventory'][tokens[0]] = 1 | 56 | players[id]['inventory'][tokens[0]] = [room_data['inventory'][tokens[0]].pop()] |
12 | room_data['inventory'][tokens[0]] -= 1 | 57 | |
13 | if room_data['inventory'][tokens[0]] <= 0: | 58 | if len(room_data['inventory'][tokens[0]]) <= 0: |
14 | del room_data['inventory'][tokens[0]] | 59 | del room_data['inventory'][tokens[0]] |
15 | for pid, pl in players.items(): | 60 | for pid, pl in players.items(): |
16 | # if they're in the same room as the player | 61 | # if they're in the same room as the player |
... | @@ -23,4 +68,4 @@ def get(id, tokens, players, mud): | ... | @@ -23,4 +68,4 @@ def get(id, tokens, players, mud): |
23 | else: | 68 | else: |
24 | mud.send_message(id, 'There is no {} here to get.'.format(tokens[0])) | 69 | mud.send_message(id, 'There is no {} here to get.'.format(tokens[0])) |
25 | 70 | ||
26 | get(id, tokens, players, mud) | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
71 | get(id, params.lower().strip(), tokens, players, mud) | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | def inventory(id, players, mud): | 1 | def inventory(id, players, mud): |
2 | mud.send_message(id, '\r\n-Item----------=Inventory=-----------Qty-\r\n') | 2 | mud.send_message(id, '\r\n-Item----------=Inventory=-----------Qty-\r\n') |
3 | for item, qty in players[id]['inventory'].items(): | 3 | for item, item_list in players[id]['inventory'].items(): |
4 | mud.send_message(id, '{} {}'.format("%-37s" % item, qty)) | 4 | mud.send_message(id, '{} {}'.format("%-37s" % item, len(item_list))) |
5 | mud.send_message(id, '\r\n-----------------------------------------') | 5 | mud.send_message(id, '\r\n-----------------------------------------') |
6 | 6 | ||
7 | inventory(id, players, mud) | 7 | inventory(id, players, mud) | ... | ... |
... | @@ -52,7 +52,13 @@ def look(id, mud, players, tokens): | ... | @@ -52,7 +52,13 @@ def look(id, mud, players, tokens): |
52 | # send player a message containing the list of exits from this room | 52 | # send player a message containing the list of exits from this room |
53 | if len(room_data.get('inventory')) > 0: | 53 | if len(room_data.get('inventory')) > 0: |
54 | mud.send_message(id, "%boldItems here:%reset ", line_ending='') | 54 | mud.send_message(id, "%boldItems here:%reset ", line_ending='') |
55 | mud.send_list(id, room_data.get('inventory').keys(), "look") | 55 | inv_list = [] |
56 | for name, i in room_data.get('inventory').items(): | ||
57 | if len(i) > 1: | ||
58 | inv_list.append(str(len(i)) + " " + name + "s") | ||
59 | else: | ||
60 | inv_list.append(name) | ||
61 | mud.send_list(id, inv_list, "look") | ||
56 | 62 | ||
57 | # send player a message containing the list of players in the room | 63 | # send player a message containing the list of players in the room |
58 | for mon_name, monster in room_monsters.items(): | 64 | for mon_name, monster in room_monsters.items(): | ... | ... |
inventory/bag.json
0 → 100644
... | @@ -240,12 +240,19 @@ class MudServer(object): | ... | @@ -240,12 +240,19 @@ class MudServer(object): |
240 | def send_list(self, clid, list_items, command=''): | 240 | def send_list(self, clid, list_items, command=''): |
241 | if self._clients[clid].MXP_ENABLED: | 241 | if self._clients[clid].MXP_ENABLED: |
242 | output = "" | 242 | output = "" |
243 | if command != '': | ||
244 | command = command + ' ' | ||
245 | for idx, item in enumerate(list_items): | 243 | for idx, item in enumerate(list_items): |
246 | if idx > 0: | 244 | if idx > 0: |
247 | output += ", " | 245 | output += ", " |
248 | output += "<send \"{}&text;\">{}</send>".format(command, item) | 246 | parts = item.split(' ') |
247 | mod_item = item | ||
248 | if len(parts) > 1: | ||
249 | try: | ||
250 | num = int(parts[0]) | ||
251 | mod_item = ' '.join(parts[1:])[:-1] | ||
252 | except ValueError: | ||
253 | pass | ||
254 | |||
255 | output += "<send \"{} {}\">{}</send>".format(command, mod_item, item) | ||
249 | self.mxp_secure(clid, output) | 256 | self.mxp_secure(clid, output) |
250 | else: | 257 | else: |
251 | self.send_message(clid, ', '.join(list_items)) | 258 | self.send_message(clid, ', '.join(list_items)) | ... | ... |
1 | {"name": "test", "password": true, "room": "Tavern", "inventory": {"candle": 1}, "prompt": "h %hp m %mp s %st> ", "aliases": {}, "hp": 74, "mp": 10.0, "sta": 10.00000000000004, "aa": "1d2", "mpr": 0.25, "star": 0.4, "maxhp": 953, "maxmp": 10, "maxsta": 10, "weapon": "sword", "sp": {"fireball": {"cost": 5, "dmg": "2d4", "desc": "A fireball blasts from your fingertips striking the target"}}, "at": {"kick": {"cost": 5, "dmg": "2d4", "desc": "You unleash a powerful kick"}}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | {"name": "test", "password": true, "room": "Outside", "inventory": {"candle": [{"expires": 0}, {"expires": 0}]}, "prompt": "h %hp m %mp s %st> ", "aliases": {}, "hp": 74, "mp": 10.0, "sta": 10.00000000000004, "aa": "1d2", "mpr": 0.25, "star": 0.4, "maxhp": 953, "maxmp": 10, "maxsta": 10, "weapon": "sword", "sp": {"fireball": {"cost": 5, "dmg": "2d4", "desc": "A fireball blasts from your fingertips striking the target"}}, "at": {"kick": {"cost": 5, "dmg": "2d4", "desc": "You unleash a powerful kick"}}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | {"title": "Outside the Tavern", "description": "You are standing outside of a simple tavern made of pressed clay and shale roof. The door becons you to come in and have a drink.", "exits": {"tavern": "Tavern"}, "look_items": {"tavern": "A roughly constructed building."}, "inventory": {"candle": 1}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | {"title": "Outside the Tavern", "description": "You are standing outside of a simple tavern made of pressed clay and shale roof. The door becons you to come in and have a drink.", "exits": {"tavern": "Tavern"}, "look_items": {"tavern": "A roughly constructed building."}, "inventory": {"candle": [{"age": 0}, {"age": 0}], "bag": [{"expires": 0, "inventory": {}}]}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | {"title": "Behind the bar", "description": "The back of the bar gives a full view of the tavern. The bar top is a large wooden plank thrown across some barrels.", "exits": {"tavern": "Tavern"}, "look_items": {"bar": "The bar is a long wooden plank thrown over roughly hewn barrels.", "barrel,barrels": "The old barrels bands are thick with oxidation and stained with the purple of spilled wine.", "wooden,oak,plank": "An old solid oak plank that has a large number of chips and drink marks."}, "inventory": {}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | { | ||
2 | "title": "Behind the bar", | ||
3 | "description": "The back of the bar gives a full view of the tavern. The bar top is a large wooden plank thrown across some barrels.", | ||
4 | "exits": { | ||
5 | "tavern": "Tavern" | ||
6 | }, | ||
7 | "look_items": { | ||
8 | "bar": "The bar is a long wooden plank thrown over roughly hewn barrels.", | ||
9 | "barrel,barrels": "The old barrels bands are thick with oxidation and stained with the purple of spilled wine.", | ||
10 | "wooden,oak,plank": "An old solid oak plank that has a large number of chips and drink marks." | ||
11 | }, | ||
12 | "inventory": {} | ||
13 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
1 | {"title": "Tavern", "description": "You're in a cozy tavern warmed by an open fire.", "exits": {"outside": "Outside", "behind": "Room001", "dark": "Dark"}, "look_items": {"bar": "The bar is a long wooden plank thrown over roughly hewn barrels.", "barrel,barrels": "The old barrels bands are thick with oxidation and stained with the purple of spilled wine.", "wooden,oak,plank": "An old solid oak plank that has a large number of chips and drink marks.", "fire": "The fire crackles quietly in the corner providing a small amount of light and heat."}, "inventory": {"candle": 13}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | {"title": "Tavern", "description": "You're in a cozy tavern warmed by an open fire.", "exits": {"outside": "Outside", "behind": "Room001", "dark": "Dark"}, "look_items": {"bar": "The bar is a long wooden plank thrown over roughly hewn barrels.", "barrel,barrels": "The old barrels bands are thick with oxidation and stained with the purple of spilled wine.", "wooden,oak,plank": "An old solid oak plank that has a large number of chips and drink marks.", "fire": "The fire crackles quietly in the corner providing a small amount of light and heat."}, "inventory": {"candle": [{"age": 0}, {"age": 0}, {"age": 0}, {"age": 0}, {"age": 0}, {"age": 0}, {"age": 0}]}} | ||
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or sign in to post a comment