PDA

View Full Version : a noob questions :)


alexx860
01-31-2004, 03:00 PM
hi all, i am begginer in JA Coding, so i have a question :
it's possible to make the disruptor fire bounce on wall, if yes, how ???

thx in advance
alexx860 :D

MasterSidious
01-31-2004, 06:26 PM
You could check out bg_weapons.c and g_weapons.h, don't know about doing this with that gun though :( ;)

razorace
02-01-2004, 09:57 AM
You can't without doing some serious coding changes to the SDK code.

alexx860
02-01-2004, 10:02 AM
ok, thx for answers, but i have another question : how to remove an item from the player ? because i have made a command to give the jetpack to the player, but how remove it ??

razorace
02-02-2004, 02:35 PM
Well, I beleive the jetpack disappears when the player dies.

VSYoda1
02-02-2004, 06:50 PM
if( ent->client->ps.stats[STAT_HOLDABLE_ITEM] & HI_JETPACK )
{
ent->client->ps.stats[STAT_HOLDABLE_ITEM] ^= HI_JETPACK ;
}

I think that will work.

alexx860
02-11-2004, 10:17 AM
didn't work

razorace
02-12-2004, 08:27 AM
ent->client->ps.stats[STAT_HOLDABLE_ITEM] ^= HI_JETPACK;

What's the ^= operator? (x = x ^ y) = (x ^= y)?

The correct math operator to remove a flag like that is...

ent->client->ps.stats[STAT_HOLDABLE_ITEM] &= ~HI_JETPACK;

RenegadeOfPhunk
02-12-2004, 08:55 AM
The ^ operator is Exclusive OR (XOR) - with the following truth table:

A B R

0 0 0
0 1 1
1 0 1
1 1 0

This code:


if( ent->client->ps.stats[STAT_HOLDABLE_ITEM] & HI_JETPACK )
{
ent->client->ps.stats[STAT_HOLDABLE_ITEM] ^= HI_JETPACK ;
}


...would toggle the HI_JETPACK bit to off, if it was on. So actually, even though it's a bit OTT (Razor's code is the more correct and easier way!), this code should actually succeed in turning off that bit.

I think the problem may lie in when you are running this code - I don't think you've specified this anywhere. Also, you probably need to clear the EF_JETPACK flag at the same time...

i.e.

ent->client->ps.stats[STAT_HOLDABLE_ITEM] &= ~HI_JETPACK;
ent->client->ps.eFlags &= ~EF_JETPACK;

Azymn
02-13-2004, 09:25 PM
If you wanna use the same command to give the jetpack as take it away then XORing is the way to go:


if( !strcmp(cmd, "givejetpack"))
{
ent->client->ps.stats[STAT_HOLDABLE_ITEM] ^= HI_JETPACK;
ent->client->ps.eFlags ^= EF_JETPACK;
}


That command will give them a jetpack if they don't have one, and take it away if they do. The only problem is if the HI_JETPACK and EF_JETPACK bits get out of sync with each other. =]