Missing sounds indicates that you're missing the CSV file in soundloadspecs\mp under the UO folder.
Best way to create GSCs is to download custom maps and look at their GSC files. (Stick to the simpler ones that don't do anything fancy.)
Or you can dig through the stock PK3s and pull out the GSCs for the various levels.
I have an overly complex GSC that I use when creating maps using the After-Hourz vehicles. (There's stuff in there that only makes sense for AHz vehicles.)
Code:
main()
{
// Sets the fog distance
// setCullFog (near distance, far distance, Red, Green, Blue, transition time)
setCullFog (1000, 8000, 0.4, 0.41, 0.45, 0);
// Ambient background sounds
// www.modsonline.com/Tutorials-read-242.html
// ambientPlay("amb_snowy_quiet");
ambientPlay("ambient_mp_foy");
maps\mp\_load::main();
prepareVehicles();
// www.modsonline.com/Tutorials-read-181.html
level thread maps\mp\_tankdrive_gmi::main();//for tanks
level thread maps\mp\_jeepdrive_gmi::main();//for jeeps
// level thread maps\mp\_flak_gmi::main();//for flak88s
//---------------------------------------------
// Setup teams
//---------------------------------------------
// game["allies"] = "american";
// game["allies"] = "british";
game["allies"] = "russian";
game["axis"] = "german";
//---------------------------------------------
// Pick uniforms and player models
//---------------------------------------------
// game["american_soldiertype"] = "airborne";
// game["american_soldiervariation"] = "normal";
// game["american_soldiertype"] = "airborne";
// game["american_soldiervariation"] = "winter";
// game["british_soldiertype"] = "airborne";
// game["british_soldiervariation"] = "normal";
// game["british_soldiertype"] = "commando";
// game["british_soldiervariation"] = "normal";
// game["british_soldiertype"] = "commando";
// game["british_soldiervariation"] = "winter";
// game["russian_soldiertype"] = "conscript";
// game["russian_soldiervariation"] = "normal";
game["russian_soldiertype"] = "conscript";
game["russian_soldiervariation"] = "winter";
// game["russian_soldiertype"] = "veteran";
// game["russian_soldiervariation"] = "normal";
// game["russian_soldiertype"] = "veteran";
// game["russian_soldiervariation"] = "winter";
// game["german_soldiertype"] = "waffen";
// game["german_soldiervariation"] = "normal";
// game["german_soldiertype"] = "waffen";
// game["german_soldiervariation"] = "winter";
// game["german_soldiertype"] = "fallschirmjagercamo";
// game["german_soldiervariation"] = "normal";
// game["german_soldiertype"] = "wehrmacht";
// game["german_soldiervariation"] = "normal";
game["german_soldiertype"] = "wehrmacht";
game["german_soldiervariation"] = "winter";
// game["german_soldiertype"] = "kriegsmarine";
// game["german_soldiervariation"] = "normal";
//---------------------------------------------
// Setup attackers/defenders
//---------------------------------------------
game["attackers"] = "allies";
game["defenders"] = "axis";
//---------------------------------------------
// Compass fix
//---------------------------------------------
switch(getcvar("g_gametype"))
{
case "bas": game["compass_range"] = 6000; break;
case "cnq": game["compass_range"] = 3000; break;
case "ctf": game["compass_range"] = 4000; break;
default: game["compass_range"] = 2048; break;
}
//---------------------------------------------
// Base assault stuff
//---------------------------------------------
// game["bas_allies_rubble"] = "xmodel/mp_bunker_italy_rubble";
// game["bas_allies_complete"] = "xmodel/mp_bunker_italy";
// game["bas_allies_damaged"] = "xmodel/mp_bunker_italy_predmg";
// game["bas_allies_destroyed"] = "xmodel/mp_bunker_italy_dmg";
// game["bas_axis_rubble"] = "xmodel/mp_bunker_italy_rubble";
// game["bas_axis_complete"] = "xmodel/mp_bunker_italy";
// game["bas_axis_damaged"] = "xmodel/mp_bunker_italy_predmg";
// game["bas_axis_destroyed"] = "xmodel/mp_bunker_italy_dmg";
// maps\mp\_util_mp_gmi::base_swapper();
//---------------------------------------------
startVehicles();
}
prepareVehicles() {
level thread maps\mp\_tankdrive_gmi::main();
level thread maps\mp\_jeepdrive_gmi::main();
level thread maps\mp\_jagd_winter_drive::init();
level thread maps\mp\_kv1_drive::init();
level thread maps\mp\_pak40_::init();
level thread maps\mp\_pak45_::init();
level thread maps\mp\_bt7_drive::init();
level thread maps\mp\_pziii_drive::init();
level thread maps\mp\_pziv_drive::init();
level thread maps\mp\_t34_76_drive::init();
level thread maps\mp\_stugiii_::init();
level thread maps\mp\_gazaa_drive::init();
level thread maps\mp\_sdkfz_drive::init();
level thread maps\mp\_mortar_::init();
}
startVehicles() {
wait (2);
level thread maps\mp\_jagd_winter_drive::main();
level thread maps\mp\_kv1_drive::main();
level thread maps\mp\_pak40_::main();
level thread maps\mp\_pak45_::main();
level thread maps\mp\_bt7_drive::main();
level thread maps\mp\_pziii_drive::main();
level thread maps\mp\_pziv_drive::main();
level thread maps\mp\_t34_76_drive::main();
level thread maps\mp\_stugiii_::main();
level thread maps\mp\_sdkfz_drive::main();
level thread maps\mp\_gazaa_drive::main();
level thread maps\mp\_mortar_::main();
}
Also the sound file (something.csv in soundloadspecs/mp)
Code:
#DEFAULTS
dialog_mp.csv
gmi_dialog_mp.csv
generic_mp_sound.csv
gmi_mp_weap_all_allied.csv
gmi_mp_artillery.csv
#VEHICLE
gmi_mp_vehicles_ru.csv
gmi_mp_vehicles_ge.csv
ahz_tank_sounds.csv
Note: In order to use the AHz vehicles, you have to create your own custom collision maps...
The most important part of my GSC files is the part that changes the compass. The default compass range is only 1024, unless you specifically set it to something higher. On larger maps, a setting of 1024 is pretty much useless. Here's how to setup code that changes compass settings based on gametype. I prefer a large scale compass on Base Assault, but a more detailed compass in CNQ / SD / RE when you're trying to find a small spot on the map.
Code:
switch(getcvar("g_gametype"))
{
case "bas": game["compass_range"] = 6000; break;
case "cnq": game["compass_range"] = 3000; break;
case "ctf": game["compass_range"] = 4000; break;
default: game["compass_range"] = 2048; break;
}