Basic format is as follows:
Sound_Squid.zip The actual zip of course.
description.txt More of a formality than anything, provides a description for relevant GUIs ingame with add-on's name and author.
namecheck.txt A text file that just contains the name of the .zip, in this case it would simply read "Sound_Squid" inside.
sound1.wav
sound2.wav
server.cs The meat of this feast. Broken down like so:

datablock
AudioProfile(sound1Sound) Names the datablock for the game.
{
filename = "./sound1.wav"; Tells the game the location of the sound file. "./" tells it that's in the root directory of your zip. Folders would be "./folder/etc.wav"
description = AudioClosest3d; Tells the game what kind of sound it's working with. Usually you'll be using
AudioClosest3d for normal sound packs.
preload = false;
};For subsequent sounds in the server.cs, you can use....
datablock AudioProfile(sound2Sound : sound1Sound)
{
filename = "./sound2.wav";
};This just nicely saves space and time. The : tells the game that this datablock uses the same properties as the named one unless otherwise stated, and in this case you'll just be changing the filename.
A finished and useable server.cs would look like this:
datablock AudioProfile(mw2_level_upSound)
{
filename = "./mw2_level_up.wav";
description = AudioClosest3d;
preload = false;
};
datablock AudioProfile(mw3_alarm_1sound : mw2_level_upsound)
{
filename = "./mw3_alarm_1.wav";
};