Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.47 KB | None | 0 0
  1. @handlers.handler(XTPacket('rscrt', ext='red'), pre_login=True)
  2. @handlers.depends_on_packet(XTPacket('rsc', ext='red'))
  3. async def handle_send_cart(p, redemption_code: str, choice: int, super_exclusive: int):
  4.     query = RedemptionCode.distinct(RedemptionCode.id) \
  5.         .load(cards=RedemptionAwardCard.distinct(RedemptionAwardCard.card_id),
  6.               items=RedemptionAwardItem.distinct(RedemptionAwardItem.item_id),
  7.               flooring=RedemptionAwardFlooring.distinct(RedemptionAwardFlooring.flooring_id),
  8.               furniture=RedemptionAwardFurniture.distinct(RedemptionAwardFurniture.furniture_id),
  9.               igloos=RedemptionAwardIgloo.distinct(RedemptionAwardIgloo.igloo_id),
  10.               locations=RedemptionAwardLocation.distinct(RedemptionAwardLocation.location_id),
  11.               puffles=RedemptionAwardPuffle.distinct(RedemptionAwardPuffle.puffle_id),
  12.               puffle_items=RedemptionAwardPuffleItem.distinct(RedemptionAwardPuffleItem.puffle_item_id)
  13.               ) \
  14.         .query.where(RedemptionCode.code == redemption_code)
  15.     codes = await query.gino.all()
  16.     code = codes[0]
  17.     coins = 0
  18.     if choice is None:
  19.         await p.close()
  20.  
  21.     award_ids = []
  22.     for award in code.cards:
  23.         award_ids.push(award.card_id)
  24.  
  25.     for award in code.items:
  26.         award_ids.push(award.item_id)
  27.  
  28.     for award in code.furniture:
  29.         award_ids.push(award.furniture_id)
  30.  
  31.     for award in code.igloos:
  32.         award_ids.push(award.igloo_id)
  33.  
  34.     for award in code.locations:
  35.         award_ids.push(award.location_id)
  36.  
  37.     for award in code.puffles:
  38.         award_ids.push(award.puffle_id)
  39.  
  40.     for award in code.puffle_items:
  41.         award_ids.push(award.puffle_item_id)
  42.  
  43.     choices = choice.split(',')
  44.     choices = choices + award_ids
  45.  
  46.     if 'c0' in choices:
  47.         times = choices.count('c0')
  48.         coins = coins + (500*times)
  49.         index = 0
  50.  
  51.         while index < times:
  52.             choices.remove('c0')
  53.             index+=1
  54.  
  55.     for id in choices:
  56.         if id[:1] != 'p':
  57.             if int(id) not in p.server.items.treasure and id not in award_ids:
  58.                 return await p.close()
  59.             else:
  60.                 await p.add_inventory(p.server.items[id], notify=False)
  61.  
  62.     coins += code.coins
  63.     if code.uses is None:
  64.         await PenguinRedemptionCode.create(penguin_id=p.id, code_id=code.id)
  65.  
  66.     coins = "" if coins == 0 else coins
  67.     return await p.send_xt('rscrt', ','.join(choices), coins)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement