Jump to content

Home

Q3 Engine Game Bugs / JA bugs


ensiform

Recommended Posts

  • 1 month later...
  • Replies 229
  • Created
  • Last Reply
  • 4 weeks later...

more of an annoyance than a bug, but here goes:

 

In g_ICARUScb.c

static void Q3_LCARSText ( const char *id)
{
G_DebugPrint( WL_WARNING, "Q3_ScrollText: NOT SUPPORTED IN MP\n");
//trap_SendServerCommand( -1, va("lt \"%s\"", id));

return;
}

 

should be:

 

static void Q3_LCARSText ( const char *id)
{
// MJN - fix: typo in warning message.
G_DebugPrint( WL_WARNING, "Q3_LCARSText: NOT SUPPORTED IN MP\n");
//trap_SendServerCommand( -1, va("lt \"%s\"", id));

return;
}

Link to comment
Share on other sites

  • 5 months later...

Client bug: when using graphical hud, armor value doesnt show > 100 even if u have more than 100.

 

 

so open up cg_draw.c. we want CG_DrawArmor.

 

add int realArmor;

 

add the realArmor line:

 

	armor = ps->stats[sTAT_ARMOR];
realArmor = ps->stats[sTAT_ARMOR]; // add this line below the above line

 

below this section:

 

	if (armor> maxArmor)
{
	armor = maxArmor;
}

 

add:

 

	if (realArmor > 200)
{
	realArmor = 200;
}

 

now where its drawing the numfield, change it from armor to realArmor.

 

		CG_DrawNumField (
		focusItem->window.rect.x, 
		focusItem->window.rect.y, 
		3, 
		realArmor,
		//armor, 
		focusItem->window.rect.w, 
		focusItem->window.rect.h, 
		NUM_FONT_SMALL,
		qfalse);

Link to comment
Share on other sites

ctf hoth exploit? the ctf bridge exploit is where u can get in the bridge on the team sides. the one where u can stack above ppl and jump into the void above it is on JA+ Official Server only. Slider said it had something to do with the pk3s his provider has.

Link to comment
Share on other sites

Oh, ok. See I thought you were supposed to go up to 200 and stop there. Maybe that's just the older Jedi Knight games.

 

In Jedi Outcast you can have a max of 200 armor (even though the max is 100). If you are at 100 and grab a 100 pickup then it is at 200, but counts down until you're back at 100. In JA, I didn't think that even applied. you could simply never go over 100, at least not in basejka. The most common place you saw this occur in JK2 was on Bespin FFA, as it had two large shield boosts sitting around within easy reach.

 

JK1 and MotS both had 200 as your shield max IIRC (though MotS Personalities had different maximums, from 175-250). In JA Siege each class has a different shield maximum (ranging from 0-100).

 

As to the "Hoth bridge exploit" that's commonly being referred to as the one in Siege wherein you can cause an explosion as the objective bridge is being extended, causing it to retract back into the wall and never come out again (this was fixed). The same thing was possible with the "switch based" bridges on Korriban Siege (but you could always re-extend those by force pushing the switch). That other exploit is interesting. You're not supposed to be able to player stack in JA since you slide off their heads, but if you're well coordinated enough you can stay on, and the bots have a real talent for it sometimes... heh

Link to comment
Share on other sites

In Jedi Outcast you can have a max of 200 armor (even though the max is 100). If you are at 100 and grab a 100 pickup then it is at 200, but counts down until you're back at 100. In JA, I didn't think that even applied. you could simply never go over 100, at least not in basejka. The most common place you saw this occur in JK2 was on Bespin FFA, as it had two large shield boosts sitting around within easy reach.

 

it works in basejka too, only thing is that you have to have less than 100 shields before picking up the large one (ie, 99 shields). its easiest to do this on ffa1 at the top where there's a lsb. to see it though you need to use cg_hudfiles 1 :o

Link to comment
Share on other sites

i Just fixed a few things one week ago for JA+ mod...

here is my code for the fixes...

 

invisibility vehicle driver bug FIX

It allows a player riding a vehicle inside (like atst) to become invisible by reconnecting the server while beeing inside.

 

add this at the end of ClientSpawn(gentity_t *ent) in g_client.c

//MODIFICATION => FIX the basejka bug when players are invisible after having reconnecting when beeing inside a vehicle with hideRider 1

ent->r.svFlags &= ~SVF_NOCLIENT;
ent->s.eFlags &= ~EF_NODRAW;
if ( ent->client )
{
	ent->client->ps.eFlags &= ~EF_NODRAW;
}

 

 

unlock door exploit FIX

