def buy_ticket(): buy_count = 0 collide_cash_items() time.sleep(0.5) total_slots = Inventory.GetItemSlotCount(5) empty_slots = Inventory.GetEmptySlotCount(5) start_slot = total_slots - empty_slots while not GameState.IsInCashShop(): print("Entering cash shop") Terminal.EnterCashShop() time.sleep(2) while buy_count < buy_tickets: time.sleep(3) start_slot += 1 print("Buying ticket number {}".format(buy_count + 1)) buy_ticket_packet = Packet.COutPacket(buy_ticket_header) buy_ticket_packet.EncodeBuffer("54 052F83EE 003567E0") Packet.SendPacket(buy_ticket_packet) rPacket = Packet.WaitForRecv(0x066F, 100000000) rPacket.Skip(1) x = rPacket.ReadLong(3) time.sleep(1) out = hex(x) out = '0x' + out[2:].zfill(8) first_byte = out[8:10] second_byte = out[6:8] third_byte = out[4:6] fourth_byte = out[2:4] take_out = Packet.COutPacket(buy_ticket_header) take_out.EncodeBuffer("0F {} {} {} {} 00 00 00 00 05 {} 00".format( first_byte, second_byte, third_byte, fourth_byte, hex(start_slot).split('x')[1].zfill(2))) print("0F {} {} {} {} 00 00 00 00 05 {} 00".format( first_byte, second_byte, third_byte, fourth_byte, hex(start_slot).split('x')[1].zfill(2))) Packet.SendPacket(take_out) buy_count += 1 time.sleep(1) print("Leaving cash shop") Terminal.LeaveCashShop()
nCommodityID = iPacket.ReadLong(4) nNumber = iPacket.ReadLong(2) sBuyCharacterID = iPacket.ReadLong(13) ftDateExpire = iPacket.ReadLong(8) # FileTime(4, 4) nPaybackRate = iPacket.ReadLong(4) dDiscountRate = iPacket.ReadLong(8) dwOrderNo = iPacket.ReadLong(4) dwProductNo = iPacket.ReadLong(4) bRefundable = iPacket.ReadLong(1) nSourceFlag = iPacket.ReadLong(1) nStorageBank = iPacket.ReadLong(1) # CashItemOption Decode liCashItemSN = iPacket.ReadLong(8) ftExpireDate = iPacket.ReadLong(8) # FileTime(4, 4) nGrade = iPacket.ReadLong(4) iPacket.ReadLong(4) # aOption[0] iPacket.ReadLong(4) # aOption[1] iPacket.ReadLong(4) # aOption[2] if GameState.IsInGame(): if Inventory.GetItemCount(5040004) == 0 and Inventory.GetEmptySlotCount( 5) > 0 and Character.GetMeso() >= 5200000: nEmptySlotPOS = 0 for i in range(1, Inventory.GetItemSlotCount(5)): pItem = Inventory.GetItem(5, i) if not pItem.valid: nEmptySlotPOS = i break Terminal.EnterCashShop() CashItemResLoadLockerDone()