Exemplo n.º 1
0
 def sendNewConsumable(self, player, consumable, count):
     player.playerConsumables[consumable] = count
     packet = ByteArray()
     packet.writeByte(0)
     packet.writeUnsignedShort(consumable)
     packet.writeUnsignedShort(count)
     self.users.sendPacket(player.channel, [100, 67], packet.toByteArray())
Exemplo n.º 2
0
    def useConsumable(self, player, consumable):
        if consumable in list(player.playerConsumables):
            player.playerConsumables[consumable] -= 1
            if player.playerConsumables[consumable] < 1:
                del player.playerConsumables[consumable]
                self.updateInventory(player, consumable, 0)
            else:
                self.updateInventory(player, consumable,
                                     player.playerConsumables[consumable])

            packet = ByteArray()
            packet.writeInt(player.playerCode)
            packet.writeUnsignedShort(consumable)
            self.server.rooms.sendAll(player.room, [31, 3],
                                      packet.toByteArray())
Exemplo n.º 3
0
	def openMissions(self, player):
		packet = ByteArray()
		packet.writeUnsignedByte(len(list(player.missions)))
		for id, values in player.missions.items():
			packet.writeUnsignedShort(id)
			packet.writeUnsignedByte(values[0])
			packet.writeUnsignedShort(values[1])
			packet.writeUnsignedShort(values[2])
			packet.writeUnsignedShort(values[3])
			packet.writeUnsignedShort(0)
			packet.writeBoolean(False)
		self.users.sendPacket(player.channel, [144, 3], packet.toByteArray())
    def parse(users, channel, packet, packetID):
        codePartie = packet.readInt()
        droiteEnCours = packet.readBoolean()
        gaucheEnCours = packet.readBoolean()
        px = packet.readInt()
        py = packet.readInt()
        vx = packet.readUnsignedShort()
        vy = packet.readUnsignedShort()
        jump = packet.readBoolean()
        jump_img = packet.readByte()
        portal = packet.readByte()
        isAngle = packet.bytesAvailable()
        angle = packet.readUnsignedShort() if isAngle else -1
        vel_angle = packet.readUnsignedShort() if isAngle else -1
        loc1 = packet.readBoolean() if isAngle else False
        player = channel.player
        room = player.room
        if codePartie == room.lastCodePartie:
            if droiteEnCours or gaucheEnCours:
                player.isMovingRight = droiteEnCours
                player.isMovingLeft = gaucheEnCours

                if player.isAfk:
                    player.isAfk = False
                    player.lastAfkTime = users.server.getTime()

                player.posX = px * 800 / 2700
                player.posY = py * 800 / 2700
                player.velX = vx
                player.velY = vy
                player.isJumping = jump

            packet2 = ByteArray().writeInt(
                player.playerCode).writeInt(codePartie).writeBoolean(
                    droiteEnCours).writeBoolean(gaucheEnCours).writeInt(
                        px).writeInt(py).writeUnsignedShort(
                            vx).writeUnsignedShort(vy).writeBoolean(
                                jump).writeByte(jump_img).writeByte(portal)
            if isAngle:
                packet2.writeUnsignedShort(angle).writeUnsignedShort(
                    vel_angle).writeBoolean(loc1)
            users.server.rooms.sendAllOthers(channel.player, room, [4, 4],
                                             packet2.toByteArray())
