orignal problem solved
new problem below
Solved
I was building in Debug mode
New error:
I changed weapons so that Every class has a rifle instead of SMG
it works in Menu but players still spawn with SMG
I made changes through bg_classes.c
well I tried…
it didnt work… Menu is fine but player (except engy) spawns with MP40/tommy
===========
SetWolfSpawnWeapons
===========
*/
void SetWolfSpawnWeapons( gclient_t *client )
{
int pc = client->sess.playerType;
qboolean isBot = (g_entities[client->ps.clientNum].r.svFlags & SVF_BOT) ? qtrue : qfalse;
qboolean isPOW = (g_entities[client->ps.clientNum].r.svFlags & SVF_POW) ? qtrue : qfalse;
if ( client->sess.sessionTeam == TEAM_SPECTATOR )
return;
// Reset special weapon time
client->ps.classWeaponTime = -999999;
// Communicate it to cgame
client->ps.stats[STAT_PLAYER_CLASS] = pc;
// Abuse teamNum to store player class as well (can't see stats for all clients in cgame)
client->ps.teamNum = pc;
// JPW NERVE -- zero out all ammo counts
memset(client->ps.ammo, 0, MAX_WEAPONS * sizeof(int));
// All players start with a knife (not OR-ing so that it clears previous weapons)
client->ps.weapons[0] = 0;
client->ps.weapons[1] = 0;
// Gordon: set up pow status
if( isBot ) {
if( isPOW ) {
BotSetPOW( client->ps.clientNum, qtrue );
return;
} else {
BotSetPOW( client->ps.clientNum, qfalse );
}
}
AddWeaponToPlayer( client, WP_KNIFE, 1, 0, qtrue );
client->ps.weaponstate = WEAPON_READY;
// Engineer gets dynamite
if ( pc == PC_ENGINEER ) {
AddWeaponToPlayer( client, WP_DYNAMITE, 0, 1, qfalse );
AddWeaponToPlayer( client, WP_PLIERS, 0, 1, qfalse );
if( g_knifeonly.integer != 1 ) {
if( client->sess.skill[SK_BATTLE_SENSE] >= 1 ) {
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
}
if (client->sess.sessionTeam == TEAM_AXIS) {
switch( client->sess.playerWeapon ) {
case WP_KAR98:
if( AddWeaponToPlayer( client, WP_KAR98, GetAmmoTableData(WP_KAR98)->defaultStartingAmmo, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_GPG40, GetAmmoTableData(WP_GPG40)->defaultStartingAmmo, GetAmmoTableData(WP_GPG40)->defaultStartingClip, qfalse );
}
break;
default:
AddWeaponToPlayer( client, WP_KAR98, GetAmmoTableData(WP_KAR98)->defaultStartingAmmo, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue );
break;
}
AddWeaponToPlayer( client, WP_LANDMINE, GetAmmoTableData(WP_LANDMINE)->defaultStartingAmmo, GetAmmoTableData(WP_LANDMINE)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 4, qfalse );
} else {
switch( client->sess.playerWeapon ) {
case WP_CARBINE:
if( AddWeaponToPlayer( client, WP_CARBINE, GetAmmoTableData(WP_CARBINE)->defaultStartingAmmo, GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_M7, GetAmmoTableData(WP_M7)->defaultStartingAmmo, GetAmmoTableData(WP_M7)->defaultStartingClip, qfalse );
}
break;
default:
AddWeaponToPlayer( client, WP_CARBINE, GetAmmoTableData(WP_CARBINE)->defaultStartingAmmo, GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue );
break;
}
AddWeaponToPlayer( client, WP_LANDMINE, GetAmmoTableData(WP_LANDMINE)->defaultStartingAmmo, GetAmmoTableData(WP_LANDMINE)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 4, qfalse );
}
}
}
if ( g_knifeonly.integer != 1 ) {
// Field ops gets binoculars, ammo pack, artillery, and a grenade
if ( pc == PC_FIELDOPS ) {
AddWeaponToPlayer( client, WP_AMMO, 0, 1, qfalse );
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
AddWeaponToPlayer( client, WP_SMOKE_MARKER, GetAmmoTableData(WP_SMOKE_MARKER)->defaultStartingAmmo, GetAmmoTableData(WP_SMOKE_MARKER)->defaultStartingClip, qfalse );
if( client->sess.sessionTeam == TEAM_AXIS ) {
AddWeaponToPlayer( client, WP_KAR98, GetAmmoTableData(WP_KAR98)->defaultStartingAmmo, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue );
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 1, qfalse );
} else {
AddWeaponToPlayer( client, WP_THOMPSON, GetAmmoTableData(WP_THOMPSON)->defaultStartingAmmo, GetAmmoTableData(WP_THOMPSON)->defaultStartingClip, qtrue );
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 1, qfalse );
}
} else if( pc == PC_MEDIC ) {
if( client->sess.skill[SK_BATTLE_SENSE] >= 1 ) {
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
}
AddWeaponToPlayer( client, WP_MEDIC_SYRINGE, GetAmmoTableData(WP_MEDIC_SYRINGE)->defaultStartingAmmo, GetAmmoTableData(WP_MEDIC_SYRINGE)->defaultStartingClip, qfalse );
if( client->sess.skill[SK_FIRST_AID] >= 4 )
AddWeaponToPlayer( client, WP_MEDIC_ADRENALINE, GetAmmoTableData(WP_MEDIC_ADRENALINE)->defaultStartingAmmo, GetAmmoTableData(WP_MEDIC_ADRENALINE)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_MEDKIT, GetAmmoTableData(WP_MEDKIT)->defaultStartingAmmo, GetAmmoTableData(WP_MEDKIT)->defaultStartingClip, qfalse );
if (client->sess.sessionTeam == TEAM_AXIS) {
AddWeaponToPlayer( client, WP_KAR98, 0, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue );
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 1, qfalse );
} else {
AddWeaponToPlayer( client, WP_CARBINE, 0, GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue );
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 1, qfalse );
}
} else if ( pc == PC_SOLDIER ) {
if( client->sess.skill[SK_BATTLE_SENSE] >= 1 ) {
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
}
switch( client->sess.sessionTeam ) {
case TEAM_AXIS:
switch( client->sess.playerWeapon ) {
default:
case WP_KAR98:
AddWeaponToPlayer( client, WP_KAR98, 2*(GetAmmoTableData(WP_KAR98)->defaultStartingAmmo), GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue );
break;
case WP_PANZERFAUST:
AddWeaponToPlayer( client, WP_PANZERFAUST, GetAmmoTableData(WP_PANZERFAUST)->defaultStartingAmmo, GetAmmoTableData(WP_PANZERFAUST)->defaultStartingClip, qtrue );
break;
case WP_FLAMETHROWER:
AddWeaponToPlayer( client, WP_FLAMETHROWER, GetAmmoTableData(WP_FLAMETHROWER)->defaultStartingAmmo, GetAmmoTableData(WP_FLAMETHROWER)->defaultStartingClip, qtrue );
break;
case WP_MOBILE_MG42:
if( AddWeaponToPlayer( client, WP_MOBILE_MG42, GetAmmoTableData(WP_MOBILE_MG42)->defaultStartingAmmo, GetAmmoTableData(WP_MOBILE_MG42)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_MOBILE_MG42_SET, GetAmmoTableData(WP_MOBILE_MG42_SET)->defaultStartingAmmo, GetAmmoTableData(WP_MOBILE_MG42_SET)->defaultStartingClip, qfalse );
}
break;
case WP_MORTAR:
if( AddWeaponToPlayer( client, WP_MORTAR, GetAmmoTableData(WP_MORTAR)->defaultStartingAmmo, GetAmmoTableData(WP_MORTAR)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_MORTAR_SET, GetAmmoTableData(WP_MORTAR_SET)->defaultStartingAmmo, GetAmmoTableData(WP_MORTAR_SET)->defaultStartingClip, qfalse );
}
break;
}
break;
case TEAM_ALLIES:
switch( client->sess.playerWeapon ) {
default:
case WP_CARBINE:
AddWeaponToPlayer( client, WP_CARBINE, 2*(GetAmmoTableData(WP_CARBINE)->defaultStartingAmmo), GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue );
break;
case WP_PANZERFAUST:
AddWeaponToPlayer( client, WP_PANZERFAUST, GetAmmoTableData(WP_PANZERFAUST)->defaultStartingAmmo, GetAmmoTableData(WP_PANZERFAUST)->defaultStartingClip, qtrue );
break;
case WP_FLAMETHROWER:
AddWeaponToPlayer( client, WP_FLAMETHROWER, GetAmmoTableData(WP_FLAMETHROWER)->defaultStartingAmmo, GetAmmoTableData(WP_FLAMETHROWER)->defaultStartingClip, qtrue );
break;
case WP_MOBILE_MG42:
if( AddWeaponToPlayer( client, WP_MOBILE_MG42, GetAmmoTableData(WP_MOBILE_MG42)->defaultStartingAmmo, GetAmmoTableData(WP_MOBILE_MG42)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_MOBILE_MG42_SET, GetAmmoTableData(WP_MOBILE_MG42_SET)->defaultStartingAmmo, GetAmmoTableData(WP_MOBILE_MG42_SET)->defaultStartingClip, qfalse );
}
break;
case WP_MORTAR:
if( AddWeaponToPlayer( client, WP_MORTAR, GetAmmoTableData(WP_MORTAR)->defaultStartingAmmo, GetAmmoTableData(WP_MORTAR)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_MORTAR_SET, GetAmmoTableData(WP_MORTAR_SET)->defaultStartingAmmo, GetAmmoTableData(WP_MORTAR_SET)->defaultStartingClip, qfalse );
}
break;
}
break;
}
} else if( pc == PC_COVERTOPS ) {
switch( client->sess.playerWeapon ) {
case WP_K43:
case WP_GARAND:
if( client->sess.sessionTeam == TEAM_AXIS ) {
if( AddWeaponToPlayer( client, WP_K43, GetAmmoTableData(WP_K43)->defaultStartingAmmo, GetAmmoTableData(WP_K43)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_K43_SCOPE, GetAmmoTableData(WP_K43_SCOPE)->defaultStartingAmmo, GetAmmoTableData(WP_K43_SCOPE)->defaultStartingClip, qfalse );
}
break;
} else {
if( AddWeaponToPlayer( client, WP_GARAND, GetAmmoTableData(WP_GARAND)->defaultStartingAmmo, GetAmmoTableData(WP_GARAND)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_GARAND_SCOPE, GetAmmoTableData(WP_GARAND_SCOPE)->defaultStartingAmmo, GetAmmoTableData(WP_GARAND_SCOPE)->defaultStartingClip, qfalse );
}
break;
}
case WP_FG42:
if( AddWeaponToPlayer( client, WP_FG42, GetAmmoTableData(WP_FG42)->defaultStartingAmmo, GetAmmoTableData(WP_FG42)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_FG42SCOPE, GetAmmoTableData(WP_FG42SCOPE)->defaultStartingAmmo, GetAmmoTableData(WP_FG42SCOPE)->defaultStartingClip, qfalse );
}
break;
default:
AddWeaponToPlayer( client, WP_STEN, 2*(GetAmmoTableData(WP_STEN)->defaultStartingAmmo), GetAmmoTableData(WP_STEN)->defaultStartingClip, qtrue );
break;
}
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
AddWeaponToPlayer( client, WP_SMOKE_BOMB, GetAmmoTableData(WP_SMOKE_BOMB)->defaultStartingAmmo, GetAmmoTableData(WP_SMOKE_BOMB)->defaultStartingClip, qfalse );
// See if we already have a satchel charge placed - NOTE: maybe we want to change this so the thing voids on death
if( G_FindSatchel( &g_entities[client->ps.clientNum] ) ) {
AddWeaponToPlayer( client, WP_SATCHEL, 0, 0, qfalse ); // Big Bang \o/
AddWeaponToPlayer( client, WP_SATCHEL_DET, 0, 1, qfalse ); // Big Red Button for tha Big Bang
} else {
AddWeaponToPlayer( client, WP_SATCHEL, 0, 1, qfalse ); // Big Bang \o/
AddWeaponToPlayer( client, WP_SATCHEL_DET, 0, 0, qfalse ); // Big Red Button for tha Big Bang
}
}
switch( client->sess.sessionTeam ) {
case TEAM_AXIS:
switch( pc ) {
case PC_SOLDIER:
if( client->sess.skill[SK_HEAVY_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_MP40 ) {
AddWeaponToPlayer( client, WP_MP40, 2*(GetAmmoTableData(WP_MP40)->defaultStartingAmmo), GetAmmoTableData(WP_MP40)->defaultStartingClip, qtrue );
} else if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_KAR98 ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_KAR98))] = GetAmmoTableData(WP_KAR98)->defaultStartingClip;
AddWeaponToPlayer( client, WP_KAR98, GetAmmoTableData(WP_KAR98)->defaultStartingAmmo, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_LUGER, GetAmmoTableData(WP_LUGER)->defaultStartingAmmo, GetAmmoTableData(WP_LUGER)->defaultStartingClip, qfalse );
}
break;
case PC_COVERTOPS:
if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && ( client->sess.playerWeapon2 == WP_MP40 || client->sess.playerWeapon2 == WP_MP40 ) ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_MP40))] = GetAmmoTableData(WP_MP40)->defaultStartingClip;
AddWeaponToPlayer( client, WP_MP40, GetAmmoTableData(WP_MP40)->defaultStartingAmmo, GetAmmoTableData(WP_MP40)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_LUGER, GetAmmoTableData(WP_LUGER)->defaultStartingAmmo, GetAmmoTableData(WP_LUGER)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_SILENCER, GetAmmoTableData(WP_SILENCER)->defaultStartingAmmo, GetAmmoTableData(WP_SILENCER)->defaultStartingClip, qfalse );
client->pmext.silencedSideArm = 1;
}
break;
default:
if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_AKIMBO_LUGER ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_AKIMBO_LUGER))] = GetAmmoTableData(WP_AKIMBO_LUGER)->defaultStartingClip;
AddWeaponToPlayer( client, WP_AKIMBO_LUGER, GetAmmoTableData(WP_AKIMBO_LUGER)->defaultStartingAmmo, GetAmmoTableData(WP_AKIMBO_LUGER)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_LUGER, GetAmmoTableData(WP_LUGER)->defaultStartingAmmo, GetAmmoTableData(WP_LUGER)->defaultStartingClip, qfalse );
}
break;
}
break;
default:
switch( pc ) {
case PC_SOLDIER:
if( client->sess.skill[SK_HEAVY_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_CARBINE ) {
AddWeaponToPlayer( client, WP_CARBINE, 2*(GetAmmoTableData(WP_CARBINE)->defaultStartingAmmo), GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue );
} else if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_THOMPSON ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_THOMPSON))] = GetAmmoTableData(WP_THOMPSON)->defaultStartingClip;
AddWeaponToPlayer( client, WP_THOMPSON, GetAmmoTableData(WP_THOMPSON)->defaultStartingAmmo, GetAmmoTableData(WP_THOMPSON)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_COLT, GetAmmoTableData(WP_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_COLT)->defaultStartingClip, qfalse );
}
break;
case PC_COVERTOPS:
if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && ( client->sess.playerWeapon2 == WP_AKIMBO_SILENCEDCOLT || client->sess.playerWeapon2 == WP_AKIMBO_COLT ) ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_AKIMBO_SILENCEDCOLT))] = GetAmmoTableData(WP_AKIMBO_SILENCEDCOLT)->defaultStartingClip;
AddWeaponToPlayer( client, WP_AKIMBO_SILENCEDCOLT, GetAmmoTableData(WP_AKIMBO_SILENCEDCOLT)->defaultStartingAmmo, GetAmmoTableData(WP_AKIMBO_SILENCEDCOLT)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_COLT, GetAmmoTableData(WP_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_COLT)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_SILENCED_COLT, GetAmmoTableData(WP_SILENCED_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_SILENCED_COLT)->defaultStartingClip, qfalse );
client->pmext.silencedSideArm = 1;
}
break;
default:
if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_AKIMBO_COLT ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_AKIMBO_COLT))] = GetAmmoTableData(WP_AKIMBO_COLT)->defaultStartingClip;
AddWeaponToPlayer( client, WP_AKIMBO_COLT, GetAmmoTableData(WP_AKIMBO_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_AKIMBO_COLT)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_COLT, GetAmmoTableData(WP_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_COLT)->defaultStartingClip, qfalse );
}
break;
}
}
if( pc == PC_SOLDIER ) {
if( client->sess.sessionTeam == TEAM_AXIS ) {
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 4, qfalse );
} else {
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 4, qfalse );
}
}
if( pc == PC_COVERTOPS ) {
if( client->sess.sessionTeam == TEAM_AXIS ) {
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 2, qfalse );
} else {
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 2, qfalse );
}
}
} else {
// Knifeonly block
if( pc == PC_MEDIC ) {
AddWeaponToPlayer( client, WP_MEDIC_SYRINGE, 0, 20, qfalse );
if( client->sess.skill[SK_FIRST_AID] >= 4 )
AddWeaponToPlayer( client, WP_MEDIC_ADRENALINE, 0, 10, qfalse );
}
// End Knifeonly stuff -- Ensure that medics get their basic stuff
}
}
int G_CountTeamMedics( team_t team, qboolean alivecheck ) {
int numMedics = 0;
int i, j;
for( i = 0; i < level.numConnectedClients; i++ ) {
j = level.sortedClients[i];
if( level.clients[j].sess.sessionTeam != team ) {
continue;
}
if( level.clients[j].sess.playerType != PC_MEDIC ) {
continue;
}
if( alivecheck ) {
if( g_entities[j].health <= 0 ) {
continue;
}
if( level.clients[j].ps.pm_type == PM_DEAD || level.clients[j].ps.pm_flags & PMF_LIMBO ) {
continue;
}
}
numMedics++;
}
return numMedics;
}
//
// AddMedicTeamBonus
//
void AddMedicTeamBonus( gclient_t *client ) {
int numMedics = G_CountTeamMedics( client->sess.sessionTeam, qfalse );
// compute health mod
client->pers.maxHealth = 100 + 10 * numMedics;
if( client->pers.maxHealth > 125 ) {
client->pers.maxHealth = 125;
}
if( client->sess.skill[SK_BATTLE_SENSE] >= 3 ) {
client->pers.maxHealth += 15;
}
client->ps.stats[STAT_MAX_HEALTH] = client->pers.maxHealth;
}
At first sight, everything looks fine except the allied Field ops - he still gets a Thompson.
Make sure you are actually running the qagame built from your new code.
I am 
is there a need to edit anything else?
or add new weapon code?
is there code that restricts non engineers from using rifles?
Hmm… ya your mod isn;t being run. Menu is done through bg_classes. Just type ‘gamename’ in server console or if you are on the server goto options, then goto server info. If it doesn’t say the name of ur mod it’s not being run… and I would expect it to say etmain rather than your mod, as mentioned in the above post.
You can solve your problem by adding ‘+set fs_game <modname>’ in your server startup file (imagine it is .bat on windows, .sh on linux)
Im sure it is being run because all my other settings work
Increased Damage
Changed Limbo Menu
Here you go, i’ve used a variable inside the spawnweapons function, you could replace it with a cvar if you want.
===========
SetWolfSpawnWeapons
===========
*/
void SetWolfSpawnWeapons( gclient_t *client )
{
int pc = client->sess.playerType;
int rifleonly = 1; //set on as default.
qboolean isBot = (g_entities[client->ps.clientNum].r.svFlags & SVF_BOT) ? qtrue : qfalse;
qboolean isPOW = (g_entities[client->ps.clientNum].r.svFlags & SVF_POW) ? qtrue : qfalse;
if ( client->sess.sessionTeam == TEAM_SPECTATOR )
return;
// Reset special weapon time
client->ps.classWeaponTime = -999999;
// Communicate it to cgame
client->ps.stats[STAT_PLAYER_CLASS] = pc;
// Abuse teamNum to store player class as well (can't see stats for all clients in cgame)
client->ps.teamNum = pc;
// JPW NERVE -- zero out all ammo counts
memset(client->ps.ammo, 0, MAX_WEAPONS * sizeof(int));
// All players start with a knife (not OR-ing so that it clears previous weapons)
client->ps.weapons[0] = 0;
client->ps.weapons[1] = 0;
// Gordon: set up pow status
if( isBot ) {
if( isPOW ) {
BotSetPOW( client->ps.clientNum, qtrue );
return;
} else {
BotSetPOW( client->ps.clientNum, qfalse );
}
}
AddWeaponToPlayer( client, WP_KNIFE, 1, 0, qtrue );
client->ps.weaponstate = WEAPON_READY;
// Engineer gets dynamite
if ( pc == PC_ENGINEER ) {
AddWeaponToPlayer( client, WP_DYNAMITE, 0, 1, qfalse );
AddWeaponToPlayer( client, WP_PLIERS, 0, 1, qfalse );
if(rifleonly){ //if rifle only is 1, you will only spawn with a rifle (used something like this for instagib) you can replace the rifleonly var with a cvar.
if( g_knifeonly.integer != 1 ) {
if( client->sess.skill[SK_BATTLE_SENSE] >= 1 ) {
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
}
if (client->sess.sessionTeam == TEAM_AXIS) {
switch( client->sess.playerWeapon ) {
case WP_KAR98:
if( AddWeaponToPlayer( client, WP_KAR98, GetAmmoTableData(WP_KAR98)->defaultStartingAmmo, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_GPG40, GetAmmoTableData(WP_GPG40)->defaultStartingAmmo, GetAmmoTableData(WP_GPG40)->defaultStartingClip, qfalse );
}
break;
default:
AddWeaponToPlayer( client, WP_KAR98, GetAmmoTableData(WP_KAR98)->defaultStartingAmmo, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue );
break;
}
AddWeaponToPlayer( client, WP_LANDMINE, GetAmmoTableData(WP_LANDMINE)->defaultStartingAmmo, GetAmmoTableData(WP_LANDMINE)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 4, qfalse );
} else {
switch( client->sess.playerWeapon ) {
case WP_CARBINE:
if( AddWeaponToPlayer( client, WP_CARBINE, GetAmmoTableData(WP_CARBINE)->defaultStartingAmmo, GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_M7, GetAmmoTableData(WP_M7)->defaultStartingAmmo, GetAmmoTableData(WP_M7)->defaultStartingClip, qfalse );
}
break;
default:
AddWeaponToPlayer( client, WP_CARBINE, GetAmmoTableData(WP_CARBINE)->defaultStartingAmmo, GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue );
break;
}
AddWeaponToPlayer( client, WP_LANDMINE, GetAmmoTableData(WP_LANDMINE)->defaultStartingAmmo, GetAmmoTableData(WP_LANDMINE)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 4, qfalse );
}
}
}
if ( g_knifeonly.integer != 1 ) {
// Field ops gets binoculars, ammo pack, artillery, and a grenade
if ( pc == PC_FIELDOPS ) {
AddWeaponToPlayer( client, WP_AMMO, 0, 1, qfalse );
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
AddWeaponToPlayer( client, WP_SMOKE_MARKER, GetAmmoTableData(WP_SMOKE_MARKER)->defaultStartingAmmo, GetAmmoTableData(WP_SMOKE_MARKER)->defaultStartingClip, qfalse );
if( client->sess.sessionTeam == TEAM_AXIS ) {
AddWeaponToPlayer( client, WP_KAR98, GetAmmoTableData(WP_KAR98)->defaultStartingAmmo, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue );
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 1, qfalse );
} else {
AddWeaponToPlayer( client, WP_THOMPSON, GetAmmoTableData(WP_THOMPSON)->defaultStartingAmmo, GetAmmoTableData(WP_THOMPSON)->defaultStartingClip, qtrue );
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 1, qfalse );
}
} else if( pc == PC_MEDIC ) {
if( client->sess.skill[SK_BATTLE_SENSE] >= 1 ) {
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
}
AddWeaponToPlayer( client, WP_MEDIC_SYRINGE, GetAmmoTableData(WP_MEDIC_SYRINGE)->defaultStartingAmmo, GetAmmoTableData(WP_MEDIC_SYRINGE)->defaultStartingClip, qfalse );
if( client->sess.skill[SK_FIRST_AID] >= 4 )
AddWeaponToPlayer( client, WP_MEDIC_ADRENALINE, GetAmmoTableData(WP_MEDIC_ADRENALINE)->defaultStartingAmmo, GetAmmoTableData(WP_MEDIC_ADRENALINE)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_MEDKIT, GetAmmoTableData(WP_MEDKIT)->defaultStartingAmmo, GetAmmoTableData(WP_MEDKIT)->defaultStartingClip, qfalse );
if (client->sess.sessionTeam == TEAM_AXIS) {
AddWeaponToPlayer( client, WP_KAR98, 0, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue );
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 1, qfalse );
} else {
AddWeaponToPlayer( client, WP_CARBINE, 0, GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue );
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 1, qfalse );
}
} else if ( pc == PC_SOLDIER ) {
if( client->sess.skill[SK_BATTLE_SENSE] >= 1 ) {
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
}
switch( client->sess.sessionTeam ) {
case TEAM_AXIS:
switch( client->sess.playerWeapon ) {
default:
case WP_KAR98:
AddWeaponToPlayer( client, WP_KAR98, 2*(GetAmmoTableData(WP_KAR98)->defaultStartingAmmo), GetAmmoTableData(WP_KAR98)->defaultStartingClip, qtrue );
break;
case WP_PANZERFAUST:
AddWeaponToPlayer( client, WP_PANZERFAUST, GetAmmoTableData(WP_PANZERFAUST)->defaultStartingAmmo, GetAmmoTableData(WP_PANZERFAUST)->defaultStartingClip, qtrue );
break;
case WP_FLAMETHROWER:
AddWeaponToPlayer( client, WP_FLAMETHROWER, GetAmmoTableData(WP_FLAMETHROWER)->defaultStartingAmmo, GetAmmoTableData(WP_FLAMETHROWER)->defaultStartingClip, qtrue );
break;
case WP_MOBILE_MG42:
if( AddWeaponToPlayer( client, WP_MOBILE_MG42, GetAmmoTableData(WP_MOBILE_MG42)->defaultStartingAmmo, GetAmmoTableData(WP_MOBILE_MG42)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_MOBILE_MG42_SET, GetAmmoTableData(WP_MOBILE_MG42_SET)->defaultStartingAmmo, GetAmmoTableData(WP_MOBILE_MG42_SET)->defaultStartingClip, qfalse );
}
break;
case WP_MORTAR:
if( AddWeaponToPlayer( client, WP_MORTAR, GetAmmoTableData(WP_MORTAR)->defaultStartingAmmo, GetAmmoTableData(WP_MORTAR)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_MORTAR_SET, GetAmmoTableData(WP_MORTAR_SET)->defaultStartingAmmo, GetAmmoTableData(WP_MORTAR_SET)->defaultStartingClip, qfalse );
}
break;
}
break;
case TEAM_ALLIES:
switch( client->sess.playerWeapon ) {
default:
case WP_CARBINE:
AddWeaponToPlayer( client, WP_CARBINE, 2*(GetAmmoTableData(WP_CARBINE)->defaultStartingAmmo), GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue );
break;
case WP_PANZERFAUST:
AddWeaponToPlayer( client, WP_PANZERFAUST, GetAmmoTableData(WP_PANZERFAUST)->defaultStartingAmmo, GetAmmoTableData(WP_PANZERFAUST)->defaultStartingClip, qtrue );
break;
case WP_FLAMETHROWER:
AddWeaponToPlayer( client, WP_FLAMETHROWER, GetAmmoTableData(WP_FLAMETHROWER)->defaultStartingAmmo, GetAmmoTableData(WP_FLAMETHROWER)->defaultStartingClip, qtrue );
break;
case WP_MOBILE_MG42:
if( AddWeaponToPlayer( client, WP_MOBILE_MG42, GetAmmoTableData(WP_MOBILE_MG42)->defaultStartingAmmo, GetAmmoTableData(WP_MOBILE_MG42)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_MOBILE_MG42_SET, GetAmmoTableData(WP_MOBILE_MG42_SET)->defaultStartingAmmo, GetAmmoTableData(WP_MOBILE_MG42_SET)->defaultStartingClip, qfalse );
}
break;
case WP_MORTAR:
if( AddWeaponToPlayer( client, WP_MORTAR, GetAmmoTableData(WP_MORTAR)->defaultStartingAmmo, GetAmmoTableData(WP_MORTAR)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_MORTAR_SET, GetAmmoTableData(WP_MORTAR_SET)->defaultStartingAmmo, GetAmmoTableData(WP_MORTAR_SET)->defaultStartingClip, qfalse );
}
break;
}
break;
}
} else if( pc == PC_COVERTOPS ) {
switch( client->sess.playerWeapon ) {
case WP_K43:
case WP_GARAND:
if( client->sess.sessionTeam == TEAM_AXIS ) {
if( AddWeaponToPlayer( client, WP_K43, GetAmmoTableData(WP_K43)->defaultStartingAmmo, GetAmmoTableData(WP_K43)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_K43_SCOPE, GetAmmoTableData(WP_K43_SCOPE)->defaultStartingAmmo, GetAmmoTableData(WP_K43_SCOPE)->defaultStartingClip, qfalse );
}
break;
} else {
if( AddWeaponToPlayer( client, WP_GARAND, GetAmmoTableData(WP_GARAND)->defaultStartingAmmo, GetAmmoTableData(WP_GARAND)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_GARAND_SCOPE, GetAmmoTableData(WP_GARAND_SCOPE)->defaultStartingAmmo, GetAmmoTableData(WP_GARAND_SCOPE)->defaultStartingClip, qfalse );
}
break;
}
case WP_FG42:
if( AddWeaponToPlayer( client, WP_FG42, GetAmmoTableData(WP_FG42)->defaultStartingAmmo, GetAmmoTableData(WP_FG42)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_FG42SCOPE, GetAmmoTableData(WP_FG42SCOPE)->defaultStartingAmmo, GetAmmoTableData(WP_FG42SCOPE)->defaultStartingClip, qfalse );
}
break;
default:
AddWeaponToPlayer( client, WP_STEN, 2*(GetAmmoTableData(WP_STEN)->defaultStartingAmmo), GetAmmoTableData(WP_STEN)->defaultStartingClip, qtrue );
break;
}
if( AddWeaponToPlayer( client, WP_BINOCULARS, 1, 0, qfalse ) ) {
client->ps.stats[STAT_KEYS] |= ( 1 << INV_BINOCS );
}
AddWeaponToPlayer( client, WP_SMOKE_BOMB, GetAmmoTableData(WP_SMOKE_BOMB)->defaultStartingAmmo, GetAmmoTableData(WP_SMOKE_BOMB)->defaultStartingClip, qfalse );
// See if we already have a satchel charge placed - NOTE: maybe we want to change this so the thing voids on death
if( G_FindSatchel( &g_entities[client->ps.clientNum] ) ) {
AddWeaponToPlayer( client, WP_SATCHEL, 0, 0, qfalse ); // Big Bang \o/
AddWeaponToPlayer( client, WP_SATCHEL_DET, 0, 1, qfalse ); // Big Red Button for tha Big Bang
} else {
AddWeaponToPlayer( client, WP_SATCHEL, 0, 1, qfalse ); // Big Bang \o/
AddWeaponToPlayer( client, WP_SATCHEL_DET, 0, 0, qfalse ); // Big Red Button for tha Big Bang
}
}
switch( client->sess.sessionTeam ) {
case TEAM_AXIS:
switch( pc ) {
case PC_SOLDIER:
if( client->sess.skill[SK_HEAVY_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_MP40 ) {
AddWeaponToPlayer( client, WP_MP40, 2*(GetAmmoTableData(WP_MP40)->defaultStartingAmmo), GetAmmoTableData(WP_MP40)->defaultStartingClip, qtrue );
} else if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_KAR98 ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_KAR98))] = GetAmmoTableData(WP_KAR98)->defaultStartingClip;
AddWeaponToPlayer( client, WP_KAR98, GetAmmoTableData(WP_KAR98)->defaultStartingAmmo, GetAmmoTableData(WP_KAR98)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_LUGER, GetAmmoTableData(WP_LUGER)->defaultStartingAmmo, GetAmmoTableData(WP_LUGER)->defaultStartingClip, qfalse );
}
break;
case PC_COVERTOPS:
if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && ( client->sess.playerWeapon2 == WP_MP40 || client->sess.playerWeapon2 == WP_MP40 ) ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_MP40))] = GetAmmoTableData(WP_MP40)->defaultStartingClip;
AddWeaponToPlayer( client, WP_MP40, GetAmmoTableData(WP_MP40)->defaultStartingAmmo, GetAmmoTableData(WP_MP40)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_LUGER, GetAmmoTableData(WP_LUGER)->defaultStartingAmmo, GetAmmoTableData(WP_LUGER)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_SILENCER, GetAmmoTableData(WP_SILENCER)->defaultStartingAmmo, GetAmmoTableData(WP_SILENCER)->defaultStartingClip, qfalse );
client->pmext.silencedSideArm = 1;
}
break;
default:
if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_AKIMBO_LUGER ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_AKIMBO_LUGER))] = GetAmmoTableData(WP_AKIMBO_LUGER)->defaultStartingClip;
AddWeaponToPlayer( client, WP_AKIMBO_LUGER, GetAmmoTableData(WP_AKIMBO_LUGER)->defaultStartingAmmo, GetAmmoTableData(WP_AKIMBO_LUGER)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_LUGER, GetAmmoTableData(WP_LUGER)->defaultStartingAmmo, GetAmmoTableData(WP_LUGER)->defaultStartingClip, qfalse );
}
break;
}
break;
default:
switch( pc ) {
case PC_SOLDIER:
if( client->sess.skill[SK_HEAVY_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_CARBINE ) {
AddWeaponToPlayer( client, WP_CARBINE, 2*(GetAmmoTableData(WP_CARBINE)->defaultStartingAmmo), GetAmmoTableData(WP_CARBINE)->defaultStartingClip, qtrue );
} else if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_THOMPSON ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_THOMPSON))] = GetAmmoTableData(WP_THOMPSON)->defaultStartingClip;
AddWeaponToPlayer( client, WP_THOMPSON, GetAmmoTableData(WP_THOMPSON)->defaultStartingAmmo, GetAmmoTableData(WP_THOMPSON)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_COLT, GetAmmoTableData(WP_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_COLT)->defaultStartingClip, qfalse );
}
break;
case PC_COVERTOPS:
if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && ( client->sess.playerWeapon2 == WP_AKIMBO_SILENCEDCOLT || client->sess.playerWeapon2 == WP_AKIMBO_COLT ) ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_AKIMBO_SILENCEDCOLT))] = GetAmmoTableData(WP_AKIMBO_SILENCEDCOLT)->defaultStartingClip;
AddWeaponToPlayer( client, WP_AKIMBO_SILENCEDCOLT, GetAmmoTableData(WP_AKIMBO_SILENCEDCOLT)->defaultStartingAmmo, GetAmmoTableData(WP_AKIMBO_SILENCEDCOLT)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_COLT, GetAmmoTableData(WP_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_COLT)->defaultStartingClip, qfalse );
AddWeaponToPlayer( client, WP_SILENCED_COLT, GetAmmoTableData(WP_SILENCED_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_SILENCED_COLT)->defaultStartingClip, qfalse );
client->pmext.silencedSideArm = 1;
}
break;
default:
if( client->sess.skill[SK_LIGHT_WEAPONS] >= 4 && client->sess.playerWeapon2 == WP_AKIMBO_COLT ) {
client->ps.ammoclip[BG_FindClipForWeapon(BG_AkimboSidearm(WP_AKIMBO_COLT))] = GetAmmoTableData(WP_AKIMBO_COLT)->defaultStartingClip;
AddWeaponToPlayer( client, WP_AKIMBO_COLT, GetAmmoTableData(WP_AKIMBO_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_AKIMBO_COLT)->defaultStartingClip, qfalse );
} else {
AddWeaponToPlayer( client, WP_COLT, GetAmmoTableData(WP_COLT)->defaultStartingAmmo, GetAmmoTableData(WP_COLT)->defaultStartingClip, qfalse );
}
break;
}
}
if( pc == PC_SOLDIER ) {
if( client->sess.sessionTeam == TEAM_AXIS ) {
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 4, qfalse );
} else {
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 4, qfalse );
}
}
if( pc == PC_COVERTOPS ) {
if( client->sess.sessionTeam == TEAM_AXIS ) {
AddWeaponToPlayer( client, WP_GRENADE_LAUNCHER, 0, 2, qfalse );
} else {
AddWeaponToPlayer( client, WP_GRENADE_PINEAPPLE, 0, 2, qfalse );
}
}
} else {
// Knifeonly block
if( pc == PC_MEDIC ) {
AddWeaponToPlayer( client, WP_MEDIC_SYRINGE, 0, 20, qfalse );
if( client->sess.skill[SK_FIRST_AID] >= 4 )
AddWeaponToPlayer( client, WP_MEDIC_ADRENALINE, 0, 10, qfalse );
}
// End Knifeonly stuff -- Ensure that medics get their basic stuff
}else{
if( AddWeaponToPlayer( client, WP_FG42, GetAmmoTableData(WP_FG42)->defaultStartingAmmo, GetAmmoTableData(WP_FG42)->defaultStartingClip, qtrue ) ) {
AddWeaponToPlayer( client, WP_FG42SCOPE, GetAmmoTableData(WP_FG42SCOPE)->defaultStartingAmmo, GetAmmoTableData(WP_FG42SCOPE)->defaultStartingClip, qfalse );
}
//End Rifleonly stuff...
}
}
}
It really sounds like you aren’t getting the right qagame, or your build isn’t re-linking the files. That IS the place that sets the players weapons. You can look at the “give all” command to see exactly what you need to give a player weapons and ammo.
In a situation like this, I’d put some debugging printfs in ClientSpawn after the SetWolfSpawnWeapons to see whats going on.
bg_playerclass_t bg_allies_playerclasses[NUM_PLAYER_CLASSES] =
{
{ PC_SOLDIER, "characters/temperate/allied/soldier.char", "ui/assets/mp_gun_blue.tga",
"ui/assets/mp_arrow_blue.tga", { WP_CARBINE, WP_MOBILE_MG42, WP_FLAMETHROWER, WP_PANZERFAUST,
WP_MORTAR }, },
{ PC_MEDIC, "characters/temperate/allied/medic.char", "ui/assets/mp_health_blue.tga",
"ui/assets/mp_arrow_blue.tga", { WP_CARBINE, }, },
{ PC_ENGINEER, "characters/temperate/allied/engineer.char", "ui/assets/mp_wrench_blue.tga",
"ui/assets/mp_arrow_blue.tga", { WP_CARBINE, }, },
{ PC_FIELDOPS, "characters/temperate/allied/fieldops.char", "ui/assets/mp_ammo_blue.tga",
"ui/assets/mp_arrow_blue.tga", { WP_THOMPSON,WP_CARBINE, }, },
{ PC_COVERTOPS, "characters/temperate/allied/cvops.char", "ui/assets/mp_spy_blue.tga",
"ui/assets/mp_arrow_blue.tga", { WP_STEN,WP_GARAND, }, },
};
bg_playerclass_t bg_axis_playerclasses[NUM_PLAYER_CLASSES] =
{
{ PC_SOLDIER, "characters/temperate/axis/soldier.char", "ui/assets/mp_gun_red.tga", "ui/assets/mp_arrow_red.tga", {
WP_KAR98, WP_MOBILE_MG42, WP_FLAMETHROWER, WP_PANZERFAUST, WP_MORTAR }, },
{ PC_MEDIC, "characters/temperate/axis/medic.char", "ui/assets/mp_health_red.tga", "ui/assets/mp_arrow_red.tga", {
WP_KAR98, }, },
{ PC_ENGINEER, "characters/temperate/axis/engineer.char", "ui/assets/mp_wrench_red.tga",
"ui/assets/mp_arrow_red.tga", { WP_KAR98, }, },
{ PC_FIELDOPS, "characters/temperate/axis/fieldops.char", "ui/assets/mp_ammo_red.tga",
"ui/assets/mp_arrow_red.tga", { WP_MP40,WP_KAR98, }, },
{ PC_COVERTOPS, "characters/temperate/axis/cvops.char", "ui/assets/mp_spy_red.tga", "ui/assets/mp_arrow_red.tga", {
WP_FG42, WP_K43, }, },
};
/* */
bg_playerclass_t *
BG_GetPlayerClassInfo ( int team, int cls )
{
bg_playerclass_t *teamList;
if ( cls < PC_SOLDIER || cls >= NUM_PLAYER_CLASSES )
{
cls = PC_SOLDIER;
}
switch ( team )
{
default:
case TEAM_AXIS:
teamList = bg_axis_playerclasses;
break;
case TEAM_ALLIES:
teamList = bg_allies_playerclasses;
break;
}
return ( &teamList[cls] );
}
not working
now using ETpub code :?
Everyhing in the limbo menu looks fine but when I select the rifle I still spawn with a sub machine gun
#define _DEBUG_ME_ //comment this out to turn off debug messages
#ifdef _DEBUG_ME_
G_Printf(some message);
#endif
No, add some debugging as was suggested previously. Then, if you still can’t get it, post the code with debugging in it and the console output when tested.