def trade_item_add(data): item_id, amount = data.id, data.amount shoplog.info("%s adds %d %s", s.player, amount, item_name(item_id)) if item_id == 0: return if s.mode == 'sell': whisper(s.player, "I accept only GP") mapserv.cmsg_trade_cancel_request() cleanup() elif s.mode == 'buy': if s.item_id != item_id or s.amount != amount: whisper( s.player, "You should give me {} {}".format(s.amount, item_name(s.item_id))) mapserv.cmsg_trade_cancel_request() cleanup() elif s.mode == 'retrieve': pass else: shoplog.error("Unknown shop state: %s", s.mode) mapserv.cmsg_trade_cancel_request() cleanup()
def trade_item_add(data): item_id, amount = data.id, data.amount shoplog.info("%s adds %d %s", s.player, amount, item_name(item_id)) if item_id == 0: return if s.mode == 'sell': whisper(s.player, "I accept only GP") mapserv.cmsg_trade_cancel_request() cleanup() elif s.mode == 'buy': if s.item_id != item_id or s.amount != amount: whisper(s.player, "You should give me {} {}".format( s.amount, item_name(s.item_id))) mapserv.cmsg_trade_cancel_request() cleanup() elif s.mode == 'retrieve': pass else: shoplog.error("Unknown shop state: %s", s.mode) mapserv.cmsg_trade_cancel_request() cleanup()
def show_inventory(*unused): '''Show inventory''' inv = {} for itemId, amount in mapserv.player_inventory.values(): inv[itemId] = inv.setdefault(itemId, 0) + amount s = [] for itemId, amount in inv.items(): if amount > 1: s.append('{} [{}]'.format(amount, itemdb.item_name(itemId))) else: s.append('[{}]'.format(itemdb.item_name(itemId))) debuglog.info(', '.join(s))
def trade_item_add_response(data): code = data.code amount = data.amount if code == 0: if amount > 0: item_id, _ = mapserv.trade_state['items_give'][-1] shoplog.info("I add to trade %d %s", amount, item_name(item_id)) elif code == 1: shoplog.info("%s is overweight", s.player) whisper(s.player, "You are overweight") mapserv.cmsg_trade_cancel_request() cleanup() elif code == 2: shoplog.info("%s has no free slots", s.player) whisper(s.player, "You don't have free slots") mapserv.cmsg_trade_cancel_request() cleanup() else: shoplog.error("Unknown ITEM_ADD_RESPONSE code: ", code) mapserv.cmsg_trade_cancel_request() cleanup()
def invlists2(max_length=255, source='inventory'): inventory = OrderedDict() if source == 'inventory': source = mapserv.player_inventory elif source == 'storage': source = mapserv.player_storage else: return [] for id_, amount in source.values(): inventory[id_] = inventory.setdefault(id_, 0) + amount lists = [] data = '' for id_, amount in inventory.items(): s = itemdb.item_name(id_, True) + ', ' if amount > 1: s = str(amount) + ' ' + s if len(data + s) > max_length: lists.append(data) data = '' data += s lists.append(data[:-2]) return lists
def trade_item_add_response(data): code = data.code amount = data.amount if code == 0: if amount > 0: item_id, _ = mapserv.trade_state["items_give"][-1] shoplog.info("I add to trade %d %s", amount, item_name(item_id)) elif code == 1: shoplog.info("%s is overweight", s.player) whisper(s.player, "You are overweight") mapserv.cmsg_trade_cancel_request() cleanup() elif code == 2: shoplog.info("%s has no free slots", s.player) whisper(s.player, "You don't have free slots") mapserv.cmsg_trade_cancel_request() cleanup() else: shoplog.error("Unknown ITEM_ADD_RESPONSE code: ", code) mapserv.cmsg_trade_cancel_request() cleanup()
def trade_complete(data): if s.mode == 'sell': shoplog.info("Trade with %s completed. I sold %d %s for %d GP", s.player, s.amount, item_name(s.item_id), mapserv.trade_state['zeny_get']) elif s.mode == 'buy': shoplog.info("Trade with %s completed. I bought %d %s for %d GP", s.player, s.amount, item_name(s.item_id), mapserv.trade_state['zeny_give']) elif s.mode == 'retrieve': shoplog.info("Trade with %s completed.", s.player) else: shoplog.info("Trade with %s completed. Unknown shop state %s", s.player, s.mode) reset_trade_state(mapserv.trade_state) cleanup()
def storage_equipment(data): if not npc_owner: return items_s = [] for item in data.equipment: s = itemdb.item_name(item.id, True) items_s.append(s) for l in status.split_names(items_s): whisper(npc_owner, l)
def storage_items(data): if not npc_owner: return items_s = [] for item in data.storage: s = itemdb.item_name(item.id, True) if item.amount > 1: s = str(item.amount) + ' ' + s items_s.append(s) for l in status.split_names(items_s): whisper(npc_owner, l)
def trade_complete(data): if s.mode == "sell": shoplog.info( "Trade with %s completed. I sold %d %s for %d GP", s.player, s.amount, item_name(s.item_id), mapserv.trade_state["zeny_get"], ) elif s.mode == "buy": shoplog.info( "Trade with %s completed. I bought %d %s for %d GP", s.player, s.amount, item_name(s.item_id), mapserv.trade_state["zeny_give"], ) else: shoplog.info("Trade with %s completed. Unknown shop state %s", s.player, s.mode) reset_trade_state(mapserv.trade_state) cleanup()
def trade_ok(data): who = data.who if who == 0: return shoplog.info("Trade OK: %s", s.player) if s.mode == 'sell': zeny_get = mapserv.trade_state['zeny_get'] if zeny_get >= s.price: mapserv.cmsg_trade_ok() else: whisper(s.player, "Your offer makes me sad") mapserv.cmsg_trade_cancel_request() cleanup() elif s.mode == 'buy': items_get = {} for item_id, amount in mapserv.trade_state['items_get']: try: items_get[item_id] += amount except KeyError: items_get[item_id] = amount if s.item_id in items_get and s.amount == items_get[s.item_id]: mapserv.cmsg_trade_ok() else: whisper( s.player, "You should give me {} {}".format(s.amount, item_name(s.item_id))) mapserv.cmsg_trade_cancel_request() cleanup() elif s.mode == 'retrieve': mapserv.cmsg_trade_ok() else: shoplog.error("Unknown shop state: %s", s.mode) mapserv.cmsg_trade_cancel_request() cleanup()
def trade_ok(data): who = data.who if who == 0: return shoplog.info("Trade OK: %s", s.player) if s.mode == 'sell': zeny_get = mapserv.trade_state['zeny_get'] if zeny_get >= s.price: mapserv.cmsg_trade_ok() else: whisper(s.player, "Your offer makes me sad") mapserv.cmsg_trade_cancel_request() cleanup() elif s.mode == 'buy': items_get = {} for item_id, amount in mapserv.trade_state['items_get']: try: items_get[item_id] += amount except KeyError: items_get[item_id] = amount if s.item_id in items_get and s.amount == items_get[s.item_id]: mapserv.cmsg_trade_ok() else: whisper(s.player, "You should give me {} {}".format( s.amount, item_name(s.item_id))) mapserv.cmsg_trade_cancel_request() cleanup() elif s.mode == 'retrieve': mapserv.cmsg_trade_ok() else: shoplog.error("Unknown shop state: %s", s.mode) mapserv.cmsg_trade_cancel_request() cleanup()