I only fixed it for siege gametype. i don't know if it usefull for other gametype at the moment. Moreover this things seen as a bug in siege mod could be usefull in other gametype for mappers.

we need to prevent a blocked door to be unlock because it might screw up siege objectives

 

in g_mover.c

change this

/*
================
Blocked_Door
================
*/
void Blocked_Door( gentity_t *ent, gentity_t *other )
{
if ( ent->damage ) {
	G_Damage( other, ent, ent, NULL, NULL, ent->damage, 0, MOD_CRUSH );
}
if ( ent->spawnflags & MOVER_CRUSHER ) {
	return;		// crushers don't reverse
}


// reverse direction
Use_BinaryMover( ent, ent, other );
}

 

with this

 

/*
================
MODIFICATION added this special function for blocked door to prevent unlock in siege.
I didn't want tthis fix to work in other gametype than siege at the moment.
Use_BinaryMover_blockedDoor
================
*/
void Use_BinaryMover_blockedDoor( gentity_t *ent, gentity_t *other, gentity_t *activator ) 
{
if ( !ent->use )
{//I cannot be used anymore, must be a door with a wait of -1 that's opened.
	return;
}

// only the master should be used
if ( ent->flags & FL_TEAMSLAVE ) 
{
	Use_BinaryMover_blockedDoor( ent->teammaster, other, activator );
	return;
}

if ( ent->flags & FL_INACTIVE )
{
	return;
}

if ( ent->spawnflags & MOVER_LOCKED )
{//a locked door
	return;
}

G_ActivateBehavior(ent,BSET_USE);

ent->enemy = other;
ent->activator = activator;
if(ent->delay)
{
	ent->think = Use_BinaryMover_Go;
	ent->nextthink = level.time + ent->delay;
}
else
{
	Use_BinaryMover_Go(ent);
}
}

/*
================
Blocked_Door
================
*/
void Blocked_Door( gentity_t *ent, gentity_t *other )
{
if ( ent->damage ) {
	G_Damage( other, ent, ent, NULL, NULL, ent->damage, 0, MOD_CRUSH );
}
if ( ent->spawnflags & MOVER_CRUSHER ) {
	return;		// crushers don't reverse
}

//MODIFICATION FIX only for SIEGE => each time there is something under a door like a player, or det pack ... the door will reopen and will be unlocked
// so player can lame siege gametype where some doors are locked and unlocked only if some objectives are completed.
//Use_BinaryMover will unlock the MOVER entity like a doors or teammaster (for group mover items) ==> it needs to be prevent.

// we need to prevent a blocked door to be unlock but only in siege at the moment. i don't know if it usefull for other gametype at the moment. Moreover this things seen as a bug in siege mod could be usefull in other gametype for mappers.
if(g_gametype.integer == GT_SIEGE){

	Use_BinaryMover_blockedDoor( ent, ent, other );
	return;

}

// reverse direction
Use_BinaryMover( ent, ent, other );
}

 

 

 

DetPAck exploit FIX

This exploit allows player to kill teamates or destroy siege team objectives that they should protect from the other teams.

To use this exploit you have to fire some det packs and then going to spectator or disconnecting the server while the detpack are not exploding yet...

DOing that all the det pack will explode and kill teamates or team objectives...etc...

 

in g_combat.c

add in G_Damage

after

if (targ->flags & FL_BBRUSH)
{
	if (mod == MOD_DEMP2 ||
		mod == MOD_DEMP2_ALT ||
		mod == MOD_BRYAR_PISTOL ||
		mod == MOD_BRYAR_PISTOL_ALT ||
		mod == MOD_MELEE)
	{ //these don't damage bbrushes.. ever
		if ( mod != MOD_MELEE || !G_HeavyMelee( attacker ) )
		{ //let classes with heavy melee ability damage breakable brushes with fists
			return;
		}
	}
}

 

add this

//MODIFICATION FIX : to prevent detpack to blow teamate members and teamate siege objectives when the attacker is switching to spectator or disconnect the server
if(mod == MOD_DET_PACK_SPLASH && ! (attacker && attacker->inuse && attacker->client && attacker->client->pers.connected == CON_CONNECTED ) )
	return;
        if(mod == MOD_DET_PACK_SPLASH && attacker && attacker->inuse && attacker->client && attacker->client->pers.connected == CON_CONNECTED
	&& 
		(	attacker->client->sess.sessionTeam == TEAM_SPECTATOR 
			|| 
			( g_gametype.integer == GT_SIEGE && attacker->client->sess.siegeDesiredTeam == TEAM_SPECTATOR)
		)		
)
	return;


Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...