def trade_response(data): code = data.code if code == 0: shoplog.info("%s is too far", s.player) whisper(s.player, "You are too far, please come closer") mapserv.cmsg_trade_cancel_request() # NOTE: do I need it? cleanup() elif code == 3: shoplog.info("%s accepts trade", s.player) s.timer = Schedule(trade_timeout, 30, cancel_timer_function) if s.mode == "sell": mapserv.cmsg_trade_item_add_request(s.index, s.amount) mapserv.cmsg_trade_add_complete() elif s.mode == "buy": mapserv.cmsg_trade_item_add_request(0, s.price) mapserv.cmsg_trade_add_complete() else: shoplog.error("Unknown shop state: %s", s.mode) mapserv.cmsg_trade_cancel_request() cleanup() elif code == 4: shoplog.info("%s cancels trade", s.player) cleanup() else: shoplog.info("Unknown TRADE_RESPONSE code %d", code) cleanup()
def trade_response(data): code = data.code if code == 0: shoplog.info("%s is too far", s.player) whisper(s.player, "You are too far, please come closer") mapserv.cmsg_trade_cancel_request() # NOTE: do I need it? cleanup() elif code == 3: shoplog.info("%s accepts trade", s.player) if s.mode == 'sell': mapserv.cmsg_trade_item_add_request(s.index, s.amount) mapserv.cmsg_trade_add_complete() elif s.mode == 'buy': mapserv.cmsg_trade_item_add_request(0, s.price) mapserv.cmsg_trade_add_complete() elif s.mode == 'retrieve': mapserv.cmsg_trade_item_add_request(s.index, s.amount) mapserv.cmsg_trade_add_complete() else: shoplog.error("Unknown shop state: %s", s.mode) mapserv.cmsg_trade_cancel_request() cleanup() elif code == 4: shoplog.info("%s cancels trade", s.player) cleanup() else: shoplog.info("Unknown TRADE_RESPONSE code %d", code) cleanup()
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_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_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_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_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()
def shop_logic(ts): if s.start_time > 0: if ts > s.start_time + trade_timeout: shoplog.warning("%s timed out", s.player) mapserv.cmsg_trade_cancel_request()
def cancel_timer_function(): shoplog.warning("%s timed out", s.player) mapserv.cmsg_trade_cancel_request()