Exemplo n.º 5
0
	def parse(users, channel, packet, packetID):
		mode = packet.readByte()

		if mode == 0:
			mode = 1

		channel.player.roomsListMode = mode

		packet2 = ByteArray()
		packet2.writeByte(len(users.server.rooms.roomsType))
		for _type in users.server.rooms.roomsType:
			packet2.writeByte(_type)

		packet2.writeByte(mode)

		name = {9: "racing", 1: "", 10: "defilante", 2: "bootcamp", 8: "survivor", 3: "vanilla", 11: "music", 16: "village", 18: "minigame"}[mode]
		packet2.writeByte(1)
		packet2.writeUnsignedByte(channel.player.langueID)
		packet2.writeUTF("{} {}".format(users.server.config["name"], name))
		packet2.writeUTF(str(users.server.rooms.getPlayersCountForMode(mode)))
		packet2.writeUTF("mjj")
		packet2.writeUTF("1")

		for roomName, room in users.server.rooms.rooms.items():
			if room.roomType == mode:
				if not room.roomName[:1].lower() in ["*", "\x03"] or room.isPublic:
					if room.roomName[:2].lower() == channel.player.langue.lower() or room.isPublic:
						packet2.writeByte(0)
						packet2.writeUnsignedByte(users.server.langues.getLangueByName(room.roomName[:2]))
						packet2.writeUTF(roomName if room.isPublic else roomName[3:])
						packet2.writeUnsignedShort(users.server.rooms.getPlayersCount(room))
						packet2.writeUnsignedByte(0 if not room.isLimitedPlayers else room.maxPlayers)
						packet2.writeBoolean(room.isFuncorp)

		if mode == 8:
			if not "{}-quarentine1".format(channel.player.langue.lower()) in users.server.rooms.rooms:
				packet2.writeByte(0)
				packet2.writeUnsignedByte(users.server.langues.getLangueByName(channel.player.langue.lower()))
				packet2.writeUTF("quarentine1")
				packet2.writeUnsignedShort(0)
				packet2.writeUnsignedByte(0)
				packet2.writeBoolean(False)

		if mode == 9:
			if not "{}-fastracing1".format(channel.player.langue.lower()) in users.server.rooms.rooms:
				packet2.writeByte(0)
				packet2.writeUnsignedByte(users.server.langues.getLangueByName(channel.player.langue.lower()))
				packet2.writeUTF("fastracing1")
				packet2.writeUnsignedShort(0)
				packet2.writeUnsignedByte(0)
				packet2.writeBoolean(False)

		users.sendPacket(channel, [26, 35], packet2.toByteArray())
Exemplo n.º 6
0
 def parse(users, channel, packet, packetID):
     server = channel.server
     player = channel.player
     p = ByteArray()
     p.writeInt(player.shopCheeses)
     p.writeInt(player.shopFraises)
     p.writeUTF(player.playerLook)
     p.writeInt(len(player.shopItems))
     for item in player.shopItems:
         if "_" in item:
             itemSplited = item.split("_")
             realItem = itemSplited[0]
             custom = itemSplited[1] if len(itemSplited) >= 2 else ""
             realCustom = [] if custom == "" else custom.split("+")
             p.writeByte(len(realCustom) + 1)
             p.writeInt(int(realItem))
             for cust in realCustom:
                 p.writeInt(int(cust, 16))
         else:
             p.writeByte(0)
             p.writeInt(int(item))
     p.writeInt(len(server.shopList["mouse"]))
     for shop in server.shopList["mouse"]:
         s = shop.split(",")
         p.writeUnsignedShort(int(s[0]))
         p.writeUnsignedShort(int(s[1]))
         p.writeByte(int(s[2]))
         p.writeBoolean(int(s[3]))
         p.writeByte(int(s[4]))
         p.writeInt(int(s[5]))
         p.writeInt(int(s[6]))
         p.writeUnsignedShort(0)
     p.writeByte(0)
     p.writeShort(len(player.clothes))
     for clothe in player.clothes:
         clotheSplited = clothe.split("/")
         p.writeUTF(clotheSplited[1] + ";" + clotheSplited[2] + ";" +
                    clotheSplited[3])
     p.writeShort(len(player.shamanItems))
     for item in player.shamanItems:
         if "_" in item:
             itemSplited = item.split("_")
             realItem = itemSplited[0]
             custom = itemSplited[1] if len(itemSplited) >= 2 else ""
             realCustom = [] if custom == "" else custom.split("+")
             p.writeShort(int(realItem))
             p.writeBoolean(item in player.shamanLook.split(","))
             p.writeByte(len(realCustom) + 1)
             for cust in realCustom:
                 p.writeInt(int(cust, 16))
         else:
             p.writeShort(int(item))
             p.writeBoolean(item in player.shamanLook.split(","))
             p.writeByte(0)
     p.writeShort(len(server.shopList["shaman"]))
     for shop in server.shopList["shaman"]:
         s = shop.split(",")
         p.writeInt(int(s[0]))
         p.writeByte(int(s[1]))
         p.writeBoolean(int(s[2]))
         p.writeByte(int(s[3]))
         p.writeInt(int(s[4]))
         p.writeShort(int(s[5]))
     users.sendPacket(channel, [8, 20], p.toByteArray())
Exemplo n.º 7
0
 def updateInventory(self, player, consumable, count):
     packet = ByteArray()
     packet.writeUnsignedShort(consumable)
     packet.writeUnsignedByte(250 if count > 250 else count)
     self.users.sendPacket(player.channel, [31, 2], packet.toByteArray())