New multiple item code and added PB support to the UI

This commit is contained in:
Richard Allen 2002-10-26 00:37:18 +00:00
parent 777b0e8431
commit ac43ff162f
17 changed files with 244 additions and 76 deletions

Binary file not shown.

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.54 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.53 2002/06/23 23:32:29 jbravo
// Fixed logging of clients IP addresses.
//
@ -585,7 +588,7 @@ static void CG_IRVision_f(void)
status = "disabled";
}
if (bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER) {
if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) {
CG_Printf(va("IR vision %s.\n", status));
} else {
CG_Printf(va("IR vision will be %s next time you get a bandolier.\n", status));
@ -757,4 +760,5 @@ void CG_InitConsoleCommands(void)
trap_AddCommand("reflogin");
trap_AddCommand("ref");
trap_AddCommand("refresign");
trap_AddCommand("debugshit");
}

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.67 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.66 2002/08/30 06:23:57 niceass
// disabled wallhack protection #2!!!
//
@ -1359,15 +1362,27 @@ CG_DrawHoldableItem
*/
static void CG_DrawHoldableItem(void)
{
int value;
int value, item;
value = cg.snap->ps.stats[STAT_HOLDABLE_ITEM];
if (value) {
item = 0;
// JBravo: new items code. The order here is the same as in g_active so you
// drop the same item that you see on your HUD.
if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER))
item = HI_BANDOLIER;
else if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS))
item = HI_SLIPPERS;
else if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER))
item = HI_SILENCER;
else if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER))
item = HI_LASER;
else if (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_KEVLAR))
item = HI_KEVLAR;
if (item) {
value = BG_FindItemForHoldable(item) - bg_itemlist;
CG_RegisterItemVisuals(value);
//CG_DrawPic( 640-ICON_SIZE, (SCREEN_HEIGHT-ICON_SIZE)/2, ICON_SIZE, ICON_SIZE, cg_items[ value ].icon );
CG_DrawPic(640 - SMICON_SIZE, 440, SMICON_SIZE, SMICON_SIZE, cg_items[value].icon);
}
}
/*

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.54 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.53 2002/09/29 16:06:44 jbravo
// Work done at the HPWorld expo
//
@ -2428,7 +2431,7 @@ void CG_AddRefEntityWithPowerups(refEntity_t * ent, entityState_t * state, int t
//Elder: IR Vision -- only on players that are alive
if (state->eType == ET_PLAYER) {
if (bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER &&
if ((cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) &&
cg.rq3_irvision && !(state->eFlags & EF_DEAD)) {
ent->customShader = cgs.media.irPlayerShader;
trap_R_AddRefEntityToScene(ent);

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.98 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.97 2002/10/20 21:24:32 blaze
// Added cg_rq3_gunname cvars. These can be used to choose weapon replacements. You will need 3 icons that I will upload to the ftp. These should go in the next pk3
//
@ -818,7 +821,7 @@ void CG_RegisterWeapon(int weaponNum)
char md3name[MAX_QPATH];
char newname[MAX_QPATH];
char newicon[MAX_QPATH];
char teststuff[MAX_QPATH];
// char teststuff[MAX_QPATH];
// END
int i;
@ -1659,7 +1662,7 @@ void CG_AddPlayerWeapon(refEntity_t * parent, playerState_t * ps, centity_t * ce
*/
//CG_LightningBolt( nonPredictedCent, parent->lightingOrigin );
if (ps && bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_SILENCER &&
if (ps && (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER)) &&
(weaponNum == WP_PISTOL || weaponNum == WP_MP5 || weaponNum == WP_SSG3000)) {
//Makro - wasn't initialized, caused a warning in MSVC
vec3_t silencerEnd;
@ -1712,7 +1715,7 @@ void CG_AddPlayerWeapon(refEntity_t * parent, playerState_t * ps, centity_t * ce
}
}
if (ps && bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER &&
if (ps && (cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) &&
(weaponNum == WP_PISTOL || weaponNum == WP_MP5 || weaponNum == WP_M4)) {
float scale = 0.0f;
vec3_t angles;
@ -3926,7 +3929,7 @@ void CG_Bullet(vec3_t end, int sourceEntityNum, vec3_t normal,
// Elder: only if not using SSG, check if this client is the source
if (sourceEntityNum == cg.snap->ps.clientNum) {
if (cg.snap->ps.weapon != WP_SSG3000 &&
bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag != HI_SILENCER) {
(cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER))) {
if (random() < chance)
CG_CreateTracer(sourceEntityNum, start, end);
}
@ -4023,7 +4026,7 @@ Broken until I find a way to lerp an entity without a cent
void CG_CheckLaser()
{
//Elder: check for local laser
if (bg_itemlist[cg.snap->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER &&
if ((cg.snap->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) &&
cg_RQ3_laserAssist.integer &&
(cg.snap->ps.weapon == WP_PISTOL || cg.snap->ps.weapon == WP_MP5 || cg.snap->ps.weapon == WP_M4)) {
CG_LocalLaser();

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.45 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.44 2002/07/22 06:34:13 niceass
// cleaned up the powerup code
//
@ -928,9 +931,10 @@ qboolean BG_CanItemBeGrabbed(int gametype, const entityState_t * ent, const play
case IT_HOLDABLE:
// can only hold one item at a time
if (ps->stats[STAT_HOLDABLE_ITEM]) {
// JBravo: I beg to differ
/* if (ps->stats[STAT_HOLDABLE_ITEM]) {
return qfalse;
}
} */
return qtrue;
case IT_BAD:

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.91 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.90 2002/09/08 23:25:09 niceass
// made cg_rq3_predictweapons even more like quake 2, and it's simpler
//
@ -1135,7 +1138,8 @@ static void PM_CrashLand(void)
//Blaze lots of changes to make it more like aq2
// this is a pain grunt, so don't play it if dead
if (pm->ps->stats[STAT_HEALTH] > 0 && damage > 0) {
if (bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS)
// JBravo: new multiple itemcode
if (pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS))
PM_AddEvent(EV_FALL_FAR_NOSOUND);
else
PM_AddEvent(EV_FALL_FAR);
@ -1148,7 +1152,8 @@ static void PM_CrashLand(void)
}
}
} else if (delta > 20) {
if (bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS) {
// JBravo: new multiple itemcode
if (pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS)) {
PM_AddEvent(EV_FALL_SHORT_NOSOUND);
//Elder: added? useful?
pm->ps->stats[STAT_FALLDAMAGE] = 0;
@ -1157,7 +1162,8 @@ static void PM_CrashLand(void)
//Elder: added? useful?
pm->ps->stats[STAT_FALLDAMAGE] = 0;
}
} else if (!(bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS)) {
// JBravo: new multiple itemcode
} else if (!(pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS))) {
// Elder: don't spam sound events going up -- more like Q2 ladders as well
if (!pml.ladder || pm->ps->velocity[2] < 0)
PM_AddEvent(PM_FootstepForSurface());
@ -1549,7 +1555,8 @@ static void PM_Footsteps(void)
//Elder: we can check for slippers here!
// on ground will only play sounds if running
if ((footstep && !pm->noFootsteps)
&& !(bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS)) {
// JBravo: new multiple itemcode
&& !(pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS))) {
PM_AddEvent(PM_FootstepForSurface());
}
} else if (pm->waterlevel == 1) {
@ -2472,7 +2479,8 @@ static void PM_Weapon(void)
// NiceAss: Check to see if this is game or cgame
//if (pm->predict) {
//Elder: check for silencer
if (bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_SILENCER &&
// JBravo: new multiple itemcode
if ((pm->ps->stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER)) &&
(pm->ps->weapon == WP_PISTOL || pm->ps->weapon == WP_MP5 || pm->ps->weapon == WP_SSG3000)) {
PM_AddEvent2(EV_FIRE_WEAPON, RQ3_WPMOD_SILENCER);
} else if (pm->ps->stats[STAT_BURST] > 1 && pm->ps->weapon == WP_KNIFE &&

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.91 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.90 2002/09/29 16:06:44 jbravo
// Work done at the HPWorld expo
//
@ -953,14 +956,48 @@ void ThrowItem(gentity_t * ent)
//itemonTime > 0 or itemonState == itemon_dropping? Or both?
//item = 0;
// JBravo: New drop item code for multiple items.
if (client->uniqueItems > 0) {
item = bg_itemlist[client->ps.stats[STAT_HOLDABLE_ITEM]].giTag;
xr_item = BG_FindItemForHoldable(item);
client->ps.stats[STAT_HOLDABLE_ITEM] = 0;
//Elder: Just going to re-use the dropWeapon function
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
xr_drop->count = -1; // XRAY FMJ 0 is already taken, -1 means no ammo
client->uniqueItems--;
if (g_gametype.integer >= GT_TEAM) {
if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << client->teamplayItem)) {
xr_item = BG_FindItemForHoldable(client->teamplayItem);
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
xr_drop->count = -1;
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << client->teamplayItem);
client->uniqueItems--;
}
}
if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) {
xr_item = BG_FindItemForHoldable(HI_BANDOLIER);
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
xr_drop->count = -1;
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_BANDOLIER);
client->uniqueItems--;
} else if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS)) {
xr_item = BG_FindItemForHoldable(HI_SLIPPERS);
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
xr_drop->count = -1;
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_SLIPPERS);
client->uniqueItems--;
} else if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER)) {
xr_item = BG_FindItemForHoldable(HI_SILENCER);
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
xr_drop->count = -1;
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_SILENCER);
client->uniqueItems--;
} else if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) {
xr_item = BG_FindItemForHoldable(HI_LASER);
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
xr_drop->count = -1;
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_LASER);
client->uniqueItems--;
} else if (client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_KEVLAR)) {
xr_item = BG_FindItemForHoldable(HI_KEVLAR);
xr_drop = dropWeapon(ent, xr_item, 0, FL_DROPPED_ITEM | FL_THROWN_ITEM);
xr_drop->count = -1;
client->ps.stats[STAT_HOLDABLE_ITEM] &= ~(1 << HI_KEVLAR);
client->uniqueItems--;
}
}
}
@ -1464,7 +1501,8 @@ void ClientEndFrame(gentity_t * ent)
ent->client->openDoorTime = 0;
}
if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER) {
// JBravo: multiple items
if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) {
//Try to turn the laser on if it's off
if (ent->client->lasersight == NULL)
Laser_Gen(ent, qtrue);

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.172 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.171 2002/10/21 21:00:39 slicer
// New MM features and bug fixes
//
@ -722,6 +725,15 @@ void Cmd_Give_f(gentity_t * ent)
return;
}
if (give_all || Q_stricmp(name, "items") == 0) {
// JBravo: for the new items system
ent->client->ps.stats[STAT_HOLDABLE_ITEM] = (1 << HI_KEVLAR);
ent->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << HI_LASER);
ent->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << HI_SILENCER);
ent->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << HI_BANDOLIER);
ent->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << HI_SLIPPERS);
}
if (give_all || Q_stricmp(name, "ammo") == 0) {
for (i = 0; i < MAX_WEAPONS; i++) {
//Blaze: Give right amount of shots to each gun
@ -754,6 +766,10 @@ void Cmd_Give_f(gentity_t * ent)
}
}
void RQ3_Cmd_debugshit (gentity_t * ent)
{
G_Printf("STAT_HOLDABLE_ITEM is %d, uniqueItems is %d\n", ent->client->ps.stats[STAT_HOLDABLE_ITEM], ent->client->uniqueItems);
}
/*
==================
Cmd_God_f
@ -2581,7 +2597,8 @@ void Cmd_DropItem_f(gentity_t * ent)
if (ent->client->ps.stats[STAT_HOLDABLE_ITEM]) {
//Elder: reset item totals if using bandolier
if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER) {
//JBravo: New multiple items code.
if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) {
if (ent->client->numClips[WP_SSG3000] > RQ3_SSG3000_EXTRA_AMMO)
ent->client->numClips[WP_SSG3000] = RQ3_SSG3000_EXTRA_AMMO;
if (ent->client->numClips[WP_M3] > RQ3_M3_EXTRA_AMMO)
@ -2604,7 +2621,7 @@ void Cmd_DropItem_f(gentity_t * ent)
}
}
//Force laser off
else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER)
else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER))
Laser_Gen(ent, qfalse);
ThrowItem(ent);
}
@ -2857,6 +2874,8 @@ void ClientCommand(int clientNum)
// JBravo: adding tkok
else if (Q_stricmp(cmd, "tkok") == 0)
RQ3_Cmd_TKOk(ent);
else if (Q_stricmp(cmd, "debugshit") == 0)
RQ3_Cmd_debugshit(ent);
//Elder: stuff for dropping items
else if (Q_stricmp(cmd, "dropitem") == 0)
Cmd_DropItem_f(ent);

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.129 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.128 2002/10/04 20:52:39 jbravo
// Think I finally have the mp5 damage right
//
@ -374,10 +377,9 @@ Toss the weapon and powerups for the killed player
*/
void TossClientItems(gentity_t * self)
{
gitem_t *item;
int weapon;
gitem_t *item, *dropitem;
int weapon, i;
float angle;
int i;
gentity_t *drop;
//Elder: added
@ -467,10 +469,15 @@ void TossClientItems(gentity_t * self)
angle += 30;
}
if (self->client->ps.stats[STAT_HOLDABLE_ITEM]) {
Drop_Item(self, &bg_itemlist[self->client->ps.stats[STAT_HOLDABLE_ITEM]], angle);
angle += 30;
// JBravo: drop all items in the new item system.
for (i = HI_NUM_HOLDABLE - 1; i > 0; i--) {
if (self->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << i)) {
dropitem = BG_FindItemForHoldable(i);
Drop_Item(self, dropitem, angle);
angle += 30;
}
}
// drop all the powerups if not in teamplay
if (g_gametype.integer != GT_TEAM) {
angle = 45;
@ -2212,7 +2219,8 @@ void G_Damage(gentity_t * targ, gentity_t * inflictor, gentity_t * attacker,
// Vest stuff - is the knife supposed to be affected?
// NiceAss: Added mod != MOD_KNIFE_THROWN so kevlar doesn't help against thrown knives
// JBravo: added mod != MOD_KNIFE so kevlar doesn't help against slashing knives either
if (bg_itemlist[targ->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_KEVLAR &&
// JBravo: the new itemscode.
if ((targ->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_KEVLAR)) &&
mod != MOD_KNIFE_THROWN && mod != MOD_KNIFE) {
targ->client->kevlarHit = qtrue;
if (attacker->client->ps.weapon == WP_SSG3000) {

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.50 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.49 2002/09/29 16:06:44 jbravo
// Work done at the HPWorld expo
//
@ -177,7 +180,8 @@ int Pickup_Holdable(gentity_t * ent, gentity_t * other)
{
//Elder: why it's implemented like this I have no idea
//JBravo: Neiter do I :( Sucks Monks Nads this way :(
other->client->ps.stats[STAT_HOLDABLE_ITEM] = ent->item - bg_itemlist;
//JBravo: Monks nads are safe now due to my new items code :)
other->client->ps.stats[STAT_HOLDABLE_ITEM] |= (1 << ent->item->giTag);
other->client->uniqueItems++;
//Try to fire up the laser if it's picked up
@ -517,7 +521,7 @@ void Touch_Item(gentity_t * ent, gentity_t * other, trace_t * trace)
predict = other->client->pers.predictItemPickup;
if (bg_itemlist[other->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER)
if (other->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER))
bandolierFactor = 2;
else
bandolierFactor = 1;
@ -644,8 +648,7 @@ void Touch_Item(gentity_t * ent, gentity_t * other, trace_t * trace)
break;
case IT_HOLDABLE:
//Elder: check to see if it's in mid-air
if (other->client->uniqueItems >= 1 || //g_RQ3_maxWeapons.integer ||
ent->s.pos.trDelta[2] != 0)
if (other->client->uniqueItems >= g_RQ3_maxItems.integer || ent->s.pos.trDelta[2] != 0)
return;
respawn = Pickup_Holdable(ent, other);
break;

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.127 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.126 2002/10/21 21:00:39 slicer
// New MM features and bug fixes
//
@ -1344,6 +1347,7 @@ extern vmCvar_t g_RQ3_mmflags;
//Blaze: Reaction cvars
extern vmCvar_t g_rxn_knifelimit;
extern vmCvar_t g_RQ3_maxWeapons;
extern vmCvar_t g_RQ3_maxItems;
extern vmCvar_t g_RQ3_statLog;
extern vmCvar_t g_RQ3_ejectBlood;
extern vmCvar_t g_RQ3_respawnProtectTime;

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.122 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.121 2002/10/21 21:00:39 slicer
// New MM features and bug fixes
//
@ -412,6 +415,7 @@ vmCvar_t g_RQ3_mmflags;
//Blaze: Reaction cvars
vmCvar_t g_rxn_knifelimit;
vmCvar_t g_RQ3_maxWeapons;
vmCvar_t g_RQ3_maxItems;
vmCvar_t g_RQ3_statLog;
vmCvar_t g_RQ3_ejectBlood;
vmCvar_t g_RQ3_respawnProtectTime;
@ -557,6 +561,7 @@ static cvarTable_t gameCvarTable[] = {
// Elder: these are explicit values set every time the game initializes
{&g_RQ3_ejectBlood, "g_RQ3_ejectBlood", "0", CVAR_ARCHIVE | CVAR_NORESTART, 0, qfalse},
{&g_RQ3_maxWeapons, "g_RQ3_maxWeapons", "1", 0, 0, qtrue},
{&g_RQ3_maxItems, "g_RQ3_maxItems", "1", 0, 0, qtrue},
{&g_RQ3_respawnProtectTime, "g_RQ3_respawnProtectTime", "2", CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue},
{&g_RQ3_statLog, "sv_RQ3_statLog", "1", CVAR_ARCHIVE | CVAR_SERVERINFO, 0, qfalse},
{&g_RQ3_messageMaxCount, "sv_RQ3_messageMaxCount", SAY_MAX_NUMBER, 0, 0, qfalse},

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.141 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.140 2002/10/21 21:00:39 slicer
// New MM features and bug fixes
//
@ -1254,8 +1257,7 @@ void EquipPlayer(gentity_t * ent)
ent->client->ps.weaponstate = WEAPON_RAISING;
if (ent->client->teamplayItem) {
ent->client->ps.stats[STAT_HOLDABLE_ITEM] =
BG_FindItemForHoldable(ent->client->teamplayItem) - bg_itemlist;
ent->client->ps.stats[STAT_HOLDABLE_ITEM] = (1 << ent->client->teamplayItem);
ent->client->uniqueItems = 1;
} else {
G_Printf("%s had an illegal teamplay item [%i]!\n", ent->client->pers.netname,
@ -1815,19 +1817,19 @@ void GetWeaponName(gentity_t * ent, char *buf)
void GetItemName(gentity_t * ent, char *buf)
{
if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_KEVLAR) {
if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_KEVLAR)) {
strcpy(buf, RQ3_KEVLAR_NAME);
return;
} else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_SILENCER) {
} else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SILENCER)) {
strcpy(buf, RQ3_SILENCER_NAME);
return;
} else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_SLIPPERS) {
} else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_SLIPPERS)) {
strcpy(buf, RQ3_SLIPPERS_NAME);
return;
} else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_BANDOLIER) {
} else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_BANDOLIER)) {
strcpy(buf, RQ3_BANDOLIER_NAME);
return;
} else if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER) {
} else if (ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) {
strcpy(buf, RQ3_LASER_NAME);
return;
} else {

View file

@ -5,6 +5,9 @@
//-----------------------------------------------------------------------------
//
// $Log$
// Revision 1.83 2002/10/26 00:37:18 jbravo
// New multiple item code and added PB support to the UI
//
// Revision 1.82 2002/09/24 05:06:17 blaze
// fixed spectating so ref\'s can now use all the chasecam modes.
//
@ -1148,7 +1151,7 @@ int RQ3_Spread(gentity_t * ent, int spread)
stage = 1;
//added laser advantage
if (bg_itemlist[ent->client->ps.stats[STAT_HOLDABLE_ITEM]].giTag == HI_LASER &&
if ((ent->client->ps.stats[STAT_HOLDABLE_ITEM] & (1 << HI_LASER)) &&
(ent->client->ps.weapon == WP_PISTOL ||
ent->client->ps.weapon == WP_MP5 || ent->client->ps.weapon == WP_M4)) {
//G_Printf("Using laser advantage\n");

View file

@ -218,7 +218,7 @@
maxChars 32
maxPaintChars 8
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 108 168 20
rect 212 98 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -236,7 +236,7 @@
text "Pure Server:"
cvar "sv_pure"
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 128 168 20
rect 212 118 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -254,7 +254,7 @@
text "Auto Download:"
cvar "sv_allowdownload"
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 148 168 20
rect 212 138 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -272,7 +272,7 @@
text "Enable Voting:"
cvar "g_allowvote"
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 168 168 20
rect 212 158 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -291,7 +291,7 @@
cvar "sv_maxclients"
maxchars 4
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 188 168 20
rect 212 178 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -310,7 +310,7 @@
cvar "sv_maxping"
maxchars 4
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 208 168 20
rect 212 198 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -329,7 +329,7 @@
cvar "sv_minping"
maxchars 4
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 228 168 20
rect 212 218 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -348,7 +348,7 @@
cvar "sv_maxrate"
maxchars 5
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 248 168 20
rect 212 238 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -367,7 +367,7 @@
cvar "sv_reconnectlimit"
maxchars 4
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 268 168 20
rect 212 258 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -385,7 +385,7 @@
text "Synchronous Client:"
cvar "g_synchronousclients"
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 288 168 20
rect 212 278 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -403,7 +403,7 @@
text "Require Password:"
cvar "g_needpassword"
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 308 168 20
rect 212 298 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -423,7 +423,7 @@
maxChars 32
maxPaintChars 8
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 328 168 20
rect 212 318 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -442,7 +442,7 @@
cvar "ui_dedicated"
cvarFloatList { "No" 0 "LAN" 1 "Internet" 2 }
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 348 168 20
rect 212 338 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
@ -455,7 +455,7 @@
itemdef {
name global
rect 212 368 168 20
rect 212 358 168 20
style WINDOW_STYLE_EMPTY
ownerdraw UI_NETGAMETYPE
text "Game Type:"
@ -469,6 +469,24 @@
action { play "sound/misc/menu1.wav" }
}
// Punkbuster
itemdef {
name global
style WINDOW_STYLE_EMPTY
type ITEM_TYPE_YESNO
text "Punkbuster enabled:"
cvar "sv_punkbuster"
textstyle ITEM_TEXTSTYLE_SHADOWED
rect 212 378 168 20
textalign ITEM_ALIGN_RIGHT
textalignx 100
textaligny 14
textscale .225
forecolor 1 1 1 1
visible 1
}
//Window
itemdef {

View file

@ -237,7 +237,7 @@
type ITEM_TYPE_YESNO
text "Low quality sky:"
cvar "r_fastsky"
rect 56 120 256 20
rect 56 118 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -271,7 +271,7 @@
text "Ejecting Brass:"
cvar "cg_brassTime"
cvarFloatList { "High" 2500 "Med" 1250 "Off" 0 }
rect 56 140 256 20
rect 56 136 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -304,7 +304,7 @@
type ITEM_TYPE_YESNO
text "Wall marks:"
cvar "cg_marks"
rect 56 160 256 20
rect 56 154 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -337,7 +337,7 @@
type ITEM_TYPE_YESNO
text "Dynamic lights:"
cvar "r_dynamiclight"
rect 56 180 256 20
rect 56 172 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -370,7 +370,7 @@
type ITEM_TYPE_YESNO
text "Identify Target:"
cvar "cg_drawCrosshairNames"
rect 56 200 256 20
rect 56 190 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -403,7 +403,7 @@
type ITEM_TYPE_YESNO
text "Sync Every Frame:"
cvar "r_finish"
rect 56 220 256 20
rect 56 208 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -436,7 +436,7 @@
type ITEM_TYPE_YESNO
text "Force Player Models:"
cvar "cg_forceModel"
rect 56 240 256 20
rect 56 226 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -469,7 +469,7 @@
type ITEM_TYPE_YESNO
text "Draw Team Overlay:"
cvar "cg_drawTeamOverlay"
rect 56 260 256 20
rect 56 244 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -502,7 +502,7 @@
type ITEM_TYPE_YESNO
text "Allow Download:"
cvar "cl_allowDownload"
rect 56 280 256 20
rect 56 262 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -535,7 +535,7 @@
type ITEM_TYPE_YESNO
text "Muzzle Flash:"
cvar "cg_RQ3_flash"
rect 56 300 256 20
rect 56 280 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -568,7 +568,7 @@
type ITEM_TYPE_YESNO
text "Pain Blends:"
cvar "cg_RQ3_painBlend"
rect 56 320 256 20
rect 56 298 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -601,7 +601,7 @@
type ITEM_TYPE_YESNO
text "Announcer:"
cvar "cg_RQ3_announcer"
rect 56 340 256 20
rect 56 316 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -634,7 +634,7 @@
type ITEM_TYPE_YESNO
text "Impact Effects:"
cvar "cg_RQ3_impactEffects"
rect 56 360 256 20
rect 56 334 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
@ -660,6 +660,37 @@
decoration
}
itemdef {
name opt_punkbuster
type ITEM_TYPE_YESNO
text "Punkbuster Enabled:"
cvar "cl_punkbuster"
rect 56 352 256 20
textalign ITEM_ALIGN_RIGHT
textalignx 144
textaligny 20
textscale .25
forecolor RQ3_Option_Color
visible 1
onFocus { show hint_punkbuster ; timeFade hint_punkbuster forecolor .9 .9 .9 1 0 250 }
leaveFocus { timeFade hint_punkbuster forecolor .9 .9 .9 0 0 250 }
}
itemdef {
name hint_punkbuster
text "Enable or Disable client side Punkbuster (Restart is needed)"
forecolor RQ3_MAIN_HINT_COLOR
textalign 1
textalignx 240
textaligny 20
textscale RQ3_MAIN_TEXTSIZE
rect 80 420 480 40
type 0
style 0
visible 0
decoration
}
//Page 2
//Crosshair
@ -941,4 +972,4 @@
decoration
}
}
}